@cueframe/kernel 0.1.0 → 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 (355) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/composition/ops/compositionOps.d.ts +1 -0
  3. package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
  4. package/dist/_members/composition/projection/index.d.ts +2 -0
  5. package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
  6. package/dist/_members/composition/validators/composition.d.ts +42 -25
  7. package/dist/_members/composition/validators/render.d.ts +32 -0
  8. package/dist/_members/core/render/compositionRender.d.ts +17 -1
  9. package/dist/_members/core/render/types.d.ts +31 -0
  10. package/dist/authoring/build-tools.js +6 -6
  11. package/dist/authoring/context.js +4 -4
  12. package/dist/authoring/tools.js +5 -5
  13. package/dist/authoring.js +11 -9
  14. package/dist/{chunk-ZB3C3HM7.js → chunk-7FO3ZJ43.js} +3 -0
  15. package/dist/{chunk-ODL7GQJG.js → chunk-AP6ZIVAV.js} +2 -2
  16. package/dist/{chunk-IBYQG46O.js → chunk-AQBREB5O.js} +1 -1
  17. package/dist/{chunk-YIOY2XEO.js → chunk-DK2ODBNT.js} +15 -5
  18. package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
  19. package/dist/{chunk-GEA7E2FL.js → chunk-JJ6XD7NG.js} +151 -1
  20. package/dist/{chunk-COYMZ76S.js → chunk-MBCXCJOE.js} +1 -1
  21. package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
  22. package/dist/{chunk-VOO5FQSS.js → chunk-PDYO3DOJ.js} +5 -5
  23. package/dist/{chunk-MXFAADCQ.js → chunk-PODIYN2K.js} +9 -2
  24. package/dist/{chunk-NFEGPWGS.js → chunk-TOJEXFXL.js} +1 -1
  25. package/dist/{chunk-LM4WDUQJ.js → chunk-UHGSZZDI.js} +1 -1
  26. package/dist/{chunk-XWKZB5U5.js → chunk-ZWMV6DD2.js} +24 -1
  27. package/dist/compose/renderer.js +3 -3
  28. package/dist/compose.js +6 -6
  29. package/dist/composition/graphics-plan.js +1 -1
  30. package/dist/composition/ops.js +3 -3
  31. package/dist/composition/primitive-catalog.js +1 -1
  32. package/dist/composition/projection.js +19 -3
  33. package/dist/composition/validators.js +6 -4
  34. package/dist/composition-ops.js +8 -6
  35. package/dist/composition.js +24 -6
  36. package/dist/{context-OKX3HHFS.js → context-YWUZDG5X.js} +4 -4
  37. package/dist/core/render.js +3 -3
  38. package/dist/core/select.js +2 -2
  39. package/dist/core.js +3 -3
  40. package/dist/errors.js +1 -1
  41. package/dist/mcp/adapter.js +1 -0
  42. package/dist/media-model/testing.js +1071 -718
  43. package/dist/nle-export/server.js +328 -130
  44. package/dist/nle-export.js +7 -6
  45. package/package.json +13 -14
  46. package/dist/_members/account-model/index.js +0 -4
  47. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  48. package/dist/_members/account-model/testing/index.js +0 -7
  49. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  50. package/dist/_members/account-model/types/index.js +0 -1
  51. package/dist/_members/account-model/validators/contextFile.js +0 -18
  52. package/dist/_members/account-model/validators/conversation.js +0 -95
  53. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  54. package/dist/_members/account-model/validators/index.js +0 -7
  55. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  56. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  57. package/dist/_members/account-model/validators/userSettings.js +0 -12
  58. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  59. package/dist/_members/brand-derivation/constants.js +0 -20
  60. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  61. package/dist/_members/brand-derivation/index.js +0 -1
  62. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js +0 -162
  63. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js.map +0 -1
  64. package/dist/_members/cloud-import/index.js +0 -241
  65. package/dist/_members/cloud-import/index.js.map +0 -1
  66. package/dist/_members/cloud-import/multipartUpload.js +0 -7
  67. package/dist/_members/cloud-import/multipartUpload.js.map +0 -1
  68. package/dist/_members/composition/audio/audioMix.js +0 -61
  69. package/dist/_members/composition/audio/index.js +0 -5
  70. package/dist/_members/composition/audio/mixStaging.js +0 -195
  71. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  72. package/dist/_members/composition/audio/musicPack.js +0 -36
  73. package/dist/_members/composition/audio/pack.generated.js +0 -603
  74. package/dist/_members/composition/audio/pack.js +0 -48
  75. package/dist/_members/composition/audio/palette.js +0 -134
  76. package/dist/_members/composition/autozoom/index.js +0 -83
  77. package/dist/_members/composition/brand-kit.js +0 -45
  78. package/dist/_members/composition/brief/contract.js +0 -209
  79. package/dist/_members/composition/color-grade.js +0 -80
  80. package/dist/_members/composition/depth.js +0 -8
  81. package/dist/_members/composition/fixtures/index.js +0 -143
  82. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  83. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  84. package/dist/_members/composition/fonts.js +0 -162
  85. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  86. package/dist/_members/composition/graphics-plan/index.js +0 -10
  87. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  88. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  89. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  90. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  91. package/dist/_members/composition/index.js +0 -5
  92. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  93. package/dist/_members/composition/invariants/composition.js +0 -28
  94. package/dist/_members/composition/invariants/errors.js +0 -10
  95. package/dist/_members/composition/invariants/etag.js +0 -38
  96. package/dist/_members/composition/invariants/ids.js +0 -33
  97. package/dist/_members/composition/invariants/index.js +0 -9
  98. package/dist/_members/composition/invariants/keyframes.js +0 -45
  99. package/dist/_members/composition/invariants/markers.js +0 -29
  100. package/dist/_members/composition/invariants/time.js +0 -20
  101. package/dist/_members/composition/invariants/tracks.js +0 -304
  102. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  103. package/dist/_members/composition/ops/headlessStore.js +0 -94
  104. package/dist/_members/composition/ops/index.js +0 -4
  105. package/dist/_members/composition/ops/selectors.js +0 -118
  106. package/dist/_members/composition/ops/timeline-word.js +0 -1
  107. package/dist/_members/composition/ops/transcript.js +0 -77
  108. package/dist/_members/composition/ops/types.js +0 -16
  109. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  110. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  111. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  112. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  113. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  114. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  115. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  116. package/dist/_members/composition/projection/behind-placement.js +0 -62
  117. package/dist/_members/composition/projection/brandKit.js +0 -482
  118. package/dist/_members/composition/projection/cardTokens.js +0 -209
  119. package/dist/_members/composition/projection/composition-floor.js +0 -582
  120. package/dist/_members/composition/projection/cropProjection.js +0 -257
  121. package/dist/_members/composition/projection/index.js +0 -7
  122. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  123. package/dist/_members/composition/projection/safe-zones.js +0 -99
  124. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  125. package/dist/_members/composition/reframe/coverage.js +0 -62
  126. package/dist/_members/composition/reframe/derive.js +0 -73
  127. package/dist/_members/composition/reframe/index.js +0 -109
  128. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  129. package/dist/_members/composition/reframe/shotScale.js +0 -176
  130. package/dist/_members/composition/reframe/trajectory.js +0 -124
  131. package/dist/_members/composition/timeline/compound.js +0 -134
  132. package/dist/_members/composition/timeline/index.js +0 -9
  133. package/dist/_members/composition/timeline/intent.js +0 -228
  134. package/dist/_members/composition/timeline/keyframes.js +0 -121
  135. package/dist/_members/composition/timeline/link.js +0 -59
  136. package/dist/_members/composition/timeline/occupancy.js +0 -36
  137. package/dist/_members/composition/timeline/placement.js +0 -74
  138. package/dist/_members/composition/timeline/plan.js +0 -31
  139. package/dist/_members/composition/timeline/resolve.js +0 -170
  140. package/dist/_members/composition/timeline/trims.js +0 -278
  141. package/dist/_members/composition/types/index.js +0 -1
  142. package/dist/_members/composition/validators/brandKit.js +0 -295
  143. package/dist/_members/composition/validators/composePlan.js +0 -113
  144. package/dist/_members/composition/validators/composition.js +0 -703
  145. package/dist/_members/composition/validators/font.js +0 -34
  146. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  147. package/dist/_members/composition/validators/index.js +0 -9
  148. package/dist/_members/composition/validators/project.js +0 -29
  149. package/dist/_members/composition/validators/registry.js +0 -41
  150. package/dist/_members/composition/validators/render.js +0 -139
  151. package/dist/_members/composition/validators/session.js +0 -37
  152. package/dist/_members/composition/validators/webhook.js +0 -72
  153. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  154. package/dist/_members/composition-ops/index.js +0 -637
  155. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  156. package/dist/_members/composition-ops/opRecorder.js +0 -196
  157. package/dist/_members/composition-ops/recordingStore.js +0 -14
  158. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  159. package/dist/_members/composition-ops/testFixtures.js +0 -19
  160. package/dist/_members/core/index.js +0 -5
  161. package/dist/_members/core/render/bookends.js +0 -53
  162. package/dist/_members/core/render/captions.js +0 -127
  163. package/dist/_members/core/render/compositionRender.js +0 -1249
  164. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  165. package/dist/_members/core/render/emphasis.js +0 -16
  166. package/dist/_members/core/render/eval/cropBox.js +0 -139
  167. package/dist/_members/core/render/eval/inclusion.js +0 -96
  168. package/dist/_members/core/render/eval/index.js +0 -146
  169. package/dist/_members/core/render/eval/metrics.js +0 -94
  170. package/dist/_members/core/render/exportSettings.js +0 -65
  171. package/dist/_members/core/render/index.js +0 -20
  172. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  173. package/dist/_members/core/render/types.js +0 -8
  174. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  175. package/dist/_members/core/render/vcam/constants.js +0 -115
  176. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  177. package/dist/_members/core/render/vcam/framing.js +0 -136
  178. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  179. package/dist/_members/core/render/vcam/shots.js +0 -53
  180. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  181. package/dist/_members/core/select/errorCodes.js +0 -38
  182. package/dist/_members/core/select/index.js +0 -26
  183. package/dist/_members/core/select/model.js +0 -18
  184. package/dist/_members/core/select/select.js +0 -244
  185. package/dist/_members/core/select/stabilize.js +0 -242
  186. package/dist/_members/core/types.js +0 -7
  187. package/dist/_members/errors/index.js +0 -1
  188. package/dist/_members/errors/registry.js +0 -560
  189. package/dist/_members/foundation/codes/index.js +0 -31
  190. package/dist/_members/foundation/index.js +0 -2
  191. package/dist/_members/foundation/primitives/index.js +0 -5
  192. package/dist/_members/mcp/adapter.js +0 -771
  193. package/dist/_members/mcp/burnedNames.js +0 -73
  194. package/dist/_members/mcp/core.js +0 -390
  195. package/dist/_members/mcp/curation.js +0 -792
  196. package/dist/_members/mcp/executor.js +0 -142
  197. package/dist/_members/mcp/format.js +0 -9
  198. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  199. package/dist/_members/mcp/generated/harness.js +0 -81
  200. package/dist/_members/mcp/generated/operations.js +0 -131
  201. package/dist/_members/mcp/index.js +0 -50
  202. package/dist/_members/mcp/internalLoopTools.js +0 -109
  203. package/dist/_members/mcp/prompts.js +0 -45
  204. package/dist/_members/mcp/resources.js +0 -166
  205. package/dist/_members/mcp/server.js +0 -340
  206. package/dist/_members/mcp/wait.js +0 -378
  207. package/dist/_members/mcp/x402Meta.js +0 -66
  208. package/dist/_members/media-model/api.js +0 -175
  209. package/dist/_members/media-model/index.js +0 -1
  210. package/dist/_members/media-model/media-kind.js +0 -116
  211. package/dist/_members/media-model/testing/index.js +0 -1
  212. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  213. package/dist/_members/media-model/transcriptSearch.js +0 -70
  214. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  215. package/dist/_members/nle-export/compact-timeline.js +0 -73
  216. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  217. package/dist/_members/nle-export/composition-to-input.js +0 -147
  218. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  219. package/dist/_members/nle-export/fcpxml.js +0 -159
  220. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  221. package/dist/_members/nle-export/index.js +0 -12
  222. package/dist/_members/nle-export/index.js.map +0 -1
  223. package/dist/_members/nle-export/premiere.js +0 -161
  224. package/dist/_members/nle-export/premiere.js.map +0 -1
  225. package/dist/_members/nle-export/server/index.js +0 -2
  226. package/dist/_members/nle-export/server/index.js.map +0 -1
  227. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  228. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  229. package/dist/_members/nle-export/srt.js +0 -50
  230. package/dist/_members/nle-export/srt.js.map +0 -1
  231. package/dist/_members/nle-export/types.js +0 -9
  232. package/dist/_members/nle-export/types.js.map +0 -1
  233. package/dist/_members/nle-export/xml/index.js +0 -11
  234. package/dist/_members/nle-export/xml/index.js.map +0 -1
  235. package/dist/_members/nle-export/xml-utils.js +0 -48
  236. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  237. package/dist/_members/perception/activeSpeaker.js +0 -103
  238. package/dist/_members/perception/audioQuality.js +0 -76
  239. package/dist/_members/perception/energyBeat.js +0 -99
  240. package/dist/_members/perception/identityMatch.js +0 -91
  241. package/dist/_members/perception/index.js +0 -48
  242. package/dist/_members/perception/visualQuality.js +0 -95
  243. package/dist/_members/plane/conformance.js +0 -90
  244. package/dist/_members/plane/contract.js +0 -49
  245. package/dist/_members/plane/index.js +0 -16
  246. package/dist/_members/primitives/backgrounds/index.js +0 -32
  247. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  248. package/dist/_members/primitives/captions/index.js +0 -398
  249. package/dist/_members/primitives/captions/index.js.map +0 -1
  250. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  251. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  252. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  253. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  254. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  255. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  256. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  257. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  258. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  259. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  260. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  261. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  262. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  263. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  264. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  265. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  266. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  267. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  268. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  269. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  270. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  271. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  272. package/dist/_members/primitives/chunk-IDAL6G3Y.js +0 -134
  273. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  274. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  275. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  276. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  277. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  278. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  279. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  280. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  281. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  282. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  283. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  284. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  285. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  286. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  287. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  288. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  289. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  290. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  291. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  292. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  293. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  294. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  295. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  296. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  297. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  298. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  299. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  300. package/dist/_members/primitives/effects/index.js +0 -30
  301. package/dist/_members/primitives/effects/index.js.map +0 -1
  302. package/dist/_members/primitives/hero-text/index.js +0 -14
  303. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  304. package/dist/_members/primitives/index.js +0 -64
  305. package/dist/_members/primitives/index.js.map +0 -1
  306. package/dist/_members/primitives/layouts/index.js +0 -24
  307. package/dist/_members/primitives/layouts/index.js.map +0 -1
  308. package/dist/_members/primitives/lib/easings.js +0 -26
  309. package/dist/_members/primitives/lib/easings.js.map +0 -1
  310. package/dist/_members/primitives/lib/index.js +0 -74
  311. package/dist/_members/primitives/lib/index.js.map +0 -1
  312. package/dist/_members/primitives/lib/palette.js +0 -72
  313. package/dist/_members/primitives/lib/palette.js.map +0 -1
  314. package/dist/_members/primitives/lib/preview.js +0 -8
  315. package/dist/_members/primitives/lib/preview.js.map +0 -1
  316. package/dist/_members/primitives/lib/schema.js +0 -12
  317. package/dist/_members/primitives/lib/schema.js.map +0 -1
  318. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  319. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  320. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  321. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  322. package/dist/_members/primitives/lib/text/fill.js +0 -8
  323. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  324. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  325. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  326. package/dist/_members/primitives/lib/text/marker.js +0 -8
  327. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  328. package/dist/_members/primitives/lib/text/motion.js +0 -16
  329. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  330. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  331. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  332. package/dist/_members/primitives/lib/text/spec.js +0 -1
  333. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  334. package/dist/_members/primitives/lib/text/stage.js +0 -8
  335. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  336. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  337. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  338. package/dist/_members/primitives/lib/tokens.js +0 -24
  339. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  340. package/dist/_members/primitives/lib/types.js +0 -1
  341. package/dist/_members/primitives/lib/types.js.map +0 -1
  342. package/dist/_members/primitives/params-required.json +0 -153
  343. package/dist/_members/primitives/scenes/index.js +0 -25
  344. package/dist/_members/primitives/scenes/index.js.map +0 -1
  345. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  346. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  347. package/dist/_members/primitives/text/index.js +0 -57
  348. package/dist/_members/primitives/text/index.js.map +0 -1
  349. package/dist/_members/primitives/transitions/index.js +0 -67
  350. package/dist/_members/primitives/transitions/index.js.map +0 -1
  351. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  352. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  353. package/dist/_members/primitives/version-map.json +0 -105
  354. package/dist/_members/primitives/workspace.js +0 -60
  355. package/dist/_members/primitives/workspace.js.map +0 -1
@@ -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
- }