@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
@@ -3,6 +3,64 @@ function fmtClock(sec) {
3
3
  return `${Math.floor(sec / 60)}:${String(Math.floor(sec % 60)).padStart(2, "0")}`;
4
4
  }
5
5
 
6
+ // ../mcp/src/mediaContextFormat.ts
7
+ var CONTEXT_WINDOW_CAP = 6;
8
+ var CONTEXT_FACE_CAP = 3;
9
+ var CONTEXT_SAMPLE_WORDS = 24;
10
+ function formatMediaContext(json) {
11
+ const lines = [];
12
+ const dims = json?.width && json?.height ? `${json.width}\xD7${json.height}` : "unknown dimensions";
13
+ const duration = typeof json?.durationSec === "number" ? fmtClock(json.durationSec) : "unknown duration";
14
+ lines.push(`Media ${json?.mediaId ?? "?"} \u2014 ${dims}, ${duration}`);
15
+ if (json?.thumbnail?.url) lines.push(`thumbnail: ${json.thumbnail.url}`);
16
+ const windows = Array.isArray(json?.faces?.windows) ? json.faces.windows : [];
17
+ lines.push(`faces: ${json?.faces?.status ?? "unknown"} (${windows.length} source window(s))`);
18
+ for (const window of windows.slice(0, CONTEXT_WINDOW_CAP)) {
19
+ const faces = Array.isArray(window?.faces) ? window.faces : [];
20
+ const roster = faces.slice(0, CONTEXT_FACE_CAP).map((face) => {
21
+ const bbox = face?.bbox ?? {};
22
+ const box = [bbox.x, bbox.y, bbox.width, bbox.height].every((value) => typeof value === "number") ? ` bbox:${[bbox.x, bbox.y, bbox.width, bbox.height].map((n) => n.toFixed(3)).join(",")}` : "";
23
+ const speaking = typeof face?.speakingShare === "number" ? ` speaking:${Math.round(face.speakingShare * 100)}%` : "";
24
+ return `${face?.faceId ?? "?"}${box}${speaking}`;
25
+ });
26
+ lines.push(`- ${window?.window?.startSec ?? "?"}\u2192${window?.window?.endSec ?? "?"}s: ${roster.join(" | ") || "no usable subjects"}`);
27
+ }
28
+ if (windows.length > CONTEXT_WINDOW_CAP) lines.push(`- \u2026 ${windows.length - CONTEXT_WINDOW_CAP} more face windows elided`);
29
+ const transcript = json?.transcript;
30
+ const utterances = Array.isArray(transcript?.data?.utterances) ? transcript.data.utterances : Array.isArray(transcript?.data?.data) ? transcript.data.data : [];
31
+ const words = utterances.flatMap((utterance) => Array.isArray(utterance?.words) ? utterance.words : []);
32
+ const sample = words.slice(0, CONTEXT_SAMPLE_WORDS).map((word) => {
33
+ const start = typeof word?.start === "number" ? `@${word.start.toFixed(2)}s` : "";
34
+ return `${word?.word ?? word?.text ?? ""}${start}`;
35
+ }).filter(Boolean);
36
+ lines.push(`transcript: ${transcript?.status ?? "unknown"} (${utterances.length} utterance(s), ${words.length} word(s))`);
37
+ if (sample.length) lines.push(`sample: ${sample.join(" ")}`);
38
+ if (transcript?.status === "ready") {
39
+ lines.push("Use get_transcript(mediaItemId, limit, after/before) for exact paginated word timings.");
40
+ }
41
+ if (json?.beatGrid) {
42
+ const beats = Array.isArray(json.beatGrid.beatTimesMs) ? json.beatGrid.beatTimesMs : [];
43
+ lines.push(`beatGrid: ${json.beatGrid.bpm ?? "?"} bpm, ${beats.length} beats, ${json.beatGrid.method ?? "?"}${beats.length ? `; first ms: ${beats.slice(0, 12).join(",")}` : ""}`);
44
+ } else lines.push("beatGrid: none");
45
+ const wordTimes = Array.isArray(json?.wordGrid?.wordTimesMs) ? json.wordGrid.wordTimesMs : [];
46
+ lines.push(`wordGrid: ${wordTimes.length} onsets${wordTimes.length ? `; first ms: ${wordTimes.slice(0, 12).join(",")}` : ""}`);
47
+ lines.push(`audio: role=${json?.audioRole ?? "none"} envelope=${json?.envelope?.envelopeClass ?? "none"}`);
48
+ const facts = Array.isArray(json?.facts) ? json.facts : [];
49
+ const offers = Array.isArray(json?.offers) ? json.offers : [];
50
+ lines.push(`facts: ${facts.map((fact) => `${fact?.kind ?? "?"}:${fact?.status ?? "?"}`).join(", ") || "none"}`);
51
+ lines.push(`offers: ${offers.map((offer) => `${offer?.kind ?? "?"}${offer?.quotedUsd != null ? `($${offer.quotedUsd})` : ""}`).join(", ") || "none"}`);
52
+ return lines.join("\n");
53
+ }
54
+ function formatTranscriptPage(json) {
55
+ const utterances = Array.isArray(json?.data) ? json.data : Array.isArray(json?.utterances) ? json.utterances : [];
56
+ return JSON.stringify({
57
+ mediaItemId: json?.mediaItemId,
58
+ language: json?.language,
59
+ utterances,
60
+ ...json?.pagination ? { pagination: json.pagination } : {}
61
+ }, null, 2);
62
+ }
63
+
6
64
  // ../mcp/src/generated/catalogPreviews.ts
7
65
  var CATALOG_PREVIEWS = {
8
66
  "animated-bar-chart": "https://cdn.cueframe.ai/previews/animated-bar-chart@0.2.1.jpg",
@@ -112,7 +170,7 @@ ${lines.join("\n")}`;
112
170
  function formatComponentList(json) {
113
171
  const data = Array.isArray(json?.data) ? json.data : [];
114
172
  if (data.length === 0) {
115
- return "No components match. Drop a filter, or browse unfiltered (list_catalog with no args returns the whole built-in catalog).";
173
+ return "No components match. Drop a filter, or browse the default first page with list_catalog().";
116
174
  }
117
175
  const lines = data.map((e) => {
118
176
  const facets = [e.category, e.kind, e.tier].filter(Boolean).join(" \xB7 ");
@@ -121,7 +179,10 @@ function formatComponentList(json) {
121
179
  const baked = Array.isArray(e.fixedCopy) && e.fixedCopy.length ? ` [bakes fixed copy]` : "";
122
180
  return `- ${e.id} ${e.name} (${facets})${uc}${baked}${place}`;
123
181
  });
124
- const more = json?.pagination?.hasMore ? "\n\n(more \u2014 pass `after` to page)" : "";
182
+ const nextCursor = json?.pagination?.nextCursor;
183
+ const more = json?.pagination?.hasMore && typeof nextCursor === "string" ? `
184
+
185
+ (more \u2014 pass after=${JSON.stringify(nextCursor)})` : "";
125
186
  return `${data.length} component${data.length !== 1 ? "s" : ""} (recommended-tier first when filtered):
126
187
 
127
188
  ${lines.join("\n")}${more}`;
@@ -209,7 +270,10 @@ function formatComposition(json) {
209
270
  ];
210
271
  if (json?.captions) {
211
272
  const segs = json.captions.segments?.length ?? 0;
212
- const words = json.captions.words?.length ?? 0;
273
+ const words = Array.isArray(json.captions.segments) ? json.captions.segments.reduce(
274
+ (total, segment) => total + (Array.isArray(segment?.words) ? segment.words.length : 0),
275
+ 0
276
+ ) : 0;
213
277
  lines.push(`captions: ${segs} segment(s), ${words} word(s) [text elided]`);
214
278
  }
215
279
  if (Array.isArray(json?.markers) && json.markers.length) {
@@ -233,11 +297,10 @@ var CURATED_TOOLS = [
233
297
  name: "compose",
234
298
  operationId: "compose",
235
299
  pathArgs: { projectId: "id" },
236
- description: 'Start the async Director compose workflow: it authors an ensemble of full composition candidates, verifies each, and saves the winner to the project. Body must set EXACTLY ONE source (mutually exclusive): `briefId` \u2014 author FROM a persisted Brief (the PLANNED path: create_brief first; every Brief field is honored or the compose is refused loudly naming the field); `fromComposition: true` \u2014 author from the project\'s CURRENT composition (the GENERAL path: seed it with apply_composition first \u2014 your media clips are the intent, and any graphics you authored are CARRIED VERBATIM as locked clips the Director authors around, never re-authors or drops); or `suggestionId` \u2014 author from an AI clip suggestion (the CLIPPING path, paired with suggest_briefs). Returns { composeJobId, workflowId, status, streamUrl }. Then call wait_job(kind="compose", id=composeJobId, projectId=...) to block until the winner is selected.',
237
- okFormat: (j, a) => `Compose workflow started.
300
+ description: 'Start an async Director compose job: it authors an ensemble of full composition candidates, verifies each, and saves the winner to the project. Body must set EXACTLY ONE source (mutually exclusive): `briefId` \u2014 author FROM a persisted Brief (the PLANNED path: create_brief first; every Brief field is honored or the compose is refused loudly naming the field); `fromComposition: true` \u2014 author from the project\'s CURRENT composition (the GENERAL path: seed it with apply_composition first \u2014 your media clips are the intent, and any graphics you authored are CARRIED VERBATIM as locked clips the Director authors around, never re-authors or drops); or `suggestionId` \u2014 author from an AI clip suggestion (the CLIPPING path, paired with suggest_briefs). Returns { composeJobId, status, streamUrl }. Then call wait_job(kind="compose", id=composeJobId, projectId=...) to block until the winner is selected.',
301
+ okFormat: (j, a) => `Compose job started.
238
302
 
239
303
  composeJobId: ${j.composeJobId}
240
- workflowId: ${j.workflowId}
241
304
  status: ${j.status}${j.streamUrl ? `
242
305
  streamUrl: ${j.streamUrl}` : ""}
243
306
 
@@ -309,13 +372,13 @@ Call wait_job(kind="preview_frame", id="${j.jobId}") for the rendered images.`,
309
372
  name: "preview_component",
310
373
  operationId: "previewComponent",
311
374
  pathArgs: { projectId: "id" },
312
- description: 'Queue a typed preview artifact for ONE org-installed component \u2014 ASYNC: returns a jobId immediately; then wait_job(kind="preview", id=jobId). Live components return artifactKind="image" with image/png or image/jpeg still evidence; baked components return artifactKind="motion" with the SAME content-addressed video/webm VP9-alpha object the production render composites. `body.componentId` selects the component; pass `body.params` to render it with props. Compile/runtime failures land on the job terminal with sanitized author-fixable messages. Idempotent per (componentId, params, dims).',
375
+ description: 'Queue a typed preview artifact for ONE org-installed component \u2014 ASYNC: returns a jobId immediately; then wait_job(kind="preview", id=jobId). The preview and production compositor consume the same content-addressed component bundle and verified artifact contract. `body.componentId` selects the component; pass `body.params` to render it with props. Compile/runtime/capability failures land on the job terminal with sanitized author-fixable messages. Idempotent per immutable render key.',
313
376
  okFormat: (j) => `Preview job queued.
314
377
 
315
378
  jobId: ${j.jobId}
316
379
  status: ${j.status}
317
380
 
318
- Call wait_job(kind="preview", id="${j.jobId}") for the typed preview artifact (live=image, baked=motion; re-call it if it returns still-running).`,
381
+ Call wait_job(kind="preview", id="${j.jobId}") for the verified preview artifact; re-call it if it returns still-running.`,
319
382
  annotations: { idempotentHint: true }
320
383
  },
321
384
  {
@@ -373,10 +436,6 @@ Call wait_job(kind="verify", id="${j.jobId}") to block until the scores + checkp
373
436
  name: "list_briefs",
374
437
  operationId: "listBriefs",
375
438
  description: 'List briefs. DEFAULT shows human-authored briefs only; kind:"clip" shows the machine-minted clip briefs (suggest_briefs output), kind:"all" shows everything. Each carries its quote.',
376
- queryArgs: {
377
- projectId: "Scope to one project.",
378
- kind: "'authored' (default) | 'clip' | 'all'."
379
- },
380
439
  annotations: { readOnlyHint: true }
381
440
  },
382
441
  {
@@ -394,10 +453,6 @@ Call wait_job(kind="verify", id="${j.jobId}") to block until the scores + checkp
394
453
  name: "list_checkpoints",
395
454
  operationId: "listCheckpoints",
396
455
  description: "List checkpoint packets newest-first (filter with composeJobId for one run's v1\u2192vN gate history, or projectId). The version stack with per-version status + decisions IS the review history \u2014 nothing is deleted.",
397
- queryArgs: {
398
- composeJobId: "One compose run's gate history (v1\u2192vN).",
399
- projectId: "Scope to one project."
400
- },
401
456
  annotations: { readOnlyHint: true }
402
457
  },
403
458
  {
@@ -427,7 +482,8 @@ Call wait_job(kind="verify", id="${j.jobId}") to block until the scores + checkp
427
482
  {
428
483
  name: "list_catalog",
429
484
  operationId: "listCatalog",
430
- description: "DISCOVER WHAT TO BUILD WITH \u2014 list the component catalog: the FULL built-in primitive catalog (text, effects, transitions, layouts, backgrounds, and scenes: lower-third, cinematic-title, color-grade, product-launch-trailer, \u2026) PLUS your org-installed components. Use it for UTILITY furniture (captions, grades, transitions, backgrounds, scenes) and as REFERENCE CODE (get_component_source) \u2014 for BRAND or text graphics, default to authoring your OWN `kind:'card'` clip (your HTML + tokens, poster-grade typography) shelled with `applyMotionPreset`; a catalog text primitive is the quick generic fallback, not the identity path. Narrow with filters: `category` (text|effects|transitions|layouts|backgrounds|ui-blocks|scenes), `kind` (component|transition|scene), `tier` (recommended|standard|niche), `useCase` (intro|outro|full-scene|title-over-footage|transition|background|grade|emphasis|explainer|social-cut), `mood`, or free-text `q`/`intent` (e.g. intent='intro'). When any filter is set, results are recommended-tier-first. With NO `limit` the whole filtered catalog returns in one page. Each entry carries a `placement` hint = exactly how to author it via apply_composition ({kind:'overlay'|'effect', primitiveId} for built-ins; {kind:'component', componentId} for installed), `tier`/`useCase` to pick by, and `fixedCopy` (on-screen strings it BAKES that no param changes \u2014 fork via get_component_source to edit). Read cueframe://component/{id} for the full prop schema.",
485
+ defaults: { limit: 20 },
486
+ description: "DISCOVER WHAT TO BUILD WITH \u2014 list the component catalog: the built-in primitive catalog plus your org-installed components. The agent-safe default page is 20 entries; use pagination.nextCursor as `after`, or narrow with category, kind, tier, useCase, mood, q, or intent. Results are recommended-tier-first when filtered. Each entry carries the exact placement hint for apply_composition and fixedCopy warnings; use get_component_source to fork a primitive when baked copy must change. Read cueframe://component/{id} for the full prop schema.",
431
487
  okFormat: (j) => formatComponentList(j),
432
488
  annotations: { readOnlyHint: true },
433
489
  preview: {
@@ -451,7 +507,16 @@ ${j.tsxSource}`,
451
507
  name: "get_media_context",
452
508
  operationId: "getMediaContext",
453
509
  pathArgs: { mediaItemId: "id" },
454
- description: "Fetch the authoring context for a media item: detected faces (subject boxes per frame) and the transcript. Use this before composing/applying so your crop intents, captions, and timing line up with what is actually in the footage.",
510
+ description: "Fetch bounded authoring context for a media item: dimensions/thumbnail, compact face roster, transcript counts/sample, temporal grids, and fact readiness. The full transcript body is deliberately elided so this read cannot overflow MCP; follow with get_transcript for exact paginated word timings.",
511
+ okFormat: (j) => formatMediaContext(j),
512
+ annotations: { readOnlyHint: true }
513
+ },
514
+ {
515
+ name: "get_transcript",
516
+ operationId: "getMediaTranscript",
517
+ pathArgs: { mediaItemId: "id" },
518
+ description: "Read exact source-time transcript words in bounded utterance pages. Word start/end values are seconds from the source media start. Pass limit (20 recommended), then pagination.nextCursor as after; the formatter omits the unbounded fullText duplicate.",
519
+ okFormat: (j) => formatTranscriptPage(j),
455
520
  annotations: { readOnlyHint: true }
456
521
  },
457
522
  {
@@ -472,11 +537,6 @@ Poll get_media_facts(mediaItemId="${a.mediaItemId}", kind="${a.body?.kind}", sta
472
537
  name: "get_media_facts",
473
538
  operationId: "listMediaFacts",
474
539
  pathArgs: { mediaItemId: "id" },
475
- queryArgs: {
476
- kind: "Optional exact fact kind: subjectTrack | matte. Requires startSec and endSec.",
477
- startSec: "Source-window start in seconds. Send together with kind and endSec.",
478
- endSec: "Source-window end in seconds. Send together with kind and startSec."
479
- },
480
540
  description: "Read prepared subject tracks and behind-subject mattes for one media item. For an exact readiness check, pass kind + startSec + endSec together using the same SOURCE window sent to prepare_media; exact.state is pending | ready | failed | available | unavailable. Use this after prepare_media and do not call preview_frame / score_composition until the required exact fact is ready.",
481
541
  annotations: { readOnlyHint: true, idempotentHint: true }
482
542
  },
@@ -484,11 +544,6 @@ Poll get_media_facts(mediaItemId="${a.mediaItemId}", kind="${a.body?.kind}", sta
484
544
  name: "list_media",
485
545
  operationId: "listMedia",
486
546
  description: "List the media in your CueFrame library. Filter a real library with kind (video|audio|image|gif|asset|source|stock), source (upload|generated|import-url|stock), or tag \u2014 so you find YOUR footage, not e2e debris. Returns media item IDs and metadata; use an ID with get_media_context, suggest_briefs, or as a composition source.",
487
- queryArgs: {
488
- kind: "video | audio | image | gif | asset | source | stock.",
489
- source: "upload | generated | import-url | stock.",
490
- tag: "Exact tag match."
491
- },
492
547
  okFormat: (j) => formatMediaList(j),
493
548
  annotations: { readOnlyHint: true }
494
549
  },
@@ -556,12 +611,12 @@ Render it with create_render(projectId="${a.projectId}", body={ compositionId: "
556
611
  {
557
612
  name: "generate_media",
558
613
  operationId: "generateMedia",
559
- description: 'Generate one first-class Library media item from a prompt. Choose generator: text-to-video | text-to-image | image-to-video | text-to-music | text-to-speech | text-to-sfx | auto. Put aspect/duration/voice/model controls in body.style and first/last/image references in body.refs. Returns { id, status:"generating", workflowId?, estimateUsd? }; returns 402 if the estimate exceeds the per-call ceiling. Async \u2014 call wait_job(kind="media", id=mediaItemId) or use a webhook (media.completed \u2014 status rides the payload). Use the returned id like any other media item.'
614
+ description: 'Generate one first-class Library media item from a prompt. Choose generator: text-to-video | text-to-image | image-to-video | text-to-music | text-to-speech | text-to-sfx | auto. Put supported presentation controls in body.style and first/last/image references in body.refs. Returns { id, status:"generating", estimateUsd? }; returns 402 if the estimate exceeds the per-call ceiling. Async \u2014 call wait_job(kind="media", id=mediaItemId) or use a webhook (media.completed \u2014 status rides the payload). Use the returned id like any other media item.'
560
615
  },
561
616
  {
562
617
  name: "create_upload",
563
618
  operationId: "createMediaUpload",
564
- description: "Ingest a LOCAL file \u2014 bytes you hold, when there is no public URL to hand import_media (prefer import_media whenever the bytes already sit at an https URL). TWO steps: (1) this tool reserves a media row and returns { id, uploadUrl, expiresAt } \u2014 a short-lived presigned PUT URL. PUT the raw file bytes straight to uploadUrl over HTTPS with your declared Content-Type (the bytes go direct to R2, never through MCP; \u2264 ~5 GB per PUT). (2) call finalize_upload({ mediaItemId: id }) to start processing. Body: filename, contentType (allowed enum), size (bytes). Thereafter it is async exactly like import_media: poll list_media for processingStatus, or register a webhook (create_webhook on media.completed). Use the returned id with get_media_context, suggest_briefs, or as a composition source."
619
+ description: "Ingest a LOCAL file \u2014 bytes you hold, when there is no public URL to hand import_media (prefer import_media whenever the bytes already sit at an https URL). TWO steps: (1) this tool reserves a media item and returns { id, uploadUrl, expiresAt } \u2014 a short-lived PUT URL. PUT the raw file bytes to uploadUrl over HTTPS with your declared Content-Type (\u2264 ~5 GB per PUT). (2) call finalize_upload({ mediaItemId: id }) to start processing. Body: filename, contentType (allowed enum), size (bytes). Thereafter it is async exactly like import_media: poll list_media for processingStatus, or register a webhook (create_webhook on media.completed). Use the returned id with get_media_context, suggest_briefs, or as a composition source."
565
620
  },
566
621
  {
567
622
  name: "finalize_upload",
@@ -572,10 +627,10 @@ Render it with create_render(projectId="${a.projectId}", body={ compositionId: "
572
627
  {
573
628
  name: "search_resources",
574
629
  operationId: "searchResources",
575
- description: "Search licensed STOCK media to compose with \u2014 video/photo (Pexels + Pixabay fallback), sfx (Freesound, CC0-only), gif (Klipy). Pass query for ONE search, or queries[] (\u226410) to run them all in a SINGLE call \u2014 strongly prefer the batch when you know several things you need (a 64-search session spent 5m10s on serial round-trips). A batch returns results[], one per query in order, each with its own candidates; a query that fails carries an error and never discards the others. Optional kind [default video], provider pin, limit \u226450 apply to every query in the batch. Returns ranked candidates, each with an opaque candidateId + attribution (author, assetUrl) + license, and a preview URL in the text. FREE + rate-limited + 7-day cached \u2014 reach for this before generate_media when real footage beats synthesis. TO SEE the candidates rather than read about them, pass limit \u22652: thumbnails/audio are attached only when you asked for options to compare, because a preview of a single forced choice is pure cost. Import a chosen candidate into a project with import_resource. Candidates expire after 7 days (re-search to refresh a candidateId).",
630
+ description: "Search licensed stock media to compose with across video, photo, sound effects, and GIFs. Pass query for ONE search, or queries[] (\u226410) to run them all in a SINGLE call \u2014 strongly prefer the batch when you know several things you need. A batch returns results[], one per query in order, each with its own candidates; a query that fails carries an error and never discards the others. Optional kind [default video], provider pin, and limit \u226450 apply to every query in the batch. Returns ranked candidates, each with an opaque candidateId + attribution (author, assetUrl) + license, and a preview URL in the text. FREE + rate-limited + cached \u2014 reach for this before generate_media when real footage beats synthesis. TO SEE the candidates rather than read about them, pass limit \u22652: thumbnails/audio are attached only when you asked for options to compare. Import a chosen candidate into a project with import_resource. Candidate handles expire; re-search to refresh one.",
576
631
  okFormat: (j) => formatResourceCandidates(j),
577
632
  preview: {
578
- urls: (j) => (Array.isArray(j?.results) ? j.results.flatMap((r) => Array.isArray(r?.candidates) ? r.candidates : []) : Array.isArray(j?.candidates) ? j.candidates : []).map((c) => c?.previewUrl),
633
+ urls: (j) => (Array.isArray(j?.results) ? j.results.flatMap((r) => Array.isArray(r?.candidates) ? r.candidates : []) : Array.isArray(j?.candidates) ? j.candidates : []).map((c) => (j?.kind ?? j?.results?.[0]?.kind) === "sfx" ? c?.previewUrl : c?.thumbnail),
579
634
  kind: (j) => (j?.kind ?? j?.results?.[0]?.kind) === "sfx" ? "audio" : "image",
580
635
  cap: 12,
581
636
  attach: (j) => Array.isArray(j?.results) ? true : (Array.isArray(j?.candidates) ? j.candidates.length : 0) > 1
@@ -598,7 +653,7 @@ Render it with create_render(projectId="${a.projectId}", body={ compositionId: "
598
653
  name: "suggest_briefs",
599
654
  operationId: "suggestBriefs",
600
655
  pathArgs: { mediaItemId: "id" },
601
- description: `Run AI clip-suggestion analysis on a long-form media item \u2014 the CLIPPING path (find the best short-form moments). Returns { workflowId, status }; then wait_job(kind="suggestions", id=mediaItemId) \u2014 its terminal lists each suggestion WITH its briefId. When the media belongs to a PROJECT, each finalized suggestion is promoted to a kind-'clip' BRIEF (its window pinned as a beat) \u2014 list_briefs {kind:"clip"} shows them and compose({ briefId }) runs the flagship path from one. Project-less media: pass the suggestion id to compose({ suggestionId }) directly. Clipping is a vertical, NOT the general path.`
656
+ description: `Run AI clip-suggestion analysis on a long-form media item \u2014 the CLIPPING path (find the best short-form moments). Returns { status, alreadyRunning? }; then wait_job(kind="suggestions", id=mediaItemId) \u2014 its terminal lists each suggestion WITH its briefId. When the media belongs to a PROJECT, each finalized suggestion is promoted to a kind-'clip' BRIEF (its window pinned as a beat) \u2014 list_briefs {kind:"clip"} shows them and compose({ briefId }) runs the flagship path from one. Project-less media: pass the suggestion id to compose({ suggestionId }) directly. Clipping is a vertical, NOT the general path.`
602
657
  },
603
658
  {
604
659
  name: "create_webhook",
@@ -733,12 +788,6 @@ Render it with create_render(projectId="${a.projectId}", body={ compositionId: "
733
788
  name: "get_usage",
734
789
  operationId: "getUsage",
735
790
  description: `The A2 usage ledger: every metered billing event newest-first with attribution \u2014 featureId, amount, the project/job that produced it, and the event's LIST price in USD (a plan allowance may zero it on the invoice). Answer "what did project X cost this period?" with a query instead of summing your own quotes. Filter by projectId, jobId, and/or a [from, to) epoch-ms window. Requires the billing:read scope.`,
736
- queryArgs: {
737
- projectId: "Scope to one project.",
738
- jobId: "One job/render/compose/media id.",
739
- from: "Period start, epoch-ms (inclusive).",
740
- to: "Period end, epoch-ms (exclusive)."
741
- },
742
791
  annotations: { readOnlyHint: true }
743
792
  },
744
793
  {
@@ -911,6 +960,8 @@ var CRUD_COVERAGE = [
911
960
  ];
912
961
 
913
962
  export {
963
+ formatMediaContext,
964
+ formatTranscriptPage,
914
965
  formatMediaList,
915
966
  formatComponentList,
916
967
  formatResourceCandidates,
@@ -0,0 +1,109 @@
1
+ // ../execution/primitives/src/lib/schema.ts
2
+ import { z } from "zod";
3
+ function zodToJsonSchemaFor(schema, _name) {
4
+ return z.toJSONSchema(schema, {
5
+ target: "draft-7",
6
+ io: "input",
7
+ reused: "inline"
8
+ });
9
+ }
10
+ function zodToDefaults(schema) {
11
+ if (!(schema instanceof z.ZodObject)) {
12
+ return {};
13
+ }
14
+ const out = {};
15
+ for (const [key, field] of Object.entries(schema.shape)) {
16
+ const parsed = field.safeParse(void 0);
17
+ if (parsed.success && parsed.data !== void 0) {
18
+ out[key] = parsed.data;
19
+ continue;
20
+ }
21
+ if (field instanceof z.ZodObject) {
22
+ const nested = zodToDefaults(field);
23
+ if (Object.keys(nested).length > 0) {
24
+ out[key] = nested;
25
+ }
26
+ }
27
+ }
28
+ return out;
29
+ }
30
+ function zodToControls(schema) {
31
+ if (!(schema instanceof z.ZodObject)) return [];
32
+ const controls = [];
33
+ for (const [name, field] of Object.entries(schema.shape)) {
34
+ const control = fieldToControl(name, field);
35
+ if (control) controls.push(control);
36
+ }
37
+ return controls;
38
+ }
39
+ function fieldToControl(name, field) {
40
+ let current = field;
41
+ let required = true;
42
+ let defaultValue;
43
+ while (true) {
44
+ if (current instanceof z.ZodOptional) {
45
+ required = false;
46
+ current = current.unwrap();
47
+ continue;
48
+ }
49
+ if (current instanceof z.ZodDefault) {
50
+ required = false;
51
+ const parsed = current.safeParse(void 0);
52
+ if (parsed.success) defaultValue = parsed.data;
53
+ current = current.unwrap();
54
+ continue;
55
+ }
56
+ break;
57
+ }
58
+ const description = current.description;
59
+ const label = humanize(name);
60
+ if (current instanceof z.ZodString) {
61
+ const looksLikeColor = /color|colour|hex/i.test(name);
62
+ return {
63
+ name,
64
+ label,
65
+ description,
66
+ type: looksLikeColor ? "color" : "string",
67
+ defaultValue,
68
+ required
69
+ };
70
+ }
71
+ if (current instanceof z.ZodNumber) {
72
+ const min = current.minValue ?? void 0;
73
+ const max = current.maxValue ?? void 0;
74
+ const step = inferStep(min, max);
75
+ return { name, label, description, type: "number", defaultValue, min, max, step, required };
76
+ }
77
+ if (current instanceof z.ZodBoolean) {
78
+ return { name, label, description, type: "boolean", defaultValue, required };
79
+ }
80
+ if (current instanceof z.ZodEnum) {
81
+ return {
82
+ name,
83
+ label,
84
+ description,
85
+ type: "select",
86
+ defaultValue,
87
+ options: current.options.filter((value) => typeof value === "string"),
88
+ required
89
+ };
90
+ }
91
+ return null;
92
+ }
93
+ function humanize(name) {
94
+ return name.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").replace(/\s+/g, " ").trim().replace(/^./, (c) => c.toUpperCase());
95
+ }
96
+ function inferStep(min, max) {
97
+ if (min === void 0 || max === void 0) return 1;
98
+ const range = max - min;
99
+ if (range <= 1) return 0.01;
100
+ if (range <= 10) return 0.1;
101
+ if (range <= 100) return 1;
102
+ return Math.max(1, Math.round(range / 100));
103
+ }
104
+
105
+ export {
106
+ zodToJsonSchemaFor,
107
+ zodToDefaults,
108
+ zodToControls
109
+ };
@@ -1,7 +1,3 @@
1
- import {
2
- multipartUpload
3
- } from "./chunk-EP2Y6M2J.js";
4
- import "./chunk-6IU2UQI5.js";
5
1
  import "./chunk-2ESYSVXG.js";
6
2
 
7
3
  // ../cloud-import/src/ImportProvider.tsx
@@ -10,62 +6,12 @@ import { UppyContextProvider } from "@uppy/react";
10
6
 
11
7
  // ../cloud-import/src/CloudImportService.ts
12
8
  import Uppy from "@uppy/core";
13
- import AwsS3 from "@uppy/aws-s3";
14
-
15
- // ../cloud-import/src/MediaItemPreprocessor.ts
16
- import { BasePlugin } from "@uppy/core";
17
- var MediaItemPreprocessor = class _MediaItemPreprocessor extends BasePlugin {
18
- static pluginId = "MediaItemPreprocessor";
19
- createFn = null;
20
- preprocessBound;
21
- constructor(uppy, opts) {
22
- super(uppy, opts ?? {});
23
- this.id = _MediaItemPreprocessor.pluginId;
24
- this.type = "preprocessor";
25
- this.preprocessBound = this.preprocess.bind(this);
26
- }
27
- setCreateFn(fn) {
28
- this.createFn = fn;
29
- }
30
- install() {
31
- this.uppy.addPreProcessor(this.preprocessBound);
32
- }
33
- uninstall() {
34
- this.uppy.removePreProcessor(this.preprocessBound);
35
- }
36
- async preprocess(fileIDs) {
37
- if (!this.createFn) return;
38
- for (const fileID of fileIDs) {
39
- const file = this.uppy.getFile(fileID);
40
- if (!file) continue;
41
- if (file.meta.convexMediaItemId) continue;
42
- this.uppy.emit("preprocess-progress", file, {
43
- mode: "indeterminate",
44
- message: "Preparing upload\u2026"
45
- });
46
- try {
47
- const mediaItemId = await this.createFn({
48
- name: file.name ?? "unknown",
49
- size: file.size ?? 0,
50
- mimeType: file.type ?? "video/mp4"
51
- });
52
- this.uppy.setFileMeta(fileID, { convexMediaItemId: mediaItemId });
53
- } catch (err) {
54
- this.uppy.log(`[MediaItemPreprocessor] Failed for ${fileID}: ${err}`, "error");
55
- }
56
- this.uppy.emit("preprocess-complete", file);
57
- }
58
- }
59
- };
60
-
61
- // ../cloud-import/src/CloudImportService.ts
62
9
  var CloudImportService = class {
63
10
  uppy = null;
64
11
  config = null;
65
12
  init(config) {
66
13
  if (this.uppy) return this.uppy;
67
14
  this.config = config;
68
- const signingUrl = this.config.uploadSigningUrl.replace(/\/$/, "");
69
15
  const createUppy = Uppy;
70
16
  const uppy = new createUppy({
71
17
  id: "cloud-import",
@@ -73,14 +19,23 @@ var CloudImportService = class {
73
19
  allowedFileTypes: ["video/*", "audio/*"]
74
20
  }
75
21
  });
76
- const plugins = uppy;
77
- plugins.use(AwsS3, {
78
- endpoint: signingUrl,
79
- shouldUseMultipart: true,
80
- limit: 3,
81
- retryDelays: [1e3, 3e3, 5e3, 1e4]
22
+ const uploadFile = this.config.uploadFile;
23
+ uppy.addUploader(async (ids) => {
24
+ for (const id of ids) {
25
+ const file = uppy.getFile(id);
26
+ if (!file) continue;
27
+ try {
28
+ const uploadURL = await uploadFile(file.data, (fraction) => {
29
+ uppy.emit("upload-progress", file, { uploadStarted: Date.now(), bytesUploaded: Math.round((file.size ?? 0) * fraction), bytesTotal: file.size ?? 0 });
30
+ });
31
+ uppy.setFileState(id, { response: { status: 200, body: {}, uploadURL } });
32
+ uppy.emit("upload-success", file, { status: 200, body: {}, uploadURL });
33
+ } catch (error) {
34
+ uppy.emit("upload-error", file, error instanceof Error ? error : new Error(String(error)));
35
+ throw error;
36
+ }
37
+ }
82
38
  });
83
- plugins.use(MediaItemPreprocessor);
84
39
  this.uppy = uppy;
85
40
  return this.uppy;
86
41
  }
@@ -88,18 +43,6 @@ var CloudImportService = class {
88
43
  if (!this.uppy) throw new Error("CloudImportService not initialized \u2014 call init() first");
89
44
  return this.uppy;
90
45
  }
91
- getPreprocessor() {
92
- return this.getUppy().getPlugin(MediaItemPreprocessor.pluginId);
93
- }
94
- setMeta(meta) {
95
- this.uppy?.setMeta(meta);
96
- if (meta.uploadToken) {
97
- const plugin = this.uppy?.getPlugin("AwsS3Multipart");
98
- if (plugin) {
99
- plugin.setOptions({ headers: { "uppy-auth-token": meta.uploadToken } });
100
- }
101
- }
102
- }
103
46
  };
104
47
  var cloudImportService = new CloudImportService();
105
48
 
@@ -109,9 +52,7 @@ function ImportProvider({
109
52
  children,
110
53
  available,
111
54
  dialogSlot,
112
- uploadSigningUrl,
113
- getUploadMeta,
114
- createMediaItem,
55
+ uploadFile,
115
56
  onUploadComplete,
116
57
  onError
117
58
  }) {
@@ -120,7 +61,7 @@ function ImportProvider({
120
61
  const onErrorRef = useRef(onError);
121
62
  onCompleteRef.current = onUploadComplete;
122
63
  onErrorRef.current = onError;
123
- const [uppy] = useState(() => cloudImportService.init({ uploadSigningUrl }));
64
+ const [uppy] = useState(() => cloudImportService.init({ uploadFile }));
124
65
  useEffect(() => {
125
66
  const handleComplete = (result) => {
126
67
  const successful = result?.successful ?? [];
@@ -144,25 +85,9 @@ function ImportProvider({
144
85
  uppy.off("error", handleError);
145
86
  };
146
87
  }, [uppy]);
147
- useEffect(() => {
148
- try {
149
- const preprocessor = cloudImportService.getPreprocessor();
150
- preprocessor.setCreateFn(createMediaItem ?? null);
151
- } catch {
152
- }
153
- }, [createMediaItem]);
154
- const openModal = useCallback(async () => {
155
- if (getUploadMeta) {
156
- try {
157
- const meta = await getUploadMeta();
158
- cloudImportService.setMeta(meta);
159
- } catch (err) {
160
- console.error("[Import] Failed to get upload metadata:", err);
161
- return;
162
- }
163
- }
88
+ const openModal = useCallback(() => {
164
89
  setIsOpen(true);
165
- }, [getUploadMeta]);
90
+ }, []);
166
91
  const closeModal = useCallback(() => {
167
92
  setIsOpen(false);
168
93
  }, []);
@@ -179,20 +104,6 @@ function useImportIfAvailable() {
179
104
  }
180
105
 
181
106
  // ../cloud-import/src/cloudConfig.ts
182
- var ENVIRONMENTS = {
183
- dev: {
184
- convexUrl: "https://api-dev.cueframe.ai",
185
- uploadSigningUrl: "http://localhost:8787"
186
- },
187
- staging: {
188
- convexUrl: "https://api-dev.cueframe.ai",
189
- uploadSigningUrl: "https://upload-signing.cueframelabs.workers.dev"
190
- },
191
- production: {
192
- convexUrl: "https://api.cueframe.ai",
193
- uploadSigningUrl: "https://upload.cueframe.ai"
194
- }
195
- };
196
107
  function detectEnvironment(convexUrl) {
197
108
  if (!convexUrl) return "dev";
198
109
  if (/\b(api-dev|data-dev)\.cueframe\.ai/.test(convexUrl)) return "staging";
@@ -201,10 +112,6 @@ function detectEnvironment(convexUrl) {
201
112
  if (/\bexample-prod\.convex\.(cloud|site)/.test(convexUrl)) return "production";
202
113
  return "dev";
203
114
  }
204
- function getEndpoints(convexUrl) {
205
- const env = detectEnvironment(convexUrl);
206
- return ENVIRONMENTS[env];
207
- }
208
115
 
209
116
  // ../cloud-import/src/index.ts
210
117
  import {
@@ -213,12 +120,9 @@ import {
213
120
  useUppyEvent
214
121
  } from "@uppy/react";
215
122
  export {
216
- ENVIRONMENTS,
217
123
  ImportProvider,
218
124
  cloudImportService,
219
125
  detectEnvironment,
220
- getEndpoints,
221
- multipartUpload,
222
126
  useDropzone,
223
127
  useImport,
224
128
  useImportIfAvailable,
@@ -0,0 +1 @@
1
+ export * from "../_members/component-runtime/browserOptions.js";
@@ -0,0 +1,7 @@
1
+ import {
2
+ COMPONENT_CHROMIUM_OPTIONS
3
+ } from "../chunk-CGHTMZNC.js";
4
+ import "../chunk-2ESYSVXG.js";
5
+ export {
6
+ COMPONENT_CHROMIUM_OPTIONS
7
+ };
@@ -0,0 +1 @@
1
+ export * from "../_members/component-runtime/contracts.js";
@@ -0,0 +1,49 @@
1
+ import {
2
+ CANVAS2D_COMPONENT_MANIFEST_V2,
3
+ COMPONENT_BUNDLE_VERSION,
4
+ COMPONENT_RECEIPT_VERSION,
5
+ COMPONENT_RUNTIME_ERROR_CODES,
6
+ COMPONENT_SOURCE_VERSION,
7
+ ComponentAssetBindingV2,
8
+ ComponentAssetDeclarationV2,
9
+ ComponentAssetFileV2,
10
+ ComponentAssetInputV2,
11
+ ComponentAssetKind,
12
+ ComponentBakeJobV2,
13
+ ComponentBakeRequestV2,
14
+ ComponentBundleV2,
15
+ ComponentGraphicsActualV2,
16
+ ComponentGraphicsRequirementV2,
17
+ ComponentManifestV2,
18
+ ComponentRenderReceiptV2,
19
+ ComponentRenderRequestV2,
20
+ ComponentRuntimeError,
21
+ ComponentRuntimeErrorCode,
22
+ ComponentSourceV2,
23
+ assertGraphicsReceiptMatches
24
+ } from "../chunk-LQUWKBST.js";
25
+ import "../chunk-2ESYSVXG.js";
26
+ export {
27
+ CANVAS2D_COMPONENT_MANIFEST_V2,
28
+ COMPONENT_BUNDLE_VERSION,
29
+ COMPONENT_RECEIPT_VERSION,
30
+ COMPONENT_RUNTIME_ERROR_CODES,
31
+ COMPONENT_SOURCE_VERSION,
32
+ ComponentAssetBindingV2,
33
+ ComponentAssetDeclarationV2,
34
+ ComponentAssetFileV2,
35
+ ComponentAssetInputV2,
36
+ ComponentAssetKind,
37
+ ComponentBakeJobV2,
38
+ ComponentBakeRequestV2,
39
+ ComponentBundleV2,
40
+ ComponentGraphicsActualV2,
41
+ ComponentGraphicsRequirementV2,
42
+ ComponentManifestV2,
43
+ ComponentRenderReceiptV2,
44
+ ComponentRenderRequestV2,
45
+ ComponentRuntimeError,
46
+ ComponentRuntimeErrorCode,
47
+ ComponentSourceV2,
48
+ assertGraphicsReceiptMatches
49
+ };
@@ -0,0 +1 @@
1
+ export * from "../../_members/component-runtime/browserIdentity.js";