@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,34 +0,0 @@
1
- import { z } from "zod";
2
- // Font lifecycle per data-model.md § FontRef (and the Font entity).
3
- // Font is immutable after `status: 'ready'` — variants don't get re-subsetted,
4
- // family doesn't change, files in R2 are content-addressed by subset hash.
5
- export const FontStatus = z.enum([
6
- "pending",
7
- "uploading",
8
- "analyzing",
9
- "subsetting",
10
- "ready",
11
- "partial", // common-glyphs buffer present, custom glyphs still subsetting
12
- "failed",
13
- ]);
14
- export const FontVariant = z.object({
15
- weight: z.number().int().min(100).max(900),
16
- style: z.enum(["normal", "italic"]),
17
- storageKey: z.string().min(1),
18
- byteSize: z.number().int().nonnegative().optional(),
19
- subsetComplete: z.boolean().optional(),
20
- });
21
- export const Font = z.object({
22
- id: z.string().min(1),
23
- family: z.string().min(1),
24
- status: FontStatus,
25
- variants: z.array(FontVariant).nonempty(),
26
- source: z.enum(["uploaded", "system", "web"]).optional(),
27
- license: z.object({
28
- type: z.string().min(1),
29
- source: z.string().optional(),
30
- notes: z.string().optional(),
31
- }).optional(),
32
- createdAt: z.number().optional(), // epoch ms
33
- ownerOrgId: z.string().optional(),
34
- });
@@ -1,30 +0,0 @@
1
- export const AUTHORED_GRAPHIC_KINDS = ["overlay", "component", "card", "alpha-layer"];
2
- /**
3
- * The canonical authored KIND for each planner graphic ROLE — the clip kind the
4
- * deterministic graphics compiler (graphics-plan/compile.ts) emits and the LLM
5
- * designer authors by default. EVERY role currently compiles to an `overlay`
6
- * clip: title-card/stat/lower-third/pull-quote are overlay primitives, `hero`'s
7
- * behind-subject look is a zPlane ON an overlay (not a distinct kind), and
8
- * `logo-tag` is a watermark overlay.
9
- *
10
- * The bridge the brief-EXCLUSIONS filter (briefContract.dropExcludedPlanGraphics)
11
- * needs: plan graphics carry a ROLE, exclusions name a KIND. `Record<GraphicRole,
12
- * …>` makes a NEW role a COMPILE error here — the same add-or-silently-miss
13
- * discipline the kinds SSOT above enforces.
14
- */
15
- export const GRAPHIC_ROLE_CANONICAL_KIND = {
16
- "title-card": "overlay",
17
- stat: "overlay",
18
- "lower-third": "overlay",
19
- "pull-quote": "overlay",
20
- hero: "overlay",
21
- "logo-tag": "overlay",
22
- // The ARGUMENT roles default to `overlay` too: the catalog's argument-carrying components
23
- // (reasoning-trace, tool-call-stack, benchmark-bars, metric-gauge, eval-scorecard) are all
24
- // overlay primitives placed by `primitiveId`. A designer that ESCALATES to a custom .tsx
25
- // authors a `component` clip, and the exclusions check runs against the clip it actually
26
- // wrote — this map only supplies the plan-time default.
27
- enumeration: "overlay",
28
- sequence: "overlay",
29
- comparison: "overlay",
30
- };
@@ -1,9 +0,0 @@
1
- export * from "./composition";
2
- export * from "./composePlan";
3
- export * from "./brandKit";
4
- export * from "./font";
5
- export * from "./render";
6
- export * from "./registry";
7
- export * from "./project";
8
- export * from "./session";
9
- export * from "./webhook";
@@ -1,29 +0,0 @@
1
- import { z } from "zod";
2
- import { zid } from "convex-helpers/server/zod3";
3
- import { Format } from "./composition";
4
- // Project per data-model.md § Project — top-level container that holds an
5
- // active editable Composition pointer, default format for new compositions,
6
- // and references to brand kit + render history. Compositions stay queryable
7
- // independently; the Project just points at the current "active" version.
8
- export const Project = z.object({
9
- id: zid("projects"),
10
- name: z.string().min(1),
11
- // Default format applied to new Compositions created under this Project.
12
- // Each Composition still carries its own Format — this is just the seed.
13
- defaultFormat: Format.optional(),
14
- // PAL-region fps conform default. See data-model.md § MediaItem for the table.
15
- // 'palConformDefault: 24' makes 25fps PAL footage conform to 24 instead of 30.
16
- palConformDefault: z.union([z.literal(24), z.literal(30)]).optional(),
17
- // Pointer to the currently-active Composition for this Project. Edits land
18
- // on a new CompositionVersion each PUT; this pointer advances to the new
19
- // version's id. Nullable when the Project has no active Composition (e.g.,
20
- // immediately after creation, or after the active composition was hard-deleted).
21
- activeCompositionId: zid("compositions").nullable().optional(),
22
- // Stable external `kitId` STRING (the v1 brand-kits API id), not a strict
23
- // `zid("brandKits")`. Resolved org-scoped at render by either kitId or the
24
- // legacy convex `_id`. Keeps the brand reference consistent end-to-end (#33).
25
- brandKitId: z.string().optional(),
26
- ownerOrgId: z.string().optional(),
27
- createdAt: z.number(),
28
- updatedAt: z.number(),
29
- });
@@ -1,41 +0,0 @@
1
- import { z } from "zod";
2
- export const PrimitiveOriginClass = z.enum([
3
- "first-party",
4
- "community-verified",
5
- "community-unverified",
6
- "user-private",
7
- "sandbox",
8
- "deprecated",
9
- ]);
10
- export const PrimitiveMode = z.enum(["2d", "immersive", "interactive"]);
11
- export const PrimitiveToken = z.object({
12
- path: z.string().min(1),
13
- fallback: z.unknown(),
14
- });
15
- export const PrimitiveOtioMapping = z.object({
16
- effectName: z.string().min(1),
17
- metadata: z.record(z.string(), z.unknown()).optional(),
18
- });
19
- export const PrimitiveMeta = z.object({
20
- description: z.string().optional(),
21
- use_when: z.array(z.string()).optional(),
22
- avoid_when: z.array(z.string()).optional(),
23
- vibe: z.array(z.string()).optional(),
24
- formats: z.array(z.string()).optional(),
25
- pairs_well_with: z.array(z.string()).optional(),
26
- exemplars: z.array(z.string()).optional(),
27
- });
28
- export const PrimitiveRegistryEntry = z.object({
29
- name: z.string().min(1),
30
- package: z.string().min(1),
31
- category: z.enum(["overlay", "text", "effect", "transition", "layout"]),
32
- version: z.string().min(1),
33
- origin: PrimitiveOriginClass,
34
- modes: z.array(PrimitiveMode).optional(),
35
- paramsSchema: z.unknown(),
36
- varyingParams: z.array(z.string()).optional(),
37
- extends: z.string().optional(),
38
- tokens: z.array(PrimitiveToken).optional(),
39
- otio: PrimitiveOtioMapping.optional(),
40
- meta: PrimitiveMeta.optional(),
41
- });
@@ -1,139 +0,0 @@
1
- import { z } from "zod";
2
- import { zid } from "convex-helpers/server/zod3";
3
- import { Composition } from "./composition";
4
- import { BrandKit } from "./brandKit";
5
- export const RenderPriority = z.enum(["interactive", "standard", "background"]);
6
- export const RenderIntent = z.enum(["preview", "final"]);
7
- export const RenderMode = z.enum(["offline", "live"]);
8
- // Cancel reasons — union of doc spec and operational realities.
9
- // `user`, `agent`, `cost_limit` are the doc-required triad; the rest are
10
- // operational reasons the worker pool needs to surface (idempotently retryable).
11
- export const RenderCancelReason = z.enum([
12
- "user",
13
- "agent",
14
- "cost_limit",
15
- "superseded",
16
- "source_removed",
17
- "timeout",
18
- "error",
19
- ]);
20
- // Lifecycle per data-model.md § Render (RenderJob).
21
- // pending → rendering → complete | error | cancelled.
22
- export const RenderStatus = z.enum([
23
- "pending",
24
- "rendering",
25
- "complete",
26
- "error",
27
- "cancelled",
28
- ]);
29
- export const RenderProgressPhase = z.object({
30
- phase: z.string().min(1),
31
- percent: z.number().min(0).max(100),
32
- scenesTotal: z.number().int().positive().optional(),
33
- });
34
- export const RegistryPin = z.object({
35
- package: z.string().min(1),
36
- name: z.string().min(1),
37
- version: z.string().min(1),
38
- });
39
- export const MediaSourceSnapshot = z.object({
40
- mediaId: zid("mediaItems"),
41
- presignedUrl: z.string().url(),
42
- expiresAt: z.number().optional(),
43
- });
44
- export const RenderSnapshot = z.object({
45
- composition: Composition,
46
- brandKit: BrandKit.optional(),
47
- mediaSources: z.array(MediaSourceSnapshot),
48
- registryPins: z.array(RegistryPin),
49
- capturedAt: z.number(),
50
- });
51
- // Destinations — delivery intents post-encode. R2 is always the canonical origin;
52
- // additional destinations are delivered in parallel after the R2 write succeeds.
53
- // Credentials are referenced by `credentialId` and never inlined on the request.
54
- export const R2Destination = z.object({
55
- kind: z.literal("r2"),
56
- path: z.string().optional(),
57
- });
58
- export const S3Destination = z.object({
59
- kind: z.literal("s3"),
60
- credentialId: z.string().min(1),
61
- bucket: z.string().min(1),
62
- key: z.string().min(1),
63
- region: z.string().optional(),
64
- acl: z.string().optional(),
65
- });
66
- export const YoutubeDestination = z.object({
67
- kind: z.literal("youtube"),
68
- credentialId: z.string().min(1),
69
- title: z.string().min(1),
70
- description: z.string().optional(),
71
- privacy: z.enum(["public", "unlisted", "private"]),
72
- tags: z.array(z.string()).optional(),
73
- });
74
- export const MuxDestination = z.object({
75
- kind: z.literal("mux"),
76
- credentialId: z.string().min(1),
77
- passthrough: z.string().optional(),
78
- });
79
- export const WebhookDestination = z.object({
80
- kind: z.literal("webhook"),
81
- url: z.string().url(),
82
- signingKeyId: z.string().optional(),
83
- headers: z.record(z.string(), z.string()).optional(),
84
- });
85
- export const Destination = z.discriminatedUnion("kind", [
86
- R2Destination,
87
- S3Destination,
88
- YoutubeDestination,
89
- MuxDestination,
90
- WebhookDestination,
91
- ]);
92
- export const DestinationDeliveryStatus = z.enum([
93
- "pending",
94
- "uploading",
95
- "delivered",
96
- "failed",
97
- ]);
98
- export const DestinationResult = z.object({
99
- destinationIndex: z.number().int().nonnegative(),
100
- status: DestinationDeliveryStatus,
101
- url: z.string().url().optional(),
102
- deliveredAt: z.number().optional(),
103
- error: z.string().optional(),
104
- });
105
- export const RenderJob = z.object({
106
- id: zid("renderJobs"),
107
- projectId: zid("projects").optional(),
108
- compositionId: zid("compositions"),
109
- compositionVersionId: z.string().min(1),
110
- status: RenderStatus,
111
- progress: RenderProgressPhase.optional(),
112
- mode: RenderMode.optional(),
113
- priority: RenderPriority, // required per data-model.md § Render priority
114
- intent: RenderIntent.optional(),
115
- snapshot: RenderSnapshot.optional(),
116
- snapshotRef: z.string().optional(),
117
- outputUrl: z.string().url().optional(),
118
- outputExpiresAt: z.number().optional(), // epoch ms
119
- destinations: z.array(Destination).optional(),
120
- destinationResults: z.array(DestinationResult).optional(),
121
- cancelReason: RenderCancelReason.optional(),
122
- // `error` is structured (richer than the doc's plain-string spec) so the worker
123
- // can surface a stable code, a human message, and operator-visible details.
124
- // See CONVEX_ADAPTATIONS.md for the rationale on richer-than-doc shapes.
125
- error: z.object({
126
- code: z.string(),
127
- message: z.string(),
128
- details: z.record(z.string(), z.unknown()).optional(),
129
- }).optional(),
130
- createdAt: z.number(),
131
- updatedAt: z.number(),
132
- });
133
- export const RenderProgress = z.object({
134
- jobId: zid("renderJobs"),
135
- status: RenderStatus,
136
- percent: z.number().min(0).max(100).optional(),
137
- framesRendered: z.number().int().nonnegative().optional(),
138
- framesTotal: z.number().int().positive().optional(),
139
- });
@@ -1,37 +0,0 @@
1
- import { z } from "zod";
2
- import { zid } from "convex-helpers/server/zod3";
3
- // Session per data-model.md § Session — a group of MediaItem items captured
4
- // together (multi-cam podcast, screen + facecam recording, two-person
5
- // interview on separate cameras). Each MediaItem in the session has a typed
6
- // `role`. Sessions can be muxed (audio role merged onto a video role).
7
- //
8
- // In a Composition, a scene references a session and specifies which angle
9
- // is active by role; the session resolves to a concrete `mediaId` at write
10
- // time and the TimelineClip stores the resolved id, not the session reference.
11
- export const SessionMediaRole = z.enum([
12
- "main",
13
- "wide",
14
- "facecam",
15
- "screen",
16
- "audio",
17
- ]);
18
- export const SessionMember = z.object({
19
- mediaId: zid("mediaItems"),
20
- role: SessionMediaRole,
21
- label: z.string().optional(), // human-readable annotation, e.g., "host's camera"
22
- });
23
- // Mux pairing — audio role merged onto a video role at session-resolution time.
24
- // The renderer treats the muxed pair as a single source for sync and trim.
25
- export const SessionMux = z.object({
26
- videoRole: z.enum(["main", "wide", "facecam", "screen"]),
27
- audioRole: z.literal("audio"),
28
- });
29
- export const Session = z.object({
30
- id: zid("sessions"),
31
- name: z.string().min(1),
32
- members: z.array(SessionMember).nonempty(),
33
- mux: z.array(SessionMux).optional(),
34
- ownerOrgId: z.string().optional(),
35
- createdAt: z.number(),
36
- updatedAt: z.number(),
37
- });
@@ -1,72 +0,0 @@
1
- import { z } from "zod";
2
- import { zid } from "convex-helpers/server/zod3";
3
- // Webhook per data-model.md — subscriber URLs that receive events for
4
- // substrate state transitions (renders, media, font, composition).
5
- // Delivery is at-least-once, with Standard Webhooks signing.
6
- //
7
- // Domain-extensible event names: `Webhook.events` is `string[]` so domain
8
- // packages (e.g. @cueframe/clip-model) can contribute their own event
9
- // vocabulary without forcing substrate to know about them. Each domain exports
10
- // its own typed enum (e.g. ClipsWebhookEvent) that consumers compose into the
11
- // `events` array; the substrate's SubstrateWebhookEvent enum below is the
12
- // canonical list of substrate-emitted events. The webhook delivery
13
- // infrastructure routes any event name.
14
- //
15
- // EMITTED-ONLY SSOT (#16 webhook-vocab honesty). This enum lists ONLY the
16
- // render/media/composition lifecycle events the substrate ACTUALLY fires (an
17
- // `event:` literal routed to webhooksFire.fireEvent). The previously-advertised
18
- // `render.queued/started/delivered/delivery_failed`, `media.uploaded`,
19
- // `media.spatial_ready`, `media.transcript_ready`, and the `font.*` family were
20
- // REMOVED: nothing emits them. Honesty over aspiration — advertising a webhook
21
- // the agent can never receive silently breaks its progress tracking. The convex
22
- // parity gate (api.webhookVocabParity.test.ts) asserts every value here has a
23
- // real emit site.
24
- export const SubstrateWebhookEvent = z.enum([
25
- // Render lifecycle — A3 terminal family (plan 2026-07-10-flow-checkpoint):
26
- // ONE terminal event per kind, `status` INSIDE the payload.
27
- "render.completed",
28
- // MediaItem lifecycle
29
- "media.transcribed",
30
- "media.completed",
31
- // Composition lifecycle
32
- "composition.updated",
33
- ]);
34
- export const WebhookDeliveryStatus = z.enum([
35
- "pending",
36
- "delivering",
37
- "delivered",
38
- "failed",
39
- "exhausted", // retry budget burned through
40
- ]);
41
- export const Webhook = z.object({
42
- id: zid("webhooks"),
43
- url: z.string().url(),
44
- // Open string array — substrate event names live in SubstrateWebhookEvent;
45
- // domain packages export their own event enums and consumers compose them.
46
- events: z.array(z.string().min(1)).nonempty(),
47
- // Standard Webhooks signing key reference; the signing secret itself is
48
- // stored server-side and never round-tripped through the API surface.
49
- signingKeyId: z.string().optional(),
50
- // Optional headers the subscriber wants on every delivery.
51
- headers: z.record(z.string(), z.string()).optional(),
52
- enabled: z.boolean().optional(),
53
- ownerOrgId: z.string().optional(),
54
- createdAt: z.number(),
55
- updatedAt: z.number(),
56
- });
57
- // Per-attempt delivery record. Useful for the operator dashboard and for
58
- // the subscriber's "what did you receive" replay surface.
59
- export const WebhookDelivery = z.object({
60
- id: z.string().min(1),
61
- webhookId: zid("webhooks"),
62
- // Open string — could be any substrate or domain event name.
63
- event: z.string().min(1),
64
- payload: z.record(z.string(), z.unknown()),
65
- status: WebhookDeliveryStatus,
66
- attemptCount: z.number().int().nonnegative(),
67
- responseStatus: z.number().int().optional(),
68
- responseBody: z.string().optional(),
69
- error: z.string().optional(),
70
- createdAt: z.number(),
71
- deliveredAt: z.number().optional(),
72
- });
@@ -1,141 +0,0 @@
1
- /**
2
- * Alpha-layer clip walk — the SINGLE shared, V8-safe home for finding a wire
3
- * composition's alpha-layer clips (overlay-track clips whose
4
- * `source.kind === 'alpha-layer'`).
5
- *
6
- * This is PURE and crypto-free on purpose: both the director (Node worker, which
7
- * bakes the alpha) and Convex (V8 isolate, which materializes the authored
8
- * tsxSource into the stage body) walk the SAME composition for the SAME clips —
9
- * so the walk is the SSOT and lives here, importable from both. The director's
10
- * content-hash (`alphaLayerHash`, uses `node:crypto`) stays director-side; it is
11
- * NOT shareable with the V8 isolate and is orthogonal to the walk.
12
- */
13
- /**
14
- * Walk a wire composition for alpha-layer clips (overlay-track clips whose
15
- * `source.kind === 'alpha-layer'`). Pure + tolerant of unknown shape (skips
16
- * malformed entries rather than throwing — the validator already gated saves).
17
- */
18
- export function collectAlphaLayerClips(composition) {
19
- const tracks = composition?.tracks;
20
- if (!Array.isArray(tracks))
21
- return [];
22
- const out = [];
23
- for (const track of tracks) {
24
- const contents = track?.contents;
25
- if (!Array.isArray(contents))
26
- continue;
27
- for (const c of contents) {
28
- const src = c?.source;
29
- if (!src || typeof src !== "object")
30
- continue;
31
- if (src.kind !== "alpha-layer")
32
- continue;
33
- const componentId = src.componentId;
34
- const clipId = c.id;
35
- const startTime = c.startTime;
36
- const duration = c.duration;
37
- if (typeof componentId !== "string" || componentId.length === 0)
38
- continue;
39
- if (typeof clipId !== "string" || clipId.length === 0)
40
- continue;
41
- if (typeof startTime !== "number" || typeof duration !== "number" || duration <= 0)
42
- continue;
43
- const rawProps = src.props;
44
- const props = rawProps && typeof rawProps === "object" && !Array.isArray(rawProps)
45
- ? rawProps
46
- : {};
47
- out.push({ clipId, componentId, props, startTime, duration });
48
- }
49
- }
50
- return out;
51
- }
52
- /**
53
- * Walk a wire composition for RAW `component` clip sources — sources that have
54
- * NOT been desugared and therefore cannot be projected by the renderer.
55
- *
56
- * `component` is a first-class `ClipSource` in the validator, but it is an
57
- * AUTHORING shape, never a render one: the cloud's save/writer chokepoint
58
- * (`services/convex/composition/projection.ts`) lowers every one of them to an
59
- * `alpha-layer` or a `custom` overlay before it is persisted, reading the
60
- * component's `executionMode` from the `installedComponents` table. Anything
61
- * that reaches `projectOverlayTrack` still wearing `kind:'component'` throws
62
- * `kind=component is invalid on an overlay track`.
63
- *
64
- * That throw is why this exists. On the desktop lane there is no such
65
- * chokepoint (and no registry to lower against), so an agent-authored component
66
- * clip committed straight to the store, the preview projected it during render,
67
- * and the throw escaped a `useMemo` into the app-root ErrorBoundary — the entire
68
- * editor replaced by "Something went wrong", with the broken composition saved,
69
- * so every subsequent open died the same way. Observed 2026-08-18.
70
- *
71
- * Two callers, which is the point of putting it here rather than in either of
72
- * them: the desktop plane REFUSES an apply that would create one, and the
73
- * preview GATE holds the player with a readable reason if a project already
74
- * contains one. The first stops the state being reachable; the second is how
75
- * anyone who already reached it gets their project open again.
76
- *
77
- * Pure + tolerant of unknown shape, like its siblings above.
78
- */
79
- export function collectRawComponentClips(composition) {
80
- const tracks = composition?.tracks;
81
- if (!Array.isArray(tracks))
82
- return [];
83
- const out = [];
84
- for (const track of tracks) {
85
- const contents = track?.contents;
86
- if (!Array.isArray(contents))
87
- continue;
88
- for (const c of contents) {
89
- const src = c?.source;
90
- if (!src || typeof src !== "object")
91
- continue;
92
- if (src.kind !== "component")
93
- continue;
94
- const id = c.id;
95
- out.push(typeof id === "string" && id.length > 0 ? id : "(unnamed clip)");
96
- }
97
- }
98
- return out;
99
- }
100
- /**
101
- * Walk a wire composition for LIVE component-backed `custom` overlays — the
102
- * bakeless-lane peer of `collectAlphaLayerClips`. A live component desugars (at
103
- * the save writer) to `{ kind:'overlay', primitiveId:'custom', params:{
104
- * componentId, ...props } }` — a componentId REFERENCE with no frozen source.
105
- * The renderJob-create path (renders.ts) walks these to materialize each
106
- * component's FRESH transpiled jsSource per render (keyed by clipId). Pure +
107
- * tolerant of unknown shape. Desktop-INLINE customs (which carry their own
108
- * `params.sourceCode` and no `componentId`) are NOT returned — they need no
109
- * materialization.
110
- */
111
- export function collectLiveComponentClips(composition) {
112
- const tracks = composition?.tracks;
113
- if (!Array.isArray(tracks))
114
- return [];
115
- const out = [];
116
- for (const track of tracks) {
117
- const contents = track?.contents;
118
- if (!Array.isArray(contents))
119
- continue;
120
- for (const c of contents) {
121
- const src = c?.source;
122
- if (!src || typeof src !== "object")
123
- continue;
124
- if (src.kind !== "overlay")
125
- continue;
126
- if (src.primitiveId !== "custom")
127
- continue;
128
- const params = src.params;
129
- const componentId = params && typeof params === "object"
130
- ? params.componentId
131
- : undefined;
132
- const clipId = c.id;
133
- if (typeof componentId !== "string" || componentId.length === 0)
134
- continue;
135
- if (typeof clipId !== "string" || clipId.length === 0)
136
- continue;
137
- out.push({ clipId, componentId });
138
- }
139
- }
140
- return out;
141
- }