@cueframe/kernel 0.1.1 → 0.1.2

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 (501) 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/models/modelFactory.d.ts +0 -77
  51. package/dist/_members/authoring/motion/applyMotionPreset.d.ts +0 -12
  52. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +0 -7
  53. package/dist/_members/authoring/motion/shell.d.ts +0 -20
  54. package/dist/_members/authoring/pipelineTrace.d.ts +0 -19
  55. package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +0 -4
  56. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -16
  57. package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +0 -4
  58. package/dist/_members/authoring/prompts/graphics.d.ts +0 -5
  59. package/dist/_members/authoring/prompts/plannerPrompt.d.ts +0 -30
  60. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -20
  61. package/dist/_members/authoring/resource-routing.d.ts +0 -121
  62. package/dist/_members/authoring/resources.d.ts +0 -34
  63. package/dist/_members/authoring/scope.d.ts +0 -24
  64. package/dist/_members/authoring/tools/brandTokens.d.ts +0 -22
  65. package/dist/_members/authoring/tools/composeRoleTools.d.ts +0 -79
  66. package/dist/_members/authoring/tools/index.d.ts +0 -1
  67. package/dist/_members/authoring/tools/toolSets.d.ts +0 -50
  68. package/dist/_members/authoring/transpileComponent.d.ts +0 -34
  69. package/dist/_members/authoring/transpileHelper.d.ts +0 -18
  70. package/dist/_members/authoring/types.d.ts +0 -149
  71. package/dist/_members/brand-derivation/constants.d.ts +0 -17
  72. package/dist/_members/brand-derivation/contrastSafe.d.ts +0 -23
  73. package/dist/_members/cloud-import/CloudImportService.d.ts +0 -15
  74. package/dist/_members/cloud-import/ImportProvider.d.ts +0 -45
  75. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -9
  76. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -15
  77. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  78. package/dist/_members/compose/primitiveRegistry.d.ts +0 -64
  79. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -26
  80. package/dist/_members/compose/schema.d.ts +0 -15
  81. package/dist/_members/compose/tokenResolver.d.ts +0 -11
  82. package/dist/_members/composition/audio/audioMix.d.ts +0 -34
  83. package/dist/_members/composition/audio/mixStaging.d.ts +0 -81
  84. package/dist/_members/composition/audio/musicPack.d.ts +0 -35
  85. package/dist/_members/composition/audio/musicPack.generated.d.ts +0 -6
  86. package/dist/_members/composition/audio/pack.d.ts +0 -43
  87. package/dist/_members/composition/audio/pack.generated.d.ts +0 -6
  88. package/dist/_members/composition/audio/palette.d.ts +0 -36
  89. package/dist/_members/composition/autozoom/index.d.ts +0 -32
  90. package/dist/_members/composition/brand-kit.d.ts +0 -8
  91. package/dist/_members/composition/brief/contract.d.ts +0 -90
  92. package/dist/_members/composition/color-grade.d.ts +0 -11
  93. package/dist/_members/composition/depth.d.ts +0 -19
  94. package/dist/_members/composition/fixtures/agentErrored.d.ts +0 -23
  95. package/dist/_members/composition/fonts.d.ts +0 -62
  96. package/dist/_members/composition/graphics-plan/compile.d.ts +0 -29
  97. package/dist/_members/composition/graphics-plan/index.d.ts +0 -5
  98. package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +0 -17
  99. package/dist/_members/composition/graphics-plan/motion.d.ts +0 -17
  100. package/dist/_members/composition/graphics-plan/schemas.d.ts +0 -171
  101. package/dist/_members/composition/graphics-plan/solve.d.ts +0 -19
  102. package/dist/_members/composition/invariants/clipPlacement.d.ts +0 -59
  103. package/dist/_members/composition/invariants/composition.d.ts +0 -5
  104. package/dist/_members/composition/invariants/etag.d.ts +0 -7
  105. package/dist/_members/composition/invariants/ids.d.ts +0 -6
  106. package/dist/_members/composition/invariants/keyframes.d.ts +0 -19
  107. package/dist/_members/composition/invariants/markers.d.ts +0 -6
  108. package/dist/_members/composition/invariants/time.d.ts +0 -8
  109. package/dist/_members/composition/invariants/tracks.d.ts +0 -48
  110. package/dist/_members/composition/ops/compositionOps.d.ts +4 -71
  111. package/dist/_members/composition/ops/compositionOps.shared.d.ts +30 -0
  112. package/dist/_members/composition/ops/headlessStore.d.ts +0 -24
  113. package/dist/_members/composition/ops/selectors.d.ts +0 -66
  114. package/dist/_members/composition/ops/timeline-word.d.ts +0 -5
  115. package/dist/_members/composition/ops/transcript.d.ts +0 -27
  116. package/dist/_members/composition/ops/types.d.ts +0 -51
  117. package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +0 -32
  118. package/dist/_members/composition/primitive-catalog/disabled.d.ts +0 -1
  119. package/dist/_members/composition/primitive-catalog/index.d.ts +0 -11
  120. package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +0 -50
  121. package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -39
  122. package/dist/_members/composition/primitive-catalog/types.d.ts +0 -78
  123. package/dist/_members/composition/projection/behind-placement.d.ts +0 -40
  124. package/dist/_members/composition/projection/behind-readiness.d.ts +14 -89
  125. package/dist/_members/composition/projection/brandKit.d.ts +0 -142
  126. package/dist/_members/composition/projection/cardTokens.d.ts +0 -65
  127. package/dist/_members/composition/projection/composition-floor.d.ts +0 -179
  128. package/dist/_members/composition/projection/cropProjection.d.ts +0 -75
  129. package/dist/_members/composition/projection/occlusion-budget.d.ts +0 -37
  130. package/dist/_members/composition/projection/reframe-readiness.d.ts +4 -111
  131. package/dist/_members/composition/projection/safe-zones.d.ts +0 -29
  132. package/dist/_members/composition/reframe/aspectLoss.d.ts +12 -35
  133. package/dist/_members/composition/reframe/coverage.d.ts +0 -40
  134. package/dist/_members/composition/reframe/derive.d.ts +0 -21
  135. package/dist/_members/composition/reframe/index.d.ts +0 -60
  136. package/dist/_members/composition/reframe/kenBurns.d.ts +0 -37
  137. package/dist/_members/composition/reframe/shotScale.d.ts +0 -75
  138. package/dist/_members/composition/reframe/trajectory.d.ts +0 -65
  139. package/dist/_members/composition/timeline/compound.d.ts +0 -31
  140. package/dist/_members/composition/timeline/intent.d.ts +0 -29
  141. package/dist/_members/composition/timeline/keyframes.d.ts +0 -43
  142. package/dist/_members/composition/timeline/link.d.ts +0 -27
  143. package/dist/_members/composition/timeline/occupancy.d.ts +1 -42
  144. package/dist/_members/composition/timeline/placement.d.ts +5 -52
  145. package/dist/_members/composition/timeline/plan.d.ts +5 -53
  146. package/dist/_members/composition/timeline/resolve.d.ts +0 -36
  147. package/dist/_members/composition/timeline/trims.d.ts +0 -49
  148. package/dist/_members/composition/validators/brandKit.d.ts +0 -29
  149. package/dist/_members/composition/validators/composePlan.d.ts +0 -39
  150. package/dist/_members/composition/validators/composition.d.ts +30 -513
  151. package/dist/_members/composition/validators/graphicKinds.d.ts +0 -28
  152. package/dist/_members/composition/validators/render.d.ts +23 -23
  153. package/dist/_members/composition-ops/alphaLayers.d.ts +0 -56
  154. package/dist/_members/composition-ops/index.d.ts +27 -148
  155. package/dist/_members/composition-ops/materializeGrid.d.ts +0 -28
  156. package/dist/_members/composition-ops/opRecorder.d.ts +0 -34
  157. package/dist/_members/composition-ops/recordingStore.d.ts +0 -16
  158. package/dist/_members/composition-ops/replaceRegion.d.ts +0 -48
  159. package/dist/_members/composition-ops/testFixtures.d.ts +0 -14
  160. package/dist/_members/convex-api/api.d.ts +0 -3
  161. package/dist/_members/convex-api/dataModel.d.ts +0 -2
  162. package/dist/_members/core/index.d.ts +1 -1
  163. package/dist/_members/core/render/bookends.d.ts +0 -44
  164. package/dist/_members/core/render/captions.d.ts +0 -42
  165. package/dist/_members/core/render/compositionRender.d.ts +1 -180
  166. package/dist/_members/core/render/deriveTrajectory.d.ts +0 -140
  167. package/dist/_members/core/render/emphasis.d.ts +0 -6
  168. package/dist/_members/core/render/eval/cropBox.d.ts +0 -69
  169. package/dist/_members/core/render/eval/inclusion.d.ts +0 -39
  170. package/dist/_members/core/render/eval/index.d.ts +0 -58
  171. package/dist/_members/core/render/eval/metrics.d.ts +0 -36
  172. package/dist/_members/core/render/exportSettings.d.ts +4 -12
  173. package/dist/_members/core/render/index.d.ts +1 -1
  174. package/dist/_members/core/render/mapFaceToPerson.d.ts +0 -27
  175. package/dist/_members/core/render/types.d.ts +1 -184
  176. package/dist/_members/core/render/variantKeys.d.ts +1 -0
  177. package/dist/_members/core/render/vcam/cameraPath.d.ts +0 -44
  178. package/dist/_members/core/render/vcam/constants.d.ts +0 -93
  179. package/dist/_members/core/render/vcam/errorCodes.d.ts +0 -28
  180. package/dist/_members/core/render/vcam/framing.d.ts +0 -76
  181. package/dist/_members/core/render/vcam/requiredRegion.d.ts +0 -71
  182. package/dist/_members/core/render/vcam/shots.d.ts +0 -40
  183. package/dist/_members/core/render/vcam/subjectSet.d.ts +0 -85
  184. package/dist/_members/core/select/errorCodes.d.ts +0 -25
  185. package/dist/_members/core/select/index.d.ts +0 -20
  186. package/dist/_members/core/select/model.d.ts +0 -79
  187. package/dist/_members/core/select/select.d.ts +0 -49
  188. package/dist/_members/core/select/stabilize.d.ts +0 -102
  189. package/dist/_members/core/types.d.ts +0 -1
  190. package/dist/_members/director/ai-sdk/chunks.d.ts +14 -0
  191. package/dist/_members/director/ai-sdk/context.d.ts +6 -0
  192. package/dist/_members/director/ai-sdk/generationTool.d.ts +8 -0
  193. package/dist/_members/director/ai-sdk/index.d.ts +4 -0
  194. package/dist/_members/director/ai-sdk/messages.d.ts +292 -0
  195. package/dist/_members/director/domain/chat.d.ts +357 -0
  196. package/dist/_members/director/domain/generation.d.ts +1 -0
  197. package/dist/_members/director/domain/index.d.ts +3 -0
  198. package/dist/_members/director/domain/ports.d.ts +32 -0
  199. package/dist/_members/director/index.d.ts +2 -0
  200. package/dist/_members/director/testing/contract.d.ts +52 -0
  201. package/dist/_members/director/testing/index.d.ts +1 -0
  202. package/dist/_members/errors/registry.d.ts +0 -32
  203. package/dist/_members/foundation/codes/index.d.ts +0 -21
  204. package/dist/_members/mcp/adapter.d.ts +1 -84
  205. package/dist/_members/mcp/burnedNames.d.ts +0 -16
  206. package/dist/_members/mcp/core.d.ts +1 -81
  207. package/dist/_members/mcp/curation.d.ts +0 -112
  208. package/dist/_members/mcp/executor.d.ts +0 -49
  209. package/dist/_members/mcp/format.d.ts +0 -6
  210. package/dist/_members/mcp/generated/catalogPreviews.d.ts +0 -1
  211. package/dist/_members/mcp/generated/operations.d.ts +0 -23
  212. package/dist/_members/mcp/internalLoopTools.d.ts +0 -23
  213. package/dist/_members/mcp/prompts.d.ts +0 -16
  214. package/dist/_members/mcp/resources.d.ts +0 -13
  215. package/dist/_members/mcp/server.d.ts +0 -61
  216. package/dist/_members/mcp/wait.d.ts +0 -22
  217. package/dist/_members/mcp/x402Meta.d.ts +0 -44
  218. package/dist/_members/media-model/generation.d.ts +314 -0
  219. package/dist/_members/media-model/index.d.ts +1 -0
  220. package/dist/_members/media-model/media-kind.d.ts +0 -27
  221. package/dist/_members/media-model/transcriptSearch.d.ts +0 -42
  222. package/dist/_members/nle-export/fcpxml.d.ts +0 -13
  223. package/dist/_members/nle-export/index.d.ts +0 -6
  224. package/dist/_members/nle-export/types.d.ts +0 -26
  225. package/dist/_members/nle-export/xml/index.d.ts +0 -8
  226. package/dist/_members/nle-export/xml-utils.d.ts +0 -12
  227. package/dist/_members/perception/activeSpeaker.d.ts +0 -94
  228. package/dist/_members/perception/audioQuality.d.ts +0 -64
  229. package/dist/_members/perception/energyBeat.d.ts +0 -81
  230. package/dist/_members/perception/identityMatch.d.ts +0 -66
  231. package/dist/_members/perception/index.d.ts +0 -52
  232. package/dist/_members/perception/visualQuality.d.ts +0 -73
  233. package/dist/_members/plane/conformance.d.ts +0 -59
  234. package/dist/_members/plane/contract.d.ts +0 -29
  235. package/dist/_members/plane/index.d.ts +0 -15
  236. package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +0 -13
  237. package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +0 -14
  238. package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +0 -14
  239. package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +0 -8
  240. package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +0 -8
  241. package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +0 -8
  242. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +0 -8
  243. package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +0 -8
  244. package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +0 -17
  245. package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +0 -14
  246. package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +0 -18
  247. package/dist/_members/primitives/captions/Captions.d.ts +0 -24
  248. package/dist/_members/primitives/captions/index.d.ts +0 -15
  249. package/dist/_members/primitives/captions/paginate.d.ts +0 -21
  250. package/dist/_members/primitives/captions/placement.d.ts +0 -30
  251. package/dist/_members/primitives/effects/blur/index.d.ts +0 -16
  252. package/dist/_members/primitives/effects/color-grade/index.d.ts +0 -20
  253. package/dist/_members/primitives/effects/grain/index.d.ts +0 -12
  254. package/dist/_members/primitives/effects/parallax/index.d.ts +0 -13
  255. package/dist/_members/primitives/effects/particles/index.d.ts +0 -16
  256. package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +0 -10
  257. package/dist/_members/primitives/effects/spotlight-card/index.d.ts +0 -8
  258. package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +0 -10
  259. package/dist/_members/primitives/effects/success-confetti/index.d.ts +0 -8
  260. package/dist/_members/primitives/effects/vignette/index.d.ts +0 -12
  261. package/dist/_members/primitives/hero-text/HeroText.d.ts +0 -17
  262. package/dist/_members/primitives/hero-text/config.d.ts +0 -10
  263. package/dist/_members/primitives/hero-text/index.d.ts +0 -14
  264. package/dist/_members/primitives/index.d.ts +0 -8
  265. package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +0 -8
  266. package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +0 -8
  267. package/dist/_members/primitives/layouts/letterbox/index.d.ts +0 -15
  268. package/dist/_members/primitives/layouts/photo-grid/index.d.ts +0 -17
  269. package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +0 -21
  270. package/dist/_members/primitives/layouts/split-screen/index.d.ts +0 -15
  271. package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +0 -8
  272. package/dist/_members/primitives/lib/easings.d.ts +0 -27
  273. package/dist/_members/primitives/lib/palette.d.ts +0 -22
  274. package/dist/_members/primitives/lib/preview.d.ts +0 -22
  275. package/dist/_members/primitives/lib/schema.d.ts +0 -36
  276. package/dist/_members/primitives/lib/seeded-random.d.ts +0 -23
  277. package/dist/_members/primitives/lib/text/contrast.d.ts +0 -17
  278. package/dist/_members/primitives/lib/text/fill.d.ts +0 -5
  279. package/dist/_members/primitives/lib/text/fitText.d.ts +0 -37
  280. package/dist/_members/primitives/lib/text/marker.d.ts +0 -10
  281. package/dist/_members/primitives/lib/text/motion.d.ts +0 -46
  282. package/dist/_members/primitives/lib/text/recolor.d.ts +0 -11
  283. package/dist/_members/primitives/lib/text/spec.d.ts +0 -39
  284. package/dist/_members/primitives/lib/text/stage.d.ts +0 -17
  285. package/dist/_members/primitives/lib/text/typeface.d.ts +0 -11
  286. package/dist/_members/primitives/lib/tokens.d.ts +0 -87
  287. package/dist/_members/primitives/lib/types.d.ts +0 -141
  288. package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +0 -12
  289. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +0 -8
  290. package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +0 -8
  291. package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +0 -8
  292. package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +0 -8
  293. package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +0 -8
  294. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +0 -8
  295. package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +0 -38
  296. package/dist/_members/primitives/subject-foreground/index.d.ts +0 -21
  297. package/dist/_members/primitives/text/blur-reveal/index.d.ts +0 -9
  298. package/dist/_members/primitives/text/cinematic-title/index.d.ts +0 -14
  299. package/dist/_members/primitives/text/inline-highlight/index.d.ts +0 -11
  300. package/dist/_members/primitives/text/karaoke/index.d.ts +0 -13
  301. package/dist/_members/primitives/text/kinetic-type/index.d.ts +0 -15
  302. package/dist/_members/primitives/text/lower-third/index.d.ts +0 -14
  303. package/dist/_members/primitives/text/marker-highlight/index.d.ts +0 -10
  304. package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +0 -8
  305. package/dist/_members/primitives/text/matrix-decode/index.d.ts +0 -9
  306. package/dist/_members/primitives/text/quote-card/index.d.ts +0 -9
  307. package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +0 -13
  308. package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +0 -10
  309. package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +0 -8
  310. package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +0 -12
  311. package/dist/_members/primitives/text/stat-counter/index.d.ts +0 -13
  312. package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +0 -9
  313. package/dist/_members/primitives/text/text-effect/index.d.ts +0 -17
  314. package/dist/_members/primitives/text/text-fade-replace/index.d.ts +0 -8
  315. package/dist/_members/primitives/text/token-stream/index.d.ts +0 -11
  316. package/dist/_members/primitives/text/tracking-in/index.d.ts +0 -8
  317. package/dist/_members/primitives/text/typewriter/index.d.ts +0 -12
  318. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +0 -11
  319. package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +0 -8
  320. package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +0 -10
  321. package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +0 -10
  322. package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +0 -3
  323. package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +0 -14
  324. package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +0 -3
  325. package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +0 -12
  326. package/dist/_members/primitives/transitions/light-leak/index.d.ts +0 -3
  327. package/dist/_members/primitives/transitions/luma-matte/index.d.ts +0 -2
  328. package/dist/_members/primitives/transitions/morph/index.d.ts +0 -2
  329. package/dist/_members/primitives/transitions/spatial-push/index.d.ts +0 -10
  330. package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +0 -13
  331. package/dist/_members/primitives/transitions/zoom-through/index.d.ts +0 -2
  332. package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +0 -9
  333. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +0 -8
  334. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +0 -8
  335. package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +0 -11
  336. package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +0 -11
  337. package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +0 -11
  338. package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +0 -8
  339. package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +0 -8
  340. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +0 -18
  341. package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +0 -10
  342. package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +0 -8
  343. package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +0 -11
  344. package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +0 -11
  345. package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +0 -8
  346. package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +0 -9
  347. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +0 -8
  348. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +0 -8
  349. package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +0 -11
  350. package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +0 -8
  351. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +0 -8
  352. package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +0 -12
  353. package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +0 -8
  354. package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +0 -8
  355. package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +0 -8
  356. package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +0 -10
  357. package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +0 -8
  358. package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +0 -19
  359. package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +0 -8
  360. package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +0 -8
  361. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +0 -8
  362. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +0 -8
  363. package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +0 -11
  364. package/dist/_members/primitives/workspace.d.ts +0 -29
  365. package/dist/_members/render-harness/browserOptions.d.ts +11 -0
  366. package/dist/_members/render-harness/browserOptions.d.ts.map +1 -0
  367. package/dist/_members/render-harness/cardRender.d.ts +0 -40
  368. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  369. package/dist/_members/render-harness/contractRender.d.ts +0 -16
  370. package/dist/_members/render-harness/contractRender.d.ts.map +1 -1
  371. package/dist/_members/render-harness/extractSegments.d.ts +0 -37
  372. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  373. package/dist/_members/render-harness/index.d.ts +0 -12
  374. package/dist/_members/render-harness/index.d.ts.map +1 -1
  375. package/dist/_members/render-harness/localRender.d.ts +1 -110
  376. package/dist/_members/render-harness/localRender.d.ts.map +1 -1
  377. package/dist/_members/render-harness/materializeSources.d.ts +0 -22
  378. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  379. package/dist/_members/render-harness/mediaServer.d.ts +0 -16
  380. package/dist/_members/render-harness/mediaServer.d.ts.map +1 -1
  381. package/dist/_members/render-harness/renderInputAssets.d.ts +0 -45
  382. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  383. package/dist/_members/render-harness/resolveAssets.d.ts +0 -24
  384. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  385. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -14
  386. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -1
  387. package/dist/account-model/validators.js +1 -1
  388. package/dist/account-model.js +1 -1
  389. package/dist/animate.js +0 -15
  390. package/dist/authoring/build-tools.js +8 -8
  391. package/dist/authoring/composer.js +0 -20
  392. package/dist/authoring/context.js +6 -6
  393. package/dist/authoring/pipelineTrace.js +1 -1
  394. package/dist/authoring/prompts.js +1 -1
  395. package/dist/authoring/resource-routing.js +1 -1
  396. package/dist/authoring/resources.js +1 -1
  397. package/dist/authoring/tools.js +7 -7
  398. package/dist/authoring.js +14 -80
  399. package/dist/{chunk-TWQOKKAF.js → chunk-23HFEKV7.js} +0 -6
  400. package/dist/{chunk-EA6MYCYW.js → chunk-2B5VJZHL.js} +14 -25
  401. package/dist/chunk-73DQTUWY.js +131 -0
  402. package/dist/{chunk-HI4UTTPS.js → chunk-AO744WIK.js} +1 -43
  403. package/dist/chunk-BADZHXLR.js +0 -0
  404. package/dist/{chunk-GA23TRNR.js → chunk-BKHGL4MB.js} +5 -13
  405. package/dist/{chunk-PDYO3DOJ.js → chunk-BZZTVOGG.js} +6 -55
  406. package/dist/{chunk-AP6ZIVAV.js → chunk-CAJQ7H5A.js} +17 -17
  407. package/dist/{chunk-7FO3ZJ43.js → chunk-DCVJWGIA.js} +1 -9
  408. package/dist/{chunk-AQBREB5O.js → chunk-DWLNPNC4.js} +1 -4
  409. package/dist/{chunk-SW336CJP.js → chunk-DYZE7JZA.js} +3 -26
  410. package/dist/{chunk-HCCBDJLW.js → chunk-EP2Y6M2J.js} +0 -4
  411. package/dist/{chunk-ZE76SSRT.js → chunk-FMODQD5P.js} +0 -6
  412. package/dist/chunk-FTVZF4GO.js +0 -0
  413. package/dist/{chunk-PMY24FUD.js → chunk-G5BFI32U.js} +1 -1
  414. package/dist/{chunk-LD5ZOUFT.js → chunk-GF52TW4I.js} +0 -4
  415. package/dist/{chunk-ABL557OT.js → chunk-GMD33ZD7.js} +1 -8
  416. package/dist/{chunk-ZWMV6DD2.js → chunk-ICSZF37W.js} +10 -162
  417. package/dist/chunk-IEXAKOEX.js +113 -0
  418. package/dist/{chunk-UY4SWJVE.js → chunk-K2IUBCND.js} +0 -12
  419. package/dist/chunk-LJ5W4ZBU.js +146 -0
  420. package/dist/chunk-LLUW26BS.js +255 -0
  421. package/dist/{chunk-JJ6XD7NG.js → chunk-PIURX6IZ.js} +70 -2
  422. package/dist/{chunk-MMEJ3Y7E.js → chunk-QETYXKQQ.js} +1 -10
  423. package/dist/{chunk-YX2GSJK7.js → chunk-RP4SXXLJ.js} +1 -1
  424. package/dist/{chunk-P727GZVO.js → chunk-SAMQUUO5.js} +3 -5
  425. package/dist/{chunk-RF7U3SCL.js → chunk-TD347SSX.js} +3 -11
  426. package/dist/{chunk-TOJEXFXL.js → chunk-TFGKUWHY.js} +1 -88
  427. package/dist/{chunk-UHGSZZDI.js → chunk-TPA6PYN2.js} +1 -11
  428. package/dist/{chunk-OLFOPQCA.js → chunk-UQSOS726.js} +4 -18
  429. package/dist/{chunk-GBRNYH7W.js → chunk-V24L35GM.js} +0 -11
  430. package/dist/{chunk-MBCXCJOE.js → chunk-VFMW3JUY.js} +1 -1
  431. package/dist/{chunk-DK2ODBNT.js → chunk-VHF66LCQ.js} +16 -98
  432. package/dist/{chunk-JMURQODM.js → chunk-VZ7TYX6Z.js} +0 -1
  433. package/dist/{chunk-SIGGQRY2.js → chunk-W3SIWT7J.js} +5030 -4412
  434. package/dist/{chunk-W35ZMOXB.js → chunk-WPZKOVYF.js} +0 -5
  435. package/dist/chunk-WZH57M53.js +494 -0
  436. package/dist/{chunk-AYVJXDLB.js → chunk-XHGZ2E77.js} +0 -2
  437. package/dist/{chunk-HY3RIEZW.js → chunk-XQ72DZKJ.js} +1 -1
  438. package/dist/{chunk-7DHP4ESU.js → chunk-YLDMAZZE.js} +0 -10
  439. package/dist/{chunk-FYZVH3MC.js → chunk-YQ7FFW3G.js} +0 -11
  440. package/dist/chunk-ZPLJ24OV.js +93 -0
  441. package/dist/cloud-import/multipart.js +1 -1
  442. package/dist/cloud-import.js +9 -16
  443. package/dist/compose/renderer.js +18 -18
  444. package/dist/compose.js +21 -21
  445. package/dist/composition/audio.js +1 -1
  446. package/dist/composition/brand-kit.js +0 -5
  447. package/dist/composition/graphics-plan.js +4 -4
  448. package/dist/composition/ops.js +5 -5
  449. package/dist/composition/primitive-catalog.js +1 -1
  450. package/dist/composition/projection.js +11 -3
  451. package/dist/composition/reframe/kenBurns.js +0 -4
  452. package/dist/composition/reframe.js +4 -2
  453. package/dist/composition/timeline.js +1 -1
  454. package/dist/composition/validators/graphic-kinds.js +1 -1
  455. package/dist/composition/validators.js +4 -4
  456. package/dist/composition-ops.js +16 -135
  457. package/dist/composition.js +15 -7
  458. package/dist/context-JLLU3MYD.js +14 -0
  459. package/dist/core/render.js +9 -7
  460. package/dist/core/select.js +2 -6
  461. package/dist/core.js +5 -7
  462. package/dist/director/ai-sdk.d.ts +1 -0
  463. package/dist/director/ai-sdk.js +33 -0
  464. package/dist/director/domain.d.ts +1 -0
  465. package/dist/director/domain.js +62 -0
  466. package/dist/director/testing.d.ts +1 -0
  467. package/dist/director/testing.js +22 -0
  468. package/dist/director.d.ts +1 -0
  469. package/dist/director.js +86 -0
  470. package/dist/errors.js +1 -1
  471. package/dist/foundation.js +1 -0
  472. package/dist/mcp/adapter.js +4 -64
  473. package/dist/mcp/core.js +1 -1
  474. package/dist/mcp/curation.js +1 -1
  475. package/dist/mcp/server.js +4 -4
  476. package/dist/mcp.js +4 -4
  477. package/dist/media-model/generation.d.ts +1 -0
  478. package/dist/media-model/generation.js +40 -0
  479. package/dist/media-model.js +38 -6
  480. package/dist/nle-export.js +21 -21
  481. package/dist/plane/contract.js +0 -3
  482. package/dist/primitives/backgrounds.js +2 -2
  483. package/dist/primitives/captions.js +0 -5
  484. package/dist/primitives/effects.js +2 -2
  485. package/dist/primitives/hero-text.js +2 -2
  486. package/dist/primitives/layouts.js +2 -2
  487. package/dist/primitives/lib/index.js +17 -17
  488. package/dist/primitives/lib/text/fitText.js +1 -1
  489. package/dist/primitives/lib/tokens.js +1 -1
  490. package/dist/primitives/lib.js +17 -17
  491. package/dist/primitives/scenes.js +2 -2
  492. package/dist/primitives/text.js +2 -2
  493. package/dist/primitives/ui-blocks.js +4 -4
  494. package/dist/primitives.js +21 -21
  495. package/dist/render-harness/sandboxGlobalSpecs.js +1 -1
  496. package/dist/render-harness.js +24 -41
  497. package/package.json +37 -21
  498. package/dist/chunk-6EQXLEP6.js +0 -194
  499. package/dist/chunk-OCFDUCF4.js +0 -504
  500. package/dist/chunk-PODIYN2K.js +0 -742
  501. package/dist/context-YWUZDG5X.js +0 -14
@@ -1,38 +1,9 @@
1
- /**
2
- * Destination safe-zone registry — the platform-UI + broadcast keep-outs the
3
- * composition floor carves out of the output rect before placing any element
4
- * (spec §9). Fractions of the OUTPUT rect (origin top-left, y-down, [0,1]); one
5
- * math path for every aspect because the coordinates are already normalized to
6
- * the destination frame.
7
- *
8
- * Convention-grounded, NOT research-grounded: platform chrome (TikTok's right
9
- * action rail + bottom username/caption strip, Reels/Shorts variants) is
10
- * industry convention, not something the layout/saliency papers model. Keep this
11
- * a plain data table so it stays legible and versionable as platforms change
12
- * their chrome.
13
- *
14
- * Pure data + one lookup. No I/O. Same input → same output.
15
- */
16
1
  import type { Rect } from "./composition-floor.js";
17
- /** Bump on ANY change to a profile rect or the broadcast defaults below. The
18
- * render consumer embeds this into renderCacheKey (spec §15) so a profile edit
19
- * invalidates cached renders transitively, the way BAKE_VERSION already does —
20
- * never a remembered manual bump. */
21
2
  export declare const SAFE_ZONE_PROFILE_VERSION = "safezones-v2-2026.06.05";
22
3
  export interface SafeZoneProfile {
23
- /** Platform-UI rects the floor treats as hard keep-outs (never place text/graphics under them). */
24
4
  exclusions: Rect[];
25
- /** Broadcast title-safe: text should stay inside this inset. */
26
5
  titleSafe: Rect;
27
- /** Broadcast action-safe: critical action inside this (slightly larger) inset. */
28
6
  actionSafe: Rect;
29
7
  }
30
- /** Normalize a platform name to a PROFILES key (lowercased, aliased). */
31
8
  export declare function normalizePlatform(platform: string): string;
32
- /**
33
- * Resolve the safe-zone profile for a destination. Unknown platform (or an
34
- * aspect a known platform has no profile for) → broadcast title/action-safe only
35
- * (no platform exclusions) so the floor degrades to a correct, conservative
36
- * result rather than throwing.
37
- */
38
9
  export declare function lookupSafeZones(platform: string, aspect: string): SafeZoneProfile;
@@ -1,29 +1,3 @@
1
- /**
2
- * Aspect-loss advisory: a source whose shape disagrees with the output frame,
3
- * placed with no authored camera.
4
- *
5
- * A `cover` fill scales the source until it covers the frame and throws the
6
- * overflow away, centred. For a 3840×5760 portrait photo in a 16:9 frame that
7
- * discards ~62% of the image about the middle — reliably decapitating anyone in
8
- * it. In the 2026-08-05 toddler-parks session 15 of 68 imported candidates were
9
- * portrait, every one placed into 16:9 with no crop intent, and nothing said a
10
- * word at any point in the pipeline.
11
- *
12
- * Note this is WORSE for stills than the `fit` field suggests: `fit` is not
13
- * threaded to the image path at all (MainComposition routes `kind:'image'` to
14
- * StillCrop, which has no `fit` prop), so an image is always cropped by the
15
- * derived still trajectory — whose faceless default centre is a hardcoded
16
- * [0.5, 0.5]. Declaring `fit:"contain"` does not avoid this; authoring a
17
- * `reframe` (or a `kenBurns`) does.
18
- *
19
- * ADVISORY only — same `(input) => string[]` contract as `detectNoAudioTrack`.
20
- * Cropping to fill is a legitimate choice; this only says nobody made it.
21
- */
22
- /**
23
- * Fraction of the source that survives a `cover` fill. Purely a function of the
24
- * two aspect ratios: the narrower dimension is fully used, the wider one is
25
- * trimmed to match.
26
- */
27
1
  export declare function coverVisibleFraction(source: {
28
2
  width: number;
29
3
  height: number;
@@ -31,15 +5,18 @@ export declare function coverVisibleFraction(source: {
31
5
  width: number;
32
6
  height: number;
33
7
  }): number;
34
- /**
35
- * Advisory for media placed into a materially different frame shape with no
36
- * authored camera.
37
- *
38
- * `dimensionsByMediaId` is expected to be partial: image dimensions are
39
- * populated LAZILY (they are not known at upload /complete), so a media with no
40
- * width/height is SKIPPED rather than guessed at — an advisory that fires on
41
- * missing metadata would train agents to ignore the channel.
42
- */
8
+ export interface AspectCropLoss {
9
+ clipId?: string;
10
+ mediaId: string;
11
+ lostPct: number;
12
+ }
13
+ export declare function findAspectCropLosses(composition: unknown, dimensionsByMediaId: Record<string, {
14
+ width?: number;
15
+ height?: number;
16
+ } | undefined>, target: {
17
+ width: number;
18
+ height: number;
19
+ }): AspectCropLoss[];
43
20
  export declare function detectAspectCropLoss(composition: unknown, dimensionsByMediaId: Record<string, {
44
21
  width?: number;
45
22
  height?: number;
@@ -1,44 +1,4 @@
1
- /**
2
- * Reframe coverage invariant — the SINGLE source of truth for
3
- * "a clip's `reframe.segments` MUST tile its PLAYED window: `[0, duration]`
4
- * minus the clip's excluded spans" (clip-relative source seconds; segment 0 =
5
- * the clip's `trim.start`). An excluded span is never walked by the renderer
6
- * (`playableSpans` skips it and rebases across the gap), so it needs NO
7
- * reframe coverage — demanding it would reject the compiler's own canonical
8
- * trim output (trim → excludedRange + segments tiling the remainder).
9
- *
10
- * Pure arithmetic, ZERO runtime imports (structural param types only), so it is
11
- * safe in BOTH the Convex V8 isolate (save-time `validateReframeCoverage`) AND
12
- * the Temporal workflow sandbox (the compose-loop pre-derive gate). One
13
- * definition, no drift — the two chokepoints enforce the exact same rule.
14
- *
15
- * Why it matters: `deriveTrajectory` bakes coverage = the union of the AUTHORED
16
- * segments (it clamps, never extends). If the segments leave a gap (a forgotten
17
- * head lead-in, or a source-absolute-vs-clip-relative time-base mis-map), the
18
- * render walks a played frame no segment covers and `resolveSegmentAt` throws
19
- * `trajectory_coverage_gap` deep in the renderer. Catching the gap on this pure
20
- * path — where BOTH the played window and the segments are known — turns that
21
- * cryptic late crash into an early, actionable, clip-named error.
22
- */
23
- /** Seam-rounding slack: two segments meeting within EPS seconds are contiguous,
24
- * not a gap (matches the fps-conversion tolerance at a segment edge). */
25
1
  export declare const REFRAME_COVERAGE_EPS = 0.001;
26
- /**
27
- * The FIRST uncovered `[start, end]` span (in clip-relative source seconds) where
28
- * `segments` fail to tile the PLAYED window — `[0, duration]` minus `excluded` —
29
- * or `null` when every played instant is covered. Order-independent (sorts a
30
- * copy). A legitimate subjectless lead-in is NOT a gap only when it is handled
31
- * EXPLICITLY: either a frame-center segment covering it, or an excluded span
32
- * removing it from playback (the compiler's trim → excludedRange path). This
33
- * helper never invents either (feedback_never_add_fallbacks).
34
- *
35
- * `excluded` spans are clip-relative like the segments (source-absolute
36
- * `excludedRanges` convert via `- trim.start` at the call site). An excluded
37
- * instant counts as covered because the renderer never resolves a trajectory
38
- * there (`playableSpans` drops it), so the sweep unions segments + exclusions
39
- * and any remaining hole is exactly a played-and-uncovered span — the set that
40
- * crashes `resolveSegmentAt`.
41
- */
42
2
  export declare function firstReframeCoverageGap(segments: ReadonlyArray<{
43
3
  startSec: number;
44
4
  endSec: number;
@@ -1,19 +1,5 @@
1
- /**
2
- * derive — PURE multi-format derivation core (P5). Produce a reframed SIBLING
3
- * composition for a new target Format: copy authored intent verbatim, set the
4
- * new `format`, and author a GEOMETRIC single-subject `reframe` on every media
5
- * clip that doesn't already carry one. Aspect-specific crop-window geometry,
6
- * caption-band reserve, and width-anchored brand are re-resolved DOWNSTREAM at
7
- * render from `composition.format` (deriveTrajectory + compositionFormatDimensions)
8
- * — this module never touches them. Single-subject focus is aspect-independent.
9
- *
10
- * Group/editorial refinement (e.g. all-faces → active-speaker for a narrower
11
- * aspect) is the explicit follow-on: an existing reframe is copied verbatim and
12
- * the render honestly pads-and-holds (overframed) for the new aspect.
13
- */
14
1
  import type { Composition, Format } from "../validators/composition.js";
15
2
  import type { Focus } from "./index.js";
16
- /** The inline face roster cached on `mediaItems.subjectTracks[windowHash].faces`. */
17
3
  export interface RosterFace {
18
4
  faceId: string;
19
5
  bbox: {
@@ -25,13 +11,6 @@ export interface RosterFace {
25
11
  speakingShare?: number;
26
12
  }
27
13
  export type ClipFaceRoster = RosterFace[];
28
- /** Output FormatSpec the caller targets (no `platform` — preserved from source). */
29
14
  export type TargetFormat = Pick<Format, "aspectRatio" | "fps" | "resolution">;
30
- /**
31
- * Geometric single-subject focus for the target aspect:
32
- * - no faces → frame-center (screen-recording / faceless b-roll; honest center crop).
33
- * - 2+ faces carry a speakingShare signal → active-speaker (the wedge follows the speaker).
34
- * - otherwise → the single largest detected face (dominant subject).
35
- */
36
15
  export declare function pickGeometricFocus(faces: ClipFaceRoster | undefined): Focus;
37
16
  export declare function deriveReframedComposition(source: Composition, targetFormat: TargetFormat, perceptionByClipId: Record<string, ClipFaceRoster>): Composition;
@@ -1,23 +1,3 @@
1
- /**
2
- * Reframe — the canonical, typed model for "the camera": an at-most-one
3
- * top-slot transform whose segments animate a source→output viewport over
4
- * time. This is the REAL model the new pipeline derives + renders from
5
- * natively (not a facade over `cropIntents`).
6
- *
7
- * Status: `reframe` is built correctly here as the canonical shape. The legacy
8
- * `cropIntents` (subject-centric, source-level, required `lateralBias`, no
9
- * `ease`) remains the live podcast path for now and is MIGRATED onto `reframe`
10
- * later — at which point `cropIntents` is deleted. No lowering shim exists;
11
- * the two coexist only during the migration window and share the per-frame
12
- * trajectory back-end + the renderer.
13
- *
14
- * Design vs legacy:
15
- * - `focus` (not `subject`): adds `point`; `shotScale` lives on `face` only.
16
- * - `zoom` (not `zoomScale`): same meaning (<1 punches in).
17
- * - `bias` optional (legacy `lateralBias` was required — podcast baggage).
18
- * - `ease` is HONORED: the reframe derive bakes the eased zoom/center ramp
19
- * into the per-frame trajectory channel, so the renderer is unchanged.
20
- */
21
1
  import { z } from "zod";
22
2
  export * from "./shotScale.js";
23
3
  export * from "./aspectLoss.js";
@@ -65,16 +45,9 @@ export declare const Focus: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
65
45
  mode: "active-speaker";
66
46
  }>]>;
67
47
  export type Focus = z.infer<typeof Focus>;
68
- /**
69
- * The segment's FIELDS, unrefined. `ReframeSegment` below wraps this in the
70
- * shotScale-XOR-zoom refine, which makes it a ZodEffects with no `.shape` — so
71
- * anything introspecting the field set (the OpenAPI doc-mirror lockstep guard)
72
- * reads THIS. Validation always goes through `ReframeSegment`.
73
- */
74
48
  export declare const ReframeSegmentFields: z.ZodObject<{
75
49
  startSec: z.ZodNumber;
76
50
  endSec: z.ZodNumber;
77
- /** WHO/WHAT the camera tracks — see the `.describe()` for per-mode guidance. */
78
51
  focus: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
79
52
  mode: z.ZodLiteral<"frame-center">;
80
53
  }, "strip", z.ZodTypeAny, {
@@ -118,17 +91,8 @@ export declare const ReframeSegmentFields: z.ZodObject<{
118
91
  }, {
119
92
  mode: "active-speaker";
120
93
  }>]>;
121
- /** Editorial language for diff/log readability ("speaker-tight",
122
- * "wide-context", "interviewer-reaction"). Not honored by the derive math
123
- * — a relabel must not bust the variant cache, so it is EXCLUDED from
124
- * `hashReframe`. */
125
94
  intent: z.ZodOptional<z.ZodString>;
126
- /** <1 punches in; 1 = full frame. Omitted when `focus.shotScale` governs — the
127
- * two are MUTUALLY EXCLUSIVE (see the refine below). Absent = 1 (full frame),
128
- * which is how `hashReframe` has always canonicalized it. */
129
95
  zoom: z.ZodOptional<z.ZodNumber>;
130
- /** Ease-in / ease-out durations (seconds) for the zoom ramp at this segment's
131
- * edges. Honored at derive time (baked into the per-frame channel). */
132
96
  ease: z.ZodOptional<z.ZodObject<{
133
97
  in: z.ZodNumber;
134
98
  out: z.ZodNumber;
@@ -139,7 +103,6 @@ export declare const ReframeSegmentFields: z.ZodObject<{
139
103
  in: number;
140
104
  out: number;
141
105
  }>>;
142
- /** Optional fine framing nudge, source-normalized [-0.3,0.3]. */
143
106
  bias: z.ZodOptional<z.ZodObject<{
144
107
  x: z.ZodNumber;
145
108
  y: z.ZodNumber;
@@ -210,7 +173,6 @@ export declare const ReframeSegmentFields: z.ZodObject<{
210
173
  export declare const ReframeSegment: z.ZodEffects<z.ZodObject<{
211
174
  startSec: z.ZodNumber;
212
175
  endSec: z.ZodNumber;
213
- /** WHO/WHAT the camera tracks — see the `.describe()` for per-mode guidance. */
214
176
  focus: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
215
177
  mode: z.ZodLiteral<"frame-center">;
216
178
  }, "strip", z.ZodTypeAny, {
@@ -254,17 +216,8 @@ export declare const ReframeSegment: z.ZodEffects<z.ZodObject<{
254
216
  }, {
255
217
  mode: "active-speaker";
256
218
  }>]>;
257
- /** Editorial language for diff/log readability ("speaker-tight",
258
- * "wide-context", "interviewer-reaction"). Not honored by the derive math
259
- * — a relabel must not bust the variant cache, so it is EXCLUDED from
260
- * `hashReframe`. */
261
219
  intent: z.ZodOptional<z.ZodString>;
262
- /** <1 punches in; 1 = full frame. Omitted when `focus.shotScale` governs — the
263
- * two are MUTUALLY EXCLUSIVE (see the refine below). Absent = 1 (full frame),
264
- * which is how `hashReframe` has always canonicalized it. */
265
220
  zoom: z.ZodOptional<z.ZodNumber>;
266
- /** Ease-in / ease-out durations (seconds) for the zoom ramp at this segment's
267
- * edges. Honored at derive time (baked into the per-frame channel). */
268
221
  ease: z.ZodOptional<z.ZodObject<{
269
222
  in: z.ZodNumber;
270
223
  out: z.ZodNumber;
@@ -275,7 +228,6 @@ export declare const ReframeSegment: z.ZodEffects<z.ZodObject<{
275
228
  in: number;
276
229
  out: number;
277
230
  }>>;
278
- /** Optional fine framing nudge, source-normalized [-0.3,0.3]. */
279
231
  bias: z.ZodOptional<z.ZodObject<{
280
232
  x: z.ZodNumber;
281
233
  y: z.ZodNumber;
@@ -400,12 +352,10 @@ export declare const ReframeSegment: z.ZodEffects<z.ZodObject<{
400
352
  } | undefined;
401
353
  }>;
402
354
  export type ReframeSegment = z.infer<typeof ReframeSegment>;
403
- /** The camera channel: exactly one per layer; segments tile the clip. */
404
355
  export declare const Reframe: z.ZodObject<{
405
356
  segments: z.ZodArray<z.ZodEffects<z.ZodObject<{
406
357
  startSec: z.ZodNumber;
407
358
  endSec: z.ZodNumber;
408
- /** WHO/WHAT the camera tracks — see the `.describe()` for per-mode guidance. */
409
359
  focus: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
410
360
  mode: z.ZodLiteral<"frame-center">;
411
361
  }, "strip", z.ZodTypeAny, {
@@ -449,17 +399,8 @@ export declare const Reframe: z.ZodObject<{
449
399
  }, {
450
400
  mode: "active-speaker";
451
401
  }>]>;
452
- /** Editorial language for diff/log readability ("speaker-tight",
453
- * "wide-context", "interviewer-reaction"). Not honored by the derive math
454
- * — a relabel must not bust the variant cache, so it is EXCLUDED from
455
- * `hashReframe`. */
456
402
  intent: z.ZodOptional<z.ZodString>;
457
- /** <1 punches in; 1 = full frame. Omitted when `focus.shotScale` governs — the
458
- * two are MUTUALLY EXCLUSIVE (see the refine below). Absent = 1 (full frame),
459
- * which is how `hashReframe` has always canonicalized it. */
460
403
  zoom: z.ZodOptional<z.ZodNumber>;
461
- /** Ease-in / ease-out durations (seconds) for the zoom ramp at this segment's
462
- * edges. Honored at derive time (baked into the per-frame channel). */
463
404
  ease: z.ZodOptional<z.ZodObject<{
464
405
  in: z.ZodNumber;
465
406
  out: z.ZodNumber;
@@ -470,7 +411,6 @@ export declare const Reframe: z.ZodObject<{
470
411
  in: number;
471
412
  out: number;
472
413
  }>>;
473
- /** Optional fine framing nudge, source-normalized [-0.3,0.3]. */
474
414
  bias: z.ZodOptional<z.ZodObject<{
475
415
  x: z.ZodNumber;
476
416
  y: z.ZodNumber;
@@ -1,43 +1,6 @@
1
- /**
2
- * kenBurnsToReframe — lower a still-image Ken-Burns preset onto the canonical
3
- * `Reframe` camera channel, so a still gets the SAME per-frame viewport
4
- * treatment as video (one renderer, arbitrary point-zoom) instead of a
5
- * StillFrame-only CSS preset.
6
- *
7
- * The five legacy presets (StillFrame.computeKenBurnsTransform) map as follows.
8
- * A still has NO faces, so every preset uses a detection-free focus
9
- * (`frame-center` or `point`) and rides the per-frame zoom/center ramp the
10
- * derive bakes from `ease`:
11
- *
12
- * - "in" — frame-center, zoom ramps 1.0 → 0.84 over the clip (slow punch-in).
13
- * - "out" — frame-center, zoom ramps 0.84 → 1.0 (slow pull-out).
14
- * - "pan-l" — a held slight zoom, focus `point` panning right→left across frame.
15
- * - "pan-r" — a held slight zoom, focus `point` panning left→right.
16
- * - "none" — frame-center, zoom 1.0, no ease → no motion (identity viewport).
17
- *
18
- * Reframe `zoom` is a CROP-WINDOW scale: <1 punches in (tighter crop). The
19
- * legacy StillFrame used CSS `scale()` where >1 zooms in; the magnitudes here
20
- * (≈16% over the clip, vs the old 8%) are tuned for the crop-window convention
21
- * and read equivalently against b-roll. Exact pixel parity with the old CSS
22
- * preset is NOT a goal (and not asserted) — the unified path is the contract.
23
- *
24
- * `ease.in` / `ease.out` are the eased-ramp durations the derive consumes. For
25
- * a monotonic zoom we put the WHOLE clip under one ease edge (in→ramp at the
26
- * head for "out", or — equivalently — ramp the zoom across the clip). The
27
- * derive (deriveTrajectory) interpolates the zoom across `ease` so the renderer
28
- * stays a single per-frame sampler.
29
- */
30
1
  import type { Reframe } from "./index.js";
31
2
  export type KenBurnsMode = "in" | "out" | "pan-l" | "pan-r" | "none";
32
- /** The punched-in zoom a Ken-Burns ramp reaches (crop-window scale; <1 = tighter). */
33
3
  export declare const KEN_BURNS_ZOOM_TIGHT = 0.84;
34
- /** The held zoom a pan preset sits at so the lateral move has room before edges. */
35
4
  export declare const KEN_BURNS_PAN_ZOOM = 0.9;
36
- /** How far (source-normalized) a pan preset slides the focus point laterally. */
37
5
  export declare const KEN_BURNS_PAN_BIAS = 0.08;
38
- /**
39
- * Lower a Ken-Burns preset to a single-segment `Reframe` over `[0, durationSec)`.
40
- * Pure; no detection. `durationSec` sets the segment span (and the ease edge
41
- * length, so the ramp fills the whole clip).
42
- */
43
6
  export declare function kenBurnsToReframe(mode: KenBurnsMode, durationSec: number): Reframe;
@@ -1,50 +1,8 @@
1
- /**
2
- * Shot scale — the ONE table that turns an editorial shot scale into a crop
3
- * zoom, and the DECIDE-point test for whether that punch-in is earned at all.
4
- *
5
- * `shotScale` is a TARGET, not a zoom: put the tracked face at `target` of the
6
- * output frame's height. The bake (`deriveTrajectory.calibrateShotScale`) reads
7
- * the same table from here, so the plan-time guard and the render agree by
8
- * construction — neither side keeps a copy.
9
- *
10
- * WHY THE WARRANT EXISTS: the bake honors ANY shotScale. It computes
11
- * `zoom = faceHeight / target`, clamps to [0.4, 1.0], and crops — with no idea
12
- * whether the source has the ROOM or the PIXELS to give. On 2026-07-13 a planner
13
- * asked for `close` on a 720x900 talking-head already framed chest-up and
14
- * centred; the bake dutifully cropped to ~392x490 and magnified it 2.7x to fill
15
- * a 1080x1350 output. Nothing objected. The shot was already the shot.
16
- *
17
- * A punch-in is warranted only when all three hold:
18
- * no-gain — the face is genuinely SMALLER than the scale asks for, so the
19
- * crop reframes rather than merely resampling.
20
- * no-room — the crop window, centred on the face and widened by how far the
21
- * subject DRIFTS across the span, still fits inside the source.
22
- * Otherwise the window clamps, the subject slides off its framing,
23
- * and heads get clipped.
24
- * no-pixels — the crop still has enough source pixels to fill the output
25
- * without magnifying past MAX_SOURCE_MAGNIFICATION.
26
- *
27
- * Pure numbers in, pure verdict out — no perception types, no I/O. The caller
28
- * supplies the face facts (the director reads them off the SubjectTrack) and the
29
- * frame geometry.
30
- */
31
1
  export type ShotScale = "close" | "standard" | "wide";
32
- /** Face height as a fraction of the OUTPUT frame height, per editorial scale. */
33
2
  export declare const SHOT_SCALE_TARGET: Record<ShotScale, number>;
34
- /** The bake clamps the derived zoom to this range. */
35
3
  export declare const ZOOM_MIN = 0.4;
36
4
  export declare const ZOOM_MAX = 1;
37
- /**
38
- * A crop showing this much of the frame or more is not a reframe — it is a
39
- * resample. Below the threshold the punch-in has to actually change the shot.
40
- */
41
5
  export declare const NO_GAIN_ZOOM = 0.9;
42
- /**
43
- * Ceiling on how far the render may magnify SOURCE pixels to fill the output.
44
- * 2x is the practical blow-up limit — past it the punch-in reads soft and mushy
45
- * next to the un-cropped spans it cuts against. (A 4K source punches in freely;
46
- * a 720p source has nothing to give.)
47
- */
48
6
  export declare const MAX_SOURCE_MAGNIFICATION = 2;
49
7
  export interface FrameGeometry {
50
8
  srcW: number;
@@ -52,16 +10,9 @@ export interface FrameGeometry {
52
10
  outW: number;
53
11
  outH: number;
54
12
  }
55
- /**
56
- * Face facts over ONE framing segment's span. Source-normalized and
57
- * output-agnostic — the same facts warrant a 9:16 and a 4:5 render.
58
- */
59
13
  export interface FaceSpanFraming {
60
14
  faceId: string;
61
- /** Median face height / SOURCE height across the span. */
62
15
  heightFrac: number;
63
- /** Face-CENTRE travel across the span, source-normalized [0,1]. A static
64
- * subject has cxMin ≈ cxMax; a walking one spreads. */
65
16
  cxMin: number;
66
17
  cxMax: number;
67
18
  cyMin: number;
@@ -77,42 +28,16 @@ export type PunchInWarrant = {
77
28
  rule: PunchInRule;
78
29
  reason: string;
79
30
  };
80
- /**
81
- * The source rect the output viewport sees at zoom 1.0 — the aspect-fit window.
82
- * Mirrors `calibrateShotScale`'s `fitH`.
83
- */
84
31
  export declare function fitWindow(g: FrameGeometry): {
85
32
  fitW: number;
86
33
  fitH: number;
87
34
  };
88
- /** The zoom a shotScale implies for a face of this height (fraction of the FIT window). */
89
35
  export declare function shotScaleZoom(heightFracOfFit: number, shotScale: ShotScale): number;
90
- /**
91
- * Is this punch-in earned? Refusals carry the NUMBERS — they route back to the
92
- * planner verbatim as its next-turn instruction, so they must say what is true
93
- * of THIS footage and what to do instead.
94
- */
95
36
  export declare function punchInWarrant(face: FaceSpanFraming, shotScale: ShotScale, g: FrameGeometry): PunchInWarrant;
96
- /** One second of one tracked face, source-normalized. */
97
37
  export interface FaceSecondRow {
98
38
  heightFrac: number;
99
39
  cx: number;
100
40
  cy: number;
101
41
  }
102
- /**
103
- * Aggregate per-second face rows into the facts a warrant needs over ONE span:
104
- * the MEDIAN height (robust to a stray frame) and the RANGE the centre travels
105
- * (a walking subject spreads it; a static one collapses it to a point).
106
- *
107
- * Returns null when the face is absent for more than half the span — there is
108
- * nothing to frame, and the caller must refuse rather than invent a box. Shared
109
- * by the planner's guard and the author's `set_crop_intents`, so both judge a
110
- * punch-in against the same aggregate.
111
- */
112
42
  export declare function faceOverSpan(perSecond: Array<Record<string, FaceSecondRow>>, faceId: string, startSec: number, endSec: number): FaceSpanFraming | null;
113
- /**
114
- * The tightest scale this face+source actually supports, or null when none does
115
- * (the source is already framed as tight as it can usefully go). This is what
116
- * the PLANNER is told, so it never has to guess at a punch-in the guard refuses.
117
- */
118
43
  export declare function tightestWarrantedShotScale(face: FaceSpanFraming, g: FrameGeometry): ShotScale | null;
@@ -1,52 +1,14 @@
1
- /**
2
- * Pure trajectory math shared by the director's `deriveTrajectory` (the face/
3
- * video producer) and the renderer's still path. This is the SINGLE source of
4
- * truth for:
5
- * - the eased zoom ramp (`buildEasedZooms`) + center pan ramp (`buildPannedCenters`),
6
- * - the FACELESS still-image trajectory producer (`deriveStillTrajectory`),
7
- * so the still and video paths share one renderer (CropFromTrajectory) and one
8
- * per-frame center+zoom convention. Framework-free, no perception/face machinery
9
- * (composition is a leaf) — a still has no faces, so its trajectory is purely the
10
- * authored point/frame-center + the eased zoom/center ramp.
11
- *
12
- * The `TrajectoryData` / `TrajectorySegment` shapes are MIRRORS of the renderer's
13
- * (packages/execution/render-entry/src/CropFromTrajectory.tsx) and the execution derive's
14
- * (packages/execution/core/src/render/deriveTrajectory.ts) — three mirrors by
15
- * design (different package boundaries; same wire shape).
16
- */
17
1
  import type { Reframe } from "./index.js";
18
- /** A normalized crop center `[cx, cy]` in [0,1] vs source dims. */
19
2
  export type Center = [number, number];
20
- /** Clamp to [0,1]. */
21
3
  export declare function clip01(v: number): number;
22
- /**
23
- * Cubic ease-out `1 - (1-t)^3` for t∈[0,1] — matches the legacy StillFrame's
24
- * `Easing.out(Easing.cubic)` so motion decelerates ("settled").
25
- */
26
4
  export declare function easeOutCubic(t: number): number;
27
- /**
28
- * Per-frame crop-window zoom for an EASED segment. Holds at `targetZoom` through
29
- * the body; ramps to/from full-frame (1.0) at the eased edges:
30
- * - `easeInSec` at the HEAD: 1.0 → targetZoom.
31
- * - `easeOutSec` at the TAIL: targetZoom → 1.0.
32
- * Frame times are `frameIdx / srcFps` (segment-local). Edges clamp to the span.
33
- */
34
5
  export declare function buildEasedZooms(frameCount: number, srcFps: number, targetZoom: number, easeInSec: number, easeOutSec: number): number[];
35
- /**
36
- * Ramp per-frame CENTERS for a `point`-focus pan: from an ORIGIN
37
- * (`point + biasOffset`) to the authored `point`, eased over `easeInSec` at the
38
- * head (then held). Used by Ken-Burns `pan-l` / `pan-r`.
39
- */
40
6
  export declare function buildPannedCenters(frameCount: number, srcFps: number, point: Center, biasOffset: Center, easeInSec: number): Center[];
41
- /** One tracked subject's per-frame face boxes + active-speaker windows. */
42
7
  export interface TrajectorySubject {
43
8
  face_id: string;
44
- /** Per-frame [x,y,w,h] in [0,1] vs source dims; null where this subject has no face. */
45
9
  face_box_series: Array<[number, number, number, number] | null>;
46
- /** [startFrame, endFrame) ranges (segment-relative) where this subject is the active speaker. */
47
10
  active_windows: Array<[number, number]>;
48
11
  }
49
- /** One trajectory segment. */
50
12
  export interface TrajectorySegment {
51
13
  idx: number;
52
14
  start_sec: number;
@@ -58,20 +20,8 @@ export interface TrajectorySegment {
58
20
  subjects: TrajectorySubject[];
59
21
  caption_band_reserve: number;
60
22
  zooms?: number[];
61
- /**
62
- * DERIVED outcome (Phase 5 zoom-to-fit): true iff this (sub-)shot's locked
63
- * subject group is WIDER than the output aspect at zoom 1.0, so the camera
64
- * pads-and-holds at the widest honest frame rather than containing the whole
65
- * group. An emitted authored outcome surfaced to the driving agent (the
66
- * editorial drop/cut decision is the agent's, not the renderer's) — NOT an
67
- * error and NOT a silent edge-clip. Absent (undefined) on a fitting group and
68
- * on every non-`all-faces` mode. The renderer ignores it (it's metadata for
69
- * the agent / eval); the crop already pads-and-holds via the coverage clamp.
70
- */
71
23
  overframed?: boolean;
72
24
  }
73
- /** The trajectory JSON the render consumes. (No `intent_hash` — no producer emits
74
- * it and nothing reads it; it was a renderer-only drift field, now dropped.) */
75
25
  export interface TrajectoryData {
76
26
  bake_version: string;
77
27
  aspect: string;
@@ -80,20 +30,5 @@ export interface TrajectoryData {
80
30
  src_fps: number;
81
31
  segments: TrajectorySegment[];
82
32
  }
83
- /** Per-aspect caption keep-out band (fraction of output height). SSOT — the
84
- * execution derive imports this rather than re-declaring it. */
85
33
  export declare const CAPTION_BAND_RESERVE: Record<string, number>;
86
- /**
87
- * Derive a FACELESS still-image trajectory from a `Reframe` (typically the one
88
- * `kenBurnsToReframe` produced). A still has no detection, so every focus reduces
89
- * to a constant authored center (`point` → `[x,y]`; everything else → frame-center
90
- * `[0.5,0.5]`), and the only motion is the eased zoom (`buildEasedZooms`) / center
91
- * pan (`buildPannedCenters`). Output is the SAME `TrajectoryData` shape the video
92
- * path produces, so the renderer (CropFromTrajectory) consumes both identically.
93
- *
94
- * `srcW`/`srcH` are the IMAGE pixel dims (used by the renderer's crop-window math).
95
- * Each segment's `[startSec, endSec)` × `fps` sets its per-frame series length.
96
- * `fps` is the OUTPUT fps (the trajectory is sampled at this rate — `src_fps = fps`
97
- * for a still, since the "source" is one frozen image with no native timeline).
98
- */
99
34
  export declare function deriveStillTrajectory(reframe: Reframe, srcW: number, srcH: number, fps: number, aspect: string, bakeVersion: string): TrajectoryData;
@@ -1,36 +1,5 @@
1
- /**
2
- * FLATTENING COMPOUND CLIPS.
3
- *
4
- * A `{kind:'composition'}` source is a reference; nothing downstream — the
5
- * renderer, the evaluator, the still lane — knows how to draw a reference.
6
- * Flattening resolves each compound clip into the child composition's own
7
- * clips, shifted into the host's time and clipped to the compound's window,
8
- * producing a composition with no compound sources left. It runs at the ONE
9
- * translator every render lane already flows through, so a composition that
10
- * embeds another renders identically on desktop, cloud and still lanes.
11
- *
12
- * Semantics, stated because each was a decision:
13
- *
14
- * - The child's tracks come in as NEW tracks directly after the host track
15
- * carrying the compound clip (precomp semantics). Merging child clips into
16
- * the HOST's lanes would collide with whatever else the host has there,
17
- * and "my intro overwrote my b-roll" is not a bug anyone should meet.
18
- * - `trim` selects a window of the child's own timeline; the compound's
19
- * `duration` clips the result. Content beyond either is dropped, exactly
20
- * as a media trim drops frames.
21
- * - Child clip ids are prefixed with the compound clip's id, so two
22
- * instances of the same child in one host cannot collide.
23
- * - Child MARKERS are dropped. The host's marker lane is the host's.
24
- *
25
- * CYCLES AND DEPTH FAIL LOUD. A composition that embeds itself — directly or
26
- * through a chain — has no finite flattening; and unbounded nesting is a
27
- * stack-shaped denial of service. Both throw `InvariantError` rather than
28
- * rendering something partial: a render that silently dropped an embedded
29
- * sequence is a corrupted deliverable with a green checkmark.
30
- */
31
1
  import type { Composition } from "../validators/composition.js";
32
2
  export declare const MAX_COMPOUND_DEPTH = 4;
33
3
  export type ResolveComposition = (compositionId: string) => Composition | undefined;
34
- /** Does this composition contain any compound clip at all? Cheap gate. */
35
4
  export declare function hasCompoundClips(composition: Pick<Composition, "tracks">): boolean;
36
5
  export declare function flattenCompoundClips(composition: Composition, resolve: ResolveComposition): Composition;
@@ -1,39 +1,15 @@
1
- /**
2
- * INTENT → PLAN.
3
- *
4
- * The single entry point every gesture goes through. A caller says what it
5
- * wants in timeline terms — "these clips, to this track, starting here" — and
6
- * gets back a plan it can apply or a set of named refusals it can render. It
7
- * never gets back a mutation.
8
- *
9
- * WHY THIS EXISTS AT ALL. The drag path used to do its own placement inline:
10
- * hit-test a Y coordinate, look up the track, check kind compatibility, commit.
11
- * It had no occupancy test (so two clips could be stacked at identical times on
12
- * one track), no way to mint a lane, and no way to say why a drag was refused —
13
- * the user just got a silent snap-back. Meanwhile the occupancy test, the
14
- * placement resolver and TWO separate overlap invariant checkers all existed and
15
- * none of them ran in production.
16
- *
17
- * The fix is not to add a call to the drag path. It is to make a drag path that
18
- * skips placement unrepresentable, by giving the applier nothing to accept
19
- * except the value this module produces.
20
- */
21
1
  import type { Composition } from "../validators/composition.js";
22
2
  import type { OverlapPolicy } from "./resolve.js";
23
3
  import type { TimelinePlan } from "./plan.js";
24
- /** One clip's requested destination. */
25
4
  export interface ClipMove {
26
5
  clipId: string;
27
- /** Target lane. Same as the clip's current track for an in-lane slide. */
28
6
  toTrackId: string;
29
7
  startTime: number;
30
- /** Timeline duration after the gesture — unchanged for a pure move. */
31
8
  duration: number;
32
9
  }
33
10
  export interface MoveIntent {
34
11
  type: "moveClips";
35
12
  moves: readonly ClipMove[];
36
- /** Default `resolve`; `refuse` is for callers that want a dry-run answer. */
37
13
  policy?: OverlapPolicy;
38
14
  label?: string;
39
15
  }
@@ -43,11 +19,6 @@ export interface ResolveIntentArgs {
43
19
  newClipId: () => string;
44
20
  }
45
21
  export declare function resolveMoveIntent(args: ResolveIntentArgs): TimelinePlan;
46
- /**
47
- * The gate's read-only half: does this composition still satisfy the one rule
48
- * the move path exists to protect? Kept next to the resolver so a resolution
49
- * bug fails here rather than reaching the document.
50
- */
51
22
  export declare function planLeavesOverlaps(composition: Pick<Composition, "tracks">): Array<{
52
23
  trackId: string;
53
24
  clipIds: [string, string];