@cueframe/kernel 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +1 -1
  3. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -1
  4. package/dist/_members/authoring/transpileComponent.d.ts +1 -1
  5. package/dist/_members/cloud-import/CloudImportService.d.ts +35 -0
  6. package/dist/_members/cloud-import/ImportProvider.d.ts +73 -0
  7. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +27 -0
  8. package/dist/_members/cloud-import/cloudConfig.d.ts +23 -0
  9. package/dist/_members/cloud-import/index.d.ts +9 -0
  10. package/dist/_members/cloud-import/multipartUpload.d.ts +12 -0
  11. package/dist/_members/composition/ops/compositionOps.d.ts +2 -1
  12. package/dist/_members/composition/ops/types.d.ts +1 -1
  13. package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
  14. package/dist/_members/composition/projection/index.d.ts +2 -0
  15. package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
  16. package/dist/_members/composition/timeline/placement.d.ts +1 -1
  17. package/dist/_members/composition/validators/composition.d.ts +43 -26
  18. package/dist/_members/composition/validators/render.d.ts +32 -0
  19. package/dist/_members/composition-ops/index.d.ts +1 -1
  20. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  21. package/dist/_members/convex-api/api.d.ts +5 -0
  22. package/dist/_members/convex-api/dataModel.d.ts +6 -0
  23. package/dist/_members/core/render/compositionRender.d.ts +17 -1
  24. package/dist/_members/core/render/exportSettings.d.ts +1 -1
  25. package/dist/_members/core/render/types.d.ts +31 -0
  26. package/dist/_members/mcp/curation.d.ts +1 -1
  27. package/dist/_members/plane/conformance.d.ts +1 -1
  28. package/dist/_members/render-harness/localRender.d.ts +1 -1
  29. package/dist/animate.js +828 -79187
  30. package/dist/authoring/build-tools.js +8 -11
  31. package/dist/authoring/context.js +5 -5
  32. package/dist/authoring/models.js +1 -2
  33. package/dist/authoring/prompts.js +1 -1
  34. package/dist/authoring/tools.js +7 -7
  35. package/dist/authoring/transpileComponent.js +3 -2220
  36. package/dist/authoring.js +30 -30
  37. package/dist/brand-derivation.js +1 -1
  38. package/dist/chunk-6IU2UQI5.js +107 -0
  39. package/dist/{chunk-5I7VDCAC.js → chunk-7FO3ZJ43.js} +4 -1
  40. package/dist/{chunk-N67PDTKQ.js → chunk-ABL557OT.js} +1 -1
  41. package/dist/{chunk-MC5DLSEV.js → chunk-AP6ZIVAV.js} +15 -15
  42. package/dist/{chunk-QLAQHR3L.js → chunk-AQBREB5O.js} +1 -1
  43. package/dist/{chunk-DSNG6WLU.js → chunk-AYVJXDLB.js} +1 -4
  44. package/dist/{chunk-6CMVBTTP.js → chunk-DK2ODBNT.js} +19 -9
  45. package/dist/chunk-DSMLHYJ4.js +82 -0
  46. package/dist/{chunk-BRKJKB33.js → chunk-FYZVH3MC.js} +1 -1
  47. package/dist/{chunk-MVEE6HEC.js → chunk-GA23TRNR.js} +5 -7
  48. package/dist/chunk-HCCBDJLW.js +68 -0
  49. package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
  50. package/dist/{chunk-OIRUO5P7.js → chunk-JJ6XD7NG.js} +152 -2
  51. package/dist/{_members/primitives/chunk-IDAL6G3Y.js → chunk-JQMPHKLU.js} +19 -27
  52. package/dist/{chunk-G3PBH53P.js → chunk-MBCXCJOE.js} +1 -1
  53. package/dist/{chunk-UEI3NLNK.js → chunk-MHOQTPOB.js} +1 -4
  54. package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
  55. package/dist/{chunk-WZTTZHNR.js → chunk-OLFOPQCA.js} +12 -9
  56. package/dist/{chunk-P43IE4WB.js → chunk-P727GZVO.js} +2 -4
  57. package/dist/{chunk-52AHXNKM.js → chunk-PDYO3DOJ.js} +5 -5
  58. package/dist/{chunk-S3P5BFFL.js → chunk-PMY24FUD.js} +2 -4
  59. package/dist/{chunk-ATAF24QG.js → chunk-PODIYN2K.js} +10 -3
  60. package/dist/chunk-RF7U3SCL.js +606 -0
  61. package/dist/{chunk-JD77Y2WM.js → chunk-SW336CJP.js} +1 -4
  62. package/dist/{chunk-TULRCY6U.js → chunk-TOJEXFXL.js} +1 -1
  63. package/dist/{chunk-ELLSET2N.js → chunk-UHGSZZDI.js} +3 -6
  64. package/dist/{chunk-M3I5LMAB.js → chunk-UY4SWJVE.js} +1 -1
  65. package/dist/{chunk-6QJ3V3VS.js → chunk-YX2GSJK7.js} +1 -1
  66. package/dist/chunk-ZT7MHRQU.js +104 -0
  67. package/dist/{chunk-NV4I6GJV.js → chunk-ZWMV6DD2.js} +27 -4
  68. package/dist/cloud-import/multipart.d.ts +1 -0
  69. package/dist/cloud-import/multipart.js +8 -0
  70. package/dist/cloud-import.d.ts +1 -0
  71. package/dist/cloud-import.js +234 -0
  72. package/dist/compose/renderer.js +19 -22
  73. package/dist/compose.js +19 -22
  74. package/dist/composition/graphics-plan.js +3 -3
  75. package/dist/composition/ops.js +4 -4
  76. package/dist/composition/primitive-catalog.js +1 -1
  77. package/dist/composition/projection.js +21 -5
  78. package/dist/composition/validators.js +6 -4
  79. package/dist/composition-ops.js +15 -13
  80. package/dist/composition.js +26 -8
  81. package/dist/{context-CEAKQ5T7.js → context-YWUZDG5X.js} +5 -5
  82. package/dist/convex-api/dataModel.d.ts +1 -0
  83. package/dist/convex-api/dataModel.js +0 -0
  84. package/dist/convex-api.d.ts +1 -0
  85. package/dist/convex-api.js +8 -0
  86. package/dist/core/render.js +3 -3
  87. package/dist/core/select.js +2 -2
  88. package/dist/core.js +3 -3
  89. package/dist/errors.js +1 -1
  90. package/dist/mcp/adapter.js +2 -5
  91. package/dist/mcp/server.js +1 -2
  92. package/dist/mcp.js +2 -95
  93. package/dist/media-model/media-kind.js +9 -98
  94. package/dist/media-model/testing.js +1071 -718
  95. package/dist/nle-export/server.js +328 -130
  96. package/dist/nle-export/xml.js +5 -22799
  97. package/dist/nle-export.js +20 -22
  98. package/dist/primitives/backgrounds.js +2 -3
  99. package/dist/primitives/captions.js +4 -243
  100. package/dist/primitives/effects.js +2 -3
  101. package/dist/primitives/hero-text.js +2 -3
  102. package/dist/primitives/layouts.js +2 -3
  103. package/dist/primitives/lib/index.js +8 -10
  104. package/dist/primitives/lib/preview.js +1 -2
  105. package/dist/primitives/lib/schema.js +1 -2
  106. package/dist/primitives/lib/text/fitText.js +1 -2
  107. package/dist/primitives/lib.js +8 -10
  108. package/dist/primitives/scenes.js +1 -2
  109. package/dist/primitives/text.js +2 -3
  110. package/dist/primitives/ui-blocks.js +4 -5
  111. package/dist/primitives.js +19 -21
  112. package/package.json +125 -16
  113. package/dist/TextureLoader-UQOFUSAP.js +0 -422
  114. package/dist/VideoTexture-AQWSPIJG.js +0 -62
  115. package/dist/_members/account-model/index.js +0 -4
  116. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  117. package/dist/_members/account-model/testing/index.js +0 -7
  118. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  119. package/dist/_members/account-model/types/index.js +0 -1
  120. package/dist/_members/account-model/validators/contextFile.js +0 -18
  121. package/dist/_members/account-model/validators/conversation.js +0 -95
  122. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  123. package/dist/_members/account-model/validators/index.js +0 -7
  124. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  125. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  126. package/dist/_members/account-model/validators/userSettings.js +0 -12
  127. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  128. package/dist/_members/brand-derivation/constants.js +0 -20
  129. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  130. package/dist/_members/brand-derivation/index.js +0 -1
  131. package/dist/_members/composition/audio/audioMix.js +0 -61
  132. package/dist/_members/composition/audio/index.js +0 -5
  133. package/dist/_members/composition/audio/mixStaging.js +0 -195
  134. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  135. package/dist/_members/composition/audio/musicPack.js +0 -36
  136. package/dist/_members/composition/audio/pack.generated.js +0 -603
  137. package/dist/_members/composition/audio/pack.js +0 -48
  138. package/dist/_members/composition/audio/palette.js +0 -134
  139. package/dist/_members/composition/autozoom/index.js +0 -83
  140. package/dist/_members/composition/brand-kit.js +0 -45
  141. package/dist/_members/composition/brief/contract.js +0 -209
  142. package/dist/_members/composition/color-grade.js +0 -80
  143. package/dist/_members/composition/depth.js +0 -8
  144. package/dist/_members/composition/fixtures/index.js +0 -143
  145. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  146. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  147. package/dist/_members/composition/fonts.js +0 -162
  148. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  149. package/dist/_members/composition/graphics-plan/index.js +0 -10
  150. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  151. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  152. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  153. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  154. package/dist/_members/composition/index.js +0 -5
  155. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  156. package/dist/_members/composition/invariants/composition.js +0 -28
  157. package/dist/_members/composition/invariants/errors.js +0 -10
  158. package/dist/_members/composition/invariants/etag.js +0 -38
  159. package/dist/_members/composition/invariants/ids.js +0 -33
  160. package/dist/_members/composition/invariants/index.js +0 -9
  161. package/dist/_members/composition/invariants/keyframes.js +0 -45
  162. package/dist/_members/composition/invariants/markers.js +0 -29
  163. package/dist/_members/composition/invariants/time.js +0 -20
  164. package/dist/_members/composition/invariants/tracks.js +0 -304
  165. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  166. package/dist/_members/composition/ops/headlessStore.js +0 -94
  167. package/dist/_members/composition/ops/index.js +0 -4
  168. package/dist/_members/composition/ops/selectors.js +0 -118
  169. package/dist/_members/composition/ops/timeline-word.js +0 -1
  170. package/dist/_members/composition/ops/transcript.js +0 -77
  171. package/dist/_members/composition/ops/types.js +0 -16
  172. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  173. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  174. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  175. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  176. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  177. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  178. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  179. package/dist/_members/composition/projection/behind-placement.js +0 -62
  180. package/dist/_members/composition/projection/brandKit.js +0 -482
  181. package/dist/_members/composition/projection/cardTokens.js +0 -209
  182. package/dist/_members/composition/projection/composition-floor.js +0 -582
  183. package/dist/_members/composition/projection/cropProjection.js +0 -257
  184. package/dist/_members/composition/projection/index.js +0 -7
  185. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  186. package/dist/_members/composition/projection/safe-zones.js +0 -99
  187. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  188. package/dist/_members/composition/reframe/coverage.js +0 -62
  189. package/dist/_members/composition/reframe/derive.js +0 -73
  190. package/dist/_members/composition/reframe/index.js +0 -109
  191. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  192. package/dist/_members/composition/reframe/shotScale.js +0 -176
  193. package/dist/_members/composition/reframe/trajectory.js +0 -124
  194. package/dist/_members/composition/timeline/compound.js +0 -134
  195. package/dist/_members/composition/timeline/index.js +0 -9
  196. package/dist/_members/composition/timeline/intent.js +0 -228
  197. package/dist/_members/composition/timeline/keyframes.js +0 -121
  198. package/dist/_members/composition/timeline/link.js +0 -59
  199. package/dist/_members/composition/timeline/occupancy.js +0 -36
  200. package/dist/_members/composition/timeline/placement.js +0 -74
  201. package/dist/_members/composition/timeline/plan.js +0 -31
  202. package/dist/_members/composition/timeline/resolve.js +0 -170
  203. package/dist/_members/composition/timeline/trims.js +0 -278
  204. package/dist/_members/composition/types/index.js +0 -1
  205. package/dist/_members/composition/validators/brandKit.js +0 -295
  206. package/dist/_members/composition/validators/composePlan.js +0 -113
  207. package/dist/_members/composition/validators/composition.js +0 -703
  208. package/dist/_members/composition/validators/font.js +0 -34
  209. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  210. package/dist/_members/composition/validators/index.js +0 -9
  211. package/dist/_members/composition/validators/project.js +0 -29
  212. package/dist/_members/composition/validators/registry.js +0 -41
  213. package/dist/_members/composition/validators/render.js +0 -139
  214. package/dist/_members/composition/validators/session.js +0 -37
  215. package/dist/_members/composition/validators/webhook.js +0 -72
  216. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  217. package/dist/_members/composition-ops/index.js +0 -637
  218. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  219. package/dist/_members/composition-ops/opRecorder.js +0 -196
  220. package/dist/_members/composition-ops/recordingStore.js +0 -14
  221. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  222. package/dist/_members/composition-ops/testFixtures.js +0 -19
  223. package/dist/_members/core/index.js +0 -5
  224. package/dist/_members/core/render/bookends.js +0 -53
  225. package/dist/_members/core/render/captions.js +0 -127
  226. package/dist/_members/core/render/compositionRender.js +0 -1249
  227. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  228. package/dist/_members/core/render/emphasis.js +0 -16
  229. package/dist/_members/core/render/eval/cropBox.js +0 -139
  230. package/dist/_members/core/render/eval/inclusion.js +0 -96
  231. package/dist/_members/core/render/eval/index.js +0 -146
  232. package/dist/_members/core/render/eval/metrics.js +0 -94
  233. package/dist/_members/core/render/exportSettings.js +0 -65
  234. package/dist/_members/core/render/index.js +0 -20
  235. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  236. package/dist/_members/core/render/types.js +0 -8
  237. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  238. package/dist/_members/core/render/vcam/constants.js +0 -115
  239. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  240. package/dist/_members/core/render/vcam/framing.js +0 -136
  241. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  242. package/dist/_members/core/render/vcam/shots.js +0 -53
  243. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  244. package/dist/_members/core/select/errorCodes.js +0 -38
  245. package/dist/_members/core/select/index.js +0 -26
  246. package/dist/_members/core/select/model.js +0 -18
  247. package/dist/_members/core/select/select.js +0 -244
  248. package/dist/_members/core/select/stabilize.js +0 -242
  249. package/dist/_members/core/types.js +0 -7
  250. package/dist/_members/errors/index.js +0 -1
  251. package/dist/_members/errors/registry.js +0 -560
  252. package/dist/_members/foundation/codes/index.js +0 -31
  253. package/dist/_members/foundation/index.js +0 -2
  254. package/dist/_members/foundation/primitives/index.js +0 -5
  255. package/dist/_members/mcp/adapter.js +0 -771
  256. package/dist/_members/mcp/burnedNames.js +0 -73
  257. package/dist/_members/mcp/core.js +0 -390
  258. package/dist/_members/mcp/curation.js +0 -792
  259. package/dist/_members/mcp/executor.js +0 -142
  260. package/dist/_members/mcp/format.js +0 -9
  261. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  262. package/dist/_members/mcp/generated/harness.js +0 -81
  263. package/dist/_members/mcp/generated/operations.js +0 -131
  264. package/dist/_members/mcp/index.js +0 -50
  265. package/dist/_members/mcp/internalLoopTools.js +0 -109
  266. package/dist/_members/mcp/prompts.js +0 -45
  267. package/dist/_members/mcp/resources.js +0 -166
  268. package/dist/_members/mcp/server.js +0 -340
  269. package/dist/_members/mcp/wait.js +0 -378
  270. package/dist/_members/mcp/x402Meta.js +0 -66
  271. package/dist/_members/media-model/api.js +0 -175
  272. package/dist/_members/media-model/index.js +0 -1
  273. package/dist/_members/media-model/media-kind.js +0 -116
  274. package/dist/_members/media-model/testing/index.js +0 -1
  275. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  276. package/dist/_members/media-model/transcriptSearch.js +0 -70
  277. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  278. package/dist/_members/nle-export/compact-timeline.js +0 -73
  279. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  280. package/dist/_members/nle-export/composition-to-input.js +0 -147
  281. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  282. package/dist/_members/nle-export/fcpxml.js +0 -159
  283. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  284. package/dist/_members/nle-export/index.js +0 -12
  285. package/dist/_members/nle-export/index.js.map +0 -1
  286. package/dist/_members/nle-export/premiere.js +0 -161
  287. package/dist/_members/nle-export/premiere.js.map +0 -1
  288. package/dist/_members/nle-export/server/index.js +0 -2
  289. package/dist/_members/nle-export/server/index.js.map +0 -1
  290. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  291. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  292. package/dist/_members/nle-export/srt.js +0 -50
  293. package/dist/_members/nle-export/srt.js.map +0 -1
  294. package/dist/_members/nle-export/types.js +0 -9
  295. package/dist/_members/nle-export/types.js.map +0 -1
  296. package/dist/_members/nle-export/xml/index.js +0 -11
  297. package/dist/_members/nle-export/xml/index.js.map +0 -1
  298. package/dist/_members/nle-export/xml-utils.js +0 -48
  299. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  300. package/dist/_members/perception/activeSpeaker.js +0 -103
  301. package/dist/_members/perception/audioQuality.js +0 -76
  302. package/dist/_members/perception/energyBeat.js +0 -99
  303. package/dist/_members/perception/identityMatch.js +0 -91
  304. package/dist/_members/perception/index.js +0 -48
  305. package/dist/_members/perception/visualQuality.js +0 -95
  306. package/dist/_members/plane/conformance.js +0 -90
  307. package/dist/_members/plane/contract.js +0 -49
  308. package/dist/_members/plane/index.js +0 -16
  309. package/dist/_members/primitives/backgrounds/index.js +0 -32
  310. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  311. package/dist/_members/primitives/captions/index.js +0 -398
  312. package/dist/_members/primitives/captions/index.js.map +0 -1
  313. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  314. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  315. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  316. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  317. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  318. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  319. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  320. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  321. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  322. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  323. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  324. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  325. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  326. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  327. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  328. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  329. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  330. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  331. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  332. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  333. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  334. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  335. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  336. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  337. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  338. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  339. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  340. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  341. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  342. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  343. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  344. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  345. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  346. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  347. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  348. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  349. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  350. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  351. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  352. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  353. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  354. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  355. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  356. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  357. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  358. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  359. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  360. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  361. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  362. package/dist/_members/primitives/effects/index.js +0 -30
  363. package/dist/_members/primitives/effects/index.js.map +0 -1
  364. package/dist/_members/primitives/hero-text/index.js +0 -14
  365. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  366. package/dist/_members/primitives/index.js +0 -64
  367. package/dist/_members/primitives/index.js.map +0 -1
  368. package/dist/_members/primitives/layouts/index.js +0 -24
  369. package/dist/_members/primitives/layouts/index.js.map +0 -1
  370. package/dist/_members/primitives/lib/easings.js +0 -26
  371. package/dist/_members/primitives/lib/easings.js.map +0 -1
  372. package/dist/_members/primitives/lib/index.js +0 -74
  373. package/dist/_members/primitives/lib/index.js.map +0 -1
  374. package/dist/_members/primitives/lib/palette.js +0 -72
  375. package/dist/_members/primitives/lib/palette.js.map +0 -1
  376. package/dist/_members/primitives/lib/preview.js +0 -8
  377. package/dist/_members/primitives/lib/preview.js.map +0 -1
  378. package/dist/_members/primitives/lib/schema.js +0 -12
  379. package/dist/_members/primitives/lib/schema.js.map +0 -1
  380. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  381. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  382. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  383. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  384. package/dist/_members/primitives/lib/text/fill.js +0 -8
  385. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  386. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  387. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  388. package/dist/_members/primitives/lib/text/marker.js +0 -8
  389. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  390. package/dist/_members/primitives/lib/text/motion.js +0 -16
  391. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  392. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  393. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  394. package/dist/_members/primitives/lib/text/spec.js +0 -1
  395. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  396. package/dist/_members/primitives/lib/text/stage.js +0 -8
  397. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  398. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  399. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  400. package/dist/_members/primitives/lib/tokens.js +0 -24
  401. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  402. package/dist/_members/primitives/lib/types.js +0 -1
  403. package/dist/_members/primitives/lib/types.js.map +0 -1
  404. package/dist/_members/primitives/params-required.json +0 -153
  405. package/dist/_members/primitives/scenes/index.js +0 -25
  406. package/dist/_members/primitives/scenes/index.js.map +0 -1
  407. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  408. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  409. package/dist/_members/primitives/text/index.js +0 -57
  410. package/dist/_members/primitives/text/index.js.map +0 -1
  411. package/dist/_members/primitives/transitions/index.js +0 -67
  412. package/dist/_members/primitives/transitions/index.js.map +0 -1
  413. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  414. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  415. package/dist/_members/primitives/version-map.json +0 -105
  416. package/dist/_members/primitives/workspace.js +0 -60
  417. package/dist/_members/primitives/workspace.js.map +0 -1
  418. package/dist/chunk-7GISRVON.js +0 -14176
  419. package/dist/chunk-DIBOJJMU.js +0 -16838
  420. package/dist/chunk-EAUSEGB7.js +0 -420
  421. package/dist/chunk-FUWJOVVK.js +0 -3633
  422. package/dist/chunk-G75E7YA4.js +0 -11883
  423. package/dist/chunk-JCZQT7K3.js +0 -3266
  424. package/dist/chunk-KF5ETMKB.js +0 -544
  425. package/dist/chunk-NDKERSXY.js +0 -1296
  426. package/dist/chunk-V43Y7IE4.js +0 -3621
  427. package/dist/chunk-VIVQHIGZ.js +0 -4319
  428. package/dist/chunk-YA3OR2KK.js +0 -249
  429. package/dist/hls-HD4C5G6W.js +0 -33000
  430. package/dist/token-RGFIT24D.js +0 -69
  431. package/dist/token-util-GPLSGYVO.js +0 -5
  432. package/dist/vision_bundle-5Y376MAR.js +0 -4084
@@ -1,295 +0,0 @@
1
- import { z } from "zod";
2
- import { zid } from "convex-helpers/server/zod3";
3
- import { GraphicRole } from "../graphics-plan/schemas.js";
4
- export const EasingValue = z.union([
5
- z.enum(["linear", "ease", "ease-in", "ease-out", "ease-in-out"]),
6
- z.object({
7
- kind: z.literal("cubic-bezier"),
8
- x1: z.number().min(0).max(1),
9
- y1: z.number(),
10
- x2: z.number().min(0).max(1),
11
- y2: z.number(),
12
- }),
13
- ]);
14
- /** A palette reference (audio-substrate P2 AudioPaletteEntry.ref): a pack
15
- * soundId | music-pack bedId | org mediaId — an opaque string placement handle.
16
- * The brand SOUND kit fields (audio.sonicLogo / uiSoundSet / bedStyle /
17
- * ambiencePreference) reference sounds by this same handle. */
18
- export const AudioPaletteRef = z.string().min(1);
19
- export const FontRef = z.union([
20
- z.object({
21
- kind: z.literal("system"),
22
- family: z.string().min(1),
23
- }),
24
- z.object({
25
- kind: z.literal("web"),
26
- family: z.string().min(1),
27
- url: z.string().url().optional(),
28
- }),
29
- z.object({
30
- kind: z.literal("uploaded"),
31
- fontId: zid("fonts"),
32
- family: z.string().optional(),
33
- }),
34
- ]);
35
- const Colors = z.object({
36
- primary: z.string().min(1),
37
- secondary: z.string().optional(),
38
- accent: z.string().min(1),
39
- background: z.string().min(1),
40
- text: z.string().min(1),
41
- textMuted: z.string().optional(),
42
- border: z.string().optional(),
43
- // Tier-2 core — author overrides for the derived fills + paired foregrounds.
44
- surface: z.string().optional(),
45
- card: z.string().optional(),
46
- gridLine: z.string().optional(),
47
- accentMuted: z.string().optional(),
48
- textOnAccent: z.string().optional(),
49
- textOnSurface: z.string().optional(),
50
- });
51
- const Fonts = z.object({
52
- heading: FontRef,
53
- body: FontRef.optional(),
54
- caption: FontRef.optional(),
55
- });
56
- const Spacing = z.object({
57
- base: z.number().positive().optional(),
58
- lg: z.number().positive().optional(),
59
- sm: z.number().positive().optional(),
60
- });
61
- const Sizing = z.object({
62
- fontSizeHeading: z.number().positive().optional(),
63
- fontSizeBody: z.number().positive().optional(),
64
- fontSizeLabel: z.number().positive().optional(),
65
- borderRadius: z.number().nonnegative().optional(),
66
- });
67
- const Motion = z.object({
68
- duration: z.number().positive().optional(),
69
- easing: EasingValue.optional(),
70
- // Editorial motion identity — surfaces read these via `$brand:motion.*`
71
- // (resolved at projection time). Mirrors the primitive `TextMotion` vocabulary.
72
- entrance: z.enum(["none", "fade", "word-pop", "stagger-up"]).optional(),
73
- staggerMs: z.number().nonnegative().optional(),
74
- exitMs: z.number().nonnegative().optional(),
75
- });
76
- // Corner anchor shared by logo + watermark overlays.
77
- const Placement = z.enum(["tl", "tr", "bl", "br"]);
78
- const Logo = z.object({
79
- src: z.string().min(1),
80
- alt: z.string().optional(),
81
- placement: Placement.optional(),
82
- // Percentage of the composition width. Must be positive — a non-positive
83
- // logo is a footgun, not an intent, so reject at the boundary.
84
- sizePct: z.number().positive().optional(),
85
- });
86
- // Intro/outro bumper: either an authored card (title/subtitle on brand) or a
87
- // pre-rendered video clip. `src` is optional on disk — a card needs none, and
88
- // a video kit may carry the asset reference separately — so the wire shape
89
- // stays sparse and the resolver fails loud later if a video lacks its source.
90
- const IntroOutro = z.object({
91
- kind: z.enum(["card", "video"]),
92
- src: z.string().min(1).optional(),
93
- title: z.string().optional(),
94
- subtitle: z.string().optional(),
95
- durationMs: z.number().positive().optional(),
96
- });
97
- const Watermark = z.object({
98
- src: z.string().min(1),
99
- // Alpha in [0,1]; anything outside is a malformed kit, not a clamp target.
100
- opacity: z.number().min(0).max(1).optional(),
101
- placement: Placement.optional(),
102
- });
103
- // ── Brand-kit language payload (built FROM INSPIRATION — spec 2026-07-14) ────
104
- // A motif is an observed on-screen graphic reproduced as an ordinary authored
105
- // skin (card html / overlay primitive / installed component). These mirror the
106
- // storage validators (composition.ts) and the HTTP schemas (schemas.ts Step 1.5)
107
- // verbatim — the wire validator has no `.openapi()` calls, so the shapes here
108
- // are the plain-zod twins carried onto the wire BrandKit for the projection.
109
- const MotifBody = z.discriminatedUnion("kind", [
110
- z.object({
111
- kind: z.literal("card"),
112
- html: z.string().min(1),
113
- tokens: z.record(z.string(), z.string()).optional(),
114
- }),
115
- z.object({
116
- kind: z.literal("overlay"),
117
- primitiveId: z.string().min(1),
118
- params: z.record(z.string(), z.unknown()).optional(),
119
- }),
120
- z.object({
121
- kind: z.literal("component"),
122
- componentId: z.string().min(1),
123
- props: z.record(z.string(), z.unknown()).optional(),
124
- }),
125
- ]);
126
- // Closed vocabulary — SSOT is MOTION_PRESETS (packages/authoring/src/motion/shell.ts).
127
- const MotifMotionPreset = z.enum([
128
- "fade-up",
129
- "slide-in-left",
130
- "slide-in-right",
131
- "scale-pop",
132
- "stagger-reveal",
133
- ]);
134
- export const Motif = z.object({
135
- id: z.string().min(1).max(40),
136
- observed: z.string().min(1).max(500),
137
- body: MotifBody,
138
- motion: z.object({
139
- preset: MotifMotionPreset,
140
- enterMs: z.number().int().min(0).max(5000).optional(),
141
- exitMs: z.number().int().min(0).max(5000).optional(),
142
- staggerMs: z.number().int().min(0).max(2000).optional(),
143
- confidence: z.enum(["high", "low"]).optional(),
144
- }).optional(),
145
- // Pinned to the closed graphics-plan GraphicRole vocabulary — the steering
146
- // matcher (designBrief.ts) is exact-equality against a plan role, so an
147
- // off-vocabulary role would synthesize a judge and then silently never steer
148
- // (the half-applied-conditioning failure D1-R exists to kill). Storage stays
149
- // an open string (matches the motion.preset pattern).
150
- role: GraphicRole,
151
- zone: z.object({ x: z.number(), y: z.number(), w: z.number(), h: z.number() }).optional(),
152
- evidence: z.array(z.number().int().min(0)).max(24).optional(),
153
- diffScore: z.number().min(0).max(1).optional(),
154
- coverage: z.enum(["reproduced", "approximated", "skipped"]),
155
- skipReason: z.string().max(300).optional(),
156
- });
157
- const AccessControl = z.object({
158
- public: z.boolean().optional(),
159
- readerOrgIds: z.array(z.string()).optional(),
160
- writerOrgIds: z.array(z.string()).optional(),
161
- });
162
- const LicenseDeclaration = z.object({
163
- type: z.string().min(1),
164
- source: z.string().optional(),
165
- notes: z.string().optional(),
166
- });
167
- export const BrandKit = z.object({
168
- id: z.string().min(1),
169
- name: z.string().min(1),
170
- colors: Colors,
171
- fonts: Fonts,
172
- spacing: Spacing.optional(),
173
- sizing: Sizing.optional(),
174
- motion: Motion.optional(),
175
- // Per-creator caption IDENTITY collected by the dashboard / derived from a
176
- // creator's references. Consumed by resolveBrandKit's caption derivation:
177
- // emphasisColor → caption.fg, base/highlight color (clamped to the APCA body
178
- // floor over the scrim), the backdrop `plate` treatment, per-word `entrance`
179
- // motion + timing, and the emphasis treatment (base face + serif/scale/weight/
180
- // italic/transform/letter-spacing + emphasis-run plate) → caption identity
181
- // that the render binding applies onto the Captions primitive. The kit now
182
- // owns the caption LOOK (including plate + entrance). Base GEOMETRY (caption
183
- // size, screen position, safe-area, maxWidth) is NOT here — that is calibrated
184
- // craft owned by the primitive's default. The kit selects the LOOK; the
185
- // primitive owns the legible realization.
186
- captionProfile: z
187
- .object({
188
- // Base caption text color + spoken-word highlight — clamped to the APCA
189
- // body floor over the scrim at projection (same guard as emphasisColor→fg).
190
- color: z.string().optional(),
191
- highlightColor: z.string().optional(),
192
- emphasisColor: z.string().optional(),
193
- // Caption backdrop plate — the whole-block legibility treatment.
194
- plate: z.enum(["glass", "solid", "none"]).optional(),
195
- // Per-word entrance motion + timing (the shared TextMotion vocabulary).
196
- entrance: z.enum(["none", "fade", "word-pop", "stagger-up"]).optional(),
197
- entranceMs: z.number().optional(),
198
- entranceStaggerMs: z.number().optional(),
199
- exitMs: z.number().optional(),
200
- // Base caption face (the carrier-word font). Defaults to fonts.caption.
201
- fontFamily: z.string().optional(),
202
- // Emphasis-word treatment — the qualitative identity signal.
203
- emphasisFontFamily: z.string().optional(),
204
- emphasisScale: z.number().positive().optional(),
205
- emphasisFontWeight: z.number().optional(),
206
- emphasisFontStyle: z.enum(["normal", "italic"]).optional(),
207
- emphasisTextTransform: z.enum(["none", "uppercase"]).optional(),
208
- emphasisLetterSpacing: z.number().optional(),
209
- // Emphasis-run highlighter plate (editorial caption look).
210
- emphasisPlate: z.boolean().optional(),
211
- emphasisPlateColor: z.string().optional(),
212
- emphasisPlateTextColor: z.string().optional(),
213
- })
214
- .optional(),
215
- // ── Language payload (built FROM INSPIRATION) ─────────────────────────────
216
- // Carried untransformed onto the wire kit so the projection (resolveBrandKit)
217
- // can surface it as `ResolvedBrandKit.language`. Not a `$brand:` token root —
218
- // these are exemplar/motif references the maker + judge condition on, not
219
- // bindable design tokens.
220
- exemplarKeys: z.array(z.string().min(1)).max(24).optional(),
221
- contactSheetKey: z.string().min(1).optional(),
222
- motifs: z.array(Motif).max(24).optional(),
223
- styleRubric: z.string().max(4000).optional(),
224
- density: z.object({
225
- graphicsPerMin: z.number().min(0).max(60),
226
- maxSimultaneous: z.number().int().min(1).max(6),
227
- }).optional(),
228
- inspiration: z.object({
229
- sources: z.array(z.string()).min(1).max(24),
230
- extractedAt: z.number(),
231
- extractionVersion: z.string().min(1).max(60),
232
- }).optional(),
233
- logo: Logo.optional(),
234
- intro: IntroOutro.optional(),
235
- outro: IntroOutro.optional(),
236
- watermark: Watermark.optional(),
237
- /** Brand audio identity (audio design spec 2026-07-20): default SFX intensity
238
- * + music-bed defaults. Brief `audio` wins when present (caption-identity
239
- * precedence: brand default beats brief absence; brief beats brand).
240
- *
241
- * Brand SOUND kit (audio-substrate Phase 5) — identity over TIME. All four
242
- * fields are OPTIONAL; a kit that sets none behaves byte-identically to a kit
243
- * with no audio block. Refs are palette references (P2 AudioPaletteEntry.ref:
244
- * a pack soundId | music-pack bedId | org mediaId — an opaque string handle). */
245
- audio: z.object({
246
- sfxIntensity: z.enum(["off", "light", "standard", "dense"]).optional(),
247
- musicEnabled: z.boolean().optional(),
248
- musicMood: z.string().max(300).optional(),
249
- /** SONIC LOGO — a brand audio signature bound to the intro/outro bookend at
250
- * compose time (an sfx-role clip at the body edge adjacent to the render
251
- * bookend). `ref` = a palette reference; `placement` = which bookend(s);
252
- * `offsetMs` shifts within. Bound only when the corresponding bumper
253
- * (kit.intro / kit.outro) exists — else a non-blocking advisory. */
254
- sonicLogo: z.object({
255
- ref: AudioPaletteRef,
256
- placement: z.enum(["intro", "outro", "both"]),
257
- offsetMs: z.number().int().min(0).max(10000).optional(),
258
- }).optional(),
259
- /** UI SOUND SET — per-family palette overrides consumed by the sfxCompile
260
- * org-first draw as the HIGHEST-priority tier (brand > org palette > pack
261
- * default), mirroring how a brand FONT sits above org defaults. Keys are the
262
- * closed SfxFamily vocabulary; values are palette refs. */
263
- uiSoundSet: z.object({
264
- tick: AudioPaletteRef.optional(),
265
- pop: AudioPaletteRef.optional(),
266
- impact: AudioPaletteRef.optional(),
267
- confirm: AudioPaletteRef.optional(),
268
- error: AudioPaletteRef.optional(),
269
- whoosh: AudioPaletteRef.optional(),
270
- riser: AudioPaletteRef.optional(),
271
- }).optional(),
272
- /** BED STYLE — a preferred pack bed (`bedId`) or a style hint (`genre` /
273
- * `bpmRange`). SURFACED-ONLY today (compose does not auto-select a pack bed
274
- * — it uses a client-pinned bed or generates from mood); the field resolves
275
- * through the kit + surfaces via get_profile / brand-kit reads so driving
276
- * agents honor it when pinning / generating a bed. */
277
- bedStyle: z.object({
278
- bedId: AudioPaletteRef.optional(),
279
- genre: z.string().max(120).optional(),
280
- bpmRange: z.object({ min: z.number(), max: z.number() }).optional(),
281
- }).optional(),
282
- /** AMBIENCE PREFERENCE — a preferred ambience bed (`{ref}`) or explicit
283
- * `null` (opt-out). SURFACED-ONLY (compose has no ambience auto-placement);
284
- * resolves + surfaces for driving agents. */
285
- ambiencePreference: z.object({ ref: AudioPaletteRef }).nullable().optional(),
286
- }).optional(),
287
- license: LicenseDeclaration.optional(),
288
- licenseVerification: z.enum([
289
- "attested",
290
- "cueframe-verified",
291
- "third-party-verified",
292
- ]).optional(),
293
- ownerOrgId: z.string().optional(),
294
- acl: AccessControl.optional(),
295
- });
@@ -1,113 +0,0 @@
1
- /**
2
- * ComposePlan — the locked contract between the compose PLANNER and the
3
- * ASSEMBLER (multi-agent director spec 2026-06-11). The plan mirrors the
4
- * composition model: framing → cropIntents, cuts → delete_ranges/excludedRanges,
5
- * captions → CompositionCaptions.style intent, assets → mediaId refs,
6
- * graphics → overlay/component refs. Specialists fulfill assets/graphics
7
- * requests; the assembler integrates and never re-plans.
8
- */
9
- import { z } from "zod";
10
- // The graphics-domain SSOT: role vocabulary + structured copy. The plan
11
- // references the SAME types the compiler consumes (no separate contract to drift).
12
- import { GraphicRole, Copy } from "../graphics-plan/schemas.js";
13
- /** The planner's subject pick — WHO/WHAT the camera tracks on a `frame` beat.
14
- * This is the PLANNER↔assembler contract shape (kept subject-centric so the
15
- * Langfuse-managed planner prompt is unchanged); the assembler (compile.ts)
16
- * maps it onto the canonical `Focus` of a `ReframeSegment`. Same variants as
17
- * `Focus`: face / all-faces / frame-center / active-speaker / point. */
18
- export const PlanSubject = z.discriminatedUnion("kind", [
19
- z.object({ kind: z.literal("face"), faceId: z.string().min(1) }),
20
- z.object({ kind: z.literal("all-faces") }),
21
- z.object({ kind: z.literal("frame-center") }),
22
- z.object({ kind: z.literal("active-speaker") }),
23
- z.object({
24
- kind: z.literal("point"),
25
- x: z.number().min(0).max(1),
26
- y: z.number().min(0).max(1),
27
- }),
28
- ]);
29
- /** One framing decision — three first-class intents so none is expressible
30
- * only by misusing another (the 2026-07-12 verify-rerun planner read 'trim'
31
- * as "keep un-cropped" and trimmed the whole clip; the vocabulary had no
32
- * legal move for subject-less footage):
33
- * - 'frame' — SHOW this span, cropped/tracked per `subject` (required).
34
- * - 'keep' — SHOW this span AS-IS, no reframe (b-roll, landscapes, any
35
- * footage with nothing to track). No subject.
36
- * - 'trim' — DELETE this span from the output entirely.
37
- * Downstream: 'frame' compiles to a crop intent; 'keep' compiles to nothing
38
- * (shown uncropped); 'trim' compiles to an excluded range. */
39
- export const PlanFramingSegment = z
40
- .object({
41
- startSec: z.number().nonnegative(),
42
- endSec: z.number().positive(),
43
- action: z
44
- .enum(["frame", "keep", "trim"])
45
- .describe("'frame' = SHOW this span cropped/tracked per `subject`. 'keep' = SHOW this span as-is, no reframe (footage with nothing to track). 'trim' = DELETE this span from the output entirely — trimmed footage never appears."),
46
- subject: PlanSubject.optional(),
47
- shotScale: z.enum(["close", "standard", "wide"]).optional(),
48
- zoomScale: z.number().min(0.4).max(1.0).optional(),
49
- verticalBias: z.number().min(-0.3).max(0.3).optional(),
50
- /** Optional in the plan; the assembler defaults it to 0 on set_crop_intents. */
51
- lateralBias: z.number().min(-0.3).max(0.3).optional(),
52
- intent: z.string().optional(),
53
- })
54
- .refine((s) => s.action !== "frame" || s.subject !== undefined, {
55
- message: "frame segment requires a subject — for footage with no trackable subject use action:'keep' (shown as-is); do NOT trim spans you want shown",
56
- })
57
- .refine((s) => s.action !== "keep" || s.subject === undefined, {
58
- message: "keep segment shows footage as-is — it takes no subject (use action:'frame' to track one)",
59
- })
60
- // ONE knob sizes the crop. `shotScale` (editorial, calibrated to the detected
61
- // face at bake time) and `zoomScale` (explicit fraction of the frame) both do,
62
- // and shotScale WINS — so a segment carrying both silently discards the zoom.
63
- .refine((s) => s.shotScale === undefined || s.zoomScale === undefined, {
64
- message: "framing segment takes EITHER shotScale (editorial scale — the bake calibrates the zoom to the detected face) OR zoomScale (an explicit fraction of the frame), never both: shotScale wins and the zoomScale would be silently discarded",
65
- path: ["zoomScale"],
66
- });
67
- export const PlanCut = z.object({
68
- startSec: z.number().nonnegative(),
69
- endSec: z.number().positive(),
70
- reason: z.string().min(1),
71
- });
72
- export const PlanAssetRequest = z.object({
73
- id: z.string().min(1),
74
- atSec: z.number().nonnegative(),
75
- durSec: z.number().positive(),
76
- kind: z.enum(["broll", "audio", "sfx", "music", "ambience", "gif", "image"]),
77
- source: z.enum(["find", "generate"]),
78
- intent: z.string().min(1),
79
- /** Phase 1: the planner resolves `find` requests against the pool at plan
80
- * time (it has search_library) and records the pick here. Unresolved find
81
- * requests are stripped by the validator (degrade, not error). */
82
- resolvedMediaId: z.string().optional(),
83
- });
84
- /**
85
- * A first-class typed graphic the planner requests: a `role` (the editorial
86
- * graphic type) + structured `copy` — NOT a coarse kind + freeform text. The
87
- * designer phase reads these straight into a graphics-plan ContentBeat and
88
- * compiles deterministically (no inference, no bespoke-JSX escape hatch).
89
- * `role`/`copy` are the graphics-domain SSOT (graphics-plan/schemas); zPlane is
90
- * implied by the role (`hero` → behind-subject) so it is not re-declared here.
91
- */
92
- export const PlanGraphicRequest = z.object({
93
- id: z.string().min(1),
94
- atSec: z.number().nonnegative(),
95
- durSec: z.number().positive(),
96
- role: GraphicRole,
97
- copy: Copy,
98
- intent: z.string().min(1),
99
- });
100
- export const PlanMarker = z.object({
101
- startSec: z.number().nonnegative(),
102
- endSec: z.number().nonnegative().optional(),
103
- kind: z.string().min(1),
104
- name: z.string().optional(),
105
- });
106
- export const ComposePlan = z.object({
107
- framing: z.array(PlanFramingSegment).min(1),
108
- cuts: z.array(PlanCut).optional(),
109
- captions: z.object({ styleIntent: z.string().optional() }).optional(),
110
- assets: z.array(PlanAssetRequest).optional(),
111
- graphics: z.array(PlanGraphicRequest).optional(),
112
- markers: z.array(PlanMarker).optional(),
113
- });