@cueframe/kernel 0.1.4 → 0.2.0

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 (330) hide show
  1. package/dist/_members/account-model/validators/contextFile.d.ts +3 -21
  2. package/dist/_members/account-model/validators/conversation.d.ts +12 -42
  3. package/dist/_members/account-model/validators/dashboardInsight.d.ts +3 -17
  4. package/dist/_members/account-model/validators/sessionToken.d.ts +10 -36
  5. package/dist/_members/account-model/validators/uploadToken.d.ts +11 -21
  6. package/dist/_members/account-model/validators/userSettings.d.ts +3 -13
  7. package/dist/_members/account-model/validators/workingComposition.d.ts +3 -19
  8. package/dist/_members/authoring/capabilities.d.ts +0 -9
  9. package/dist/_members/authoring/index.d.ts +1 -1
  10. package/dist/_members/authoring/models/defaultModels.d.ts +12 -0
  11. package/dist/_members/authoring/models/modelFactory.d.ts +1 -0
  12. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +1 -7
  13. package/dist/_members/authoring/types.d.ts +0 -1
  14. package/dist/_members/component-runtime/assetServer.d.ts +18 -0
  15. package/dist/_members/component-runtime/assetServer.d.ts.map +1 -0
  16. package/dist/_members/component-runtime/bake.d.ts +12 -0
  17. package/dist/_members/component-runtime/bake.d.ts.map +1 -0
  18. package/dist/_members/component-runtime/browserFirewall.d.ts +21 -0
  19. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -0
  20. package/dist/_members/component-runtime/browserIdentity.d.ts +14 -0
  21. package/dist/_members/component-runtime/browserIdentity.d.ts.map +1 -0
  22. package/dist/_members/component-runtime/browserOptions.d.ts +8 -0
  23. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -0
  24. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  25. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -0
  26. package/dist/_members/component-runtime/contracts.d.ts +443 -0
  27. package/dist/_members/component-runtime/contracts.d.ts.map +1 -0
  28. package/dist/_members/component-runtime/determinism.d.ts +18 -0
  29. package/dist/_members/component-runtime/determinism.d.ts.map +1 -0
  30. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +9 -0
  31. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +1 -0
  32. package/dist/_members/component-runtime/identity.d.ts +16 -0
  33. package/dist/_members/component-runtime/identity.d.ts.map +1 -0
  34. package/dist/_members/component-runtime/importPolicy.d.ts +3 -0
  35. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -0
  36. package/dist/_members/component-runtime/index.d.ts +11 -0
  37. package/dist/_members/component-runtime/index.d.ts.map +1 -0
  38. package/dist/_members/component-runtime/outputVerifier.d.ts +29 -0
  39. package/dist/_members/component-runtime/outputVerifier.d.ts.map +1 -0
  40. package/dist/_members/{render-harness/localRender.d.ts → component-runtime/render.d.ts} +22 -15
  41. package/dist/_members/component-runtime/render.d.ts.map +1 -0
  42. package/dist/_members/component-runtime/sourceWorkspace.d.ts +10 -0
  43. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -0
  44. package/dist/_members/compose/index.d.ts +0 -5
  45. package/dist/_members/composition/graphics-plan/schemas.d.ts +299 -1309
  46. package/dist/_members/composition/primitive-catalog/index.d.ts +2 -2
  47. package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -14
  48. package/dist/_members/composition/reframe/index.d.ts +56 -528
  49. package/dist/_members/composition/validators/brandKit.d.ts +247 -1208
  50. package/dist/_members/composition/validators/composePlan.d.ts +106 -818
  51. package/dist/_members/composition/validators/composition.d.ts +1338 -5856
  52. package/dist/_members/composition/validators/font.d.ts +35 -91
  53. package/dist/_members/composition/validators/project.d.ts +15 -46
  54. package/dist/_members/composition/validators/registry.d.ts +53 -135
  55. package/dist/_members/composition/validators/render.d.ts +803 -7273
  56. package/dist/_members/composition/validators/session.d.ts +38 -76
  57. package/dist/_members/composition/validators/webhook.d.ts +23 -50
  58. package/dist/_members/composition-ops/alphaLayers.d.ts +3 -2
  59. package/dist/_members/composition-ops/index.d.ts +409 -4309
  60. package/dist/_members/core/render/compositionAudioAndDepth.d.ts +6 -0
  61. package/dist/_members/core/render/compositionRender.d.ts +3 -4
  62. package/dist/_members/core/render/compositionValidation.d.ts +4 -0
  63. package/dist/_members/core/render/index.d.ts +2 -2
  64. package/dist/_members/core/render/types.d.ts +16 -8
  65. package/dist/_members/director/ai-sdk/messages.d.ts +67 -217
  66. package/dist/_members/director/domain/chat.d.ts +70 -293
  67. package/dist/_members/director/testing/contract.d.ts +11 -11
  68. package/dist/_members/errors/registry.d.ts +189 -3
  69. package/dist/_members/foundation/primitives/index.d.ts +1 -1
  70. package/dist/_members/mcp/adapter.d.ts +3 -0
  71. package/dist/_members/mcp/burnedNames.d.ts +0 -1
  72. package/dist/_members/mcp/core.d.ts +6 -3
  73. package/dist/_members/mcp/curation.d.ts +3 -38
  74. package/dist/_members/mcp/curationTypes.d.ts +34 -0
  75. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  76. package/dist/_members/mcp/generated/operations.d.ts +10 -0
  77. package/dist/_members/mcp/main.d.ts +1 -0
  78. package/dist/_members/mcp/mediaContextFormat.d.ts +4 -0
  79. package/dist/_members/mcp/prompts.d.ts +1 -1
  80. package/dist/_members/mcp/query.d.ts +4 -0
  81. package/dist/_members/mcp/resources.d.ts +1 -1
  82. package/dist/_members/mcp/server.d.ts +1 -2
  83. package/dist/_members/mcp/wireSchema.d.ts +13 -0
  84. package/dist/_members/media-model/api.d.ts +114 -662
  85. package/dist/_members/media-model/generation.d.ts +141 -228
  86. package/dist/_members/plane/contract.d.ts +16 -19
  87. package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +3 -27
  88. package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +2 -26
  89. package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +1 -17
  90. package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +6 -14
  91. package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +1 -11
  92. package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +1 -21
  93. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +2 -12
  94. package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +2 -26
  95. package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +2 -22
  96. package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +1 -17
  97. package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +1 -19
  98. package/dist/_members/primitives/effects/blur/config.d.ts +5 -14
  99. package/dist/_members/primitives/effects/color-grade/config.d.ts +10 -18
  100. package/dist/_members/primitives/effects/grain/config.d.ts +9 -12
  101. package/dist/_members/primitives/effects/parallax/config.d.ts +8 -12
  102. package/dist/_members/primitives/effects/particles/config.d.ts +9 -20
  103. package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +1 -13
  104. package/dist/_members/primitives/effects/spotlight-card/config.d.ts +1 -25
  105. package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +1 -15
  106. package/dist/_members/primitives/effects/success-confetti/config.d.ts +2 -26
  107. package/dist/_members/primitives/effects/vignette/config.d.ts +5 -12
  108. package/dist/_members/primitives/hero-text/config.d.ts +9 -24
  109. package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +1 -11
  110. package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +1 -9
  111. package/dist/_members/primitives/layouts/letterbox/config.d.ts +1 -9
  112. package/dist/_members/primitives/layouts/photo-grid/config.d.ts +2 -12
  113. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +7 -12
  114. package/dist/_members/primitives/layouts/split-screen/config.d.ts +1 -7
  115. package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +3 -51
  116. package/dist/_members/primitives/lib/schema.d.ts +1 -1
  117. package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +7 -24
  118. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +5 -14
  119. package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +1 -7
  120. package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +1 -7
  121. package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +2 -12
  122. package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +1 -19
  123. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +1 -11
  124. package/dist/_members/primitives/text/blur-reveal/config.d.ts +1 -17
  125. package/dist/_members/primitives/text/cinematic-title/config.d.ts +13 -73
  126. package/dist/_members/primitives/text/inline-highlight/config.d.ts +1 -21
  127. package/dist/_members/primitives/text/karaoke/config.d.ts +10 -93
  128. package/dist/_members/primitives/text/kinetic-type/config.d.ts +14 -49
  129. package/dist/_members/primitives/text/lower-third/config.d.ts +8 -70
  130. package/dist/_members/primitives/text/marker-highlight/config.d.ts +1 -23
  131. package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +1 -17
  132. package/dist/_members/primitives/text/matrix-decode/config.d.ts +1 -19
  133. package/dist/_members/primitives/text/quote-card/config.d.ts +1 -11
  134. package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +1 -23
  135. package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +1 -17
  136. package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +1 -17
  137. package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +2 -24
  138. package/dist/_members/primitives/text/stat-counter/config.d.ts +6 -20
  139. package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +1 -19
  140. package/dist/_members/primitives/text/text-effect/config.d.ts +10 -15
  141. package/dist/_members/primitives/text/text-fade-replace/config.d.ts +1 -17
  142. package/dist/_members/primitives/text/token-stream/config.d.ts +1 -11
  143. package/dist/_members/primitives/text/tracking-in/config.d.ts +1 -19
  144. package/dist/_members/primitives/text/typewriter/config.d.ts +1 -21
  145. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +5 -8
  146. package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +1 -21
  147. package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +7 -6
  148. package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +1 -5
  149. package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +1 -7
  150. package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +6 -12
  151. package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +7 -8
  152. package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +1 -7
  153. package/dist/_members/primitives/transitions/light-leak/config.d.ts +1 -7
  154. package/dist/_members/primitives/transitions/luma-matte/config.d.ts +6 -6
  155. package/dist/_members/primitives/transitions/morph/config.d.ts +5 -6
  156. package/dist/_members/primitives/transitions/spatial-push/config.d.ts +7 -6
  157. package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +5 -10
  158. package/dist/_members/primitives/transitions/zoom-through/config.d.ts +2 -30
  159. package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +1 -13
  160. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +1 -29
  161. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +1 -11
  162. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +8 -16
  163. package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +1 -11
  164. package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +3 -73
  165. package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +1 -15
  166. package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +1 -7
  167. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +1 -21
  168. package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +1 -15
  169. package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +2 -26
  170. package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +1 -13
  171. package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +2 -66
  172. package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +1 -9
  173. package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +3 -97
  174. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +5 -14
  175. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +1 -13
  176. package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +2 -36
  177. package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +1 -23
  178. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +3 -113
  179. package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +2 -34
  180. package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +3 -113
  181. package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +1 -9
  182. package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +6 -37
  183. package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +2 -12
  184. package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +2 -54
  185. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +9 -48
  186. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +7 -20
  187. package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +2 -42
  188. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +1 -19
  189. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +3 -71
  190. package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +5 -14
  191. package/dist/_members/primitives/workspace.d.ts +1 -5
  192. package/dist/_members/render-harness/cardAssetAdmission.d.ts +3 -0
  193. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -0
  194. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  195. package/dist/_members/render-harness/index.d.ts +1 -5
  196. package/dist/_members/render-harness/index.d.ts.map +1 -1
  197. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  198. package/dist/_members/render-harness/remotion-runtime.d.ts +20 -0
  199. package/dist/_members/render-harness/renderInputAssets.d.ts +2 -1
  200. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  201. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  202. package/dist/authoring/build-tools.js +8 -8
  203. package/dist/authoring/context.js +5 -5
  204. package/dist/authoring/models.js +3 -1
  205. package/dist/authoring/resource-routing.js +1 -1
  206. package/dist/authoring/resources.js +1 -1
  207. package/dist/authoring/tools.js +7 -7
  208. package/dist/authoring.js +15 -31
  209. package/dist/{chunk-R5BMJ2NX.js → chunk-4FOOBSEE.js} +33 -2
  210. package/dist/{chunk-YXEZ75MB.js → chunk-4JRUGT2Y.js} +43 -108
  211. package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
  212. package/dist/chunk-5OTQ7M43.js +718 -0
  213. package/dist/{chunk-O7GNE4BQ.js → chunk-6ID2J64H.js} +4 -4
  214. package/dist/{chunk-RXCEPCAQ.js → chunk-6XI57FZZ.js} +280 -191
  215. package/dist/{chunk-2SNY75AR.js → chunk-7KEUL3FI.js} +4 -2
  216. package/dist/{chunk-WTT3GGCA.js → chunk-AD5HWBCE.js} +1 -1
  217. package/dist/{chunk-JY26PIRP.js → chunk-C5SEPOWD.js} +163 -171
  218. package/dist/chunk-CGHTMZNC.js +6 -0
  219. package/dist/chunk-DHKQ47Q6.js +57 -0
  220. package/dist/{chunk-3PM6VICZ.js → chunk-DQKSCHFC.js} +4 -4
  221. package/dist/{chunk-D6S3ZKIY.js → chunk-EEXCDFY5.js} +1 -1
  222. package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
  223. package/dist/{chunk-ZBRPF6GV.js → chunk-GEGRJKKO.js} +1 -1
  224. package/dist/chunk-HHFDHJ3I.js +392 -0
  225. package/dist/{chunk-JRIPQ7DN.js → chunk-IBMJ33EL.js} +3 -3
  226. package/dist/{chunk-JTVFIN6H.js → chunk-IHFREGFA.js} +10 -4
  227. package/dist/chunk-IJ7PVJTK.js +114 -0
  228. package/dist/{chunk-6ABIXGLO.js → chunk-KKEY5MIW.js} +8 -8
  229. package/dist/{chunk-7TQCR7AB.js → chunk-LNBVTDFR.js} +1 -1
  230. package/dist/chunk-LQUWKBST.js +195 -0
  231. package/dist/chunk-M2TLRXEO.js +41 -0
  232. package/dist/{chunk-7V3F5HO4.js → chunk-NOEBAV2G.js} +58 -2
  233. package/dist/{chunk-RQ2G4DXI.js → chunk-QBKDEO7J.js} +1502 -1314
  234. package/dist/chunk-RFXR7ATW.js +244 -0
  235. package/dist/chunk-SIAXP3ZO.js +131 -0
  236. package/dist/{chunk-MCBUX5XV.js → chunk-SLN5UKLT.js} +2 -2
  237. package/dist/{chunk-GH27OS5S.js → chunk-VCBLGZQQ.js} +19 -4
  238. package/dist/{chunk-TLVPDT4R.js → chunk-XHUYWVYK.js} +1 -1
  239. package/dist/{chunk-D2EGO543.js → chunk-XVBOSPZI.js} +15 -17
  240. package/dist/{chunk-YE3F4LNJ.js → chunk-Y3QGYASW.js} +18 -18
  241. package/dist/{chunk-LSP4HN5N.js → chunk-ZCAQHNPI.js} +1 -1
  242. package/dist/{chunk-PJ4R4N4Q.js → chunk-ZN6P3KOJ.js} +70 -93
  243. package/dist/chunk-ZZRBKGDA.js +109 -0
  244. package/dist/component-runtime/browserOptions.d.ts +1 -0
  245. package/dist/component-runtime/browserOptions.js +7 -0
  246. package/dist/component-runtime/contracts.d.ts +1 -0
  247. package/dist/component-runtime/contracts.js +49 -0
  248. package/dist/component-runtime/identity/browser.d.ts +1 -0
  249. package/dist/component-runtime/identity/browser.js +35 -0
  250. package/dist/component-runtime/identity.d.ts +1 -0
  251. package/dist/component-runtime/identity.js +21 -0
  252. package/dist/component-runtime/importPolicy.d.ts +1 -0
  253. package/dist/component-runtime/importPolicy.js +10 -0
  254. package/dist/component-runtime/render.d.ts +1 -0
  255. package/dist/component-runtime/render.js +34 -0
  256. package/dist/component-runtime.d.ts +1 -0
  257. package/dist/component-runtime.js +132 -0
  258. package/dist/compose.js +17 -31
  259. package/dist/composition/graphics-plan.js +1 -1
  260. package/dist/composition/ops.js +4 -4
  261. package/dist/composition/primitive-catalog.js +1 -3
  262. package/dist/composition/projection.js +2 -2
  263. package/dist/composition/timeline.js +2 -2
  264. package/dist/composition/validators.js +2 -2
  265. package/dist/composition-ops.js +23 -17
  266. package/dist/composition.js +15 -15
  267. package/dist/{context-XWNT6QZH.js → context-4GSDBFT3.js} +5 -5
  268. package/dist/core/render.js +8 -8
  269. package/dist/core/select.js +2 -2
  270. package/dist/core.js +6 -6
  271. package/dist/director/ai-sdk.js +3 -3
  272. package/dist/director/domain.js +2 -2
  273. package/dist/director.js +3 -3
  274. package/dist/errors.js +1 -1
  275. package/dist/mcp/adapter.js +22 -29
  276. package/dist/mcp/core.js +1 -1
  277. package/dist/mcp/curation.js +1 -1
  278. package/dist/mcp/executor.js +1 -1
  279. package/dist/mcp/server.js +4 -6
  280. package/dist/mcp/wire-schema.d.ts +1 -0
  281. package/dist/mcp/wire-schema.js +37 -0
  282. package/dist/mcp.js +6 -29
  283. package/dist/nle-export.js +16 -25
  284. package/dist/plane/conformance.js +1 -1
  285. package/dist/plane/contract.js +7 -0
  286. package/dist/plane.js +1 -1
  287. package/dist/primitives/backgrounds.js +2 -2
  288. package/dist/primitives/captions.js +3 -3
  289. package/dist/primitives/effects.js +2 -2
  290. package/dist/primitives/layouts.js +2 -2
  291. package/dist/primitives/lib/index.js +8 -8
  292. package/dist/primitives/lib/schema.js +1 -1
  293. package/dist/primitives/lib.js +8 -8
  294. package/dist/primitives/text.js +2 -2
  295. package/dist/primitives/ui-blocks.js +2 -2
  296. package/dist/primitives.js +18 -18
  297. package/dist/render-harness/cardAssetAdmission.d.ts +1 -0
  298. package/dist/render-harness/cardAssetAdmission.js +8 -0
  299. package/dist/render-harness/renderInputAssets.d.ts +1 -0
  300. package/dist/render-harness/renderInputAssets.js +17 -0
  301. package/dist/render-harness.js +44 -574
  302. package/package.json +69 -36
  303. package/dist/_members/authoring/transpileComponent.d.ts +0 -6
  304. package/dist/_members/authoring/transpileHelper.d.ts +0 -8
  305. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  306. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -25
  307. package/dist/_members/compose/schema.d.ts +0 -30
  308. package/dist/_members/compose/tokenResolver.d.ts +0 -17
  309. package/dist/_members/render-harness/browserOptions.d.ts +0 -11
  310. package/dist/_members/render-harness/browserOptions.d.ts.map +0 -1
  311. package/dist/_members/render-harness/contractRender.d.ts +0 -27
  312. package/dist/_members/render-harness/contractRender.d.ts.map +0 -1
  313. package/dist/_members/render-harness/localRender.d.ts.map +0 -1
  314. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -9
  315. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +0 -1
  316. package/dist/authoring/transpileComponent.d.ts +0 -1
  317. package/dist/authoring/transpileComponent.js +0 -31
  318. package/dist/authoring/transpileHelper.d.ts +0 -1
  319. package/dist/authoring/transpileHelper.js +0 -9
  320. package/dist/chunk-MHOQTPOB.js +0 -124
  321. package/dist/chunk-QSDFTYKV.js +0 -85
  322. package/dist/chunk-RHVLQNYF.js +0 -20
  323. package/dist/chunk-V24L35GM.js +0 -61
  324. package/dist/compose/renderer.d.ts +0 -1
  325. package/dist/compose/renderer.js +0 -170
  326. package/dist/render-harness/sandboxGlobalSpecs.d.ts +0 -1
  327. package/dist/render-harness/sandboxGlobalSpecs.js +0 -13
  328. package/dist/{chunk-THJAY7QS.js → chunk-BKHGL4MB.js} +4 -4
  329. package/dist/{chunk-XATRRDVG.js → chunk-G5BFI32U.js} +3 -3
  330. package/dist/{chunk-23HFEKV7.js → chunk-QISFYLBB.js} +4 -4
@@ -0,0 +1,6 @@
1
+ // ../execution/component-runtime/src/browserOptions.ts
2
+ var COMPONENT_CHROMIUM_OPTIONS = Object.freeze({ gl: "swangle" });
3
+
4
+ export {
5
+ COMPONENT_CHROMIUM_OPTIONS
6
+ };
@@ -0,0 +1,57 @@
1
+ // ../execution/component-runtime/src/canonicalIdentity.ts
2
+ function normalizedString(value) {
3
+ return value.replace(/\r\n?/g, "\n").normalize("NFC");
4
+ }
5
+ function canonicalValue(value, seen) {
6
+ if (value === null || typeof value === "boolean") return value;
7
+ if (typeof value === "string") return normalizedString(value);
8
+ if (typeof value === "number") {
9
+ if (!Number.isFinite(value)) throw new TypeError("Canonical JSON does not support non-finite numbers.");
10
+ return Object.is(value, -0) ? 0 : value;
11
+ }
12
+ if (typeof value !== "object") {
13
+ throw new TypeError(`Canonical JSON does not support ${typeof value} values.`);
14
+ }
15
+ if (seen.has(value)) throw new TypeError("Canonical JSON does not support cyclic values.");
16
+ seen.add(value);
17
+ try {
18
+ if (Array.isArray(value)) return value.map((item) => canonicalValue(item, seen));
19
+ const prototype = Object.getPrototypeOf(value);
20
+ if (prototype !== Object.prototype && prototype !== null) {
21
+ throw new TypeError("Canonical JSON only supports plain objects.");
22
+ }
23
+ const record = value;
24
+ const result = {};
25
+ for (const key of Object.keys(record).sort()) {
26
+ const item = record[key];
27
+ if (item === void 0) throw new TypeError("Canonical JSON does not support undefined values.");
28
+ result[normalizedString(key)] = canonicalValue(item, seen);
29
+ }
30
+ return result;
31
+ } finally {
32
+ seen.delete(value);
33
+ }
34
+ }
35
+ function canonicalJson(value) {
36
+ return JSON.stringify(canonicalValue(value, /* @__PURE__ */ new Set()));
37
+ }
38
+ function sourceVersionIdentity(source) {
39
+ return canonicalJson(source);
40
+ }
41
+ function componentBundleIdentity(input) {
42
+ return canonicalJson({ domain: "cueframe.component.bundle.v2", ...input });
43
+ }
44
+ function componentRenderIdentity(request) {
45
+ return canonicalJson({ domain: "cueframe.component.render.v2", request });
46
+ }
47
+ function componentArtifactIdentity(input) {
48
+ return canonicalJson({ domain: "cueframe.component.artifact.v2", ...input });
49
+ }
50
+
51
+ export {
52
+ canonicalJson,
53
+ sourceVersionIdentity,
54
+ componentBundleIdentity,
55
+ componentRenderIdentity,
56
+ componentArtifactIdentity
57
+ };
@@ -1,3 +1,6 @@
1
+ import {
2
+ FitText
3
+ } from "./chunk-XHGZ2E77.js";
1
4
  import {
2
5
  ACCENT,
3
6
  BG,
@@ -19,9 +22,6 @@ import {
19
22
  TEXT_MUTED,
20
23
  VIOLET
21
24
  } from "./chunk-CX2IIQ4R.js";
22
- import {
23
- FitText
24
- } from "./chunk-XHGZ2E77.js";
25
25
 
26
26
  // ../execution/primitives/src/layouts/chat-to-preview-layout/index.tsx
27
27
  import { Easing, interpolate, useCurrentFrame, useVideoConfig } from "remotion";
@@ -1187,7 +1187,7 @@ var config3 = {
1187
1187
  // ../execution/primitives/src/layouts/photo-grid/config.ts
1188
1188
  import { z as z4 } from "zod";
1189
1189
  var paramsSchema4 = z4.object({
1190
- images: z4.array(z4.string().url()).min(1).describe("Array of image URLs to display."),
1190
+ images: z4.array(z4.string().url().meta({ cueframeAsset: true })).min(1).describe("Array of image URLs to display."),
1191
1191
  columns: z4.number().int().min(1).max(6).default(2).describe("Grid columns."),
1192
1192
  gap: z4.number().min(0).max(40).default(8).describe("Gap between cells in pixels."),
1193
1193
  stagger: z4.number().min(0).max(2).default(0.15).describe("Seconds between each cell's reveal. 0.1\u20130.25 reads natural.")
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  decodeError,
11
11
  scrubSensitive
12
- } from "./chunk-R5BMJ2NX.js";
12
+ } from "./chunk-4FOOBSEE.js";
13
13
 
14
14
  // ../director/src/domain/chat.ts
15
15
  import { z } from "zod";
@@ -1,3 +1,12 @@
1
+ // ../authoring/src/models/defaultModels.ts
2
+ var DEFAULT_MODEL_IDS = {
3
+ anthropic: "claude-opus-5",
4
+ openai: "gpt-4.1",
5
+ ollama: "llama3.1",
6
+ /** Cheaper model used for fast-mode / low-effort turns. */
7
+ fast: "claude-haiku-4-5"
8
+ };
9
+
1
10
  // ../authoring/src/models/modelFactory.ts
2
11
  import { createAnthropic } from "@ai-sdk/anthropic";
3
12
  import { createOpenAI } from "@ai-sdk/openai";
@@ -56,19 +65,19 @@ function buildModel(settings, langfuse) {
56
65
  apiKey: settings.apiKey,
57
66
  ...settings.baseUrl ? { baseURL: settings.baseUrl } : {}
58
67
  });
59
- const id = settings.modelId || "claude-sonnet-4-6";
68
+ const id = settings.modelId || DEFAULT_MODEL_IDS.anthropic;
60
69
  return { model: anthropic(id), providerName: "anthropic", modelId: id };
61
70
  }
62
71
  case "openai": {
63
72
  if (!settings.apiKey) throw new Error("OpenAI API key not configured.");
64
73
  const openai = createOpenAI({ apiKey: settings.apiKey });
65
- const id = settings.modelId || "gpt-4o";
74
+ const id = settings.modelId || DEFAULT_MODEL_IDS.openai;
66
75
  return { model: openai(id), providerName: "openai", modelId: id };
67
76
  }
68
77
  case "ollama": {
69
78
  const baseUrl = settings.baseUrl || "http://localhost:11434/v1";
70
79
  const openai = createOpenAI({ apiKey: "ollama", baseURL: baseUrl });
71
- const id = settings.modelId || "llama3.1";
80
+ const id = settings.modelId || DEFAULT_MODEL_IDS.ollama;
72
81
  return { model: openai(id), providerName: "ollama", modelId: id };
73
82
  }
74
83
  case "gateway": {
@@ -79,7 +88,7 @@ function buildModel(settings, langfuse) {
79
88
  baseURL: settings.gatewayUrl + "/anthropic/v1",
80
89
  fetch: settings.requestTimeoutMs ? withRequestTimeout(baseFetch, settings.requestTimeoutMs) : langfuse ? baseFetch : void 0
81
90
  });
82
- const id = settings.modelId || "claude-sonnet-4-6";
91
+ const id = settings.modelId || DEFAULT_MODEL_IDS.anthropic;
83
92
  return { model: anthropic(id), providerName: "gateway", modelId: id };
84
93
  }
85
94
  default:
@@ -90,13 +99,14 @@ function buildFastModel(settings, langfuse) {
90
99
  return buildModel(
91
100
  {
92
101
  ...settings,
93
- modelId: settings.fastModelId ?? "claude-haiku-4-5-20251001"
102
+ modelId: settings.fastModelId ?? DEFAULT_MODEL_IDS.fast
94
103
  },
95
104
  langfuse
96
105
  );
97
106
  }
98
107
 
99
108
  export {
109
+ DEFAULT_MODEL_IDS,
100
110
  withRequestTimeout,
101
111
  makeLangfuseFetch,
102
112
  buildModel,
@@ -2,7 +2,7 @@ import {
2
2
  COMPOSE_PLANNER_TOOLS,
3
3
  COMPOSE_ROLE_TOOLS,
4
4
  dispatchComposeRoleTool
5
- } from "./chunk-D2EGO543.js";
5
+ } from "./chunk-XVBOSPZI.js";
6
6
 
7
7
  // ../authoring/src/agent/buildTools.ts
8
8
  import { tool } from "ai";
@@ -0,0 +1,392 @@
1
+ import {
2
+ renderComponentAlpha
3
+ } from "./chunk-5OTQ7M43.js";
4
+ import {
5
+ findWorkspace
6
+ } from "./chunk-WB2VFDQZ.js";
7
+ import {
8
+ componentArtifactId,
9
+ componentBundleId,
10
+ componentRenderKey,
11
+ sha256Hex,
12
+ sourceVersionId
13
+ } from "./chunk-M2TLRXEO.js";
14
+ import {
15
+ assertComponentImportsAllowed
16
+ } from "./chunk-SIAXP3ZO.js";
17
+ import {
18
+ ComponentBakeJobV2,
19
+ ComponentBakeRequestV2,
20
+ ComponentRenderReceiptV2,
21
+ ComponentRenderRequestV2,
22
+ ComponentRuntimeError,
23
+ ComponentSourceV2,
24
+ assertGraphicsReceiptMatches
25
+ } from "./chunk-LQUWKBST.js";
26
+
27
+ // ../execution/component-runtime/src/sourceWorkspace.ts
28
+ import { mkdirSync, writeFileSync } from "fs";
29
+ import { join } from "path";
30
+ function materializeComponentSource(workspaceRoot, input) {
31
+ const source = ComponentSourceV2.parse(input);
32
+ assertComponentImportsAllowed(source.tsxSource);
33
+ mkdirSync(workspaceRoot, { recursive: true });
34
+ writeFileSync(join(workspaceRoot, "cueframe.json"), '{"componentsDir":"cueframe/components"}\n', {
35
+ flag: "wx"
36
+ });
37
+ const dir = join(workspaceRoot, "cueframe", "components", source.componentId);
38
+ mkdirSync(dir, { recursive: true });
39
+ writeFileSync(join(dir, "index.tsx"), source.tsxSource, { flag: "wx" });
40
+ writeFileSync(join(dir, "component-source-v2.json"), `${JSON.stringify(source)}
41
+ `, { flag: "wx" });
42
+ const workspace = findWorkspace(workspaceRoot);
43
+ if (!workspace) throw new Error("Materialized component workspace could not be opened.");
44
+ return {
45
+ workspace,
46
+ source,
47
+ sourceVersionId: sourceVersionId(source),
48
+ componentDir: dir
49
+ };
50
+ }
51
+
52
+ // ../execution/component-runtime/src/assetServer.ts
53
+ import { createHash, randomBytes } from "crypto";
54
+ import { createReadStream, realpathSync, statSync } from "fs";
55
+ import { createServer } from "http";
56
+ var sha256File = async (path) => await new Promise((resolve, reject) => {
57
+ const hash = createHash("sha256");
58
+ const stream = createReadStream(path);
59
+ stream.on("data", (chunk) => hash.update(chunk));
60
+ stream.once("error", reject);
61
+ stream.once("end", () => resolve(hash.digest("hex")));
62
+ });
63
+ function sendStatus(response, status) {
64
+ response.statusCode = status;
65
+ response.setHeader("Cache-Control", "no-store");
66
+ response.end();
67
+ }
68
+ function parseSingleRange(value, size) {
69
+ if (!value) return null;
70
+ const match = /^bytes=(\d*)-(\d*)$/.exec(value);
71
+ if (!match || match[1] === "" && match[2] === "") return "invalid";
72
+ let start;
73
+ let end;
74
+ if (match[1] === "") {
75
+ const suffix = Number(match[2]);
76
+ if (!Number.isSafeInteger(suffix) || suffix <= 0) return "invalid";
77
+ start = Math.max(0, size - suffix);
78
+ end = size - 1;
79
+ } else {
80
+ start = Number(match[1]);
81
+ end = match[2] === "" ? size - 1 : Number(match[2]);
82
+ }
83
+ if (!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start < 0 || start > end || start >= size) {
84
+ return "invalid";
85
+ }
86
+ return [start, Math.min(end, size - 1)];
87
+ }
88
+ async function startComponentAssetServer(args) {
89
+ const assetNames = Object.keys(args.assets).sort();
90
+ if (assetNames.length !== Object.keys(args.files).length || assetNames.some((name) => !Object.hasOwn(args.files, name))) {
91
+ throw new ComponentRuntimeError("component_asset_unavailable", "Component asset inputs and localized files must have identical keys.");
92
+ }
93
+ const sealed = await Promise.all(assetNames.map(async (name) => {
94
+ const path = realpathSync(args.files[name].path);
95
+ const stat = statSync(path);
96
+ if (!stat.isFile() || stat.size <= 0) {
97
+ throw new ComponentRuntimeError("component_asset_unavailable", `Component asset ${JSON.stringify(name)} is not a readable file.`);
98
+ }
99
+ return [name, { path, size: stat.size, binding: { ...args.assets[name], contentSha256: await sha256File(path) } }];
100
+ }));
101
+ const byName = new Map(sealed);
102
+ const token = randomBytes(32).toString("hex");
103
+ let expectedHost = null;
104
+ const server = createServer((request, response) => {
105
+ if (expectedHost === null || request.headers.host !== expectedHost) return sendStatus(response, 421);
106
+ response.setHeader("Access-Control-Allow-Origin", "*");
107
+ response.setHeader("Accept-Ranges", "bytes");
108
+ response.setHeader("X-Content-Type-Options", "nosniff");
109
+ if (request.method !== "GET" && request.method !== "HEAD") return sendStatus(response, 405);
110
+ const parsed = new URL(request.url ?? "/", "http://127.0.0.1");
111
+ const prefix = `/v2/${token}/`;
112
+ if (!parsed.pathname.startsWith(prefix) || parsed.search || parsed.hash) return sendStatus(response, 404);
113
+ let name;
114
+ try {
115
+ name = decodeURIComponent(parsed.pathname.slice(prefix.length));
116
+ } catch {
117
+ return sendStatus(response, 404);
118
+ }
119
+ if (!name || name.includes("/") || name.includes("\\")) return sendStatus(response, 404);
120
+ const row = byName.get(name);
121
+ if (!row) return sendStatus(response, 404);
122
+ const range = parseSingleRange(request.headers.range, row.size);
123
+ if (range === "invalid") {
124
+ response.setHeader("Content-Range", `bytes */${row.size}`);
125
+ return sendStatus(response, 416);
126
+ }
127
+ const [start, end] = range ?? [0, row.size - 1];
128
+ response.statusCode = range ? 206 : 200;
129
+ response.setHeader("Content-Type", row.binding.mimeType);
130
+ response.setHeader("Content-Length", String(end - start + 1));
131
+ if (range) response.setHeader("Content-Range", `bytes ${start}-${end}/${row.size}`);
132
+ if (request.method === "HEAD") return response.end();
133
+ const stream = createReadStream(row.path, { start, end });
134
+ stream.once("error", () => response.destroy());
135
+ stream.pipe(response);
136
+ });
137
+ await new Promise((resolve, reject) => {
138
+ server.once("error", reject);
139
+ server.listen(0, "127.0.0.1", () => resolve());
140
+ });
141
+ const address = server.address();
142
+ if (!address || typeof address === "string") {
143
+ server.close();
144
+ throw new ComponentRuntimeError("component_asset_unavailable", "Component asset server failed to bind a loopback port.");
145
+ }
146
+ expectedHost = `127.0.0.1:${address.port}`;
147
+ const origin = `http://127.0.0.1:${address.port}`;
148
+ const bindings = Object.fromEntries(sealed.map(([name, row]) => [name, row.binding]));
149
+ const runtimeAssets = Object.fromEntries(sealed.map(([name, row]) => [name, {
150
+ ...row.binding,
151
+ handle: `${origin}/v2/${token}/${encodeURIComponent(name)}`
152
+ }]));
153
+ return {
154
+ origin,
155
+ bindings,
156
+ runtimeAssets,
157
+ close: async () => await new Promise((resolve, reject) => {
158
+ server.closeAllConnections?.();
159
+ server.close((error) => error ? reject(error) : resolve());
160
+ })
161
+ };
162
+ }
163
+
164
+ // ../execution/component-runtime/src/outputVerifier.ts
165
+ import { execFileSync } from "child_process";
166
+ import { dirname, join as join2 } from "path";
167
+ import { existsSync, statSync as statSync2 } from "fs";
168
+ var OPAQUE_ALPHA_FRACTION = 0.98;
169
+ function parseAlphaOpaqueFractions(ffmpegOutput) {
170
+ const fractions = [];
171
+ for (const match of ffmpegOutput.matchAll(/lavfi\.signalstats\.YAVG=([\d.]+)/g)) {
172
+ const value = Number(match[1]);
173
+ if (Number.isFinite(value)) fractions.push(Math.min(1, Math.max(0, value / 255)));
174
+ }
175
+ return fractions;
176
+ }
177
+ function bakeOpacityContradictsPolicy(alphaPolicy, opaqueFractions) {
178
+ return alphaPolicy === "requires-transparency" && opaqueFractions.length > 0 && opaqueFractions.every((fraction) => fraction >= OPAQUE_ALPHA_FRACTION);
179
+ }
180
+ function rational(value) {
181
+ if (!value) return Number.NaN;
182
+ const [numerator, denominator = "1"] = value.split("/");
183
+ return Number(numerator) / Number(denominator);
184
+ }
185
+ function assertComponentOutputProbe(probe, expected) {
186
+ const stream = probe.streams?.[0];
187
+ const expectedCodec = expected.codec === "vp9" ? "vp9" : "prores";
188
+ const frames = Number(stream?.nb_read_frames);
189
+ const fps = rational(stream?.avg_frame_rate);
190
+ const duration = Number(probe.format?.duration);
191
+ const expectedDuration = expected.durationInFrames / expected.fps;
192
+ const hasAlpha = expected.codec === "vp9" ? stream?.tags?.alpha_mode === "1" : Boolean(stream?.pix_fmt?.startsWith("yuva"));
193
+ if (stream?.codec_name !== expectedCodec || stream.width !== expected.width || stream.height !== expected.height || frames !== expected.durationInFrames || !Number.isFinite(fps) || Math.abs(fps - expected.fps) > 1e-3 || !Number.isFinite(duration) || Math.abs(duration - expectedDuration) > Math.max(0.05, 1 / expected.fps) || !hasAlpha) {
194
+ throw new ComponentRuntimeError(
195
+ "component_output_invalid",
196
+ "Rendered component artifact failed codec, alpha, dimensions, frame-count, FPS, or duration verification."
197
+ );
198
+ }
199
+ }
200
+ function verifyComponentOutput(options) {
201
+ const size = statSync2(options.path).size;
202
+ if (size <= 0 || size > (options.maxBytes ?? 1073741824)) {
203
+ throw new ComponentRuntimeError("component_output_invalid", "Rendered component artifact has an invalid size.");
204
+ }
205
+ const bundledProbe = join2(dirname(process.execPath), process.platform === "win32" ? "ffprobe.exe" : "ffprobe");
206
+ const ffprobeExecutable = options.ffprobeExecutable ?? process.env.COMPONENT_FFPROBE_EXECUTABLE ?? (existsSync(bundledProbe) ? bundledProbe : "ffprobe");
207
+ let probe;
208
+ try {
209
+ probe = JSON.parse(execFileSync(ffprobeExecutable, [
210
+ "-v",
211
+ "error",
212
+ "-count_frames",
213
+ "-select_streams",
214
+ "v:0",
215
+ "-show_entries",
216
+ "stream=codec_name,width,height,avg_frame_rate,nb_read_frames,pix_fmt:stream_tags=alpha_mode:format=duration",
217
+ "-of",
218
+ "json",
219
+ options.path
220
+ ], { encoding: "utf8", timeout: 3e4, maxBuffer: 2e6 }));
221
+ } catch (error) {
222
+ throw new ComponentRuntimeError("component_output_invalid", "Rendered component artifact could not be probed.", { cause: error });
223
+ }
224
+ assertComponentOutputProbe(probe, options.expected);
225
+ if (options.expected.source.manifest.alphaPolicy === "requires-transparency") {
226
+ const bundledFfmpeg = join2(dirname(process.execPath), process.platform === "win32" ? "ffmpeg.exe" : "ffmpeg");
227
+ const ffmpegExecutable = options.ffmpegExecutable ?? process.env.COMPONENT_FFMPEG_EXECUTABLE ?? (existsSync(bundledFfmpeg) ? bundledFfmpeg : "ffmpeg");
228
+ const durationSec = Math.max(0.05, options.expected.durationInFrames / options.expected.fps);
229
+ let fractions;
230
+ try {
231
+ const output = execFileSync(ffmpegExecutable, [
232
+ "-hide_banner",
233
+ "-loglevel",
234
+ "error",
235
+ ...options.expected.codec === "vp9" ? ["-c:v", "libvpx-vp9"] : [],
236
+ "-i",
237
+ options.path,
238
+ "-vf",
239
+ `format=yuva420p,alphaextract,fps=5/${durationSec},signalstats,metadata=print:file=-`,
240
+ "-an",
241
+ "-f",
242
+ "null",
243
+ "-"
244
+ ], { encoding: "utf8", timeout: 3e4, maxBuffer: 2e6 });
245
+ fractions = parseAlphaOpaqueFractions(output);
246
+ } catch (error) {
247
+ throw new ComponentRuntimeError("component_output_invalid", "Rendered component alpha policy could not be verified.", { cause: error });
248
+ }
249
+ if (fractions.length === 0) {
250
+ throw new ComponentRuntimeError("component_output_invalid", "Rendered component alpha policy produced no samples.");
251
+ }
252
+ if (bakeOpacityContradictsPolicy(options.expected.source.manifest.alphaPolicy, fractions)) {
253
+ throw new ComponentRuntimeError("component_output_invalid", "Rendered component is opaque but its manifest requires transparency.");
254
+ }
255
+ }
256
+ }
257
+
258
+ // ../execution/component-runtime/src/bake.ts
259
+ import { constants, copyFileSync, mkdirSync as mkdirSync2, readFileSync, statSync as statSync3 } from "fs";
260
+ import { dirname as dirname2 } from "path";
261
+ function assertAssetBindingsMatch(request) {
262
+ const declared = request.source.manifest.assets;
263
+ for (const [name, declaration] of Object.entries(declared)) {
264
+ const binding = request.assets[name];
265
+ if (!binding) {
266
+ if (declaration.required) {
267
+ throw new ComponentRuntimeError(
268
+ "component_asset_unavailable",
269
+ `Required component asset ${JSON.stringify(name)} is missing.`
270
+ );
271
+ }
272
+ continue;
273
+ }
274
+ if (binding.kind !== declaration.kind) {
275
+ throw new ComponentRuntimeError(
276
+ "component_asset_integrity_failed",
277
+ `Component asset ${JSON.stringify(name)} has kind ${binding.kind}; expected ${declaration.kind}.`
278
+ );
279
+ }
280
+ if (declaration.mimeTypes && !declaration.mimeTypes.includes(binding.mimeType)) {
281
+ throw new ComponentRuntimeError(
282
+ "component_asset_integrity_failed",
283
+ `Component asset ${JSON.stringify(name)} has an undeclared MIME type.`
284
+ );
285
+ }
286
+ }
287
+ for (const name of Object.keys(request.assets)) {
288
+ if (!Object.hasOwn(declared, name)) {
289
+ throw new ComponentRuntimeError(
290
+ "component_asset_undeclared",
291
+ `Component asset ${JSON.stringify(name)} was not declared by the source manifest.`
292
+ );
293
+ }
294
+ }
295
+ }
296
+ async function bakeComponentAlphaV2(options) {
297
+ const job = ComponentBakeJobV2.parse(options.job);
298
+ const assetServer = await startComponentAssetServer({ assets: job.assets, files: job.assetFiles });
299
+ try {
300
+ const { assetFiles: _assetFiles, ...unsealedRequest } = job;
301
+ const request = ComponentBakeRequestV2.parse({
302
+ ...unsealedRequest,
303
+ assets: assetServer.bindings
304
+ });
305
+ assertAssetBindingsMatch(request);
306
+ const materialized = materializeComponentSource(options.workspaceRoot, request.source);
307
+ const bundleId = componentBundleId({
308
+ sourceVersionId: materialized.sourceVersionId,
309
+ runtimeDigest: request.runtimeDigest,
310
+ dependencyLockDigest: request.dependencyLockDigest
311
+ });
312
+ const renderRequest = ComponentRenderRequestV2.parse({
313
+ version: 2,
314
+ bundleId,
315
+ params: request.params,
316
+ assets: request.assets,
317
+ width: request.width,
318
+ height: request.height,
319
+ fps: request.fps,
320
+ durationInFrames: request.durationInFrames,
321
+ alpha: true,
322
+ graphics: request.source.manifest.graphics,
323
+ seed: request.seed
324
+ });
325
+ const renderKey = componentRenderKey(renderRequest);
326
+ const rendered = await renderComponentAlpha({
327
+ ws: materialized.workspace,
328
+ id: request.source.componentId,
329
+ params: request.params,
330
+ assets: assetServer.runtimeAssets,
331
+ allowedAssetOrigins: /* @__PURE__ */ new Set([assetServer.origin]),
332
+ seed: request.seed,
333
+ graphics: request.source.manifest.graphics,
334
+ codec: request.codec,
335
+ width: request.width,
336
+ height: request.height,
337
+ fps: request.fps,
338
+ durationInFrames: request.durationInFrames,
339
+ renderEntryRoot: options.renderEntryRoot
340
+ });
341
+ verifyComponentOutput({
342
+ path: rendered.videoPath,
343
+ expected: request,
344
+ ffprobeExecutable: options.ffprobeExecutable,
345
+ ffmpegExecutable: options.ffmpegExecutable
346
+ });
347
+ mkdirSync2(dirname2(options.outputPath), { recursive: true });
348
+ copyFileSync(rendered.videoPath, options.outputPath, constants.COPYFILE_EXCL);
349
+ const output = readFileSync(options.outputPath);
350
+ const outputSha256 = sha256Hex(output);
351
+ const receiptWithoutArtifact = {
352
+ version: 2,
353
+ renderKey,
354
+ bundleId,
355
+ sourceVersionId: materialized.sourceVersionId,
356
+ runtimeDigest: request.runtimeDigest,
357
+ outputSha256,
358
+ outputBytes: statSync3(options.outputPath).size,
359
+ codec: request.codec,
360
+ width: request.width,
361
+ height: request.height,
362
+ fps: request.fps,
363
+ durationInFrames: request.durationInFrames,
364
+ alpha: true,
365
+ requestedGraphics: request.source.manifest.graphics,
366
+ actualGraphics: rendered.actualGraphics
367
+ };
368
+ const receipt = ComponentRenderReceiptV2.parse({
369
+ ...receiptWithoutArtifact,
370
+ artifactId: componentArtifactId({ outputSha256, receipt: receiptWithoutArtifact })
371
+ });
372
+ assertGraphicsReceiptMatches(renderRequest, receipt);
373
+ return receipt;
374
+ } finally {
375
+ await assetServer.close();
376
+ }
377
+ }
378
+ function sourceIdentityForBake(request) {
379
+ return sourceVersionId(ComponentBakeRequestV2.parse(request).source);
380
+ }
381
+
382
+ export {
383
+ materializeComponentSource,
384
+ startComponentAssetServer,
385
+ parseAlphaOpaqueFractions,
386
+ bakeOpacityContradictsPolicy,
387
+ assertComponentOutputProbe,
388
+ verifyComponentOutput,
389
+ assertAssetBindingsMatch,
390
+ bakeComponentAlphaV2,
391
+ sourceIdentityForBake
392
+ };
@@ -1,9 +1,9 @@
1
+ import {
2
+ Composition
3
+ } from "./chunk-7KEUL3FI.js";
1
4
  import {
2
5
  expandToLinkGroup
3
6
  } from "./chunk-KYRDKK2D.js";
4
- import {
5
- Composition
6
- } from "./chunk-2SNY75AR.js";
7
7
 
8
8
  // ../composition/src/ops/compositionOps.shared.ts
9
9
  function findOrCreateTrackByKind(composition, kind) {
@@ -4,7 +4,7 @@ import {
4
4
  Format,
5
5
  GraphicRole,
6
6
  OpaqueId
7
- } from "./chunk-2SNY75AR.js";
7
+ } from "./chunk-7KEUL3FI.js";
8
8
 
9
9
  // ../composition/src/validators/composePlan.ts
10
10
  import { z } from "zod";
@@ -92,17 +92,23 @@ var AudioPaletteRef = z2.string().min(1);
92
92
  var FontRef = z2.union([
93
93
  z2.object({
94
94
  kind: z2.literal("system"),
95
- family: z2.string().min(1)
95
+ family: z2.string().min(1),
96
+ weight: z2.number().int().min(1).max(1e3).optional(),
97
+ style: z2.enum(["normal", "italic"]).optional()
96
98
  }),
97
99
  z2.object({
98
100
  kind: z2.literal("web"),
99
101
  family: z2.string().min(1),
100
- url: z2.string().url().optional()
102
+ url: z2.string().url().optional(),
103
+ weight: z2.number().int().min(1).max(1e3).optional(),
104
+ style: z2.enum(["normal", "italic"]).optional()
101
105
  }),
102
106
  z2.object({
103
107
  kind: z2.literal("uploaded"),
104
108
  fontId: OpaqueId,
105
- family: z2.string().optional()
109
+ family: z2.string().optional(),
110
+ weight: z2.number().int().min(1).max(1e3).optional(),
111
+ style: z2.enum(["normal", "italic"]).optional()
106
112
  })
107
113
  ]);
108
114
  var Colors = z2.object({