@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,9 +1,5 @@
1
1
  export { apcaLc } from "../../brand-derivation/index.js";
2
- /** Bump on ANY change to the algorithm or constants below. The render consumer
3
- * embeds this into renderCacheKey (spec §15) so a floor change invalidates
4
- * cached renders transitively — never a remembered manual bump. */
5
2
  export declare const FLOOR_VERSION = "floor-v6-2026.06.09";
6
- /** Fractions of the OUTPUT rect. Origin TOP-LEFT, y-down, all in [0,1]. */
7
3
  export interface Rect {
8
4
  x: number;
9
5
  y: number;
@@ -11,73 +7,43 @@ export interface Rect {
11
7
  h: number;
12
8
  }
13
9
  export type Anchor = "top" | "bottom" | "lower-third" | "left" | "right" | "free";
14
- /** A frame window in absolute frame indices (inclusive start, exclusive end). */
15
10
  export interface FrameWindow {
16
11
  startFrame: number;
17
12
  endFrame: number;
18
13
  }
19
- /** Per-frame face box normalized to the OUTPUT frame (the crop is already applied
20
- * — render derives this as crop∘FaceBoxSource). `null` = no face that frame. */
21
14
  export type FaceBoxOutput = Rect;
22
- /** One tracked person. The bake (spec §10) emits a per-frame face box per subject
23
- * plus the windows where they are the active speaker. */
24
15
  export interface Subject {
25
16
  id: string;
26
- /** Per-frame face box (output coords), `null` where this subject has no face. */
27
17
  faceBoxSeries: (FaceBoxOutput | null)[];
28
- /** Windows where this subject is the active speaker (drives speaker-switch, spec §8). */
29
18
  activeWindows?: FrameWindow[];
30
19
  }
31
- /** The composed layout shape resolved from `subjects[]`. `single-focus` is fully
32
- * placed by this module; the designed split/stacked/speaker-switch geometry is a
33
- * later plan (spec §8) — reported here so callers branch correctly and the
34
- * multi-subject case is never silently flattened. */
35
20
  export type LayoutIntent = "single-focus" | "split" | "stacked" | "speaker-switch";
36
- /** The CEILING contract (spec §7) — declared here so the author-time agent and
37
- * the render/ceiling consumers share one shape. The floor only bounds a
38
- * treatment's animated EXTENT (a popping word must not pop onto the face); the
39
- * treatment library itself lives above the floor. */
40
21
  export interface Treatment {
41
22
  segmentation: "word" | "phrase" | "line";
42
23
  emphasis: {
43
24
  keywords: string[];
44
25
  style: "color" | "scale" | "weight";
45
26
  };
46
- /** One of the repo's mood-tagged kinetic caption styles (useWhen/pairsWith/avoidWith honoured above the floor). */
47
27
  kineticPreset: string;
48
28
  maxLines: number;
49
- /** Index into the editorial type scale (spec §7.1) — NOT a raw px guess. */
50
29
  typeScaleStep: number;
51
30
  }
52
31
  export interface PlacedElement {
53
32
  id: string;
54
33
  kind: "caption" | "graphic";
55
- /** `inset` respects face + safe-zones + inter-element; `takeover` is intentional
56
- * full-frame occlusion (honours only safe zones for its internal text). */
57
34
  intent: "inset" | "takeover";
58
- /** Captions are required (the reframe yields, never drops); graphics default droppable. */
59
35
  required: boolean;
60
- /** Higher places first. Captions highest by default. */
61
36
  priority: number;
62
37
  hasText: boolean;
63
- /** MEASURED extent (caption layer measures the text; overlay measures the
64
- * primitive at its declared params) — NOT a guess. The hard face guarantee is
65
- * only as hard as this number, so it must be real (spec §5). */
66
38
  measuredExtent: {
67
39
  w: number;
68
40
  h: number;
69
41
  };
70
42
  preferredRegion?: Anchor;
71
43
  treatment?: Treatment;
72
- /** Resolved text color (hex) for the legibility check; defaults to the white
73
- * pole when omitted (the safe default text color over an unknown backdrop). */
74
44
  textColor?: string;
75
- /** Element time window in absolute frames (caller converts seconds→frames up front). */
76
45
  timeWindow: FrameWindow;
77
46
  }
78
- /** Caller-supplied luminance summary of the layers BENEATH an element (no
79
- * circularity — never the element's own remedy). Each tile is Y∈[0,1]; the
80
- * WORST tile drives the decision. Render samples real pixels; tests synthesize. */
81
47
  export interface LuminanceSummary {
82
48
  tiles: number[];
83
49
  }
@@ -90,10 +56,6 @@ export interface ResolvedElement {
90
56
  remedy: LegibilityRemedy;
91
57
  };
92
58
  }
93
- /** The reframe's yield. `transform` is a per-frame additive adjustment on the
94
- * baked trajectory (generalises the old caption scalar shift); `mat` is a
95
- * DESIGNED reserved band (the render fills it with blurred-glass/gradient —
96
- * NEVER a flat letterbox on 9:16/4:5). */
97
59
  export type ReframeAdjustment = {
98
60
  kind: "transform";
99
61
  dy: number;
@@ -118,129 +80,46 @@ export interface FloorInput {
118
80
  platform: string;
119
81
  aspect: "9:16" | "1:1" | "4:5" | "16:9";
120
82
  };
121
- /** Multi-subject native (spec §5/§8). One subject → single-focus. */
122
83
  subjects: Subject[];
123
84
  elements: PlacedElement[];
124
- /** depthMode relaxes the face keep-out's LOWER edge into a torso band (spec §12).
125
- * When `captionsBehind` is supplied, depthMode is GATED by the eligibility
126
- * predicate (§22.2) — ineligible degrades to a normal lower-third caption. */
127
85
  depthMode?: boolean;
128
- /** Captions-behind-speaker eligibility signals (§22.2), injected by the render
129
- * env: `activeSpeakerPresenceFraction` summarized from the bake's activeWindows;
130
- * `activeBandCoverage` = the post-sizing matte occlusion of the caption band
131
- * (a render-time sample, like `backdrop`). Absent ⇒ the gate is inert and
132
- * depthMode is honored as authored (today's behavior). */
133
86
  captionsBehind?: {
134
87
  activeSpeakerPresenceFraction: number;
135
88
  activeBandCoverage: number | null;
136
89
  };
137
- /** Layers-beneath luminance for an element's region+window. Render supplies the
138
- * real sampler; tests supply a synthetic one. */
139
90
  backdrop: (rect: Rect, frames: number[]) => LuminanceSummary;
140
91
  }
141
92
  export interface FloorEnvelope {
142
93
  perElement: ResolvedElement[];
143
94
  reframe: ReframeAdjustment;
144
- /** Per-frame UNION face keep-out across all subjects (`null` where no subject has a face). */
145
95
  faceKeepOut: (Rect | null)[];
146
96
  layout: LayoutIntent;
147
97
  diagnostics: FloorDiagnostics;
148
98
  }
149
- /** Face keep-out padding, in fractions of the FACE box (scales with face size,
150
- * aspect-agnostic). Top grows most (hair/headroom), then bottom, then sides. */
151
99
  export declare const FACE_PADDING: {
152
100
  readonly top: 0.6;
153
101
  readonly bottom: 0.3;
154
102
  readonly side: 0.25;
155
103
  };
156
- /** APCA Lc target for caption/graphic text over video (spec §2 invariant 2).
157
- * Numerically equals brand-derivation's `FLOORS.nonBody`, but it is a DISTINCT
158
- * concept (text-over-hostile-video, not muted-UI-text) — kept separate on
159
- * purpose so a change to one never silently moves the other. */
160
104
  export declare const CAPTION_LC_FLOOR = 60;
161
- /** Minimum effective zoom the yield may request — mirrors the bake's source-fit
162
- * floor (`CropFromTrajectory` effectiveZoom clamp). Below this the source no
163
- * longer fills the frame, so we fall to a designed mat instead. */
164
105
  export declare const MIN_ZOOM = 0.4;
165
- /** Pad a single face box by the face-relative padding vector and clamp to [0,1].
166
- * `null` (no-face frame) → `null`. In depthMode the lower edge is NOT grown
167
- * (the torso band is legible-behind, spec §12). */
168
106
  export declare function faceKeepOut(face: FaceBoxOutput | null, depthMode?: boolean): Rect | null;
169
- /** Axis-aligned bounding box of a set of rects. */
170
107
  export declare function boundingBox(rects: Rect[]): Rect;
171
- /** Per-frame UNION of every subject's padded face keep-out. `null` for a frame
172
- * where no subject has a face. This is the floor's "face class" — captions never
173
- * occlude ANY subject's face, single- or multi-subject. */
174
108
  export declare function unionFaceKeepOutSeries(subjects: Subject[], depthMode?: boolean): (Rect | null)[];
175
- /** Per-frame keep-out for SPEAKER-SWITCH (spec §8): the crop follows the active
176
- * speaker, so only THEY are prominently in frame — the keep-out tracks the
177
- * active subject (whose `activeWindows` cover the frame), NOT the union of all
178
- * subjects. This lets captions sit tight under the in-frame speaker instead of
179
- * clearing an off-frame second subject's union (the over-conservative single-
180
- * stage behavior). Gaps (before the first switch, or no window covers the frame)
181
- * hold the first subject that has a face there; truly faceless frames → null. */
182
109
  export declare function activeFaceKeepOutSeries(subjects: Subject[], depthMode?: boolean): (Rect | null)[];
183
- /** Resolve the composed layout shape from `subjects[]`. One subject → single-
184
- * focus. Two+ subjects → speaker-switch when active-speaker windows exist,
185
- * else a static split. (The DESIGNED geometry for the multi cases is spec §8 /
186
- * a later plan; this module places them with a correct union keep-out and
187
- * reports the intent so nothing is silently flattened.) */
188
110
  export declare function resolveLayoutIntent(subjects: Subject[]): LayoutIntent;
189
- /**
190
- * Compute the reframe yield needed to open `neededBand` of vertical space below
191
- * the (clip-max) face keep-out for a required element. Precedence:
192
- * 1. already enough band below → identity transform
193
- * 2. reposition: raise the source so the keep-out leaves `neededBand` below it
194
- * 3. zoom-out: shrink the subject (capped at MIN_ZOOM) to free vertical space
195
- * 4. designed mat: a reserved band at the bottom (the render fills it with a
196
- * designed treatment — NEVER a flat letterbox; forbidden as a frame-border
197
- * pillarbox on 9:16/4:5).
198
- */
199
111
  export declare function reframeYield(input: {
200
112
  maxFaceKeepOut: Rect;
201
113
  neededBand: number;
202
114
  aspect: string;
203
115
  }): ReframeAdjustment;
204
- /**
205
- * TOP-direction reframe-yield — open `neededBand` of vertical space ABOVE the
206
- * face keep-out for a HERO caption that sits ABOVE the subject (the "STEAL"
207
- * composition: subject low, big text in the headroom). Mirror of `reframeYield`
208
- * but UP-direction:
209
- * 1. already enough band above → identity
210
- * 2. reposition: LOWER the subject (dy>0) so the keep-out's top leaves the band
211
- * 3. zoom-out: shrink the subject (capped at MIN_ZOOM) to free the rest
212
- * 4. INFEASIBLE → `null` (NEVER a designed mat — "no fake stuff", per the hero
213
- * caption decision). The caller degrades to a readable FRONT caption when
214
- * real headroom can't fit the band (e.g. the head is already frame-high).
215
- * NOTE: operates in OUTPUT-frame keep-out coords like reframeYield; the SOURCE
216
- * headroom check (whether the source actually has room above the head) belongs
217
- * to the eligibility gate that feeds this — see captionsBehind eligibility.
218
- */
219
116
  export declare function reframeYieldTop(input: {
220
117
  maxFaceKeepOut: Rect;
221
118
  neededBand: number;
222
119
  aspect: string;
223
120
  }): ReframeAdjustment | null;
224
- /** Speaker silhouette width ÷ face KEEP-OUT width. Shoulders span ~2.2× the bare
225
- * face; the keep-out already carries side padding (~1.5× the face), so the
226
- * silhouette is ~1.5× the keep-out. Used to size the co-view crop. */
227
121
  export declare const SILHOUETTE_TO_KEEPOUT_W = 1.5;
228
- /** Co-view target: the speaker silhouette must occupy at most this fraction of
229
- * the OUTPUT width, so a centred caption (~0.8 wide) extends past the body on
230
- * both sides and reads WITH a body-bite (spec §12) instead of vanishing. At 0.45
231
- * the body covers ~45% of the width → ~44% of the caption is visible (a clear
232
- * readable bite, not just the stray ends) while keeping a comfortable medium
233
- * shot. Lower = more caption shown but a smaller subject (pure aesthetic knob). */
234
122
  export declare const COVIEW_MAX_SILHOUETTE_W = 0.45;
235
- /**
236
- * Reframe for CAPTIONS-BEHIND (co-view, depthMode). Unlike reframeYield (which
237
- * opens a vertical band BELOW the face for a lower-third caption), the co-view
238
- * caption sits CENTRED behind the speaker — so the constraint is LATERAL: the
239
- * silhouette must be narrower than the caption or the body hides the whole line
240
- * (the over-occlusion bug). Widen the crop (shrink the subject, face-scale<1,
241
- * capped at MIN_ZOOM) until the silhouette fits COVIEW_MAX_SILHOUETTE_W. dy=0 —
242
- * no vertical reposition; the caption is behind, not below.
243
- */
244
123
  export declare function coViewReframe(maxFaceKeepOut: Rect): ReframeAdjustment;
245
124
  export declare const MIN_ACTIVE_SPEAKER_PRESENCE = 0.6;
246
125
  export declare const COVIEW_MIN_BAND_COVERAGE = 0.15;
@@ -250,20 +129,6 @@ export interface CaptionsBehindEligibility {
250
129
  eligible: boolean;
251
130
  reason: CaptionsBehindReason;
252
131
  }
253
- /**
254
- * Pure eligibility gate for captions-behind-speaker. Evaluated AFTER the co-view
255
- * reframe sizing (spec §22.2), so `activeBandCoverage` is the post-sizing
256
- * occlusion of the caption band by the active speaker's silhouette.
257
- *
258
- * @param activeSpeakerPresenceFraction fraction of clip frames with ANY active
259
- * speaker present (single or two-shot; not "single speaker"). Injected.
260
- * @param activeBandCoverage mean fraction of the caption band the active
261
- * speaker's silhouette occludes over its windows; `null` ⇒ NOT YET MEASURED
262
- * (the bake-time coverage scalar is a follow-on) → the coverage gate is
263
- * SKIPPED and presence + coViewReframe sizing gate instead. Injected like
264
- * `LuminanceSummary` (bake/render-env), keeping this function pure.
265
- * @param legible APCA decision (Lc ≥ CAPTION_LC_FLOOR) on the visible portion.
266
- */
267
132
  export declare function captionsBehindEligible(input: {
268
133
  activeSpeakerPresenceFraction: number;
269
134
  activeBandCoverage: number | null;
@@ -279,26 +144,7 @@ interface Blockers {
279
144
  faceKeepOut: Rect[];
280
145
  safeZones: Rect[];
281
146
  }
282
- /**
283
- * Place a full-width-ish horizontal band element (caption / lower-third) in the
284
- * legal area. Two-zone model (spec §6.2): center-crossing blockers carve the
285
- * legal vertical GAPS (1-D solve); side regions (rails) cap the horizontal
286
- * CORRIDOR of the chosen band. Returns `null` when no legal vertical gap of
287
- * `minH` fits, or when side rails squeeze the corridor below MIN_CAPTION_WIDTH.
288
- * (Full 2-D packing for split/stacked layouts is spec §8 / a later plan.)
289
- */
290
147
  export declare function placeInLegalArea(el: PlaceReq, b: Blockers): Rect | null;
291
- /**
292
- * The safe caption REGION for a destination — the floor's caption placement
293
- * WITHOUT per-clip face context. The reframe handles faces per clip; the caption
294
- * position itself is clip-independent (safe-zone-driven), so the GLOBAL caption
295
- * layer renders into THIS band and it matches the per-clip floor's caption region
296
- * (and its scrim) by construction — same placeInLegalArea, same safe zones.
297
- *
298
- * For a bottom/lower-third anchor the region's BOTTOM edge sits at the top of the
299
- * platform's bottom-UI strip, so a caption rendered into it clears the chrome on
300
- * any vertical surface (lookupSafeZones unions platforms when none is threaded).
301
- */
302
148
  export declare function resolveCaptionRegion(input: {
303
149
  aspect: string;
304
150
  platform?: string;
@@ -308,17 +154,6 @@ export declare function resolveCaptionRegion(input: {
308
154
  };
309
155
  anchor?: Anchor;
310
156
  }): Rect;
311
- /**
312
- * The region a code/graphic overlay (jsxSource) must render WITHIN — the largest
313
- * band clear of the caption + platform safe zones (item #10: floor assigns the
314
- * region, the jsx obeys). Keeps editorial graphics off the captions and the
315
- * platform UI; the agent's jsx reads `params.region` (output fractions) for its
316
- * bounds instead of hard-coding positions / full-frame useVideoConfig math.
317
- *
318
- * v1 is face-agnostic (clip-independent, like the caption band); per-clip
319
- * face-aware overlay placement is a follow-up — the brief tells the agent the
320
- * region may contain the speaker, so graphic elements should favour its edges.
321
- */
322
157
  export declare function resolveOverlayRegion(input: {
323
158
  aspect: string;
324
159
  platform?: string;
@@ -328,22 +163,8 @@ export declare function resolveOverlayRegion(input: {
328
163
  h: number;
329
164
  };
330
165
  }): Rect;
331
- /**
332
- * Decide the legibility remedy for text of `textColor` over a backdrop luminance
333
- * summary. Real APCA (no proxy): the text's relative luminance vs each tile's
334
- * luminance, reduced to the WORST tile. ≥ CAPTION_LC_FLOOR → no remedy; else the
335
- * floor REQUESTS the cheapest always-legible remedy (`scrim`; the render makes it
336
- * a designed blurred-glass/gradient, never a hard stroke — spec §14). The
337
- * `lcTarget` is always the floor (the remedy must clear it).
338
- */
339
166
  export declare function decideLegibility(backdrop: LuminanceSummary, textColor?: string): {
340
167
  lcTarget: number;
341
168
  remedy: LegibilityRemedy;
342
169
  };
343
- /**
344
- * Resolve the composition floor for one clip. Linear, single-stage-per-clip, no
345
- * feedback loop → deterministic. Never throws; required elements are never
346
- * dropped (they get a forced designed-mat / lowest-gap placement), only
347
- * non-required elements may drop (logged in diagnostics).
348
- */
349
170
  export declare function resolveCompositionFloor(input: FloorInput): FloorEnvelope;
@@ -1,45 +1,21 @@
1
1
  import type { TrajectoryData, TrajectorySegment } from "../reframe/trajectory.js";
2
2
  import type { Rect, ReframeAdjustment, Subject } from "./composition-floor.js";
3
3
  export declare const FRAME_ROUNDING_TOLERANCE = 2;
4
- /**
5
- * Resolve which trajectory segment (and index within it) a clip-relative source
6
- * frame lands in. A frame within FRAME_ROUNDING_TOLERANCE of a segment edge
7
- * clamps to the nearest edge; ANY larger gap FAILS LOUD (a real coverage/mapping
8
- * bug — a cropIntent gap with no excludedRange, or a bad trim/section mapping —
9
- * must not silently clamp onto the wrong frames).
10
- */
11
4
  export declare function resolveSegmentAt(traj: TrajectoryData, srcFrame: number): {
12
5
  seg: TrajectorySegment;
13
6
  inSegIdx: number;
14
7
  };
15
- /** A playable span of the clip — one JumpCutVideo section. `sourceInFrames` is
16
- * the SOURCE-ABSOLUTE frame (output fps) the span seeks to. */
17
8
  export interface CropSection {
18
9
  sourceInFrames: number;
19
10
  durationInFrames: number;
20
11
  }
21
- /**
22
- * Map an OUTPUT frame to the CLIP-RELATIVE trajectory frame, section-aware. The
23
- * trajectory is clip-relative (frame 0 = the clip's `trim.start`), but a clip
24
- * with `excludedRanges` plays N playable spans, each seeking to a
25
- * SOURCE-ABSOLUTE `sourceInFrames` with the trimmed gaps removed. So output
26
- * frame F does NOT equal trajectory frame F; the section walk bridges the gaps.
27
- */
28
12
  export declare function outputToTrajectoryFrame(sections: CropSection[], trimStartFrames: number, outFrame: number, srcFps: number, fps: number): number;
29
- /** The per-frame crop-transform pieces `sourceRectToOutput` needs — the subset of
30
- * `computeCropTransform`'s output that maps source pixels to output pixels. */
31
13
  export interface CropTransform {
32
14
  tx: number;
33
15
  ty: number;
34
16
  scaledSrcW: number;
35
17
  scaledSrcH: number;
36
18
  }
37
- /**
38
- * Pure crop-transform math. Given the resolved per-frame center + crop params,
39
- * the output dims, and the composition floor's reframe, returns the CSS
40
- * transform (`tx`, `ty`, scaled source dims). `tyNoShift` is the y-translation
41
- * WITHOUT the reframe, exposed so tests can assert magnitude.
42
- */
43
19
  export declare function computeCropTransform(input: {
44
20
  traj: {
45
21
  src_w: number;
@@ -60,13 +36,6 @@ export declare function computeCropTransform(input: {
60
36
  scaledSrcW: number;
61
37
  scaledSrcH: number;
62
38
  };
63
- /**
64
- * Map a SOURCE-normalized rect (`{x,y,w,h}` in [0,1] against source dims) to an
65
- * OUTPUT-normalized rect, applying the per-frame crop — the `crop∘FaceBoxSource`
66
- * the composition floor's `FaceBoxOutput` is defined as. NOT clamped: a face near
67
- * the source edge can map partly off-frame, and that is the truth the floor needs
68
- * (`faceKeepOut` clamps to [0,1] when it builds the keep-out).
69
- */
70
39
  export declare function sourceRectToOutput(src: Rect, t: CropTransform, outW: number, outH: number): Rect;
71
40
  export interface BuildSubjectsOutputArgs {
72
41
  traj: TrajectoryData;
@@ -77,38 +46,12 @@ export interface BuildSubjectsOutputArgs {
77
46
  outH: number;
78
47
  fps: number;
79
48
  }
80
- /**
81
- * Build per-clip `Subject[]` with OUTPUT-space face boxes, accumulated by
82
- * `face_id` across the clip's output frames — the projection loop factored out of
83
- * the render's buildFloorInput so the Director derives IDENTICAL keep-outs. For
84
- * each output frame: section-aware output→trajectory map → resolve segment →
85
- * crop transform → project each source face box to output.
86
- */
87
49
  export declare function buildSubjectsOutput(args: BuildSubjectsOutputArgs): Subject[];
88
- /**
89
- * The face keep-out rect(s) covering a beat window [startFrame, endFrame) in
90
- * OUTPUT coords — for the structure-first graphics solver. Unions the
91
- * speaker-active face keep-outs across the window into ONE bounding rect (so a
92
- * graphic placed clear of it is clear of the face at EVERY frame of the beat).
93
- * Empty when no face is present in the window (e.g. b-roll).
94
- */
95
50
  export declare function faceKeepOutForWindow(subjects: Subject[], startFrame: number, endFrame: number, depthMode?: boolean): Rect[];
96
- /**
97
- * A SOURCE-space subject-silhouette provider: given a CLIP-RELATIVE source frame
98
- * (frame 0 = the clip's trim.start, at src_fps), return the subject's silhouette
99
- * bbox source-normalized [0,1] (`{x,y,w,h}`), or `null` when no subject is present
100
- * that frame. The matte-geometry sidecar's per-frame foreground bbox is today's
101
- * concrete provider (see the director's buildEvalSilhouette); a person-track union
102
- * is a drop-in alternate. DECOUPLED from the crop on purpose: the SILHOUETTE comes
103
- * from here; the CROP comes from `traj` (the render's reframe) — so the box lands
104
- * exactly where the shipped render places the subject.
105
- */
106
51
  export interface SubjectSilhouetteSource {
107
52
  bboxAtSourceFrame: (srcFrame: number) => Rect | null;
108
53
  }
109
54
  export interface BuildSilhouetteKeepOutArgs {
110
- /** The RENDER's reframe trajectory (FACE-derived — the SHIPPED crop). Its
111
- * segments supply the per-frame crop transform; its `subjects` are unused. */
112
55
  traj: TrajectoryData;
113
56
  silhouette: SubjectSilhouetteSource;
114
57
  sections: CropSection[];
@@ -118,23 +61,5 @@ export interface BuildSilhouetteKeepOutArgs {
118
61
  outH: number;
119
62
  fps: number;
120
63
  }
121
- /**
122
- * Per-output-frame OUTPUT-space subject-SILHOUETTE keep-out — the silhouette twin
123
- * of buildSubjectsOutput. For each output frame: section-aware output→trajectory
124
- * map → resolve segment → crop transform (the SAME primitives buildSubjectsOutput
125
- * uses for the FACE box) → project the source silhouette bbox supplied by the
126
- * provider. `null` where the provider has no subject that frame. Unlike the face
127
- * path this applies NO face-relative padding — the silhouette already includes
128
- * hair/head/torso, so the projected box IS the keep-out. Off-crop overflow is
129
- * clamped into the visible output frame [0,1] (the keep-out only concerns what is
130
- * on screen).
131
- */
132
64
  export declare function buildSilhouetteKeepOutOutput(args: BuildSilhouetteKeepOutArgs): (Rect | null)[];
133
- /**
134
- * Union the projected silhouette keep-out across a beat window [startFrame,
135
- * endFrame) into ONE OUTPUT-space rect (so a graphic clear of it is clear of the
136
- * subject at EVERY frame of the window) — the silhouette twin of
137
- * faceKeepOutForWindow. Empty when no frame in the window carries a silhouette
138
- * (degenerate zero-area rects are dropped).
139
- */
140
65
  export declare function silhouetteKeepOutForWindow(series: (Rect | null)[], startFrame: number, endFrame: number): Rect[];
@@ -1,61 +1,24 @@
1
- /**
2
- * Occlusion budget for behind-subject text (launch-grade text-behind-subject,
3
- * Phase 2). Pure decisions over matte geometry sidecar frames: estimate how much
4
- * of a text rect the subject covers, then verdict the window — too little bite
5
- * reads as no depth at all; too much swallows the line; a covered TOP half eats
6
- * the letter tops that carry legibility. The caller (a director activity) maps
7
- * timeline→source frames, samples K frames, and degrades the overlay to front
8
- * on any non-pass verdict — the overlay is never dropped.
9
- */
10
1
  import type { MatteGeometryFrame } from "./behind-placement.js";
11
- /** Budget thresholds (frame-fraction coverage of the TEXT rect). Calibration
12
- * defaults — Phase-7 fixtures tune them, the deploy-test is the truth.
13
- * `minBite`: below this at EVERY sample the silhouette never bites the line —
14
- * the depth effect is invisible, so don't pay its cost. `maxCoverage`: above
15
- * this at ANY sample the body swallows the line. `maxTopHalf`: text-bearing
16
- * overlays lose legibility when letter TOPS go under — cap the upper half. */
17
2
  export declare const BUDGET: {
18
3
  readonly minBite: 0.15;
19
4
  readonly maxCoverage: 0.65;
20
5
  readonly maxTopHalf: 0.35;
21
6
  };
22
- /** Behind hero text extent heuristic (calibration constants; Phase-7 fixtures tune). */
23
7
  export declare const BEHIND_TEXT_EXTENT: {
24
8
  readonly heightFrac: 0.18;
25
9
  };
26
- /** Coverage at one sampled geometry frame: `total` over the full text rect,
27
- * `topHalf` over its upper half. Both ∈ [0,1]. */
28
10
  export interface CoverageSample {
29
11
  f: number;
30
12
  total: number;
31
13
  topHalf: number;
32
14
  }
33
15
  export type BudgetVerdict = "pass" | "no-depth" | "swallow" | "tops-occluded";
34
- /**
35
- * Verdict a window of coverage samples against the budget. Samples are checked
36
- * in order; the FIRST violating sample decides (deterministic): a text-bearing
37
- * overlay whose top half exceeds `maxTopHalf` → "tops-occluded"; any sample over
38
- * `maxCoverage` → "swallow". If no sample violates but the maximum total never
39
- * reaches `minBite` → "no-depth" (so is an empty window). Else "pass".
40
- * `worstFrame` is the violating sample's frame for the two per-sample verdicts.
41
- */
42
16
  export declare function evaluateOcclusionBudget(samples: CoverageSample[], opts?: {
43
17
  textBearing: boolean;
44
18
  }): {
45
19
  verdict: BudgetVerdict;
46
20
  worstFrame?: number;
47
21
  };
48
- /**
49
- * Estimate matte coverage of a text rect from the sidecar's marginal profiles.
50
- * APPROXIMATION (documented): overlap(textRect, bbox) area fraction, weighted by the
51
- * mean col-bucket coverage across the intersected x-span (cols[i] = fraction of that
52
- * column covered by the subject). topHalf uses the same estimate restricted to the
53
- * text rect's upper half via the rows marginal weighting. Marginals can't give exact
54
- * 2-D intersection — constants are calibrated against fixtures, and the deploy-test
55
- * is the truth.
56
- *
57
- * All rects source-normalized [0,1]. A null bbox (no subject) → {0, 0}.
58
- */
59
22
  export declare function estimateCoverage(textRect: {
60
23
  x: number;
61
24
  y: number;
@@ -1,68 +1,16 @@
1
- /**
2
- * WHICH CLIPS WANT A CROP, AND DO WE HAVE WHAT IT TAKES — answered in the
3
- * editor, from data the media row already carries.
4
- *
5
- * The sibling of `behind-readiness.ts`, one rung down the fidelity ladder. That
6
- * module asks whether a SILHOUETTE exists so an overlay can go behind a person;
7
- * this one asks whether a BOX TRACK exists so a clip can follow one. Same shape,
8
- * same discipline, ~40× apart in what the answer costs.
9
- *
10
- * ── WHY IT EXISTS ───────────────────────────────────────────────────────────
11
- * A follow-the-speaker reframe is authored in the editor and only takes effect
12
- * at render, because the crop trajectory is derived from a SUBJECT TRACK the
13
- * editor never asked for. So the editor showed an uncropped source while the
14
- * render produced a moving crop — the "editor shows something the render will
15
- * not honour" defect, in its second location. Deriving the trajectory locally
16
- * fixes that, and the derive needs to find the right track first. That lookup
17
- * is what this module is.
18
- *
19
- * ── IT IS ONLY WORTH ANYTHING IF IT AGREES WITH THE SERVER ──────────────────
20
- * `reframeTargets` mirrors `collectTrajectoryDeriveJobs` (private
21
- * `renders.ts`) — the walk the SHIP render uses to decide which clips derive a
22
- * trajectory and at which window. `sourceWindowKey` mirrors `hashSourceWindow`
23
- * (private `@cueframe/shared/variant-keys`) byte for byte; the golden fixtures
24
- * in `__tests__/reframe-readiness.test.ts` are hashes taken from PRODUCTION
25
- * rather than invented, for the same reason `behind-readiness`'s are.
26
- *
27
- * ── WHAT IT DELIBERATELY DOES NOT CHECK ─────────────────────────────────────
28
- * The DETECTOR VERSION. The server skips a track whose `detectorVersion` is not
29
- * the current `DETECTOR_VERSION`, and the app cannot ask that without a third,
30
- * unguarded mirror of a string whose TS↔Python sync is already CI-guarded on
31
- * both existing copies. So the editor derives off whatever track sits at the
32
- * window. A version bump means the render re-detects and the framing shifts
33
- * slightly — same subject, same authored intent, and far closer to the truth
34
- * than showing an uncropped source. A decision, not an omission.
35
- */
36
- /** A source window. Subject tracks key on this — the window, plus the producer
37
- * when it is not the default face detector. Mirrors `SourceWindowLike`. */
38
1
  export interface SourceWindowLike {
39
2
  startSec: number;
40
3
  endSec: number;
41
- /**
42
- * Which producer detected the track: 'face' (YuNet/SCRFD, the default) or
43
- * 'person' (YOLO11x + BoT-SORT). Folded into the hash ONLY when it is not
44
- * 'face', so existing face-track keys never churn and a person track for the
45
- * same window gets a DISTINCT key instead of overwriting the face one.
46
- */
47
4
  detector?: "face" | "person";
48
5
  }
49
- /** The fields this module reads off a `mediaItems.subjectTracks[hash]` entry. */
50
6
  export interface SubjectTrackEntryLike {
51
- /** R2 object key — the STABLE identity every server-side reader matches on. */
52
7
  trackR2Key?: string;
53
- /**
54
- * Presigned URL for that key, added ALONGSIDE it by `resolveR2Urls`. The row
55
- * carries only a SUMMARY of the track (the face roster, a count); the
56
- * per-frame boxes `deriveTrajectory` needs are the R2 object, so this is the
57
- * one field that makes a client-side derive possible at all.
58
- */
59
8
  trackUrl?: string;
60
9
  detectorVersion?: string;
61
10
  window?: {
62
11
  startSec: number;
63
12
  endSec: number;
64
13
  };
65
- /** The inline face roster — who is in this window, for a per-person picker. */
66
14
  faces?: Array<{
67
15
  faceId: string;
68
16
  bbox: {
@@ -74,18 +22,7 @@ export interface SubjectTrackEntryLike {
74
22
  speakingShare?: number;
75
23
  }>;
76
24
  }
77
- /**
78
- * Content-address a source window, byte-identically to the server's
79
- * `hashSourceWindow`. Milliseconds-rounded so float jitter cannot miss a cached
80
- * track; 12 hex chars. Async because `crypto.subtle` is — available in the
81
- * webview and in Node alike.
82
- *
83
- * The detector is omitted from the canonical form when it is 'face', which is
84
- * NOT a shortcut: it is what keeps every already-cached face-track key valid.
85
- */
86
25
  export declare function sourceWindowKey(window: SourceWindowLike): Promise<string>;
87
- /** A clip that has authored a reframe, and the window whose track answers for
88
- * it. `segments` travels along because `deriveTrajectory` takes it verbatim. */
89
26
  export interface ReframeTarget {
90
27
  clipId: string;
91
28
  mediaId: string;
@@ -93,64 +30,20 @@ export interface ReframeTarget {
93
30
  startSec: number;
94
31
  endSec: number;
95
32
  };
96
- /** The authored `source.reframe.segments`, untouched — the derive owns their
97
- * shape, and re-typing it here would be a fourth place to keep in sync. */
98
33
  segments: unknown[];
99
34
  }
100
- /**
101
- * Does this reframe track a real subject? A geometric one (a screen-recording
102
- * point-zoom, an honest center crop) needs nothing detected and must NEVER be
103
- * handed a detection bill — nor be told it is waiting for one.
104
- */
105
35
  export declare function reframeNeedsDetection(segments: unknown[]): boolean;
106
- /**
107
- * Every clip in the composition that has authored a reframe, with the source
108
- * window its track is keyed by.
109
- *
110
- * MIRRORS `collectTrajectoryDeriveJobs`, including the two rules that are easy
111
- * to get subtly wrong:
112
- * · only VIDEO and IMAGE tracks (an audio clip is `kind:"media"` too, and a
113
- * viewport crop is meaningless for sound)
114
- * · the window is the SOURCE TRIM, defaulted exactly as `renders.ts` defaults
115
- * it — `trim.start ?? 0`, `trim.end ?? start + clip.duration`
116
- *
117
- * Walked defensively with no zod, the `collectBehindWindows` convention, so it
118
- * is safe in every bundle.
119
- */
120
36
  export declare function reframeTargets(composition: unknown): ReframeTarget[];
121
- /**
122
- * What the editor can say about one reframed clip.
123
- *
124
- * `geometric` is a distinct state and not a convenience: a point-zoom on a
125
- * screen recording is fully derivable with no detection, so calling it
126
- * "waiting for a track" would be a lie that also implies a charge.
127
- */
128
- export type ReframeReadiness =
129
- /** No detection needed — derives off a faceless stub, today, for free. */
130
- {
37
+ export type ReframeReadiness = {
131
38
  state: "geometric";
132
- }
133
- /** The track exists and can be fetched. */
134
- | {
39
+ } | {
135
40
  state: "track-ready";
136
41
  entry: SubjectTrackEntryLike;
137
42
  trackUrl: string;
138
- }
139
- /** A track is registered but carries no presigned URL, so the client cannot
140
- * derive. The RENDER still can — it reads the key directly. */
141
- | {
43
+ } | {
142
44
  state: "track-unfetchable";
143
45
  entry: SubjectTrackEntryLike;
144
- }
145
- /** Nothing detected at this window yet. This is the state that buys one. */
146
- | {
46
+ } | {
147
47
  state: "no-track";
148
48
  };
149
- /**
150
- * Can the editor derive this clip's crop trajectory right now?
151
- *
152
- * `subjectTracks` is `mediaItems.subjectTracks` for the target's media, exactly
153
- * as it arrives from Convex — undefined for an item with no cloud perception,
154
- * which is the honest shape for a local-only import.
155
- */
156
49
  export declare function reframeReadinessForTarget(target: ReframeTarget, subjectTracks: Record<string, SubjectTrackEntryLike> | undefined): Promise<ReframeReadiness>;