@cueframe/kernel 0.1.3 → 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 (357) 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/agent/errors.d.ts +8 -0
  9. package/dist/_members/authoring/capabilities.d.ts +0 -9
  10. package/dist/_members/authoring/index.d.ts +1 -1
  11. package/dist/_members/authoring/models/defaultModels.d.ts +12 -0
  12. package/dist/_members/authoring/models/modelFactory.d.ts +1 -0
  13. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +5 -7
  14. package/dist/_members/authoring/types.d.ts +1 -2
  15. package/dist/_members/cloud-import/CloudImportService.d.ts +3 -4
  16. package/dist/_members/cloud-import/ImportProvider.d.ts +3 -7
  17. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -6
  18. package/dist/_members/cloud-import/index.d.ts +2 -4
  19. package/dist/_members/component-runtime/assetServer.d.ts +18 -0
  20. package/dist/_members/component-runtime/assetServer.d.ts.map +1 -0
  21. package/dist/_members/component-runtime/bake.d.ts +12 -0
  22. package/dist/_members/component-runtime/bake.d.ts.map +1 -0
  23. package/dist/_members/component-runtime/browserFirewall.d.ts +21 -0
  24. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -0
  25. package/dist/_members/component-runtime/browserIdentity.d.ts +14 -0
  26. package/dist/_members/component-runtime/browserIdentity.d.ts.map +1 -0
  27. package/dist/_members/component-runtime/browserOptions.d.ts +8 -0
  28. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -0
  29. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  30. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -0
  31. package/dist/_members/component-runtime/contracts.d.ts +443 -0
  32. package/dist/_members/component-runtime/contracts.d.ts.map +1 -0
  33. package/dist/_members/component-runtime/determinism.d.ts +18 -0
  34. package/dist/_members/component-runtime/determinism.d.ts.map +1 -0
  35. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +9 -0
  36. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +1 -0
  37. package/dist/_members/component-runtime/identity.d.ts +16 -0
  38. package/dist/_members/component-runtime/identity.d.ts.map +1 -0
  39. package/dist/_members/component-runtime/importPolicy.d.ts +3 -0
  40. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -0
  41. package/dist/_members/component-runtime/index.d.ts +11 -0
  42. package/dist/_members/component-runtime/index.d.ts.map +1 -0
  43. package/dist/_members/component-runtime/outputVerifier.d.ts +29 -0
  44. package/dist/_members/component-runtime/outputVerifier.d.ts.map +1 -0
  45. package/dist/_members/{render-harness/localRender.d.ts → component-runtime/render.d.ts} +25 -15
  46. package/dist/_members/component-runtime/render.d.ts.map +1 -0
  47. package/dist/_members/component-runtime/sourceWorkspace.d.ts +10 -0
  48. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -0
  49. package/dist/_members/compose/index.d.ts +0 -5
  50. package/dist/_members/composition/graphics-plan/schemas.d.ts +299 -1309
  51. package/dist/_members/composition/primitive-catalog/index.d.ts +2 -2
  52. package/dist/_members/composition/primitive-catalog/projection.d.ts +2 -15
  53. package/dist/_members/composition/projection/behind-readiness.d.ts +4 -2
  54. package/dist/_members/composition/reframe/index.d.ts +56 -528
  55. package/dist/_members/composition/validators/brandKit.d.ts +251 -1252
  56. package/dist/_members/composition/validators/composePlan.d.ts +106 -818
  57. package/dist/_members/composition/validators/composition.d.ts +1328 -5886
  58. package/dist/_members/composition/validators/font.d.ts +35 -91
  59. package/dist/_members/composition/validators/index.d.ts +1 -0
  60. package/dist/_members/composition/validators/opaqueId.d.ts +13 -0
  61. package/dist/_members/composition/validators/project.d.ts +17 -52
  62. package/dist/_members/composition/validators/registry.d.ts +53 -135
  63. package/dist/_members/composition/validators/render.d.ts +811 -7443
  64. package/dist/_members/composition/validators/session.d.ts +41 -99
  65. package/dist/_members/composition/validators/webhook.d.ts +25 -60
  66. package/dist/_members/composition-ops/alphaLayers.d.ts +3 -2
  67. package/dist/_members/composition-ops/index.d.ts +412 -4348
  68. package/dist/_members/core/render/compositionAudioAndDepth.d.ts +6 -0
  69. package/dist/_members/core/render/compositionRender.d.ts +3 -4
  70. package/dist/_members/core/render/compositionValidation.d.ts +4 -0
  71. package/dist/_members/core/render/index.d.ts +2 -2
  72. package/dist/_members/core/render/types.d.ts +16 -8
  73. package/dist/_members/director/ai-sdk/messages.d.ts +67 -217
  74. package/dist/_members/director/domain/chat.d.ts +70 -293
  75. package/dist/_members/director/testing/contract.d.ts +10 -10
  76. package/dist/_members/errors/registry.d.ts +201 -3
  77. package/dist/_members/foundation/primitives/index.d.ts +1 -1
  78. package/dist/_members/mcp/adapter.d.ts +22 -0
  79. package/dist/_members/mcp/burnedNames.d.ts +0 -1
  80. package/dist/_members/mcp/core.d.ts +6 -3
  81. package/dist/_members/mcp/curation.d.ts +3 -34
  82. package/dist/_members/mcp/curationTypes.d.ts +34 -0
  83. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  84. package/dist/_members/mcp/generated/operations.d.ts +12 -2
  85. package/dist/_members/mcp/main.d.ts +1 -0
  86. package/dist/_members/mcp/mediaContextFormat.d.ts +4 -0
  87. package/dist/_members/mcp/prompts.d.ts +1 -1
  88. package/dist/_members/mcp/query.d.ts +4 -0
  89. package/dist/_members/mcp/resources.d.ts +1 -1
  90. package/dist/_members/mcp/server.d.ts +1 -2
  91. package/dist/_members/mcp/wireSchema.d.ts +13 -0
  92. package/dist/_members/media-model/api.d.ts +123 -727
  93. package/dist/_members/media-model/generation.d.ts +141 -228
  94. package/dist/_members/media-model/index.d.ts +1 -0
  95. package/dist/_members/media-model/opaqueId.d.ts +10 -0
  96. package/dist/_members/plane/contract.d.ts +16 -19
  97. package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +3 -27
  98. package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +2 -26
  99. package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +1 -17
  100. package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +6 -14
  101. package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +1 -11
  102. package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +1 -21
  103. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +2 -12
  104. package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +2 -26
  105. package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +2 -22
  106. package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +1 -17
  107. package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +1 -19
  108. package/dist/_members/primitives/effects/blur/config.d.ts +5 -14
  109. package/dist/_members/primitives/effects/color-grade/config.d.ts +10 -18
  110. package/dist/_members/primitives/effects/grain/config.d.ts +9 -12
  111. package/dist/_members/primitives/effects/parallax/config.d.ts +8 -12
  112. package/dist/_members/primitives/effects/particles/config.d.ts +9 -20
  113. package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +1 -13
  114. package/dist/_members/primitives/effects/spotlight-card/config.d.ts +1 -25
  115. package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +1 -15
  116. package/dist/_members/primitives/effects/success-confetti/config.d.ts +2 -26
  117. package/dist/_members/primitives/effects/vignette/config.d.ts +5 -12
  118. package/dist/_members/primitives/hero-text/config.d.ts +9 -24
  119. package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +1 -11
  120. package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +1 -9
  121. package/dist/_members/primitives/layouts/letterbox/config.d.ts +1 -9
  122. package/dist/_members/primitives/layouts/photo-grid/config.d.ts +2 -12
  123. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +7 -12
  124. package/dist/_members/primitives/layouts/split-screen/config.d.ts +1 -7
  125. package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +3 -51
  126. package/dist/_members/primitives/lib/schema.d.ts +1 -1
  127. package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +7 -24
  128. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +5 -14
  129. package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +1 -7
  130. package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +1 -7
  131. package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +2 -12
  132. package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +1 -19
  133. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +1 -11
  134. package/dist/_members/primitives/text/blur-reveal/config.d.ts +1 -17
  135. package/dist/_members/primitives/text/cinematic-title/config.d.ts +13 -73
  136. package/dist/_members/primitives/text/inline-highlight/config.d.ts +1 -21
  137. package/dist/_members/primitives/text/karaoke/config.d.ts +10 -93
  138. package/dist/_members/primitives/text/kinetic-type/config.d.ts +14 -49
  139. package/dist/_members/primitives/text/lower-third/config.d.ts +8 -70
  140. package/dist/_members/primitives/text/marker-highlight/config.d.ts +1 -23
  141. package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +1 -17
  142. package/dist/_members/primitives/text/matrix-decode/config.d.ts +1 -19
  143. package/dist/_members/primitives/text/quote-card/config.d.ts +1 -11
  144. package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +1 -23
  145. package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +1 -17
  146. package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +1 -17
  147. package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +2 -24
  148. package/dist/_members/primitives/text/stat-counter/config.d.ts +6 -20
  149. package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +1 -19
  150. package/dist/_members/primitives/text/text-effect/config.d.ts +10 -15
  151. package/dist/_members/primitives/text/text-fade-replace/config.d.ts +1 -17
  152. package/dist/_members/primitives/text/token-stream/config.d.ts +1 -11
  153. package/dist/_members/primitives/text/tracking-in/config.d.ts +1 -19
  154. package/dist/_members/primitives/text/typewriter/config.d.ts +1 -21
  155. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +5 -8
  156. package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +1 -21
  157. package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +7 -6
  158. package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +1 -5
  159. package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +1 -7
  160. package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +6 -12
  161. package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +7 -8
  162. package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +1 -7
  163. package/dist/_members/primitives/transitions/light-leak/config.d.ts +1 -7
  164. package/dist/_members/primitives/transitions/luma-matte/config.d.ts +6 -6
  165. package/dist/_members/primitives/transitions/morph/config.d.ts +5 -6
  166. package/dist/_members/primitives/transitions/spatial-push/config.d.ts +7 -6
  167. package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +5 -10
  168. package/dist/_members/primitives/transitions/zoom-through/config.d.ts +2 -30
  169. package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +1 -13
  170. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +1 -29
  171. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +1 -11
  172. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +8 -16
  173. package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +1 -11
  174. package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +3 -73
  175. package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +1 -15
  176. package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +1 -7
  177. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +1 -21
  178. package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +1 -15
  179. package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +2 -26
  180. package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +1 -13
  181. package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +2 -66
  182. package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +1 -9
  183. package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +3 -97
  184. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +5 -14
  185. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +1 -13
  186. package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +2 -36
  187. package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +1 -23
  188. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +3 -113
  189. package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +2 -34
  190. package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +3 -113
  191. package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +1 -9
  192. package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +6 -37
  193. package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +2 -12
  194. package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +2 -54
  195. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +9 -48
  196. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +7 -20
  197. package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +2 -42
  198. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +1 -19
  199. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +3 -71
  200. package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +5 -14
  201. package/dist/_members/primitives/workspace.d.ts +1 -5
  202. package/dist/_members/render-harness/cardAssetAdmission.d.ts +3 -0
  203. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -0
  204. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  205. package/dist/_members/render-harness/index.d.ts +1 -5
  206. package/dist/_members/render-harness/index.d.ts.map +1 -1
  207. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  208. package/dist/_members/render-harness/remotion-runtime.d.ts +20 -0
  209. package/dist/_members/render-harness/renderInputAssets.d.ts +2 -1
  210. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  211. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  212. package/dist/authoring/build-tools.js +8 -8
  213. package/dist/authoring/context.js +5 -5
  214. package/dist/authoring/models.js +3 -1
  215. package/dist/authoring/resource-routing.js +1 -1
  216. package/dist/authoring/resources.js +1 -1
  217. package/dist/authoring/tools.js +7 -7
  218. package/dist/authoring.js +28 -27
  219. package/dist/{chunk-AW57IWNW.js → chunk-4FOOBSEE.js} +53 -3
  220. package/dist/{chunk-KFECIHED.js → chunk-4JRUGT2Y.js} +41 -106
  221. package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
  222. package/dist/chunk-5OTQ7M43.js +718 -0
  223. package/dist/{chunk-GMD33ZD7.js → chunk-6ID2J64H.js} +1 -1
  224. package/dist/{chunk-NQSMEUJ6.js → chunk-6XI57FZZ.js} +362 -212
  225. package/dist/chunk-7KEUL3FI.js +500 -0
  226. package/dist/{chunk-GIA2SVVB.js → chunk-AD5HWBCE.js} +9 -4
  227. package/dist/{chunk-DCVJWGIA.js → chunk-C5SEPOWD.js} +165 -173
  228. package/dist/chunk-CGHTMZNC.js +6 -0
  229. package/dist/chunk-DHKQ47Q6.js +57 -0
  230. package/dist/{chunk-RP4SXXLJ.js → chunk-DQKSCHFC.js} +1 -1
  231. package/dist/{chunk-TO4BFNLJ.js → chunk-EEXCDFY5.js} +1 -1
  232. package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
  233. package/dist/{chunk-TPA6PYN2.js → chunk-GEGRJKKO.js} +25 -10
  234. package/dist/chunk-HHFDHJ3I.js +392 -0
  235. package/dist/{chunk-ICSZF37W.js → chunk-IBMJ33EL.js} +3 -3
  236. package/dist/{chunk-TFGKUWHY.js → chunk-IHFREGFA.js} +24 -22
  237. package/dist/chunk-IJ7PVJTK.js +114 -0
  238. package/dist/{chunk-UQSOS726.js → chunk-KKEY5MIW.js} +8 -8
  239. package/dist/{chunk-ZPRBGW4Y.js → chunk-LNBVTDFR.js} +1 -1
  240. package/dist/chunk-LQUWKBST.js +195 -0
  241. package/dist/chunk-M2TLRXEO.js +41 -0
  242. package/dist/{chunk-SDCEJAO2.js → chunk-NOEBAV2G.js} +58 -2
  243. package/dist/{chunk-DL7WYISQ.js → chunk-QBKDEO7J.js} +1601 -1435
  244. package/dist/chunk-RFXR7ATW.js +244 -0
  245. package/dist/chunk-SIAXP3ZO.js +131 -0
  246. package/dist/{chunk-MCBUX5XV.js → chunk-SLN5UKLT.js} +2 -2
  247. package/dist/{chunk-GH27OS5S.js → chunk-VCBLGZQQ.js} +19 -4
  248. package/dist/{chunk-TMB5AY6Q.js → chunk-XHUYWVYK.js} +1 -1
  249. package/dist/{chunk-BZZTVOGG.js → chunk-XVBOSPZI.js} +15 -17
  250. package/dist/{chunk-HBVAZXYO.js → chunk-Y3QGYASW.js} +14 -14
  251. package/dist/{chunk-DWLNPNC4.js → chunk-ZCAQHNPI.js} +1 -1
  252. package/dist/{chunk-DJW3UGBH.js → chunk-ZN6P3KOJ.js} +90 -39
  253. package/dist/chunk-ZZRBKGDA.js +109 -0
  254. package/dist/cloud-import.js +20 -116
  255. package/dist/component-runtime/browserOptions.d.ts +1 -0
  256. package/dist/component-runtime/browserOptions.js +7 -0
  257. package/dist/component-runtime/contracts.d.ts +1 -0
  258. package/dist/component-runtime/contracts.js +49 -0
  259. package/dist/component-runtime/identity/browser.d.ts +1 -0
  260. package/dist/component-runtime/identity/browser.js +35 -0
  261. package/dist/component-runtime/identity.d.ts +1 -0
  262. package/dist/component-runtime/identity.js +21 -0
  263. package/dist/component-runtime/importPolicy.d.ts +1 -0
  264. package/dist/component-runtime/importPolicy.js +10 -0
  265. package/dist/component-runtime/render.d.ts +1 -0
  266. package/dist/component-runtime/render.js +34 -0
  267. package/dist/component-runtime.d.ts +1 -0
  268. package/dist/component-runtime.js +132 -0
  269. package/dist/compose.js +16 -30
  270. package/dist/composition/graphics-plan.js +1 -1
  271. package/dist/composition/ops.js +4 -4
  272. package/dist/composition/primitive-catalog.js +1 -3
  273. package/dist/composition/projection.js +2 -2
  274. package/dist/composition/timeline.js +2 -2
  275. package/dist/composition/validators.js +4 -2
  276. package/dist/composition-ops.js +23 -17
  277. package/dist/composition.js +17 -15
  278. package/dist/{context-JLLU3MYD.js → context-4GSDBFT3.js} +5 -5
  279. package/dist/core/render.js +8 -8
  280. package/dist/core/select.js +2 -2
  281. package/dist/core.js +6 -6
  282. package/dist/director/ai-sdk.js +3 -3
  283. package/dist/director/domain.js +2 -2
  284. package/dist/director.js +3 -3
  285. package/dist/errors.js +1 -1
  286. package/dist/mcp/adapter.js +33 -33
  287. package/dist/mcp/core.js +1 -1
  288. package/dist/mcp/curation.js +5 -1
  289. package/dist/mcp/executor.js +1 -1
  290. package/dist/mcp/server.js +4 -6
  291. package/dist/mcp/wire-schema.d.ts +1 -0
  292. package/dist/mcp/wire-schema.js +37 -0
  293. package/dist/mcp.js +6 -29
  294. package/dist/media-model/media-kind.js +98 -9
  295. package/dist/media-model.js +83 -77
  296. package/dist/nle-export.js +15 -24
  297. package/dist/plane/conformance.js +1 -1
  298. package/dist/plane/contract.js +7 -0
  299. package/dist/plane.js +1 -1
  300. package/dist/primitives/effects.js +1 -1
  301. package/dist/primitives/hero-text.js +2 -2
  302. package/dist/primitives/layouts.js +1 -1
  303. package/dist/primitives/lib/index.js +18 -18
  304. package/dist/primitives/lib/schema.js +1 -1
  305. package/dist/primitives/lib.js +18 -18
  306. package/dist/primitives/scenes.js +2 -2
  307. package/dist/primitives/text.js +2 -2
  308. package/dist/primitives.js +10 -10
  309. package/dist/render-harness/cardAssetAdmission.d.ts +1 -0
  310. package/dist/render-harness/cardAssetAdmission.js +8 -0
  311. package/dist/render-harness/renderInputAssets.d.ts +1 -0
  312. package/dist/render-harness/renderInputAssets.js +17 -0
  313. package/dist/render-harness.js +44 -572
  314. package/package.json +69 -61
  315. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -2
  316. package/dist/_members/authoring/transpileComponent.d.ts +0 -6
  317. package/dist/_members/authoring/transpileHelper.d.ts +0 -8
  318. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -18
  319. package/dist/_members/cloud-import/multipartUpload.d.ts +0 -12
  320. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  321. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -25
  322. package/dist/_members/compose/schema.d.ts +0 -30
  323. package/dist/_members/compose/tokenResolver.d.ts +0 -17
  324. package/dist/_members/convex-api/api.d.ts +0 -5
  325. package/dist/_members/convex-api/api.generated.d.ts +0 -1444
  326. package/dist/_members/convex-api/dataModel.d.ts +0 -6
  327. package/dist/_members/render-harness/browserOptions.d.ts +0 -11
  328. package/dist/_members/render-harness/browserOptions.d.ts.map +0 -1
  329. package/dist/_members/render-harness/contractRender.d.ts +0 -27
  330. package/dist/_members/render-harness/contractRender.d.ts.map +0 -1
  331. package/dist/_members/render-harness/localRender.d.ts.map +0 -1
  332. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -9
  333. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +0 -1
  334. package/dist/authoring/transpileComponent.d.ts +0 -1
  335. package/dist/authoring/transpileComponent.js +0 -31
  336. package/dist/authoring/transpileHelper.d.ts +0 -1
  337. package/dist/authoring/transpileHelper.js +0 -9
  338. package/dist/chunk-6IU2UQI5.js +0 -107
  339. package/dist/chunk-EP2Y6M2J.js +0 -64
  340. package/dist/chunk-MHOQTPOB.js +0 -124
  341. package/dist/chunk-RHVLQNYF.js +0 -20
  342. package/dist/chunk-TXSFYUZH.js +0 -85
  343. package/dist/chunk-V24L35GM.js +0 -61
  344. package/dist/chunk-WZH57M53.js +0 -494
  345. package/dist/cloud-import/multipart.d.ts +0 -1
  346. package/dist/cloud-import/multipart.js +0 -8
  347. package/dist/compose/renderer.d.ts +0 -1
  348. package/dist/compose/renderer.js +0 -170
  349. package/dist/convex-api/dataModel.d.ts +0 -1
  350. package/dist/convex-api/dataModel.js +0 -0
  351. package/dist/convex-api.d.ts +0 -1
  352. package/dist/convex-api.js +0 -8
  353. package/dist/render-harness/sandboxGlobalSpecs.d.ts +0 -1
  354. package/dist/render-harness/sandboxGlobalSpecs.js +0 -13
  355. package/dist/{chunk-SAMQUUO5.js → chunk-BIBYZJL3.js} +3 -3
  356. package/dist/{chunk-23HFEKV7.js → chunk-QISFYLBB.js} +4 -4
  357. package/dist/{chunk-DYZE7JZA.js → chunk-TMIBBD5E.js} +3 -3
@@ -0,0 +1,244 @@
1
+ import {
2
+ getPrimitiveCatalogMeta
3
+ } from "./chunk-C5SEPOWD.js";
4
+
5
+ // ../execution/render-harness/src/renderInputAssets.ts
6
+ function isRemoteUrl(u) {
7
+ return typeof u === "string" && /^https?:\/\//i.test(u) && !/^https?:\/\/(127\.0\.0\.1|localhost)(:|\/|$)/i.test(u);
8
+ }
9
+ function assetUrlKey(url) {
10
+ return url.split("?")[0];
11
+ }
12
+ var CORE_OVERLAY_PARAM_SCHEMAS = {
13
+ image: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
14
+ gif: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
15
+ lottie: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
16
+ "alpha-layer": { type: "object", properties: { src: { type: "string", cueframeAsset: true } } }
17
+ };
18
+ function assetPathsFromSchema(schema, prefix = [], out = []) {
19
+ if (!schema || typeof schema !== "object") return out;
20
+ const node = schema;
21
+ if (node.cueframeAsset === true) {
22
+ if (prefix.length === 0) throw new Error("Asset schema annotation must name a parameter path.");
23
+ out.push(prefix.join("."));
24
+ return out;
25
+ }
26
+ if (node.properties && typeof node.properties === "object") {
27
+ for (const [name, child] of Object.entries(node.properties)) {
28
+ assetPathsFromSchema(child, [...prefix, name], out);
29
+ }
30
+ }
31
+ if (node.items) assetPathsFromSchema(node.items, [...prefix, "*"], out);
32
+ for (const branchKey of ["allOf", "anyOf", "oneOf"]) {
33
+ const branches = node[branchKey];
34
+ if (Array.isArray(branches)) for (const branch of branches) assetPathsFromSchema(branch, prefix, out);
35
+ }
36
+ return out;
37
+ }
38
+ function isUnsealedAssetRef(value) {
39
+ try {
40
+ const parsed = new URL(value);
41
+ return !((parsed.protocol === "http:" || parsed.protocol === "https:") && ["127.0.0.1", "localhost", "[::1]"].includes(parsed.hostname));
42
+ } catch {
43
+ return true;
44
+ }
45
+ }
46
+ function* annotatedSlots(value, segments, path) {
47
+ if (segments.length === 0) return;
48
+ const [head, ...tail] = segments;
49
+ if (head === "*") {
50
+ if (!Array.isArray(value)) return;
51
+ for (let index = 0; index < value.length; index++) {
52
+ if (tail.length === 0 && typeof value[index] === "string" && value[index].length > 0) {
53
+ yield {
54
+ role: "overlayAsset",
55
+ path: `${path}[${index}]`,
56
+ get: () => typeof value[index] === "string" ? value[index] : void 0,
57
+ set: (url) => {
58
+ value[index] = url;
59
+ }
60
+ };
61
+ } else {
62
+ yield* annotatedSlots(value[index], tail, `${path}[${index}]`);
63
+ }
64
+ }
65
+ return;
66
+ }
67
+ if (value === null || typeof value !== "object") return;
68
+ const record = value;
69
+ if (tail.length === 0) {
70
+ if (typeof record[head] !== "string" || record[head].length === 0) return;
71
+ yield {
72
+ role: "overlayAsset",
73
+ path: `${path}.${head}`,
74
+ get: () => typeof record[head] === "string" ? record[head] : void 0,
75
+ set: (url) => {
76
+ record[head] = url;
77
+ }
78
+ };
79
+ return;
80
+ }
81
+ yield* annotatedSlots(record[head], tail, `${path}.${head}`);
82
+ }
83
+ function parameterAssetPaths(primitiveId) {
84
+ const schema = CORE_OVERLAY_PARAM_SCHEMAS[primitiveId] ?? getPrimitiveCatalogMeta(primitiveId)?.propSchema;
85
+ return [...new Set(assetPathsFromSchema(schema))];
86
+ }
87
+ function suspiciousUnannotatedAsset(value) {
88
+ if (typeof value === "string") {
89
+ return /^(?:https?:\/\/|\/\/|data:|blob:|file:|\.\.?\/)/i.test(value) || /url\(\s*['"]?/i.test(value) || /^[^\s]+\.(?:png|jpe?g|gif|webp|svg|json|lottie|mp4|mov|webm|m4a|mp3|wav|woff2?|ttf|otf)(?:\?.*)?$/i.test(value);
90
+ }
91
+ if (Array.isArray(value)) return value.some(suspiciousUnannotatedAsset);
92
+ if (value && typeof value === "object") return Object.values(value).some(suspiciousUnannotatedAsset);
93
+ return false;
94
+ }
95
+ function assertPrimitiveAssetAnnotations(primitiveId, params) {
96
+ const remaining = structuredClone(params);
97
+ for (const assetPath of parameterAssetPaths(primitiveId)) {
98
+ for (const slot of annotatedSlots(remaining, assetPath.split("."), "params")) slot.set("");
99
+ }
100
+ if (suspiciousUnannotatedAsset(remaining)) {
101
+ throw new Error(
102
+ `overlayAsset: Primitive '${primitiveId}' contains an asset-like parameter outside its cueframeAsset schema annotation.`
103
+ );
104
+ }
105
+ }
106
+ function* assetSlots(input) {
107
+ for (const clip of input.clips ?? []) {
108
+ yield { role: "source", path: `clips[${clip.id}].src`, get: () => clip.src, set: (u) => {
109
+ clip.src = u;
110
+ } };
111
+ yield { role: "matte", path: `clips[${clip.id}].packedUrl`, get: () => clip.packedUrl, set: (u) => {
112
+ clip.packedUrl = u;
113
+ } };
114
+ yield {
115
+ role: "trajectory",
116
+ path: `clips[${clip.id}].cropTrajectoryUrl`,
117
+ get: () => clip.cropTrajectoryUrl,
118
+ set: (u) => {
119
+ clip.cropTrajectoryUrl = u;
120
+ }
121
+ };
122
+ }
123
+ for (const track of input.audioTracks ?? []) {
124
+ yield { role: "audio", path: `audioTracks[${track.id}].src`, get: () => track.src, set: (u) => {
125
+ track.src = u;
126
+ } };
127
+ }
128
+ for (const overlay of input.overlays ?? []) {
129
+ for (const assetPath of parameterAssetPaths(overlay.template)) {
130
+ yield* annotatedSlots(overlay.params, assetPath.split("."), `overlays[${overlay.id}].params`);
131
+ }
132
+ }
133
+ for (const effect of input.effects ?? []) {
134
+ for (const assetPath of parameterAssetPaths(effect.primitiveId)) {
135
+ yield* annotatedSlots(effect.params, assetPath.split("."), `effects[${effect.id}].params`);
136
+ }
137
+ }
138
+ for (const font of input.brandKit?.fontAssets ?? []) {
139
+ yield { role: "font", path: `brandKit.fontAssets[${font.family}:${font.weight}].url`, get: () => font.url, set: (u) => {
140
+ font.url = u;
141
+ } };
142
+ }
143
+ const bk = input.brandKit;
144
+ if (bk) {
145
+ if (bk.logo) {
146
+ yield { role: "brandMedia", path: "brandKit.logo.src", get: () => bk.logo.src, set: (u) => {
147
+ bk.logo.src = u;
148
+ } };
149
+ }
150
+ if (bk.intro) {
151
+ yield { role: "brandMedia", path: "brandKit.intro.src", get: () => bk.intro.src, set: (u) => {
152
+ bk.intro.src = u;
153
+ } };
154
+ }
155
+ if (bk.outro) {
156
+ yield { role: "brandMedia", path: "brandKit.outro.src", get: () => bk.outro.src, set: (u) => {
157
+ bk.outro.src = u;
158
+ } };
159
+ }
160
+ if (bk.watermark) {
161
+ yield { role: "brandMedia", path: "brandKit.watermark.src", get: () => bk.watermark.src, set: (u) => {
162
+ bk.watermark.src = u;
163
+ } };
164
+ }
165
+ }
166
+ }
167
+ function extFor(url, role) {
168
+ const path = assetUrlKey(url);
169
+ const m = path.match(/\.([a-z0-9]{2,5})$/i);
170
+ if (m) return m[1].toLowerCase();
171
+ return role === "trajectory" ? "json" : role === "audio" ? "m4a" : role === "font" ? "woff2" : "mp4";
172
+ }
173
+ function shortHash(s) {
174
+ let h = 2166136261 >>> 0;
175
+ for (let i = 0; i < s.length; i++) {
176
+ h ^= s.charCodeAt(i);
177
+ h = Math.imul(h, 16777619) >>> 0;
178
+ }
179
+ return h.toString(36);
180
+ }
181
+ function filenameFor(url, role) {
182
+ return `${role}-${shortHash(assetUrlKey(url))}.${extFor(url, role)}`;
183
+ }
184
+ function renderInputAssets(input) {
185
+ const seen = /* @__PURE__ */ new Set();
186
+ const refs = [];
187
+ for (const slot of assetSlots(input)) {
188
+ const url = slot.get();
189
+ if (typeof url !== "string" || !isRemoteUrl(url)) continue;
190
+ const key = assetUrlKey(url);
191
+ if (seen.has(key)) continue;
192
+ seen.add(key);
193
+ refs.push({ role: slot.role, url, filename: filenameFor(url, slot.role) });
194
+ }
195
+ return refs;
196
+ }
197
+ function assertNoRemoteRefs(input) {
198
+ for (const font of input.brandKit?.fontAssets ?? []) {
199
+ if (typeof font.family !== "string" || font.family.length === 0 || typeof font.url !== "string" || font.url.length === 0) {
200
+ throw new Error("font_not_reproducible: Every custom brand font requires a family and sealed asset URL.");
201
+ }
202
+ }
203
+ const requiredBrandMedia = [
204
+ ["logo", input.brandKit?.logo],
205
+ ["watermark", input.brandKit?.watermark],
206
+ ["intro", input.brandKit?.intro?.kind === "video" ? input.brandKit.intro : void 0],
207
+ ["outro", input.brandKit?.outro?.kind === "video" ? input.brandKit.outro : void 0]
208
+ ];
209
+ for (const [slot, media] of requiredBrandMedia) {
210
+ if (media && (typeof media.src !== "string" || media.src.length === 0)) {
211
+ throw new Error(`brand_kit_unresolved: Brand ${slot} media has no sealed src asset.`);
212
+ }
213
+ }
214
+ const leftover = [];
215
+ for (const slot of assetSlots(input)) {
216
+ const url = slot.get();
217
+ if (url && isUnsealedAssetRef(url)) {
218
+ leftover.push(`${slot.role}: ${slot.path}: ${assetUrlKey(url)}`);
219
+ }
220
+ }
221
+ if (leftover.length > 0) {
222
+ throw new Error(
223
+ `RenderInput still references ${leftover.length} un-localized remote asset(s) after staging \u2014 the render environment is incomplete and would block/hang in a no-egress sandbox:
224
+ ` + leftover.join("\n ")
225
+ );
226
+ }
227
+ for (const overlay of input.overlays ?? []) {
228
+ assertPrimitiveAssetAnnotations(
229
+ overlay.template,
230
+ overlay.params
231
+ );
232
+ }
233
+ for (const effect of input.effects ?? []) {
234
+ assertPrimitiveAssetAnnotations(effect.primitiveId, effect.params);
235
+ }
236
+ }
237
+
238
+ export {
239
+ isRemoteUrl,
240
+ assetUrlKey,
241
+ assetSlots,
242
+ renderInputAssets,
243
+ assertNoRemoteRefs
244
+ };
@@ -0,0 +1,131 @@
1
+ import {
2
+ ComponentRuntimeError
3
+ } from "./chunk-LQUWKBST.js";
4
+
5
+ // ../execution/component-runtime/src/importPolicy.ts
6
+ import { parse } from "@babel/parser";
7
+ var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
8
+ "react",
9
+ "remotion",
10
+ "@remotion/media",
11
+ "@remotion/motion-blur",
12
+ "@remotion/noise",
13
+ "@remotion/paths",
14
+ "@remotion/shapes",
15
+ "@remotion/three",
16
+ "three",
17
+ "three/webgpu",
18
+ "three/tsl",
19
+ "@react-three/fiber",
20
+ "@react-three/drei",
21
+ "@cueframe/animate"
22
+ ]);
23
+ var ALLOWED_IMPORTS = new Set(COMPONENT_IMPORT_ALLOWLIST);
24
+ var DENIED_NONDETERMINISTIC_MEMBERS = /* @__PURE__ */ new Set([
25
+ "Math.random",
26
+ "Date.now",
27
+ "performance.now",
28
+ "crypto.getRandomValues",
29
+ "crypto.randomUUID"
30
+ ]);
31
+ var DENIED_AMBIENT_CALLS = /* @__PURE__ */ new Set([
32
+ "Date",
33
+ "requestAnimationFrame",
34
+ "setTimeout",
35
+ "setInterval"
36
+ ]);
37
+ function staticMemberPath(value) {
38
+ if (!value || typeof value !== "object") return null;
39
+ const node = value;
40
+ if (node.type === "Identifier" && typeof node.name === "string") return node.name;
41
+ if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") return null;
42
+ const object = staticMemberPath(node.object);
43
+ if (!object || !node.property || typeof node.property !== "object") return null;
44
+ const property = node.property;
45
+ const key = node.computed === true ? property.type === "StringLiteral" && typeof property.value === "string" ? property.value : null : property.type === "Identifier" && typeof property.name === "string" ? property.name : null;
46
+ return key ? `${object}.${key}` : null;
47
+ }
48
+ function normalizedAmbientPath(value) {
49
+ return staticMemberPath(value)?.replace(/^(?:globalThis|window|self)\./, "") ?? null;
50
+ }
51
+ function denied(specifier) {
52
+ throw new ComponentRuntimeError(
53
+ "component_import_denied",
54
+ `Component import is not allowed: ${JSON.stringify(specifier)}.`
55
+ );
56
+ }
57
+ function assertComponentImportsAllowed(tsxSource) {
58
+ let root;
59
+ try {
60
+ root = parse(tsxSource, {
61
+ sourceType: "module",
62
+ plugins: ["jsx", "typescript"],
63
+ errorRecovery: false
64
+ });
65
+ } catch (error) {
66
+ throw new ComponentRuntimeError(
67
+ "component_does_not_compile",
68
+ error instanceof Error ? error.message : String(error)
69
+ );
70
+ }
71
+ const visit = (value) => {
72
+ if (!value || typeof value !== "object") return;
73
+ if (Array.isArray(value)) {
74
+ for (const child of value) visit(child);
75
+ return;
76
+ }
77
+ const node = value;
78
+ const type = node.type;
79
+ if ((type === "ImportDeclaration" || type === "ExportNamedDeclaration" || type === "ExportAllDeclaration") && node.source && typeof node.source === "object") {
80
+ const specifier = node.source.value;
81
+ if (typeof specifier === "string" && !ALLOWED_IMPORTS.has(specifier)) denied(specifier);
82
+ }
83
+ if (type === "ImportExpression") denied("dynamic import()");
84
+ if (type === "CallExpression") {
85
+ const callee = node.callee;
86
+ if (callee?.type === "Import") denied("dynamic import()");
87
+ if (callee?.type === "Identifier" && callee.name === "require") denied("require()");
88
+ if (callee?.type === "Identifier" && typeof callee.name === "string" && DENIED_AMBIENT_CALLS.has(callee.name)) {
89
+ denied(`ambient ${callee.name}`);
90
+ }
91
+ }
92
+ if (type === "NewExpression") {
93
+ const callee = node.callee;
94
+ if (callee?.type === "Identifier" && (callee.name === "Date" || callee.name === "Worker" || callee.name === "SharedWorker")) denied(`ambient ${String(callee.name)}`);
95
+ }
96
+ if (type === "MemberExpression" || type === "OptionalMemberExpression") {
97
+ const member = normalizedAmbientPath(node);
98
+ if (member && DENIED_NONDETERMINISTIC_MEMBERS.has(member)) denied(`ambient ${member}`);
99
+ }
100
+ if (type === "VariableDeclarator") {
101
+ const init = normalizedAmbientPath(node.init);
102
+ const id = node.id;
103
+ if (init && ["Math", "Date", "performance", "crypto"].includes(init) && id?.type === "Identifier") {
104
+ denied(`ambient ${init} alias`);
105
+ }
106
+ if (init === "Math" && id?.type === "ObjectPattern") {
107
+ const properties = Array.isArray(id.properties) ? id.properties : [];
108
+ if (properties.some((property) => {
109
+ const key = property.key;
110
+ return key?.name === "random" || key?.value === "random";
111
+ })) denied("ambient Math.random alias");
112
+ }
113
+ }
114
+ if (type === "TSImportType") {
115
+ const argument = node.argument;
116
+ if (argument?.type === "StringLiteral" && typeof argument.value === "string" && !ALLOWED_IMPORTS.has(argument.value)) {
117
+ denied(argument.value);
118
+ }
119
+ }
120
+ for (const [key, child] of Object.entries(node)) {
121
+ if (key === "loc" || key === "start" || key === "end" || key === "errors" || key === "comments") continue;
122
+ visit(child);
123
+ }
124
+ };
125
+ visit(root);
126
+ }
127
+
128
+ export {
129
+ COMPONENT_IMPORT_ALLOWLIST,
130
+ assertComponentImportsAllowed
131
+ };
@@ -48,14 +48,14 @@ var PREVIEW_FRAME_CASES = [
48
48
  why: "THE 2026-08-15 WRONG-PIXELS BUG. Asked 6s past the end of a 5s composition, the local lane answers 200 with the LAST frame (Remotion's Thumbnail pins), and the founder's agent read that as evidence about its own timeline. NEITHER LANE DECIDES THIS AT THE ROUTE. The cloud's 422 comes from its RENDERER \u2014 `rethrowCoded` forwarding a downstream 422 (internal/sightedAction.ts:63) \u2014 so with the executor stubbed, as it is on both sides here, the cloud answers 200 too. That is the finding, not a gap in the harness: a rule enforced only by one lane's renderer is not a rule the API applies. `timestamp_out_of_bounds` already exists in the shared registry (packages/errors/src/registry.ts:94, httpStatus 422) \u2014 the vocabulary is single-sourced; the DECISION has no home. Stage 2 gives it one: a pure precondition both lanes run before reaching for an executor.",
49
49
  body: { timestamps: [CONFORMANCE_DURATION_SEC + 6] },
50
50
  expect: { status: 422, code: "timestamp_out_of_bounds" },
51
- knownRed: ["local", "cloud"]
51
+ knownRed: ["cloud"]
52
52
  },
53
53
  {
54
54
  name: "an unrecognised body key is refused",
55
55
  why: "THREE DEFINITIONS, AND THE PUBLISHED ONE IS THE STRICTEST. The generated `previewFrameBody` ends `.strict()`, and SDK + MCP clients enforce it. But the route's own `PreviewFrameRequest` (evidence.ts:72) \u2014 the schema `zodJson` actually runs \u2014 ends `});` with NO `.strict()`, and the local handler has no unknown-key check either (ALLOWED_KEYS covers apply only). So a typo like `timestamp` or `dryRun` is accepted and ignored by BOTH servers while the published contract says it is rejected. This row asserts the STRICT reading because that is what is published and what every generated client already enforces; a server looser than its own spec is the divergence. Note this inverts the obvious stage-1 move: adopting the generated schema locally and nowhere else would make the desktop stricter than the cloud \u2014 a NEW divergence pointing the other way. Stage 1 has to settle strictness once, for both.",
56
56
  body: { timestamps: [1], nonsenseKey: true },
57
57
  expect: { status: 400, code: "validation_error" },
58
- knownRed: ["local", "cloud"]
58
+ knownRed: ["cloud"]
59
59
  }
60
60
  ];
61
61
  function isKnownRed(c, lane) {
@@ -26,7 +26,7 @@ function makeNetworkExecutor(baseUrl, apiKey) {
26
26
  }
27
27
  function makeSessionExecutor(opts) {
28
28
  return {
29
- async invoke({ method, path, body, query }) {
29
+ async invoke({ method, path, body, query, idempotent }) {
30
30
  const token = await opts.getToken();
31
31
  if (!token) {
32
32
  return { status: 0, text: JSON.stringify({ error: { code: "offline", message: "No session \u2014 sign in to use cloud features." } }) };
@@ -43,7 +43,11 @@ function makeSessionExecutor(opts) {
43
43
  }
44
44
  const mutating = method !== "GET" && method !== "HEAD";
45
45
  if (mutating) {
46
- headers["idempotency-key"] = `sess-${fnv1a(`${method}|${path}|${payload ?? ""}`)}`;
46
+ headers["idempotency-key"] = requestIdempotencyKey(
47
+ "sess",
48
+ `${method}|${path}|${payload ?? ""}`,
49
+ idempotent === true
50
+ );
47
51
  }
48
52
  const attempt = () => fetch(url, { method, headers, body: payload });
49
53
  let res;
@@ -69,9 +73,16 @@ function fnv1a(input) {
69
73
  }
70
74
  return h.toString(16);
71
75
  }
76
+ function freshInvocationNonce() {
77
+ return globalThis.crypto.randomUUID();
78
+ }
79
+ function requestIdempotencyKey(prefix, content, idempotent) {
80
+ const identity = idempotent ? content : `${content}|${freshInvocationNonce()}`;
81
+ return `${prefix}-${fnv1a(identity)}`;
82
+ }
72
83
  function makePlatformExecutor(baseUrl, deployKey, orgId, opts) {
73
84
  return {
74
- async invoke({ method, path, body, query }) {
85
+ async invoke({ method, path, body, query, idempotent }) {
75
86
  const url = `${baseUrl}${path}${query ? `?${query}` : ""}`;
76
87
  const headers = {
77
88
  "x-deploy-key": deployKey,
@@ -79,7 +90,11 @@ function makePlatformExecutor(baseUrl, deployKey, orgId, opts) {
79
90
  ...opts?.actingUserId ? { "x-acting-user-id": opts.actingUserId } : {}
80
91
  };
81
92
  if (method !== "GET" && method !== "HEAD") {
82
- headers["idempotency-key"] = `plat-${fnv1a(`${method}|${path}|${body === void 0 ? "" : JSON.stringify(body)}`)}`;
93
+ headers["idempotency-key"] = requestIdempotencyKey(
94
+ "plat",
95
+ `${method}|${path}|${body === void 0 ? "" : JSON.stringify(body)}`,
96
+ idempotent === true
97
+ );
83
98
  }
84
99
  let payload;
85
100
  if (body !== void 0) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ChatErrorView,
3
3
  DirectorTurnContext
4
- } from "./chunk-TO4BFNLJ.js";
4
+ } from "./chunk-EEXCDFY5.js";
5
5
  import {
6
6
  GenerationArtifact
7
7
  } from "./chunk-73DQTUWY.js";
@@ -4,16 +4,16 @@ import {
4
4
  import {
5
5
  getPrimitiveSubtextParam,
6
6
  getPrimitiveTextParam
7
- } from "./chunk-DCVJWGIA.js";
7
+ } from "./chunk-C5SEPOWD.js";
8
8
  import {
9
9
  selectAllOverlays
10
- } from "./chunk-ICSZF37W.js";
10
+ } from "./chunk-IBMJ33EL.js";
11
11
  import {
12
12
  ComposePlan
13
- } from "./chunk-TFGKUWHY.js";
13
+ } from "./chunk-IHFREGFA.js";
14
14
  import {
15
15
  OverlayClipSource
16
- } from "./chunk-WZH57M53.js";
16
+ } from "./chunk-7KEUL3FI.js";
17
17
 
18
18
  // ../authoring/src/tools/toolSets.ts
19
19
  var COMPOSE_PLANNER_TOOLS = [
@@ -63,7 +63,7 @@ var COMPOSE_ROLE_TOOLS = Object.freeze({
63
63
  schema: z.object({}),
64
64
  metadata: { label: "Get Context" },
65
65
  handler: async (_args, capabilities) => {
66
- const { buildDirectorContext } = await import("./context-JLLU3MYD.js");
66
+ const { buildDirectorContext } = await import("./context-4GSDBFT3.js");
67
67
  return buildDirectorContext(capabilities);
68
68
  }
69
69
  },
@@ -113,9 +113,6 @@ var COMPOSE_ROLE_TOOLS = Object.freeze({
113
113
  lines.push(`
114
114
  Source code:
115
115
  ${overlay.params.jsxSource}`);
116
- } else if (overlay.params.sourceCode) {
117
- lines.push(`
118
- (Compiled code only \u2014 no JSX source available)`);
119
116
  } else {
120
117
  lines.push(`
121
118
  (No custom source code \u2014 uses built-in template rendering)`);
@@ -125,7 +122,7 @@ ${overlay.params.jsxSource}`);
125
122
  },
126
123
  update_overlay: {
127
124
  name: "update_overlay",
128
- description: "Update properties of an existing motion graphic overlay. Only include the fields you want to change. You can provide new sourceCode to re-generate the component.",
125
+ description: "Update properties of an existing motion graphic overlay. Only include the fields you want to change. Provide authored jsxSource to re-generate a custom component.",
129
126
  schema: z.object({
130
127
  id: z.string().min(1).describe("The overlay clip ID (a UUID). Use the exact id inspect_overlay reports \u2014 never fabricate IDs."),
131
128
  startTime: z.coerce.number().min(0).optional().describe("New start time in seconds"),
@@ -141,7 +138,7 @@ ${overlay.params.jsxSource}`);
141
138
  textColor: z.string().regex(/^#[0-9a-fA-F]{3,8}$/, "Must be a hex color").optional().describe("New text color as hex"),
142
139
  fontFamily: z.string().optional().describe("New font family"),
143
140
  backgroundColor: z.string().regex(/^#[0-9a-fA-F]{3,8}$/, "Must be a hex color").optional().describe("New background color as hex"),
144
- sourceCode: z.string().max(1e4).optional().describe("New JSX source code for the overlay"),
141
+ jsxSource: z.string().max(1e4).optional().describe("New canonical TSX module source for the overlay"),
145
142
  transition: z.enum(["fade", "slide", "wipe", "none"]).optional().describe("New transition type"),
146
143
  sequenceGroup: z.string().optional().describe("New sequence group ID"),
147
144
  primitiveId: z.string().optional().describe(
@@ -166,7 +163,7 @@ ${overlay.params.jsxSource}`);
166
163
  metadata: { label: "Update Overlay" },
167
164
  inputExamples: [
168
165
  { input: { id: "abc-123", text: "Updated Title", accentColor: "#6366f1" } },
169
- { input: { id: "def-456", startTime: 10, duration: 5, sourceCode: "export default function..." } },
166
+ { input: { id: "def-456", startTime: 10, duration: 5, jsxSource: "export default function..." } },
170
167
  { input: { id: "ghi-789", zPlane: "behind-subject", anchor: { x: 0.5, y: 0.4 }, parallax: 0.1 } }
171
168
  ],
172
169
  handler: async (args, capabilities) => {
@@ -207,15 +204,16 @@ ${overlay.params.jsxSource}`);
207
204
  if (args.position != null) newParams.position = args.position;
208
205
  if (args.transition != null) newParams.transition = args.transition;
209
206
  if (args.sequenceGroup != null) newParams.sequenceGroup = args.sequenceGroup;
210
- const jsxSource = args.sourceCode ?? args.jsxSource;
207
+ const jsxSource = args.jsxSource;
211
208
  let primitiveId = args.primitiveId ?? existingTemplate;
212
209
  if (jsxSource) {
213
- const transpileFn = capabilities.transpile?.transpile;
214
- if (!transpileFn) return { error: "Transpiler not available" };
215
- const result = await transpileFn(jsxSource);
216
- if (!result.success) return { error: `JSX transpile failed: ${result.error}` };
217
- newParams.sourceCode = result.code;
218
210
  newParams.jsxSource = jsxSource;
211
+ newParams.componentManifest ??= {
212
+ version: 2,
213
+ assets: {},
214
+ graphics: { api: "canvas2d", required: true, accelerationPreference: "software-allowed" },
215
+ alphaPolicy: "requires-transparency"
216
+ };
219
217
  primitiveId = "custom";
220
218
  }
221
219
  const newSource = { ...existingSource, primitiveId, params: newParams };
@@ -1,41 +1,41 @@
1
1
  import {
2
2
  isContrastCritical
3
3
  } from "./chunk-YLDMAZZE.js";
4
+ import {
5
+ catalog as catalog3
6
+ } from "./chunk-AWT3P5ZN.js";
4
7
  import {
5
8
  catalog as catalog6
6
9
  } from "./chunk-BKHGL4MB.js";
7
10
  import {
8
11
  catalog as catalog2
9
- } from "./chunk-GMD33ZD7.js";
12
+ } from "./chunk-6ID2J64H.js";
10
13
  import {
11
14
  catalog as catalog8
12
- } from "./chunk-SAMQUUO5.js";
15
+ } from "./chunk-BIBYZJL3.js";
13
16
  import {
14
17
  catalog as catalog4
15
- } from "./chunk-RP4SXXLJ.js";
18
+ } from "./chunk-DQKSCHFC.js";
16
19
  import {
17
20
  catalog as catalog7
18
- } from "./chunk-DYZE7JZA.js";
21
+ } from "./chunk-TMIBBD5E.js";
19
22
  import {
20
23
  catalog
21
- } from "./chunk-UQSOS726.js";
22
- import {
23
- catalog as catalog3
24
- } from "./chunk-AWT3P5ZN.js";
24
+ } from "./chunk-KKEY5MIW.js";
25
25
  import {
26
26
  catalog as catalog5
27
27
  } from "./chunk-G5BFI32U.js";
28
28
  import {
29
29
  getPrimitiveSubtextParam,
30
30
  getPrimitiveTextParam
31
- } from "./chunk-DCVJWGIA.js";
31
+ } from "./chunk-C5SEPOWD.js";
32
32
  import {
33
33
  NEUTRAL_RAMP
34
34
  } from "./chunk-JF4JJAFP.js";
35
35
  import {
36
36
  CueframeError,
37
37
  encodeError
38
- } from "./chunk-AW57IWNW.js";
38
+ } from "./chunk-4FOOBSEE.js";
39
39
 
40
40
  // ../execution/compose/src/primitiveRegistry.ts
41
41
  var allCatalogs = [
@@ -89,8 +89,8 @@ function getPrimitiveText(overlay) {
89
89
  if (typeof canonical === "string" && canonical.length > 0) return canonical;
90
90
  const textParam = getPrimitiveTextParam(overlay.template);
91
91
  if (typeof textParam === "string") {
92
- const legacy = overlay.params[textParam];
93
- if (typeof legacy === "string") return legacy;
92
+ const native = overlay.params[textParam];
93
+ if (typeof native === "string") return native;
94
94
  }
95
95
  return void 0;
96
96
  }
@@ -99,8 +99,8 @@ function getPrimitiveSubtext(overlay) {
99
99
  if (typeof canonical === "string" && canonical.length > 0) return canonical;
100
100
  const subtextParam = getPrimitiveSubtextParam(overlay.template);
101
101
  if (typeof subtextParam === "string") {
102
- const legacy = overlay.params[subtextParam];
103
- if (typeof legacy === "string") return legacy;
102
+ const native = overlay.params[subtextParam];
103
+ if (typeof native === "string") return native;
104
104
  }
105
105
  return void 0;
106
106
  }
@@ -2,7 +2,7 @@ import {
2
2
  selectAllClips,
3
3
  selectAllOverlays,
4
4
  selectSceneMarkers
5
- } from "./chunk-ICSZF37W.js";
5
+ } from "./chunk-IBMJ33EL.js";
6
6
 
7
7
  // ../authoring/src/context/transcript.ts
8
8
  var MAX_TRANSCRIPT_CHARS = 6e4;