@cueframe/kernel 0.2.58 → 0.2.59-rc.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 (339) hide show
  1. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +3 -4
  2. package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +3 -4
  3. package/dist/_members/account-model/validators/index.d.ts +0 -1
  4. package/dist/_members/animate/index.d.ts +0 -2
  5. package/dist/_members/authoring/index.d.ts +1 -1
  6. package/dist/_members/authoring/prompts/index.d.ts +0 -1
  7. package/dist/_members/authoring/resources.d.ts +2 -11
  8. package/dist/_members/cloud-import/CloudImportService.d.ts +0 -1
  9. package/dist/_members/cloud-import/index.d.ts +0 -2
  10. package/dist/_members/component-runtime/allowedImports.d.ts +6 -0
  11. package/dist/_members/component-runtime/allowedImports.d.ts.map +1 -1
  12. package/dist/_members/component-runtime/browserIdentity.d.ts +2 -12
  13. package/dist/_members/component-runtime/browserIdentity.d.ts.map +1 -1
  14. package/dist/_members/component-runtime/canonicalIdentity.d.ts +8 -1
  15. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -1
  16. package/dist/_members/component-runtime/contracts.d.ts +2 -1
  17. package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
  18. package/dist/_members/component-runtime/identity.d.ts +2 -3
  19. package/dist/_members/component-runtime/identity.d.ts.map +1 -1
  20. package/dist/_members/component-runtime/importPolicy.d.ts +5 -0
  21. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -1
  22. package/dist/_members/component-runtime/template/checks.d.ts +71 -0
  23. package/dist/_members/component-runtime/template/checks.d.ts.map +1 -0
  24. package/dist/_members/component-runtime/template/extract.d.ts +4 -0
  25. package/dist/_members/component-runtime/template/extract.d.ts.map +1 -1
  26. package/dist/_members/component-runtime/template/index.d.ts +1 -0
  27. package/dist/_members/component-runtime/template/index.d.ts.map +1 -1
  28. package/dist/_members/component-runtime/template/schema.d.ts +14 -13
  29. package/dist/_members/component-runtime/template/schema.d.ts.map +1 -1
  30. package/dist/_members/component-runtime/template/testing/templateApplyContract.d.ts +3 -4
  31. package/dist/_members/component-runtime/template/testing/templateApplyContract.d.ts.map +1 -1
  32. package/dist/_members/component-runtime/testing/sourcePolicyCases.d.ts +15 -0
  33. package/dist/_members/component-runtime/testing/sourcePolicyCases.d.ts.map +1 -0
  34. package/dist/_members/component-runtime/webglProbe.d.ts.map +1 -1
  35. package/dist/_members/compose/index.d.ts +1 -1
  36. package/dist/_members/compose/primitiveRegistry.d.ts +0 -2
  37. package/dist/_members/composition/audio/audioMix.d.ts +0 -1
  38. package/dist/_members/composition/audio/mixStaging.d.ts +0 -5
  39. package/dist/_members/composition/fixtures/index.d.ts +0 -1
  40. package/dist/_members/composition/graphics-plan/index.d.ts +0 -2
  41. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  42. package/dist/_members/composition/invariants/etag.d.ts +0 -1
  43. package/dist/_members/composition/invariants/index.d.ts +0 -1
  44. package/dist/_members/composition/ops/compositionOps.d.ts +0 -1
  45. package/dist/_members/composition/ops/compositionOps.shared.d.ts +6 -0
  46. package/dist/_members/composition/ops/index.d.ts +2 -1
  47. package/dist/_members/composition/primitive-catalog/index.d.ts +0 -2
  48. package/dist/_members/composition/projection/behind-readiness.d.ts +0 -6
  49. package/dist/_members/composition/timeline/link.d.ts +0 -4
  50. package/dist/_members/composition/timeline/plan.d.ts +0 -1
  51. package/dist/_members/composition/validators/brandKit.d.ts +4 -4
  52. package/dist/_members/composition/validators/brandKitBody.d.ts +8 -8
  53. package/dist/_members/composition/validators/cardHtml.d.ts +11 -0
  54. package/dist/_members/composition/validators/composition.d.ts +2 -5
  55. package/dist/_members/composition/validators/css-tree-subpaths.d.ts +16 -0
  56. package/dist/_members/composition/validators/index.d.ts +0 -3
  57. package/dist/_members/composition/validators/session.d.ts +3 -3
  58. package/dist/_members/composition/validators/webhook.d.ts +4 -4
  59. package/dist/_members/composition-ops/alphaLayers.d.ts +0 -5
  60. package/dist/_members/composition-ops/index.d.ts +2 -2
  61. package/dist/_members/composition-ops/opRecorder.d.ts +23 -3
  62. package/dist/_members/core/render/exportSettings.d.ts +4 -2
  63. package/dist/_members/core/render/index.d.ts +1 -1
  64. package/dist/_members/core/render/vcam/requiredRegion.d.ts +0 -1
  65. package/dist/_members/director/ai-sdk/index.d.ts +0 -1
  66. package/dist/_members/director/ai-sdk/messages.d.ts +0 -1
  67. package/dist/_members/director/domain/chat.d.ts +0 -78
  68. package/dist/_members/director/domain/index.d.ts +0 -1
  69. package/dist/_members/errors/registry.d.ts +6 -0
  70. package/dist/_members/foundation/canonical/index.d.ts +14 -0
  71. package/dist/_members/foundation/index.d.ts +1 -1
  72. package/dist/_members/foundation/primitives/index.d.ts +0 -2
  73. package/dist/_members/foundation/testing/index.d.ts +1 -0
  74. package/dist/_members/foundation/testing/knownRed.d.ts +13 -0
  75. package/dist/_members/mcp/adapter.d.ts +21 -0
  76. package/dist/_members/mcp/compositionOps.d.ts +10 -0
  77. package/dist/_members/mcp/server.d.ts +0 -5
  78. package/dist/_members/mcp/wait.d.ts +3 -1
  79. package/dist/_members/media-model/generation.d.ts +0 -25
  80. package/dist/_members/nle-export/xml-utils.d.ts +0 -8
  81. package/dist/_members/plane/conformance.d.ts +20 -0
  82. package/dist/_members/primitives/index.d.ts +1 -11
  83. package/dist/_members/primitives/lib/index.d.ts +1 -1
  84. package/dist/_members/primitives/lib/tokens.d.ts +0 -16
  85. package/dist/_members/render-harness/cardAssetAdmission.d.ts +1 -0
  86. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  87. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  88. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  89. package/dist/_members/render-harness/mediaServer.d.ts +6 -1
  90. package/dist/_members/render-harness/mediaServer.d.ts.map +1 -1
  91. package/dist/account-model/testing.js +15 -5
  92. package/dist/account-model/validators.js +5 -7
  93. package/dist/account-model.js +5 -7
  94. package/dist/animate/preparation-facts.js +1 -1
  95. package/dist/animate.js +2 -6
  96. package/dist/authoring/composer.js +1 -1
  97. package/dist/authoring/context.js +8 -7
  98. package/dist/authoring/models/defaults.d.ts +1 -0
  99. package/dist/authoring/models/defaults.js +7 -0
  100. package/dist/authoring/models.js +5 -3
  101. package/dist/authoring/motion.d.ts +1 -0
  102. package/dist/authoring/motion.js +25 -0
  103. package/dist/authoring/prompts.js +4 -14
  104. package/dist/authoring/providers.js +1 -1
  105. package/dist/authoring/resource-routing.js +2 -2
  106. package/dist/authoring/resources.js +4 -22
  107. package/dist/authoring/scene.js +3 -2
  108. package/dist/authoring.js +662 -219
  109. package/dist/brand-derivation/constants.js +1 -1
  110. package/dist/brand-derivation.js +1 -1
  111. package/dist/{chunk-LBJ5LI5V.js → chunk-2K2GBFLU.js} +17 -8
  112. package/dist/{chunk-RAXHCRVV.js → chunk-2PAP5LO5.js} +1 -1
  113. package/dist/{chunk-MNO6AO2J.js → chunk-3HLDIIWA.js} +1 -1
  114. package/dist/{chunk-PTVTWQ4T.js → chunk-3JEUNKDK.js} +2 -2
  115. package/dist/chunk-3VWJ3H4X.js +68 -0
  116. package/dist/{chunk-S5H6GH6M.js → chunk-3Z7CN54H.js} +1 -1
  117. package/dist/{chunk-FVDFPJHT.js → chunk-46WBCUPE.js} +1 -1
  118. package/dist/chunk-4VBLQIM5.js +30 -0
  119. package/dist/{chunk-N2OZDD44.js → chunk-6HA55CRU.js} +4 -5
  120. package/dist/{chunk-WL2MLKWU.js → chunk-6HPEMDQW.js} +1 -1
  121. package/dist/{chunk-PWWZTY3G.js → chunk-6KZCXAYL.js} +5 -2
  122. package/dist/{chunk-IEXAKOEX.js → chunk-6QGARSV6.js} +2 -15
  123. package/dist/{chunk-3YVIAWET.js → chunk-7II5OM7R.js} +13 -1
  124. package/dist/{chunk-UFD4EZHM.js → chunk-AFUITAH6.js} +4 -5
  125. package/dist/{chunk-HGCYZMII.js → chunk-AK6QPX7A.js} +9 -9
  126. package/dist/{chunk-EC6VFQE6.js → chunk-BZVOCVQV.js} +1 -0
  127. package/dist/{chunk-RBWS5XHE.js → chunk-CAF7BRNE.js} +2 -2
  128. package/dist/{chunk-TR53N6HB.js → chunk-CEO47DIE.js} +6 -3
  129. package/dist/chunk-CIOUDOGN.js +12 -0
  130. package/dist/{chunk-GQ6XGAFB.js → chunk-DCKADD5B.js} +1 -1
  131. package/dist/{chunk-4NIJWK45.js → chunk-EISHFHU5.js} +0 -8
  132. package/dist/chunk-EQH37KNZ.js +224 -0
  133. package/dist/{chunk-EXY4JJPH.js → chunk-F6PLDBAK.js} +2 -11
  134. package/dist/{chunk-DAARYRNT.js → chunk-FKSXKS35.js} +6 -6
  135. package/dist/{chunk-KBDUEU4W.js → chunk-FZB7UX44.js} +1 -1
  136. package/dist/chunk-H2ZZXISB.js +24 -0
  137. package/dist/{chunk-WSMCZRJ2.js → chunk-I2HNC4PQ.js} +1 -1
  138. package/dist/{chunk-NVXSKKRN.js → chunk-IUJABAG2.js} +14 -10
  139. package/dist/{chunk-7NIOFHMH.js → chunk-IVFMOHAC.js} +1 -9
  140. package/dist/{chunk-UKDBU7HM.js → chunk-JNBNDHEF.js} +3 -3
  141. package/dist/{chunk-JWMWVP64.js → chunk-KC4LNZL5.js} +4 -9
  142. package/dist/{chunk-GCQ7Z7S7.js → chunk-KKATUGRU.js} +3 -9
  143. package/dist/{chunk-Q5P5UFOP.js → chunk-KLQ53NX3.js} +13 -1
  144. package/dist/{chunk-UMXES6ED.js → chunk-LVMWPFV4.js} +1 -1
  145. package/dist/{chunk-TKFLSGAS.js → chunk-MMJYII7Y.js} +5 -5
  146. package/dist/{chunk-REST55RC.js → chunk-NECN7TT4.js} +5 -4
  147. package/dist/{chunk-4ZE564YF.js → chunk-NM7NWXGF.js} +0 -146
  148. package/dist/{chunk-5T655LYZ.js → chunk-NY6EI5YW.js} +4 -4
  149. package/dist/{chunk-UXRSEMJJ.js → chunk-ONSGT6UJ.js} +66 -35
  150. package/dist/{chunk-VZ7TYX6Z.js → chunk-P3EFZDM5.js} +0 -17
  151. package/dist/{chunk-BEFSJMFF.js → chunk-P6RVYHLT.js} +9 -9
  152. package/dist/{chunk-TBHSOEYK.js → chunk-PLWDYWK6.js} +4 -34
  153. package/dist/{chunk-KYRDKK2D.js → chunk-Q6CJ6HCU.js} +1 -6
  154. package/dist/{chunk-FWSJLHSV.js → chunk-R642352J.js} +1 -1
  155. package/dist/{chunk-XELS2BGA.js → chunk-R6HTIP3N.js} +1 -3
  156. package/dist/{chunk-RL5SO653.js → chunk-RQRPSSRT.js} +1 -1
  157. package/dist/chunk-RR7UBEBV.js +172 -0
  158. package/dist/{chunk-FHMTAZD4.js → chunk-RWJHZCOR.js} +1 -71
  159. package/dist/{chunk-73DQTUWY.js → chunk-TIAJMEQ4.js} +2 -22
  160. package/dist/{chunk-2ESYSVXG.js → chunk-U67V476Y.js} +2 -15
  161. package/dist/{chunk-3VLDQE26.js → chunk-U7KSOA2L.js} +4 -21
  162. package/dist/{chunk-VLJOIUHL.js → chunk-UGEUB763.js} +6 -6
  163. package/dist/{chunk-K66NLMGX.js → chunk-UGWJC4GA.js} +62 -18
  164. package/dist/chunk-VBYINB74.js +136 -0
  165. package/dist/{chunk-W2245F6G.js → chunk-WTQRLFR2.js} +1 -1
  166. package/dist/{chunk-JN3GF36B.js → chunk-X2RTLS6K.js} +2 -23
  167. package/dist/chunk-XHMKPTHV.js +20 -0
  168. package/dist/{chunk-2L33CKIY.js → chunk-XOT2VWCO.js} +18 -31
  169. package/dist/{chunk-AK5QBHOB.js → chunk-XQGQ5EFS.js} +10 -1
  170. package/dist/chunk-XR76OZKC.js +21 -0
  171. package/dist/chunk-ZCEYEIRB.js +179 -0
  172. package/dist/{chunk-IMIUHG2E.js → chunk-ZPJQ3TQL.js} +1 -3
  173. package/dist/cloud-import.js +1 -16
  174. package/dist/component-runtime/browserOptions.js +4 -3
  175. package/dist/component-runtime/contracts.js +2 -2
  176. package/dist/component-runtime/identity/browser.js +2 -17
  177. package/dist/component-runtime/identity.js +5 -7
  178. package/dist/component-runtime/importPolicy.js +3 -3
  179. package/dist/component-runtime/mediaResolution.js +1 -1
  180. package/dist/component-runtime/render.js +8 -7
  181. package/dist/component-runtime/sourceAdmission.js +3 -3
  182. package/dist/component-runtime/template/testing.js +15 -12
  183. package/dist/component-runtime/template.js +165 -13
  184. package/dist/component-runtime.js +27 -28
  185. package/dist/compose.js +30 -47
  186. package/dist/composition/audio.js +4 -8
  187. package/dist/composition/brand-kit.js +1 -1
  188. package/dist/composition/brief.js +1 -1
  189. package/dist/composition/card-html.d.ts +1 -0
  190. package/dist/composition/card-html.js +15 -0
  191. package/dist/composition/depth.js +1 -1
  192. package/dist/composition/floors.js +2 -2
  193. package/dist/composition/fonts.js +1 -1
  194. package/dist/composition/graphics-plan.js +4 -44
  195. package/dist/composition/invariants.js +5 -12
  196. package/dist/composition/ops.js +7 -6
  197. package/dist/composition/primitive-catalog.js +2 -6
  198. package/dist/composition/projection.js +3 -5
  199. package/dist/composition/reframe/coverage.js +1 -1
  200. package/dist/composition/reframe/kenBurns.js +1 -1
  201. package/dist/composition/reframe/shotScale.js +1 -1
  202. package/dist/composition/reframe/trajectory.js +1 -1
  203. package/dist/composition/reframe.js +1 -1
  204. package/dist/composition/scene/budget-policy.js +1 -1
  205. package/dist/composition/scene.js +1 -1
  206. package/dist/composition/timeline.js +4 -8
  207. package/dist/composition/validators/brand-kit-body.js +5 -4
  208. package/dist/composition/validators/graphic-kinds.js +1 -1
  209. package/dist/composition/validators.js +8 -65
  210. package/dist/composition-ops.js +17 -16
  211. package/dist/composition.js +13 -79
  212. package/dist/context-7SWSVJ6Z.js +17 -0
  213. package/dist/core/render.js +13 -9
  214. package/dist/core/select.js +3 -3
  215. package/dist/core.js +9 -9
  216. package/dist/director/ai-sdk.js +7 -11
  217. package/dist/director/domain.js +9 -17
  218. package/dist/director.js +9 -21
  219. package/dist/{dist-LAJ2363K.js → dist-6FO67KVA.js} +1 -1
  220. package/dist/errors.js +2 -2
  221. package/dist/foundation/canonical.d.ts +1 -0
  222. package/dist/foundation/canonical.js +7 -0
  223. package/dist/foundation/primitives.js +4 -6
  224. package/dist/foundation/testing.d.ts +1 -0
  225. package/dist/foundation/testing.js +7 -0
  226. package/dist/foundation.js +7 -9
  227. package/dist/{magic-string.es-SDTMJBWP.js → magic-string.es-KVSW34UD.js} +1 -1
  228. package/dist/mcp/adapter.js +11 -19
  229. package/dist/mcp/composition-ops.d.ts +1 -0
  230. package/dist/mcp/composition-ops.js +11 -0
  231. package/dist/mcp/core.js +2 -2
  232. package/dist/mcp/curation.js +1 -1
  233. package/dist/mcp/executor.js +1 -1
  234. package/dist/mcp/scene-shot.js +3 -3
  235. package/dist/mcp/server.js +6 -7
  236. package/dist/mcp/wire-schema.js +13 -2
  237. package/dist/mcp.js +11 -10
  238. package/dist/media-model/generation.js +6 -8
  239. package/dist/media-model/media-kind.js +1 -1
  240. package/dist/media-model/testing.js +2 -2
  241. package/dist/media-model/transcriptSearch.js +1 -1
  242. package/dist/media-model.js +6 -8
  243. package/dist/nle-export/xml.js +1 -1
  244. package/dist/nle-export.js +2 -2
  245. package/dist/perception.js +1 -1
  246. package/dist/plane/conformance.js +8 -4
  247. package/dist/plane/contract.js +1 -1
  248. package/dist/plane.js +8 -4
  249. package/dist/primitives/backgrounds.js +3 -3
  250. package/dist/primitives/captions.js +2 -2
  251. package/dist/primitives/effects.js +5 -5
  252. package/dist/primitives/hero-text.js +4 -4
  253. package/dist/primitives/layouts.js +4 -4
  254. package/dist/primitives/lib/easings.js +1 -1
  255. package/dist/primitives/lib/frameScale.js +1 -1
  256. package/dist/primitives/lib/index.js +7 -13
  257. package/dist/primitives/lib/palette.js +2 -2
  258. package/dist/primitives/lib/preview.js +1 -1
  259. package/dist/primitives/lib/schema.js +1 -1
  260. package/dist/primitives/lib/seeded-random.js +1 -1
  261. package/dist/primitives/lib/text/contrast.js +3 -3
  262. package/dist/primitives/lib/text/fill.js +1 -1
  263. package/dist/primitives/lib/text/fitText.js +1 -1
  264. package/dist/primitives/lib/text/marker.js +1 -1
  265. package/dist/primitives/lib/text/motion.js +1 -1
  266. package/dist/primitives/lib/text/recolor.js +1 -1
  267. package/dist/primitives/lib/text/stage.js +1 -1
  268. package/dist/primitives/lib/text/typeface.js +1 -1
  269. package/dist/primitives/lib/tokens.js +4 -11
  270. package/dist/primitives/lib.js +7 -13
  271. package/dist/primitives/scenes.js +5 -5
  272. package/dist/primitives/subject-foreground.js +1 -1
  273. package/dist/primitives/text.js +4 -4
  274. package/dist/primitives/transitions.js +3 -3
  275. package/dist/primitives/ui-blocks.js +6 -6
  276. package/dist/primitives/workspace.js +1 -1
  277. package/dist/primitives.js +26 -40
  278. package/dist/render-harness/cardAssetAdmission.js +4 -4
  279. package/dist/render-harness/cardFonts.js +3 -3
  280. package/dist/render-harness/renderInputAssets.js +4 -4
  281. package/dist/render-harness.js +104 -86
  282. package/dist/{src-ZP6727AA.js → src-XI5MULKD.js} +17 -16
  283. package/package.json +38 -60
  284. package/dist/_members/account-model/validators/workingComposition.d.ts +0 -11
  285. package/dist/_members/animate/animations/index.d.ts +0 -9
  286. package/dist/_members/animate/easing/index.d.ts +0 -3
  287. package/dist/_members/animate/mobjects/index.d.ts +0 -4
  288. package/dist/_members/animate/scene/internal.d.ts +0 -29
  289. package/dist/_members/authoring/prompts/graphics.d.ts +0 -9
  290. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -2
  291. package/dist/_members/composition/autozoom/index.d.ts +0 -25
  292. package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +0 -34
  293. package/dist/_members/composition/invariants/time.d.ts +0 -14
  294. package/dist/_members/composition/types/index.d.ts +0 -8
  295. package/dist/_members/composition/validators/font.d.ts +0 -58
  296. package/dist/_members/composition/validators/registry.d.ts +0 -79
  297. package/dist/_members/composition/validators/render.d.ts +0 -2068
  298. package/dist/_members/director/ai-sdk/chunks.d.ts +0 -14
  299. package/dist/_members/director/domain/ports.d.ts +0 -32
  300. package/dist/_members/director/testing/contract.d.ts +0 -52
  301. package/dist/_members/director/testing/index.d.ts +0 -1
  302. package/dist/_members/foundation/codes/index.d.ts +0 -10
  303. package/dist/_members/nle-export/server/index.d.ts +0 -1
  304. package/dist/_members/nle-export/server/pack-zip.d.ts +0 -6
  305. package/dist/_members/render-harness/assetRefs.d.ts +0 -26
  306. package/dist/_members/render-harness/assetRefs.d.ts.map +0 -1
  307. package/dist/_members/render-harness/remotion-runtime.d.ts +0 -87
  308. package/dist/authoring/build-tools.d.ts +0 -1
  309. package/dist/authoring/build-tools.js +0 -28
  310. package/dist/authoring/capabilities.d.ts +0 -1
  311. package/dist/authoring/capabilities.js +0 -11
  312. package/dist/authoring/pipelineTrace.d.ts +0 -1
  313. package/dist/authoring/pipelineTrace.js +0 -7
  314. package/dist/authoring/tools.d.ts +0 -1
  315. package/dist/authoring/tools.js +0 -31
  316. package/dist/chunk-6UZYUWBX.js +0 -197
  317. package/dist/chunk-7EDLPIUN.js +0 -384
  318. package/dist/chunk-GF52TW4I.js +0 -51
  319. package/dist/chunk-IG3YAOUZ.js +0 -418
  320. package/dist/chunk-JOURGVOR.js +0 -27
  321. package/dist/chunk-MFMR3LHO.js +0 -116
  322. package/dist/chunk-OSMXQV5V.js +0 -18
  323. package/dist/chunk-QDBVYZSF.js +0 -128
  324. package/dist/chunk-U3JPILZS.js +0 -15
  325. package/dist/chunk-Y4HPN4BC.js +0 -364
  326. package/dist/composition/autozoom.d.ts +0 -1
  327. package/dist/composition/autozoom.js +0 -76
  328. package/dist/composition/fixtures.d.ts +0 -1
  329. package/dist/composition/fixtures.js +0 -154
  330. package/dist/composition/types.d.ts +0 -1
  331. package/dist/composition/types.js +0 -0
  332. package/dist/context-4WSFPRLX.js +0 -16
  333. package/dist/director/testing.d.ts +0 -1
  334. package/dist/director/testing.js +0 -22
  335. package/dist/foundation/codes.d.ts +0 -1
  336. package/dist/foundation/codes.js +0 -7
  337. package/dist/nle-export/server.d.ts +0 -1
  338. package/dist/nle-export/server.js +0 -25856
  339. /package/dist/{chunk-FTVZF4GO.js → chunk-S432RE6G.js} +0 -0
@@ -28,18 +28,6 @@ function mapPexelsVideo(v, query) {
28
28
  assetUrl: v.url ? String(v.url) : void 0
29
29
  };
30
30
  }
31
- function mapPexelsPhoto(p) {
32
- return {
33
- id: p.id,
34
- title: p.alt ?? `Photo ${p.id}`,
35
- thumbnail: p.src?.medium ?? p.src?.small ?? "",
36
- downloadUrl: p.src?.original ?? "",
37
- width: p.width,
38
- height: p.height,
39
- photographer: p.photographer ?? "Unknown",
40
- mediaType: "photo"
41
- };
42
- }
43
31
  function mapPixabayVideo(v, query) {
44
32
  const vids = v.videos ?? {};
45
33
  const renditions = Object.values(vids).filter(
@@ -63,40 +51,6 @@ function mapPixabayVideo(v, query) {
63
51
  assetUrl: v.pageURL ? String(v.pageURL) : void 0
64
52
  };
65
53
  }
66
- function mapPixabayPhoto(p) {
67
- return {
68
- id: p.id,
69
- title: p.tags?.split(",")[0]?.trim() ?? `Photo ${p.id}`,
70
- thumbnail: p.webformatURL ?? "",
71
- downloadUrl: p.largeImageURL ?? p.fullHDURL ?? p.imageURL ?? "",
72
- width: p.imageWidth ?? 0,
73
- height: p.imageHeight ?? 0,
74
- photographer: p.user ?? "Unknown",
75
- mediaType: "photo"
76
- };
77
- }
78
- function mapGifClipResult(r, type) {
79
- if (type === "clips") {
80
- return {
81
- id: String(r.slug ?? ""),
82
- title: r.title ?? "",
83
- gifUrl: r.file?.gif ?? "",
84
- mp4Url: r.file?.mp4 ?? "",
85
- width: r.file_meta?.mp4?.width ?? 0,
86
- height: r.file_meta?.mp4?.height ?? 0,
87
- type: "clip"
88
- };
89
- }
90
- return {
91
- id: String(r.id ?? ""),
92
- title: r.title ?? "",
93
- gifUrl: r.file?.hd?.gif?.url ?? r.file?.md?.gif?.url ?? "",
94
- mp4Url: r.file?.hd?.mp4?.url ?? r.file?.md?.mp4?.url,
95
- width: r.file?.hd?.gif?.width ?? 0,
96
- height: r.file?.hd?.gif?.height ?? 0,
97
- type: "gif"
98
- };
99
- }
100
54
  async function searchStockVideos(gw, query, perPage = 10, signal) {
101
55
  const url = `${gw.url}/pexels/videos/search?query=${encodeURIComponent(query)}&per_page=${perPage}`;
102
56
  const resp = await fetch(url, gwFetchInit(gw, signal));
@@ -106,15 +60,6 @@ async function searchStockVideos(gw, query, perPage = 10, signal) {
106
60
  const data = await resp.json();
107
61
  return (data.videos ?? []).map((v) => mapPexelsVideo(v, query));
108
62
  }
109
- async function popularStockVideos(gw, perPage = 12, signal) {
110
- const url = `${gw.url}/pexels/videos/popular?per_page=${perPage}`;
111
- const resp = await fetch(url, gwFetchInit(gw, signal));
112
- if (!resp.ok) {
113
- throw new Error(`Pexels API error: ${resp.status} ${resp.statusText}`);
114
- }
115
- const data = await resp.json();
116
- return (data.videos ?? []).map((v) => mapPexelsVideo(v, ""));
117
- }
118
63
  async function searchPixabayVideos(gw, query, perPage = 10, signal) {
119
64
  const url = `${gw.url}/pixabay/videos/?q=${encodeURIComponent(query)}&per_page=${perPage}&safesearch=true`;
120
65
  const resp = await fetch(url, gwFetchInit(gw, signal));
@@ -124,94 +69,12 @@ async function searchPixabayVideos(gw, query, perPage = 10, signal) {
124
69
  const data = await resp.json();
125
70
  return (data.hits ?? []).map((v) => mapPixabayVideo(v, query));
126
71
  }
127
- async function popularPixabayVideos(gw, perPage = 12, signal) {
128
- const url = `${gw.url}/pixabay/videos/?order=popular&per_page=${perPage}&safesearch=true&editors_choice=true`;
129
- const resp = await fetch(url, gwFetchInit(gw, signal));
130
- if (!resp.ok) {
131
- throw new Error(`Pixabay API error: ${resp.status} ${resp.statusText}`);
132
- }
133
- const data = await resp.json();
134
- return (data.hits ?? []).map((v) => mapPixabayVideo(v, ""));
135
- }
136
- async function searchStockPhotos(gw, query, perPage = 10, signal) {
137
- const url = `${gw.url}/pexels/v1/search?query=${encodeURIComponent(query)}&per_page=${perPage}`;
138
- const resp = await fetch(url, gwFetchInit(gw, signal));
139
- if (!resp.ok) {
140
- throw new Error(`Pexels API error: ${resp.status} ${resp.statusText}`);
141
- }
142
- const data = await resp.json();
143
- return (data.photos ?? []).map(mapPexelsPhoto);
144
- }
145
- async function popularStockPhotos(gw, perPage = 12, signal) {
146
- const url = `${gw.url}/pexels/v1/curated?per_page=${perPage}`;
147
- const resp = await fetch(url, gwFetchInit(gw, signal));
148
- if (!resp.ok) {
149
- throw new Error(`Pexels API error: ${resp.status} ${resp.statusText}`);
150
- }
151
- const data = await resp.json();
152
- return (data.photos ?? []).map(mapPexelsPhoto);
153
- }
154
- async function searchPixabayPhotos(gw, query, perPage = 10, signal) {
155
- const url = `${gw.url}/pixabay/?q=${encodeURIComponent(query)}&per_page=${perPage}&safesearch=true`;
156
- const resp = await fetch(url, gwFetchInit(gw, signal));
157
- if (!resp.ok) {
158
- throw new Error(`Pixabay API error: ${resp.status} ${resp.statusText}`);
159
- }
160
- const data = await resp.json();
161
- return (data.hits ?? []).map(mapPixabayPhoto);
162
- }
163
- async function popularPixabayPhotos(gw, perPage = 12, signal) {
164
- const url = `${gw.url}/pixabay/?order=popular&per_page=${perPage}&safesearch=true&editors_choice=true`;
165
- const resp = await fetch(url, gwFetchInit(gw, signal));
166
- if (!resp.ok) {
167
- throw new Error(`Pixabay API error: ${resp.status} ${resp.statusText}`);
168
- }
169
- const data = await resp.json();
170
- return (data.hits ?? []).map(mapPixabayPhoto);
171
- }
172
72
  function freesoundDurationFilterParam(d) {
173
73
  if (!d || d.min === void 0 && d.max === void 0) return "";
174
74
  const min = d.min ?? 0;
175
75
  const max = d.max ?? "*";
176
76
  return `&filter=${encodeURIComponent(`duration:[${min} TO ${max}]`)}`;
177
77
  }
178
- async function searchSoundEffects(gw, query, perPage = 10, signal, durationSec) {
179
- const url = `${gw.url}/freesound/search/text/?query=${encodeURIComponent(query)}&fields=id,name,previews,duration,tags,license,ac_analysis&page_size=${perPage}${freesoundDurationFilterParam(durationSec)}`;
180
- const resp = await fetch(url, gwFetchInit(gw, signal));
181
- if (!resp.ok) {
182
- throw new Error(`Freesound API error: ${resp.status} ${resp.statusText}`);
183
- }
184
- const data = await resp.json();
185
- return (data.results ?? []).map((s) => ({
186
- id: s.id,
187
- name: s.name,
188
- previewUrl: s.previews?.["preview-hq-mp3"] ?? s.previews?.["preview-lq-mp3"] ?? "",
189
- downloadUrl: `https://freesound.org/apiv2/sounds/${s.id}/download/`,
190
- duration: s.duration,
191
- tags: (s.tags ?? []).slice(0, 5),
192
- license: s.license ?? "Unknown"
193
- }));
194
- }
195
- async function searchKlipy(gw, query, limit = 10, signal, type = "gifs") {
196
- const url = `${gw.url}/klipy/${type}/search?q=${encodeURIComponent(query)}&per_page=${limit}&customer_id=cueframe&content_filter=high`;
197
- const resp = await fetch(url, gwFetchInit(gw, signal));
198
- if (!resp.ok) {
199
- throw new Error(`Klipy API error: ${resp.status}`);
200
- }
201
- const json = await resp.json();
202
- const results = json.data?.data ?? [];
203
- return results.map((r) => mapGifClipResult(r, type));
204
- }
205
- async function trendingKlipy(gw, limit = 12, signal, type = "gifs") {
206
- const url = `${gw.url}/klipy/${type}/trending?per_page=${limit}&customer_id=cueframe&content_filter=high`;
207
- const resp = await fetch(url, gwFetchInit(gw, signal));
208
- if (!resp.ok) {
209
- throw new Error(`Klipy API error: ${resp.status}`);
210
- }
211
- const json = await resp.json();
212
- const results = json.data?.data ?? [];
213
- return results.map((r) => mapGifClipResult(r, type));
214
- }
215
78
  function mapPexelsPhotoCandidate(p, query) {
216
79
  return {
217
80
  provider: "pexels",
@@ -342,16 +205,7 @@ async function searchKlipyCandidates(gw, query, limit = 10, signal, type = "clip
342
205
 
343
206
  export {
344
207
  searchStockVideos,
345
- popularStockVideos,
346
208
  searchPixabayVideos,
347
- popularPixabayVideos,
348
- searchStockPhotos,
349
- popularStockPhotos,
350
- searchPixabayPhotos,
351
- popularPixabayPhotos,
352
- searchSoundEffects,
353
- searchKlipy,
354
- trendingKlipy,
355
209
  searchStockPhotoCandidates,
356
210
  searchPixabayPhotoCandidates,
357
211
  searchSoundEffectsCandidates,
@@ -1,9 +1,9 @@
1
- import {
2
- hasNonFragmentCssUrl
3
- } from "./chunk-OSMXQV5V.js";
4
1
  import {
5
2
  getPrimitiveCatalogMeta
6
- } from "./chunk-4NIJWK45.js";
3
+ } from "./chunk-EISHFHU5.js";
4
+ import {
5
+ hasNonFragmentCssUrl
6
+ } from "./chunk-EQH37KNZ.js";
7
7
 
8
8
  // ../execution/render-harness/src/renderInputAssets.ts
9
9
  function isRemoteUrl(u) {
@@ -3,13 +3,13 @@ import {
3
3
  projectMediaPlaybackSpans,
4
4
  sliceTranscriptWords,
5
5
  splitIntoSentences
6
- } from "./chunk-NVXSKKRN.js";
6
+ } from "./chunk-IUJABAG2.js";
7
7
  import {
8
8
  createHeadlessStore,
9
9
  findClipById,
10
10
  findMarkerById,
11
11
  findTrackContainingClipId
12
- } from "./chunk-LBJ5LI5V.js";
12
+ } from "./chunk-2K2GBFLU.js";
13
13
  import {
14
14
  CaptionLayoutInput,
15
15
  CaptionSegment,
@@ -25,7 +25,7 @@ import {
25
25
  captionLayoutIssues,
26
26
  captionSegmentSignature,
27
27
  captionVisibilityIssues
28
- } from "./chunk-UFD4EZHM.js";
28
+ } from "./chunk-AFUITAH6.js";
29
29
  import {
30
30
  ReframeSegment
31
31
  } from "./chunk-B7J5UUUV.js";
@@ -42,6 +42,15 @@ import { z } from "zod";
42
42
 
43
43
  // ../composition-ops/src/opRecorder.ts
44
44
  var genTrackId = (kind) => `track-${kind}-${crypto.randomUUID().slice(0, 8)}`;
45
+ var NON_DOCUMENT_METHODS = /* @__PURE__ */ new Set([
46
+ "selectClip",
47
+ "setSelection",
48
+ "selectAllClips",
49
+ "selectOverlay",
50
+ "clearOverlaySelection",
51
+ "getState",
52
+ "batch"
53
+ ]);
45
54
  function wrapWithOpRecorder(base, opts) {
46
55
  const { record, getComposition } = opts;
47
56
  const captionTarget = {
@@ -49,12 +58,22 @@ function wrapWithOpRecorder(base, opts) {
49
58
  setCaptionStyle: (style) => base.setCaptionStyle(style),
50
59
  setCaptions: (segments, style) => base.setCaptions(segments, style)
51
60
  };
61
+ const opTarget = {
62
+ ...base,
63
+ getState: () => ({ composition: getComposition() })
64
+ };
65
+ const applyAndRecord = (op) => {
66
+ const before = getComposition();
67
+ applyOp(before, op);
68
+ record(op, before);
69
+ applyOpToStore(opTarget, op);
70
+ };
52
71
  const wrapped = {
53
72
  addClip: (clip, options) => {
54
73
  const before = getComposition();
55
74
  const c = clip.kind ? clip : { ...clip, kind: "video" };
56
- if (options?.newTrack) {
57
- const newTrackId = options.newTrackId ?? genTrackId("video");
75
+ if (options?.newTrack || !before.tracks.some((t) => t.kind === "video")) {
76
+ const newTrackId = options?.newTrackId ?? genTrackId("video");
58
77
  record({ type: "clip.add", clip: c, newTrack: true, newTrackId }, before);
59
78
  base.addClip(c, { newTrack: true, newTrackId });
60
79
  } else {
@@ -62,6 +81,17 @@ function wrapWithOpRecorder(base, opts) {
62
81
  base.addClip(c);
63
82
  }
64
83
  },
84
+ addClipToTrack: (clip, target) => {
85
+ if ("trackId" in target) {
86
+ applyAndRecord({ type: "clip.add", clip, trackId: target.trackId });
87
+ return;
88
+ }
89
+ const c = clip.kind ? clip : { ...clip, kind: target.kind };
90
+ const creates = target.newTrack || !getComposition().tracks.some((t) => t.kind === target.kind);
91
+ applyAndRecord(
92
+ creates ? { type: "clip.add", clip: c, newTrack: true, newTrackId: target.newTrackId ?? genTrackId(target.kind) } : { type: "clip.add", clip: c }
93
+ );
94
+ },
65
95
  removeClip: (id) => {
66
96
  record({ type: "clip.remove", clipId: id }, getComposition());
67
97
  base.removeClip(id);
@@ -78,9 +108,10 @@ function wrapWithOpRecorder(base, opts) {
78
108
  const { playbackRate, ...patch } = props;
79
109
  if (playbackRate !== void 0) {
80
110
  if (opts.onUnjournalable) {
81
- const result = base.setClipProperties(id, props);
82
- opts.onUnjournalable("setClipProperties.playbackRate");
83
- return result;
111
+ const preview = createHeadlessStore(getComposition());
112
+ preview.setClipProperties(id, props);
113
+ opts.onUnjournalable("setClipProperties.playbackRate", preview.getState().composition);
114
+ return base.setClipProperties(id, props);
84
115
  }
85
116
  throw new Error(
86
117
  "opRecorder.setClipProperties: playbackRate is not serializable as a clip.update op (source.playbackRate triggers a cross-field ripple). Use the server-authoritative ripple path."
@@ -161,8 +192,9 @@ function wrapWithOpRecorder(base, opts) {
161
192
  setCaptionStyle: (style) => {
162
193
  const before = getComposition();
163
194
  const op = { type: "setCaptionStyle", style };
164
- applyCaptionOpToStore(captionTarget, op);
195
+ applyOp(before, op);
165
196
  record(op, before);
197
+ applyCaptionOpToStore(captionTarget, op);
166
198
  },
167
199
  setCaptions: (segments, style) => {
168
200
  const before = getComposition();
@@ -171,8 +203,18 @@ function wrapWithOpRecorder(base, opts) {
171
203
  segments,
172
204
  ...style !== void 0 ? { style } : {}
173
205
  };
174
- applyCaptionOpToStore(captionTarget, op);
206
+ applyOp(before, op);
175
207
  record(op, before);
208
+ applyCaptionOpToStore(captionTarget, op);
209
+ },
210
+ setCaptionLayouts: (layouts) => {
211
+ applyAndRecord({
212
+ type: "setCaptionLayouts",
213
+ layouts: layouts.map(({ wordSignature: _signature, ...layout }) => layout)
214
+ });
215
+ },
216
+ setCaptionDepth: (zPlane) => {
217
+ applyAndRecord({ type: "setCaptionDepth", zPlane });
176
218
  },
177
219
  setFormat: (format) => {
178
220
  record({ type: "setFormat", format }, getComposition());
@@ -208,8 +250,10 @@ function wrapWithOpRecorder(base, opts) {
208
250
  base.moveClipToTrack(clipId, targetTrackId, newStartTime);
209
251
  },
210
252
  duplicateClip: (id) => {
211
- record({ type: "duplicateClip", clipId: id }, getComposition());
212
- return base.duplicateClip(id);
253
+ if (createHeadlessStore(getComposition()).duplicateClip(id) === void 0) return void 0;
254
+ const newClipId = `${id}-dup-${crypto.randomUUID().slice(0, 8)}`;
255
+ applyAndRecord({ type: "duplicateClip", clipId: id, newClipId });
256
+ return newClipId;
213
257
  },
214
258
  cutAndRipple: (start, end) => {
215
259
  record({ type: "cutAndRipple", start, end }, getComposition());
@@ -237,6 +281,12 @@ function wrapWithOpRecorder(base, opts) {
237
281
  base.removeExcludedRange(clipId, rangeIdx);
238
282
  }
239
283
  };
284
+ for (const [name, member] of Object.entries(base)) {
285
+ if (typeof member !== "function" || name in wrapped || NON_DOCUMENT_METHODS.has(name)) continue;
286
+ throw new Error(
287
+ `wrapWithOpRecorder: '${name}' is neither journaled nor a non-document method. Journal it here, or add it to NON_DOCUMENT_METHODS if it changes no document state.`
288
+ );
289
+ }
240
290
  return { ...base, ...wrapped };
241
291
  }
242
292
 
@@ -578,28 +628,6 @@ function collectRawComponentClips(composition) {
578
628
  }
579
629
  return out;
580
630
  }
581
- function collectUnbakedComponentClips(composition) {
582
- const tracks = composition?.tracks;
583
- if (!Array.isArray(tracks)) return [];
584
- const out = [];
585
- for (const track of tracks) {
586
- const contents = track?.contents;
587
- if (!Array.isArray(contents)) continue;
588
- for (const c of contents) {
589
- const src = c?.source;
590
- if (!src || typeof src !== "object") continue;
591
- if (src.kind !== "overlay") continue;
592
- if (src.primitiveId !== "custom") continue;
593
- const params = src.params;
594
- const componentId = params && typeof params === "object" ? params.componentId : void 0;
595
- const clipId = c.id;
596
- if (typeof componentId !== "string" || componentId.length === 0) continue;
597
- if (typeof clipId !== "string" || clipId.length === 0) continue;
598
- out.push({ clipId, componentId });
599
- }
600
- }
601
- return out;
602
- }
603
631
 
604
632
  // ../composition-ops/src/index.ts
605
633
  var SceneAssetBindings = z.record(z.string().min(1), z.string().min(1));
@@ -926,6 +954,9 @@ function applyOpToStore(store, op) {
926
954
  store.moveClipToTrack(op.clipId, op.targetTrackId, op.newStartTime);
927
955
  break;
928
956
  case "duplicateClip": {
957
+ if (op.newClipId !== void 0 && findClipById(composition, op.newClipId)) {
958
+ throw new Error(`duplicateClip: clip '${op.newClipId}' already exists`);
959
+ }
929
960
  const minted = store.duplicateClip(op.clipId);
930
961
  if (op.newClipId !== void 0 && minted !== void 0 && minted !== op.newClipId) {
931
962
  store.updateClip(minted, { id: op.newClipId });
@@ -1093,6 +1124,7 @@ function invertOp(before, op) {
1093
1124
  }
1094
1125
 
1095
1126
  export {
1127
+ NON_DOCUMENT_METHODS,
1096
1128
  wrapWithOpRecorder,
1097
1129
  createRecordingStore,
1098
1130
  CaptionMaterializationError,
@@ -1106,7 +1138,6 @@ export {
1106
1138
  replaceRegion,
1107
1139
  collectAlphaLayerClips,
1108
1140
  collectRawComponentClips,
1109
- collectUnbakedComponentClips,
1110
1141
  mediaFamily,
1111
1142
  resolveClipKind,
1112
1143
  CompositionOp,
@@ -37,7 +37,6 @@ var AMBIENCE_BED = {
37
37
  };
38
38
  var SFX_TRACK_ID = "track-audio-sfx";
39
39
  var MUSIC_TRACK_ID = "track-audio-music";
40
- var AMBIENCE_TRACK_ID = "track-audio-ambience";
41
40
 
42
41
  // ../composition/src/audio/mixStaging.ts
43
42
  var ROLE_DEFAULT_GAIN_DB = {
@@ -78,20 +77,6 @@ function effectiveClipGainDb(source, voPresent) {
78
77
  if (source.audioRole !== void 0) return roleDefaultGainDb(source.audioRole, voPresent);
79
78
  return void 0;
80
79
  }
81
- function sfxTransients(composition) {
82
- const out = [];
83
- for (const track of composition.tracks) {
84
- if (track.enabled === false) continue;
85
- for (const c of track.contents) {
86
- if (!("source" in c)) continue;
87
- const src = c.source;
88
- if (src.kind === "media" && src.audioRole === "sfx") {
89
- out.push({ clipId: c.id, startMs: Math.round(c.startTime * 1e3) });
90
- }
91
- }
92
- }
93
- return out.sort((a, b) => a.startMs - b.startMs);
94
- }
95
80
  function detectNoAudioTrack(composition) {
96
81
  if ((composition.markers ?? []).some((m) => m.kind === "intentional-silence")) return [];
97
82
  for (const track of composition.tracks) {
@@ -415,13 +400,11 @@ export {
415
400
  AMBIENCE_BED,
416
401
  SFX_TRACK_ID,
417
402
  MUSIC_TRACK_ID,
418
- AMBIENCE_TRACK_ID,
419
403
  ROLE_DEFAULT_GAIN_DB,
420
404
  ROLE_HIERARCHY,
421
405
  roleDefaultGainDb,
422
406
  compositionHasVo,
423
407
  effectiveClipGainDb,
424
- sfxTransients,
425
408
  detectNoAudioTrack,
426
409
  detectMixHierarchyInversion,
427
410
  sfxPackR2Key,
@@ -3,20 +3,20 @@ import {
3
3
  assertSceneShotParamsAdmitted,
4
4
  materializeComponentSource,
5
5
  renderComponentAlpha
6
- } from "./chunk-HGCYZMII.js";
6
+ } from "./chunk-AK6QPX7A.js";
7
+ import {
8
+ assertSourceReadsDeclaredAssets
9
+ } from "./chunk-6HPEMDQW.js";
10
+ import {
11
+ resolvedComponentRenderer
12
+ } from "./chunk-KC4LNZL5.js";
7
13
  import {
8
14
  componentArtifactId,
9
15
  componentBundleId,
10
16
  componentRenderKey,
11
17
  sha256Hex,
12
18
  sourceVersionId
13
- } from "./chunk-EXY4JJPH.js";
14
- import {
15
- assertSourceReadsDeclaredAssets
16
- } from "./chunk-WL2MLKWU.js";
17
- import {
18
- resolvedComponentRenderer
19
- } from "./chunk-JWMWVP64.js";
19
+ } from "./chunk-F6PLDBAK.js";
20
20
  import {
21
21
  ComponentBakeJobV2,
22
22
  ComponentBakeRequestV2,
@@ -25,7 +25,7 @@ import {
25
25
  ComponentRuntimeError,
26
26
  assertGraphicsReceiptMatches,
27
27
  assertRendererReceiptMatches
28
- } from "./chunk-EC6VFQE6.js";
28
+ } from "./chunk-BZVOCVQV.js";
29
29
 
30
30
  // ../execution/component-runtime/src/assetServer.ts
31
31
  import { createHash, randomBytes } from "crypto";
@@ -1,3 +1,6 @@
1
+ import {
2
+ canonicalJson
3
+ } from "./chunk-XHMKPTHV.js";
1
4
  import {
2
5
  checkTracks
3
6
  } from "./chunk-T56BK7NS.js";
@@ -5,23 +8,8 @@ import {
5
8
  // ../composition/src/invariants/etag.ts
6
9
  import { sha256 } from "@noble/hashes/sha256";
7
10
  import { bytesToHex } from "@noble/hashes/utils";
8
- function canonicalJSON(value) {
9
- return JSON.stringify(canonicalize(value));
10
- }
11
- function canonicalize(value) {
12
- if (value === null || typeof value !== "object") return value;
13
- if (Array.isArray(value)) return value.map(canonicalize);
14
- const out = {};
15
- const keys = Object.keys(value).sort();
16
- for (const key of keys) {
17
- const v = value[key];
18
- if (v === void 0) continue;
19
- out[key] = canonicalize(v);
20
- }
21
- return out;
22
- }
23
11
  function etag(composition) {
24
- const canonical = canonicalJSON(composition);
12
+ const canonical = canonicalJson(composition);
25
13
  const hash = bytesToHex(sha256(new TextEncoder().encode(canonical)));
26
14
  return `"${hash}"`;
27
15
  }
@@ -138,20 +126,6 @@ function compositionDuration(composition) {
138
126
  return max;
139
127
  }
140
128
 
141
- // ../composition/src/invariants/time.ts
142
- function otioFrames(seconds, fps) {
143
- return Math.round(seconds * fps);
144
- }
145
- function otioRationalTime(seconds, fps) {
146
- return { value: Math.round(seconds * fps), rate: fps };
147
- }
148
- function sourceFrame(params) {
149
- const { outputFrame, formatFps, clipStartTime, trimStart, playbackRate, sourceFps } = params;
150
- const outSeconds = outputFrame / formatFps;
151
- const sourceSeconds = trimStart + (outSeconds - clipStartTime) * playbackRate;
152
- return Math.round(sourceSeconds * sourceFps);
153
- }
154
-
155
129
  // ../composition/src/invariants/clipPlacement.ts
156
130
  var AUDIO_TRACK_KINDS = /* @__PURE__ */ new Set(["audio"]);
157
131
  var VISUAL_TRACK_KINDS = /* @__PURE__ */ new Set(["video", "image"]);
@@ -196,7 +170,6 @@ function collectClipPlacementIssues(composition, mediaKindById) {
196
170
  }
197
171
 
198
172
  export {
199
- canonicalJSON,
200
173
  etag,
201
174
  checkSceneMarkerPartition,
202
175
  checkIdCollisions,
@@ -204,8 +177,5 @@ export {
204
177
  checkKeyframes,
205
178
  checkComposition,
206
179
  compositionDuration,
207
- otioFrames,
208
- otioRationalTime,
209
- sourceFrame,
210
180
  collectClipPlacementIssues
211
181
  };
@@ -34,14 +34,9 @@ function expandToLinkGroup(composition, entities) {
34
34
  function linkPartners(composition, clipId) {
35
35
  return expandClipIdsToLinkGroups(composition, [clipId]).filter((id) => id !== clipId);
36
36
  }
37
- function makeLinkGroup(clipIds, newGroupId) {
38
- if (clipIds.length < 2) return null;
39
- return { linkGroupId: newGroupId(), clipIds };
40
- }
41
37
 
42
38
  export {
43
39
  expandClipIdsToLinkGroups,
44
40
  expandToLinkGroup,
45
- linkPartners,
46
- makeLinkGroup
41
+ linkPartners
47
42
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEXT_HI
3
- } from "./chunk-W2245F6G.js";
3
+ } from "./chunk-WTQRLFR2.js";
4
4
 
5
5
  // ../execution/primitives/src/lib/text/contrast.ts
6
6
  var FLOOR_TEXT = TEXT_HI;
@@ -3,11 +3,9 @@ import { z } from "zod";
3
3
  var NonEmptyString = z.string().min(1);
4
4
  var ISODateTime = z.string().datetime({ offset: true });
5
5
  var EntityId = (_table) => z.string().min(1).brand();
6
- var ParamsBag = z.record(z.string(), z.unknown());
7
6
 
8
7
  export {
9
8
  NonEmptyString,
10
9
  ISODateTime,
11
- EntityId,
12
- ParamsBag
10
+ EntityId
13
11
  };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-LT4PWSR2.js";
4
4
  import {
5
5
  resolveContrast
6
- } from "./chunk-FWSJLHSV.js";
6
+ } from "./chunk-R642352J.js";
7
7
  import {
8
8
  fadeProgress,
9
9
  resolveEasing,