@cueframe/kernel 0.1.4 → 0.2.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 (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-2PGLNTB7.js +132 -0
  210. package/dist/{chunk-R5BMJ2NX.js → chunk-4FOOBSEE.js} +33 -2
  211. package/dist/{chunk-YXEZ75MB.js → chunk-4JRUGT2Y.js} +43 -108
  212. package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
  213. package/dist/chunk-5OTQ7M43.js +718 -0
  214. package/dist/{chunk-O7GNE4BQ.js → chunk-6ID2J64H.js} +4 -4
  215. package/dist/{chunk-RXCEPCAQ.js → chunk-6XI57FZZ.js} +280 -191
  216. package/dist/{chunk-2SNY75AR.js → chunk-7KEUL3FI.js} +4 -2
  217. package/dist/{chunk-WTT3GGCA.js → chunk-AD5HWBCE.js} +1 -1
  218. package/dist/{chunk-JY26PIRP.js → chunk-C5SEPOWD.js} +163 -171
  219. package/dist/chunk-CGHTMZNC.js +6 -0
  220. package/dist/chunk-DHKQ47Q6.js +57 -0
  221. package/dist/{chunk-3PM6VICZ.js → chunk-DQKSCHFC.js} +4 -4
  222. package/dist/{chunk-D6S3ZKIY.js → chunk-EEXCDFY5.js} +1 -1
  223. package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
  224. package/dist/{chunk-ZBRPF6GV.js → chunk-GEGRJKKO.js} +1 -1
  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-KU376ELE.js +392 -0
  230. package/dist/{chunk-7TQCR7AB.js → chunk-LNBVTDFR.js} +1 -1
  231. package/dist/chunk-LQUWKBST.js +195 -0
  232. package/dist/chunk-M2TLRXEO.js +41 -0
  233. package/dist/{chunk-7V3F5HO4.js → chunk-NOEBAV2G.js} +58 -2
  234. package/dist/{chunk-RQ2G4DXI.js → chunk-QBKDEO7J.js} +1502 -1314
  235. package/dist/chunk-RFXR7ATW.js +244 -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 +71 -34
  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,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-2PGLNTB7.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,7 +1,7 @@
1
1
  import {
2
2
  CueframeError,
3
3
  encodeError
4
- } from "./chunk-R5BMJ2NX.js";
4
+ } from "./chunk-4FOOBSEE.js";
5
5
 
6
6
  // ../execution/core/src/render/vcam/constants.ts
7
7
  var P_MIN = 0.5;
@@ -0,0 +1,195 @@
1
+ // ../execution/component-runtime/src/contracts.ts
2
+ import { z } from "zod";
3
+ var COMPONENT_SOURCE_VERSION = 2;
4
+ var COMPONENT_BUNDLE_VERSION = 2;
5
+ var COMPONENT_RECEIPT_VERSION = 2;
6
+ var ComponentAssetKind = z.enum(["image", "video", "audio", "data"]);
7
+ var ComponentAssetDeclarationV2 = z.object({
8
+ kind: ComponentAssetKind,
9
+ required: z.boolean(),
10
+ mimeTypes: z.array(z.string().min(1)).min(1).optional()
11
+ }).strict();
12
+ var ComponentGraphicsRequirementV2 = z.object({
13
+ api: z.enum(["canvas2d", "webgpu"]),
14
+ required: z.literal(true),
15
+ accelerationPreference: z.enum(["hardware-preferred", "software-allowed"])
16
+ }).strict();
17
+ var ComponentManifestV2 = z.object({
18
+ version: z.literal(COMPONENT_SOURCE_VERSION),
19
+ assets: z.record(z.string().min(1), ComponentAssetDeclarationV2),
20
+ graphics: ComponentGraphicsRequirementV2,
21
+ alphaPolicy: z.enum(["requires-transparency", "allows-opaque"])
22
+ }).strict();
23
+ var CANVAS2D_COMPONENT_MANIFEST_V2 = Object.freeze({
24
+ version: COMPONENT_SOURCE_VERSION,
25
+ assets: Object.freeze({}),
26
+ graphics: Object.freeze({
27
+ api: "canvas2d",
28
+ required: true,
29
+ accelerationPreference: "software-allowed"
30
+ }),
31
+ alphaPolicy: "requires-transparency"
32
+ });
33
+ var ComponentSourceV2 = z.object({
34
+ version: z.literal(COMPONENT_SOURCE_VERSION),
35
+ componentId: z.string().min(1).max(128).regex(/^[a-z0-9][a-z0-9._-]*$/),
36
+ tsxSource: z.string().min(1),
37
+ manifest: ComponentManifestV2
38
+ }).strict();
39
+ var ComponentAssetBindingV2 = z.object({
40
+ handle: z.string().min(1).max(256),
41
+ kind: ComponentAssetKind,
42
+ mimeType: z.string().min(1),
43
+ contentSha256: z.string().regex(/^[a-f0-9]{64}$/),
44
+ width: z.number().int().positive().optional(),
45
+ height: z.number().int().positive().optional(),
46
+ durationSec: z.number().positive().optional()
47
+ }).strict();
48
+ var ComponentAssetInputV2 = z.object({
49
+ handle: z.string().min(1).max(256),
50
+ kind: ComponentAssetKind,
51
+ mimeType: z.string().min(1),
52
+ width: z.number().int().positive().optional(),
53
+ height: z.number().int().positive().optional(),
54
+ durationSec: z.number().positive().optional()
55
+ }).strict();
56
+ var ComponentAssetFileV2 = z.object({
57
+ path: z.string().min(1)
58
+ }).strict();
59
+ var ComponentBundleV2 = z.object({
60
+ version: z.literal(COMPONENT_BUNDLE_VERSION),
61
+ bundleId: z.string().regex(/^[a-f0-9]{64}$/),
62
+ sourceVersionId: z.string().regex(/^[a-f0-9]{64}$/),
63
+ runtimeDigest: z.string().min(1),
64
+ dependencyLockDigest: z.string().regex(/^[a-f0-9]{64}$/),
65
+ entrypoint: z.string().min(1),
66
+ manifest: ComponentManifestV2
67
+ }).strict();
68
+ var ComponentRenderRequestV2 = z.object({
69
+ version: z.literal(COMPONENT_RECEIPT_VERSION),
70
+ bundleId: z.string().regex(/^[a-f0-9]{64}$/),
71
+ params: z.record(z.string(), z.unknown()),
72
+ assets: z.record(z.string().min(1), ComponentAssetBindingV2),
73
+ width: z.number().int().positive(),
74
+ height: z.number().int().positive(),
75
+ fps: z.number().positive(),
76
+ durationInFrames: z.number().int().positive(),
77
+ alpha: z.boolean(),
78
+ graphics: ComponentGraphicsRequirementV2,
79
+ seed: z.string().min(1)
80
+ }).strict();
81
+ var ComponentBakeRequestV2 = z.object({
82
+ version: z.literal(COMPONENT_RECEIPT_VERSION),
83
+ source: ComponentSourceV2,
84
+ params: z.record(z.string(), z.unknown()),
85
+ assets: z.record(z.string().min(1), ComponentAssetBindingV2),
86
+ width: z.number().int().positive(),
87
+ height: z.number().int().positive(),
88
+ fps: z.number().positive(),
89
+ durationInFrames: z.number().int().positive(),
90
+ codec: z.enum(["vp9", "prores"]),
91
+ runtimeDigest: z.string().min(1),
92
+ dependencyLockDigest: z.string().regex(/^[a-f0-9]{64}$/),
93
+ seed: z.string().min(1)
94
+ }).strict();
95
+ var ComponentBakeJobV2 = z.object({
96
+ version: z.literal(COMPONENT_RECEIPT_VERSION),
97
+ source: ComponentSourceV2,
98
+ params: z.record(z.string(), z.unknown()),
99
+ assets: z.record(z.string().min(1), ComponentAssetInputV2),
100
+ assetFiles: z.record(z.string().min(1), ComponentAssetFileV2),
101
+ width: z.number().int().positive(),
102
+ height: z.number().int().positive(),
103
+ fps: z.number().positive(),
104
+ durationInFrames: z.number().int().positive(),
105
+ codec: z.enum(["vp9", "prores"]),
106
+ runtimeDigest: z.string().min(1),
107
+ dependencyLockDigest: z.string().regex(/^[a-f0-9]{64}$/),
108
+ seed: z.string().min(1)
109
+ }).strict();
110
+ var ComponentGraphicsActualV2 = z.object({
111
+ api: z.enum(["canvas2d", "webgpu"]),
112
+ acceleration: z.enum(["hardware", "software"]),
113
+ adapterName: z.string().min(1).optional(),
114
+ deviceLost: z.literal(false)
115
+ }).strict();
116
+ var ComponentRenderReceiptV2 = z.object({
117
+ version: z.literal(COMPONENT_RECEIPT_VERSION),
118
+ artifactId: z.string().regex(/^[a-f0-9]{64}$/),
119
+ renderKey: z.string().regex(/^[a-f0-9]{64}$/),
120
+ bundleId: z.string().regex(/^[a-f0-9]{64}$/),
121
+ sourceVersionId: z.string().regex(/^[a-f0-9]{64}$/),
122
+ runtimeDigest: z.string().min(1),
123
+ outputSha256: z.string().regex(/^[a-f0-9]{64}$/),
124
+ outputBytes: z.number().int().positive(),
125
+ codec: z.enum(["png", "vp9", "prores"]),
126
+ width: z.number().int().positive(),
127
+ height: z.number().int().positive(),
128
+ fps: z.number().positive(),
129
+ durationInFrames: z.number().int().positive(),
130
+ alpha: z.boolean(),
131
+ requestedGraphics: ComponentGraphicsRequirementV2,
132
+ actualGraphics: ComponentGraphicsActualV2
133
+ }).strict();
134
+ var COMPONENT_RUNTIME_ERROR_CODES = [
135
+ "invalid_component_source",
136
+ "unsupported_runtime_version",
137
+ "component_does_not_compile",
138
+ "component_runtime_error",
139
+ "component_deadline_exceeded",
140
+ "component_resource_exhausted",
141
+ "component_asset_undeclared",
142
+ "component_asset_unavailable",
143
+ "component_asset_integrity_failed",
144
+ "component_network_denied",
145
+ "component_import_denied",
146
+ "component_graphics_unavailable",
147
+ "component_graphics_mismatch",
148
+ "component_device_lost",
149
+ "component_output_invalid",
150
+ "component_conflict"
151
+ ];
152
+ var ComponentRuntimeErrorCode = z.enum(COMPONENT_RUNTIME_ERROR_CODES);
153
+ var ComponentRuntimeError = class extends Error {
154
+ code;
155
+ retryable;
156
+ constructor(code, message, options) {
157
+ super(message, options?.cause === void 0 ? void 0 : { cause: options.cause });
158
+ this.name = "ComponentRuntimeError";
159
+ this.code = code;
160
+ this.retryable = options?.retryable ?? false;
161
+ }
162
+ };
163
+ function assertGraphicsReceiptMatches(request, receipt) {
164
+ if (receipt.requestedGraphics.api !== request.graphics.api || receipt.requestedGraphics.required !== request.graphics.required || receipt.requestedGraphics.accelerationPreference !== request.graphics.accelerationPreference) {
165
+ throw new ComponentRuntimeError("component_graphics_mismatch", "Graphics receipt does not match the render request.");
166
+ }
167
+ if (receipt.actualGraphics.api !== request.graphics.api || receipt.actualGraphics.deviceLost) {
168
+ throw new ComponentRuntimeError("component_graphics_mismatch", "Rendered graphics backend does not satisfy the component requirement.");
169
+ }
170
+ }
171
+
172
+ export {
173
+ COMPONENT_SOURCE_VERSION,
174
+ COMPONENT_BUNDLE_VERSION,
175
+ COMPONENT_RECEIPT_VERSION,
176
+ ComponentAssetKind,
177
+ ComponentAssetDeclarationV2,
178
+ ComponentGraphicsRequirementV2,
179
+ ComponentManifestV2,
180
+ CANVAS2D_COMPONENT_MANIFEST_V2,
181
+ ComponentSourceV2,
182
+ ComponentAssetBindingV2,
183
+ ComponentAssetInputV2,
184
+ ComponentAssetFileV2,
185
+ ComponentBundleV2,
186
+ ComponentRenderRequestV2,
187
+ ComponentBakeRequestV2,
188
+ ComponentBakeJobV2,
189
+ ComponentGraphicsActualV2,
190
+ ComponentRenderReceiptV2,
191
+ COMPONENT_RUNTIME_ERROR_CODES,
192
+ ComponentRuntimeErrorCode,
193
+ ComponentRuntimeError,
194
+ assertGraphicsReceiptMatches
195
+ };
@@ -0,0 +1,41 @@
1
+ import {
2
+ componentArtifactIdentity,
3
+ componentBundleIdentity,
4
+ componentRenderIdentity,
5
+ sourceVersionIdentity
6
+ } from "./chunk-DHKQ47Q6.js";
7
+
8
+ // ../execution/component-runtime/src/identity.ts
9
+ import { createHash } from "crypto";
10
+ function sha256Hex(value) {
11
+ return createHash("sha256").update(value).digest("hex");
12
+ }
13
+ function sourceVersionId(source) {
14
+ return sha256Hex(sourceVersionIdentity(source));
15
+ }
16
+ function componentBundleId(input) {
17
+ return sha256Hex(componentBundleIdentity(input));
18
+ }
19
+ function componentRenderKey(request) {
20
+ return sha256Hex(componentRenderIdentity(request));
21
+ }
22
+ function componentArtifactId(input) {
23
+ return sha256Hex(componentArtifactIdentity(input));
24
+ }
25
+ function bundleIdentityFields(bundle) {
26
+ return {
27
+ bundleId: bundle.bundleId,
28
+ sourceVersionId: bundle.sourceVersionId,
29
+ runtimeDigest: bundle.runtimeDigest,
30
+ dependencyLockDigest: bundle.dependencyLockDigest
31
+ };
32
+ }
33
+
34
+ export {
35
+ sha256Hex,
36
+ sourceVersionId,
37
+ componentBundleId,
38
+ componentRenderKey,
39
+ componentArtifactId,
40
+ bundleIdentityFields
41
+ };