@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,94 +0,0 @@
1
- import { produce } from 'immer';
2
- import { Composition } from '../validators';
3
- import { createCompositionOps } from './compositionOps';
4
- export function emptyComposition() {
5
- return { v: 1, format: { aspectRatio: '16:9' }, tracks: [] };
6
- }
7
- /**
8
- * Initial composition seeded with the source A-roll clip on a video track.
9
- *
10
- * Compose-from-suggestion hydrates a *fresh* project → an empty composition (no
11
- * clips). But the agent's `set_crop_intents` / `enable_captions_behind_speaker`
12
- * operate on the store's video clip — with no clip they're rejected ("No video
13
- * track") and the crop/captions-behind silently never land. The source clip is
14
- * a GIVEN (the suggestion window), so it belongs in the initial state, not as an
15
- * agent edit. Seed it here (matches the canonical serializer's `clip-0`:
16
- * id `clip-0`, startTime 0, duration = window length, `media` source + trim).
17
- *
18
- * Built loosely then `safeParse`d (the serializer's pattern) so the raw id
19
- * string brands to the wire-shape Convex Id through the schema — no hand-written
20
- * type cast — and the seed is runtime-validated as a bonus.
21
- */
22
- export function compositionWithSourceClip(spec) {
23
- const parsed = Composition.safeParse({
24
- v: 1,
25
- format: spec.format,
26
- tracks: [
27
- {
28
- id: 'track-video',
29
- kind: 'video',
30
- name: 'Main video',
31
- contents: [
32
- {
33
- id: 'clip-0',
34
- startTime: 0,
35
- duration: Math.max(0, spec.endTime - spec.startTime),
36
- source: {
37
- kind: 'media',
38
- mediaId: spec.mediaId,
39
- trim: { start: spec.startTime, end: spec.endTime },
40
- },
41
- },
42
- ],
43
- },
44
- ],
45
- });
46
- if (!parsed.success) {
47
- throw new Error(`compositionWithSourceClip: produced an invalid composition — ${parsed.error.message}`);
48
- }
49
- return parsed.data;
50
- }
51
- export function emptyCompositionState() {
52
- return {
53
- composition: emptyComposition(),
54
- selection: [],
55
- selectedClipId: null,
56
- selectedOverlayId: null,
57
- };
58
- }
59
- /**
60
- * Headless wrapper used server-side (Director worker, tests). Accepts either
61
- * a full `CompositionOpsState` or a bare `Composition` (which is then wrapped
62
- * with default selection state).
63
- */
64
- export function createHeadlessStore(initial) {
65
- let state;
66
- if (!initial) {
67
- state = emptyCompositionState();
68
- }
69
- else if ('composition' in initial) {
70
- state = initial;
71
- }
72
- else {
73
- state = {
74
- composition: initial,
75
- selection: [],
76
- selectedClipId: null,
77
- selectedOverlayId: null,
78
- };
79
- }
80
- const get = () => state;
81
- const set = (fnOrPartial) => {
82
- if (typeof fnOrPartial === 'function') {
83
- state = produce(state, fnOrPartial);
84
- }
85
- else {
86
- state = { ...state, ...fnOrPartial };
87
- }
88
- };
89
- return {
90
- ...createCompositionOps(get, set),
91
- getState: get,
92
- batch: (fn) => fn(),
93
- };
94
- }
@@ -1,4 +0,0 @@
1
- export { createCompositionOps, findOrCreateTrackByKind, findClipById, findTrackContainingClipId, findMarkerById, } from './compositionOps';
2
- export { createHeadlessStore, emptyComposition, compositionWithSourceClip, emptyCompositionState, } from './headlessStore';
3
- export { selectAllTracks, selectTracksByKind, selectAllClips, selectMediaClipAt, selectAllOverlays, selectAllAudioClips, selectClipById, selectMarkers, selectSceneMarkers, describeFrameAt, } from './selectors';
4
- export { mergeTimelineTranscripts, formatWordTimings, } from './transcript';
@@ -1,118 +0,0 @@
1
- /**
2
- * Selectors for the v2 wire-shape Composition. Mirrors the desktop store's
3
- * selectors so headless callers (agent, Director worker, tests) get the same
4
- * flattened views without re-implementing track-walking everywhere.
5
- */
6
- /** All tracks in declared order. The Timeline UI projects these 1:1 to `TimelineRow`s. */
7
- export function selectAllTracks(composition) {
8
- return composition.tracks;
9
- }
10
- /** Tracks of a given kind, declared order preserved. */
11
- export function selectTracksByKind(composition, kind) {
12
- return composition.tracks.filter((t) => t.kind === kind);
13
- }
14
- /** Flatten all video-track clips into a single array, in track + content order. */
15
- export function selectAllClips(composition) {
16
- return composition.tracks
17
- .filter((t) => t.kind === 'video')
18
- .flatMap((t) => t.contents.filter((c) => 'source' in c));
19
- }
20
- /**
21
- * THE MEDIA CLIP ON SCREEN AT `seconds` — the clip whose bytes a still drawn at
22
- * that instant comes from, or `null` when nothing media-backed covers it (a
23
- * gap, a card-only stretch, past the end).
24
- *
25
- * ONE RULE, TWO READERS, and that is why it lives in the kernel rather than in
26
- * either of them. The desktop's frame capture resolves the video file to
27
- * extract from this clip; the verb plane routes that capture by the SAME clip's
28
- * media residency BEFORE calling it, so that a still is never asked for from
29
- * bytes the machine cannot open. Two spellings of "which clip is on screen"
30
- * would let the router clear a frame the renderer then draws from something
31
- * else.
32
- *
33
- * VIDEO TRACKS, in track + content order, and a non-media clip is SKIPPED
34
- * rather than ending the search: a card sitting over a video does not replace
35
- * the pixels underneath it.
36
- *
37
- * Half-open `[startTime, startTime + duration)` — a clip's last instant belongs
38
- * to whatever follows it, which is the boundary the renderer draws.
39
- */
40
- export function selectMediaClipAt(composition, seconds) {
41
- for (const clip of selectAllClips(composition)) {
42
- if (seconds < clip.startTime)
43
- continue;
44
- if (seconds >= clip.startTime + clip.duration)
45
- continue;
46
- if (clip.source.kind !== 'media')
47
- continue;
48
- return clip;
49
- }
50
- return null;
51
- }
52
- /** Flatten all overlay-track clips. */
53
- export function selectAllOverlays(composition) {
54
- return composition.tracks
55
- .filter((t) => t.kind === 'overlay')
56
- .flatMap((t) => t.contents.filter((c) => 'source' in c));
57
- }
58
- /**
59
- * THE LAYER CENSUS AT `seconds` — what a still drawn here contains, stated in
60
- * words rather than left for the reader to infer from pixels.
61
- *
62
- * WHY THIS EXISTS. A preview is an agent's only evidence about a composition,
63
- * and pixels alone cannot distinguish "my edit did not land" from "there is no
64
- * footage under this timestamp". On 2026-08-14 a desktop run applied ops and
65
- * previewed ten times against an EMPTY library: every capture succeeded, every
66
- * still came back 200 OK, and the only record that the frames had no video in
67
- * them was a `console.warn` in the app's own log — invisible to the agent that
68
- * needed it. It kept editing something that was never going to be a video, then
69
- * gave up. The frames were not broken; the instrument simply never said what it
70
- * had drawn.
71
- *
72
- * This is the same correction `geometry` made for SIZE (2026-08-13, after an
73
- * agent measured text in a quarter-scale still and rewrote a video to avoid
74
- * cards): when a preview omits a fact about itself, an agent will infer a wrong
75
- * one. State it.
76
- *
77
- * IN THE KERNEL, because both preview lanes must answer this identically. The
78
- * desktop plane draws its own stills and the cloud route renders them through
79
- * Modal, but an agent moving between the two reads ONE shape — the property the
80
- * plane exists to hold. A second spelling of "what is on screen" is exactly the
81
- * drift that makes local and cloud disagree.
82
- *
83
- * `overlays` is a COUNT, not a judgement: a frame with no video and one overlay
84
- * is a legitimate card — not an error, and deliberately not refused. The agent
85
- * is told what is there and decides for itself.
86
- */
87
- export function describeFrameAt(composition, seconds) {
88
- const clip = selectMediaClipAt(composition, seconds);
89
- // Half-open `[startTime, startTime + duration)`, the same boundary
90
- // `selectMediaClipAt` uses — so the two halves of one census cannot disagree
91
- // about which side of a cut an instant falls on.
92
- const overlays = selectAllOverlays(composition).filter((c) => seconds >= c.startTime && seconds < c.startTime + c.duration).length;
93
- return {
94
- video: clip !== null && clip.source.kind === 'media' ? clip.source.mediaId : null,
95
- overlays,
96
- };
97
- }
98
- /** Flatten all audio-track clips. */
99
- export function selectAllAudioClips(composition) {
100
- return composition.tracks
101
- .filter((t) => t.kind === 'audio')
102
- .flatMap((t) => t.contents.filter((c) => 'source' in c));
103
- }
104
- export function selectClipById(composition, id) {
105
- for (const t of composition.tracks) {
106
- for (const c of t.contents) {
107
- if ('source' in c && c.id === id)
108
- return c;
109
- }
110
- }
111
- return undefined;
112
- }
113
- export function selectMarkers(composition) {
114
- return composition.markers ?? [];
115
- }
116
- export function selectSceneMarkers(composition) {
117
- return (composition.markers ?? []).filter((m) => m.kind === 'scene');
118
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,77 +0,0 @@
1
- /**
2
- * Pure functions for merging per-clip transcripts into timeline-ordered words.
3
- * Lives in @cueframe/core because it operates on composition data (clips +
4
- * transcripts) with no dependency on stores, DOM, or runtime environment.
5
- *
6
- * v2 wire-shape: walks `TimelineClip`s straight off composition tracks. Each
7
- * clip references its source via `source: { kind: 'media', mediaId, trim?,
8
- * playbackRate?, muted? }`; cuts are baked into clip startTime/duration so
9
- * there is no deletion-range filtering step.
10
- *
11
- * Output is the v1-shape `TimelineWord` from `@cueframe/core/types` so the
12
- * agent context layer (which still reads `word.poolItemId`) keeps working.
13
- * The "poolItemId" field carries the wire-shape `mediaId` value — same
14
- * semantic, retained name for back-compat.
15
- */
16
- /**
17
- * Merges transcripts from multiple clips into a single timeline-ordered word list.
18
- * Each clip's transcript segments are filtered to its source range and re-mapped
19
- * to timeline positions.
20
- *
21
- * Deduplication: segments with the same (mediaId, sourceStartTime) pair are emitted
22
- * only once, preventing duplicates when clips have overlapping source ranges.
23
- */
24
- export function mergeTimelineTranscripts(clips, transcripts) {
25
- const words = [];
26
- const seen = new Set();
27
- for (const clip of clips) {
28
- if (clip.source.kind !== 'media')
29
- continue;
30
- if (clip.source.muted)
31
- continue;
32
- const mediaId = clip.source.mediaId;
33
- const transcript = transcripts[mediaId];
34
- if (!transcript?.segments)
35
- continue;
36
- const trimStart = clip.source.trim?.start ?? 0;
37
- const trimEnd = clip.source.trim?.end ?? clip.duration;
38
- const rate = clip.source.playbackRate ?? 1;
39
- // Filter segments that START within clip's source range.
40
- // Inclusive start (>=) is intentional: Whisper words often have zero-gap
41
- // boundaries so a micro-fade shift to trim.start would exclude the neighbor word.
42
- const clippedSegments = transcript.segments.filter((seg) => seg.startTime >= trimStart && seg.startTime < trimEnd);
43
- for (const segment of clippedSegments) {
44
- const key = `${mediaId}:${segment.startTime}`;
45
- if (seen.has(key))
46
- continue;
47
- seen.add(key);
48
- const clampedEnd = Math.min(segment.endTime, trimEnd);
49
- words.push({
50
- text: segment.text,
51
- timelineStart: clip.startTime + (segment.startTime - trimStart) / rate,
52
- timelineEnd: clip.startTime + (clampedEnd - trimStart) / rate,
53
- clipId: clip.id,
54
- // The v1 TimelineWord field is named `poolItemId`; v2 calls it
55
- // `mediaId`. Same semantic — retain v1 name on the wire so the
56
- // agent context (which reads `word.poolItemId`) keeps working.
57
- poolItemId: mediaId,
58
- sourceStart: segment.startTime,
59
- sourceEnd: clampedEnd,
60
- speakerId: segment.speakerId,
61
- });
62
- }
63
- }
64
- return words.sort((a, b) => a.timelineStart - b.timelineStart);
65
- }
66
- /**
67
- * Format word timings for a given time range into a human-readable string.
68
- * Used by the Director's TranscriptProvider.getWordTimings() capability.
69
- */
70
- export function formatWordTimings(words, startTime, endTime) {
71
- const rangeWords = words.filter((w) => w.timelineEnd > startTime && w.timelineStart < endTime);
72
- if (rangeWords.length === 0) {
73
- return `No words found in range ${startTime.toFixed(1)}s–${endTime.toFixed(1)}s`;
74
- }
75
- const lines = rangeWords.map((w) => `${w.text}=${w.timelineStart.toFixed(2)}-${w.timelineEnd.toFixed(2)}`);
76
- return `Word timings (${startTime.toFixed(1)}s–${endTime.toFixed(1)}s, ${rangeWords.length} words):\n${lines.join(' | ')}`;
77
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * Composition types — v2 wire-shape.
3
- *
4
- * The OSS shared composition module mirrors the desktop store's v2
5
- * shape (cueframe/src/store/compositionStore/types.ts) minus desktop-only
6
- * envelope concerns (corrections, transcriptDoc, isLoaded).
7
- *
8
- * Used by:
9
- * - @cueframe/authoring — handlers + capability shape
10
- * - Director worker (services/temporal/director) — server-side composition
11
- *
12
- * Canonical state lives on `composition: Composition` (from
13
- * `../validators`). All ops walk `composition.tracks`
14
- * and `composition.markers`.
15
- */
16
- export {};
@@ -1,150 +0,0 @@
1
- import { SFX_PACK_ENTRIES } from '../audio/pack.generated';
2
- export const CATALOG_CATEGORY_VALUES = new Set([
3
- 'text', 'effects', 'transitions', 'layouts', 'backgrounds', 'ui-blocks', 'scenes',
4
- ]);
5
- export const CATALOG_KIND_VALUES = new Set(['component', 'transition', 'scene']);
6
- export const CATALOG_TIER_VALUES = new Set(['recommended', 'standard', 'niche']);
7
- export const CATALOG_USE_CASE_VALUES = new Set([
8
- 'intro', 'outro', 'full-scene', 'title-over-footage', 'transition',
9
- 'background', 'grade', 'emphasis', 'explainer', 'social-cut',
10
- ]);
11
- const TIER_RANK = { recommended: 0, standard: 1, niche: 2 };
12
- /** A bad filter enum value — both lanes map this to their 400 invalid_query. */
13
- export class CatalogFilterError extends Error {
14
- field;
15
- value;
16
- allowed;
17
- constructor(field, value, allowed) {
18
- super(`Unknown ${field} '${value}'. Allowed: ${allowed.join(', ')}.`);
19
- this.field = field;
20
- this.value = value;
21
- this.allowed = allowed;
22
- this.name = 'CatalogFilterError';
23
- }
24
- }
25
- /** A cursor that decodes to no catalog entry — both lanes map to invalid_cursor. */
26
- export class CatalogCursorError extends Error {
27
- constructor(message = 'The supplied cursor is invalid or expired.') {
28
- super(message);
29
- this.name = 'CatalogCursorError';
30
- }
31
- }
32
- /**
33
- * Validate raw query values into CatalogFilters. `q` and `intent` are aliases
34
- * (free-text vs recommend-by-intent framing); both fold into the same match.
35
- */
36
- export function validateCatalogFilters(raw) {
37
- const norm = (v) => (v === undefined || v === '' ? undefined : v);
38
- const f = {
39
- category: norm(raw.category),
40
- kind: norm(raw.kind),
41
- tier: norm(raw.tier),
42
- useCase: norm(raw.useCase),
43
- mood: norm(raw.mood),
44
- q: norm(raw.q) ?? norm(raw.intent),
45
- };
46
- if (f.category && !CATALOG_CATEGORY_VALUES.has(f.category))
47
- throw new CatalogFilterError('category', f.category, [...CATALOG_CATEGORY_VALUES]);
48
- if (f.kind && !CATALOG_KIND_VALUES.has(f.kind))
49
- throw new CatalogFilterError('kind', f.kind, [...CATALOG_KIND_VALUES]);
50
- if (f.tier && !CATALOG_TIER_VALUES.has(f.tier))
51
- throw new CatalogFilterError('tier', f.tier, [...CATALOG_TIER_VALUES]);
52
- if (f.useCase && !CATALOG_USE_CASE_VALUES.has(f.useCase))
53
- throw new CatalogFilterError('useCase', f.useCase, [...CATALOG_USE_CASE_VALUES]);
54
- return f;
55
- }
56
- /** True if ANY facet/free-text filter is set (drives recommend-first ordering). */
57
- export function hasAnyCatalogFilter(f) {
58
- return Boolean(f.category || f.kind || f.tier || f.useCase || f.mood || f.q);
59
- }
60
- /** Apply facet + free-text filters to a catalog. */
61
- export function filterCatalog(catalog, f) {
62
- const q = f.q?.toLowerCase();
63
- return catalog.filter((e) => {
64
- if (f.category && e.category !== f.category)
65
- return false;
66
- if (f.kind && e.kind !== f.kind)
67
- return false;
68
- if (f.tier && e.tier !== f.tier)
69
- return false;
70
- if (f.useCase && !(e.useCase ?? []).includes(f.useCase))
71
- return false;
72
- if (f.mood && !(e.mood ?? []).includes(f.mood))
73
- return false;
74
- if (q) {
75
- const hay = [
76
- e.id, e.name, e.description, e.intent ?? '', e.useWhen ?? '',
77
- ...(e.tags ?? []), ...(e.mood ?? []),
78
- ].join(' ').toLowerCase();
79
- if (!hay.includes(q))
80
- return false;
81
- }
82
- return true;
83
- });
84
- }
85
- const nodeBuffer = globalThis.Buffer;
86
- function b64urlEncode(raw) {
87
- const b64 = typeof btoa === 'function' ? btoa(raw) : nodeBuffer.from(raw, 'utf-8').toString('base64');
88
- return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
89
- }
90
- function b64urlDecode(opaque) {
91
- const b64 = opaque.replace(/-/g, '+').replace(/_/g, '/');
92
- const padded = b64 + '='.repeat((4 - (b64.length % 4)) % 4);
93
- return typeof atob === 'function'
94
- ? atob(padded)
95
- : nodeBuffer.from(padded, 'base64').toString('utf-8');
96
- }
97
- export const encodeCatalogCursor = b64urlEncode;
98
- export function decodeCatalogCursor(opaque) {
99
- try {
100
- return b64urlDecode(opaque);
101
- }
102
- catch {
103
- throw new CatalogCursorError();
104
- }
105
- }
106
- /**
107
- * The whole read: filter → recommend-order (only when filtered) → page.
108
- * `limit` undefined returns the WHOLE filtered catalog in one page (an agent
109
- * must never silently see a partial slice); `after` is the OPAQUE cursor from
110
- * a previous page. Throws CatalogCursorError on an unknown/undecodable cursor.
111
- */
112
- export function queryCatalog(catalog, filters, opts = {}) {
113
- let sorted = filterCatalog(catalog, filters);
114
- if (hasAnyCatalogFilter(filters)) {
115
- sorted = [...sorted].sort((a, b) => (TIER_RANK[a.tier ?? 'standard'] ?? 1) - (TIER_RANK[b.tier ?? 'standard'] ?? 1));
116
- }
117
- const limit = opts.limit ?? Number.POSITIVE_INFINITY;
118
- let start = 0;
119
- if (opts.after !== undefined) {
120
- const afterId = decodeCatalogCursor(opts.after);
121
- const idx = sorted.findIndex((e) => e.id === afterId);
122
- if (idx < 0)
123
- throw new CatalogCursorError('Cursor not found.');
124
- start = idx + 1;
125
- }
126
- const page = sorted.slice(start, start + limit);
127
- const hasMore = start + limit < sorted.length;
128
- return {
129
- data: page,
130
- pagination: {
131
- hasMore,
132
- nextCursor: hasMore && page.length > 0 ? encodeCatalogCursor(page[page.length - 1].id) : null,
133
- prevCursor: null,
134
- },
135
- };
136
- }
137
- /** The curated CC0 SFX pack projected to the agent-legible browse shape
138
- * (drops content-audit internals — sha256, structured source). First-page
139
- * attachment on both lanes. */
140
- export function serializeSfxCatalog() {
141
- return SFX_PACK_ENTRIES.map((e) => ({
142
- soundId: e.soundId,
143
- family: e.family,
144
- envelopeClass: e.envelopeClass,
145
- intensity: e.intensity,
146
- durationSec: e.durationSec,
147
- description: e.description,
148
- attribution: e.attribution,
149
- }));
150
- }
@@ -1,32 +0,0 @@
1
- // @cueframe/primitive-registry — the disabled-primitive denylist.
2
- //
3
- // The ONE switch that takes a built-in primitive out of circulation without
4
- // deleting its config or regenerating the catalog. Dependency-free + V8-safe
5
- // (imported by both this package's projections AND the Convex write boundary).
6
- //
7
- // WHY A DENYLIST, not a per-primitive `disabled` flag: a primitive is baked into
8
- // SEVERAL generated artifacts — the catalog meta (generated/meta.ts),
9
- // version-map.json (the membership SSOT), params-required.json, the component
10
- // source (primitiveSource.generated.ts) — and, for name-coupled primitives like
11
- // heroText, hard-referenced by id in the graphics-plan compiler and the agent
12
- // prompts. A flag would have to be threaded through every one of those and
13
- // regenerated. One denylist, checked at the few points a primitive is OFFERED
14
- // (discovery projections), ADMITTED (the membership guard at save), or
15
- // AUTO-EMITTED (the compiler), is the clean lever: add an id here and it
16
- // vanishes from discovery and is rejected on save, everywhere, reversibly — no
17
- // regen, no config surgery.
18
- //
19
- // The RENDERER is intentionally UNTOUCHED: an already-saved composition that
20
- // references a now-disabled primitive still renders (the execution catalog keeps
21
- // the component). This blocks NEW authoring; it does not retro-break saved work.
22
- export const DISABLED_PRIMITIVE_IDS = new Set([
23
- // (empty) — heroText was denylisted 2026-07-08 because behind-subject
24
- // matte compositing desynced lip movement. Root cause was the matte bake
25
- // re-timing the co-view at average fps (VFR sources drifted seconds);
26
- // fixed by the CFR timing invariant at ingest (plan: brain
27
- // 2026-07-28-cfr-timing-invariant) — re-enabled 2026-07-28.
28
- ]);
29
- /** True when a primitive id is on the disabled denylist (not offered / not admitted). */
30
- export function isPrimitiveDisabled(id) {
31
- return DISABLED_PRIMITIVE_IDS.has(id);
32
- }