@cueframe/kernel 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/dist/_members/account-model/validators/contextFile.d.ts +3 -21
  2. package/dist/_members/account-model/validators/conversation.d.ts +12 -42
  3. package/dist/_members/account-model/validators/dashboardInsight.d.ts +3 -17
  4. package/dist/_members/account-model/validators/sessionToken.d.ts +10 -36
  5. package/dist/_members/account-model/validators/uploadToken.d.ts +11 -21
  6. package/dist/_members/account-model/validators/userSettings.d.ts +3 -13
  7. package/dist/_members/account-model/validators/workingComposition.d.ts +3 -19
  8. package/dist/_members/authoring/capabilities.d.ts +0 -9
  9. package/dist/_members/authoring/index.d.ts +1 -1
  10. package/dist/_members/authoring/models/defaultModels.d.ts +12 -0
  11. package/dist/_members/authoring/models/modelFactory.d.ts +1 -0
  12. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +1 -7
  13. package/dist/_members/authoring/types.d.ts +0 -1
  14. package/dist/_members/component-runtime/assetServer.d.ts +18 -0
  15. package/dist/_members/component-runtime/assetServer.d.ts.map +1 -0
  16. package/dist/_members/component-runtime/bake.d.ts +12 -0
  17. package/dist/_members/component-runtime/bake.d.ts.map +1 -0
  18. package/dist/_members/component-runtime/browserFirewall.d.ts +21 -0
  19. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -0
  20. package/dist/_members/component-runtime/browserIdentity.d.ts +14 -0
  21. package/dist/_members/component-runtime/browserIdentity.d.ts.map +1 -0
  22. package/dist/_members/component-runtime/browserOptions.d.ts +8 -0
  23. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -0
  24. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  25. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -0
  26. package/dist/_members/component-runtime/contracts.d.ts +443 -0
  27. package/dist/_members/component-runtime/contracts.d.ts.map +1 -0
  28. package/dist/_members/component-runtime/determinism.d.ts +18 -0
  29. package/dist/_members/component-runtime/determinism.d.ts.map +1 -0
  30. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +9 -0
  31. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +1 -0
  32. package/dist/_members/component-runtime/identity.d.ts +16 -0
  33. package/dist/_members/component-runtime/identity.d.ts.map +1 -0
  34. package/dist/_members/component-runtime/importPolicy.d.ts +3 -0
  35. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -0
  36. package/dist/_members/component-runtime/index.d.ts +11 -0
  37. package/dist/_members/component-runtime/index.d.ts.map +1 -0
  38. package/dist/_members/component-runtime/outputVerifier.d.ts +29 -0
  39. package/dist/_members/component-runtime/outputVerifier.d.ts.map +1 -0
  40. package/dist/_members/{render-harness/localRender.d.ts → component-runtime/render.d.ts} +22 -15
  41. package/dist/_members/component-runtime/render.d.ts.map +1 -0
  42. package/dist/_members/component-runtime/sourceWorkspace.d.ts +10 -0
  43. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -0
  44. package/dist/_members/compose/index.d.ts +0 -5
  45. package/dist/_members/composition/graphics-plan/schemas.d.ts +299 -1309
  46. package/dist/_members/composition/primitive-catalog/index.d.ts +2 -2
  47. package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -14
  48. package/dist/_members/composition/reframe/index.d.ts +56 -528
  49. package/dist/_members/composition/validators/brandKit.d.ts +247 -1208
  50. package/dist/_members/composition/validators/composePlan.d.ts +106 -818
  51. package/dist/_members/composition/validators/composition.d.ts +1338 -5856
  52. package/dist/_members/composition/validators/font.d.ts +35 -91
  53. package/dist/_members/composition/validators/project.d.ts +15 -46
  54. package/dist/_members/composition/validators/registry.d.ts +53 -135
  55. package/dist/_members/composition/validators/render.d.ts +803 -7273
  56. package/dist/_members/composition/validators/session.d.ts +38 -76
  57. package/dist/_members/composition/validators/webhook.d.ts +23 -50
  58. package/dist/_members/composition-ops/alphaLayers.d.ts +3 -2
  59. package/dist/_members/composition-ops/index.d.ts +409 -4309
  60. package/dist/_members/core/render/compositionAudioAndDepth.d.ts +6 -0
  61. package/dist/_members/core/render/compositionRender.d.ts +3 -4
  62. package/dist/_members/core/render/compositionValidation.d.ts +4 -0
  63. package/dist/_members/core/render/index.d.ts +2 -2
  64. package/dist/_members/core/render/types.d.ts +16 -8
  65. package/dist/_members/director/ai-sdk/messages.d.ts +67 -217
  66. package/dist/_members/director/domain/chat.d.ts +70 -293
  67. package/dist/_members/director/testing/contract.d.ts +11 -11
  68. package/dist/_members/errors/registry.d.ts +189 -3
  69. package/dist/_members/foundation/primitives/index.d.ts +1 -1
  70. package/dist/_members/mcp/adapter.d.ts +3 -0
  71. package/dist/_members/mcp/burnedNames.d.ts +0 -1
  72. package/dist/_members/mcp/core.d.ts +6 -3
  73. package/dist/_members/mcp/curation.d.ts +3 -38
  74. package/dist/_members/mcp/curationTypes.d.ts +34 -0
  75. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  76. package/dist/_members/mcp/generated/operations.d.ts +10 -0
  77. package/dist/_members/mcp/main.d.ts +1 -0
  78. package/dist/_members/mcp/mediaContextFormat.d.ts +4 -0
  79. package/dist/_members/mcp/prompts.d.ts +1 -1
  80. package/dist/_members/mcp/query.d.ts +4 -0
  81. package/dist/_members/mcp/resources.d.ts +1 -1
  82. package/dist/_members/mcp/server.d.ts +1 -2
  83. package/dist/_members/mcp/wireSchema.d.ts +13 -0
  84. package/dist/_members/media-model/api.d.ts +114 -662
  85. package/dist/_members/media-model/generation.d.ts +141 -228
  86. package/dist/_members/plane/contract.d.ts +16 -19
  87. package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +3 -27
  88. package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +2 -26
  89. package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +1 -17
  90. package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +6 -14
  91. package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +1 -11
  92. package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +1 -21
  93. package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +2 -12
  94. package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +2 -26
  95. package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +2 -22
  96. package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +1 -17
  97. package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +1 -19
  98. package/dist/_members/primitives/effects/blur/config.d.ts +5 -14
  99. package/dist/_members/primitives/effects/color-grade/config.d.ts +10 -18
  100. package/dist/_members/primitives/effects/grain/config.d.ts +9 -12
  101. package/dist/_members/primitives/effects/parallax/config.d.ts +8 -12
  102. package/dist/_members/primitives/effects/particles/config.d.ts +9 -20
  103. package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +1 -13
  104. package/dist/_members/primitives/effects/spotlight-card/config.d.ts +1 -25
  105. package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +1 -15
  106. package/dist/_members/primitives/effects/success-confetti/config.d.ts +2 -26
  107. package/dist/_members/primitives/effects/vignette/config.d.ts +5 -12
  108. package/dist/_members/primitives/hero-text/config.d.ts +9 -24
  109. package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +1 -11
  110. package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +1 -9
  111. package/dist/_members/primitives/layouts/letterbox/config.d.ts +1 -9
  112. package/dist/_members/primitives/layouts/photo-grid/config.d.ts +2 -12
  113. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +7 -12
  114. package/dist/_members/primitives/layouts/split-screen/config.d.ts +1 -7
  115. package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +3 -51
  116. package/dist/_members/primitives/lib/schema.d.ts +1 -1
  117. package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +7 -24
  118. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +5 -14
  119. package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +1 -7
  120. package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +1 -7
  121. package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +2 -12
  122. package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +1 -19
  123. package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +1 -11
  124. package/dist/_members/primitives/text/blur-reveal/config.d.ts +1 -17
  125. package/dist/_members/primitives/text/cinematic-title/config.d.ts +13 -73
  126. package/dist/_members/primitives/text/inline-highlight/config.d.ts +1 -21
  127. package/dist/_members/primitives/text/karaoke/config.d.ts +10 -93
  128. package/dist/_members/primitives/text/kinetic-type/config.d.ts +14 -49
  129. package/dist/_members/primitives/text/lower-third/config.d.ts +8 -70
  130. package/dist/_members/primitives/text/marker-highlight/config.d.ts +1 -23
  131. package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +1 -17
  132. package/dist/_members/primitives/text/matrix-decode/config.d.ts +1 -19
  133. package/dist/_members/primitives/text/quote-card/config.d.ts +1 -11
  134. package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +1 -23
  135. package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +1 -17
  136. package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +1 -17
  137. package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +2 -24
  138. package/dist/_members/primitives/text/stat-counter/config.d.ts +6 -20
  139. package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +1 -19
  140. package/dist/_members/primitives/text/text-effect/config.d.ts +10 -15
  141. package/dist/_members/primitives/text/text-fade-replace/config.d.ts +1 -17
  142. package/dist/_members/primitives/text/token-stream/config.d.ts +1 -11
  143. package/dist/_members/primitives/text/tracking-in/config.d.ts +1 -19
  144. package/dist/_members/primitives/text/typewriter/config.d.ts +1 -21
  145. package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +5 -8
  146. package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +1 -21
  147. package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +7 -6
  148. package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +1 -5
  149. package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +1 -7
  150. package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +6 -12
  151. package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +7 -8
  152. package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +1 -7
  153. package/dist/_members/primitives/transitions/light-leak/config.d.ts +1 -7
  154. package/dist/_members/primitives/transitions/luma-matte/config.d.ts +6 -6
  155. package/dist/_members/primitives/transitions/morph/config.d.ts +5 -6
  156. package/dist/_members/primitives/transitions/spatial-push/config.d.ts +7 -6
  157. package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +5 -10
  158. package/dist/_members/primitives/transitions/zoom-through/config.d.ts +2 -30
  159. package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +1 -13
  160. package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +1 -29
  161. package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +1 -11
  162. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +8 -16
  163. package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +1 -11
  164. package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +3 -73
  165. package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +1 -15
  166. package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +1 -7
  167. package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +1 -21
  168. package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +1 -15
  169. package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +2 -26
  170. package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +1 -13
  171. package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +2 -66
  172. package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +1 -9
  173. package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +3 -97
  174. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +5 -14
  175. package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +1 -13
  176. package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +2 -36
  177. package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +1 -23
  178. package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +3 -113
  179. package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +2 -34
  180. package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +3 -113
  181. package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +1 -9
  182. package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +6 -37
  183. package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +2 -12
  184. package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +2 -54
  185. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +9 -48
  186. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +7 -20
  187. package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +2 -42
  188. package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +1 -19
  189. package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +3 -71
  190. package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +5 -14
  191. package/dist/_members/primitives/workspace.d.ts +1 -5
  192. package/dist/_members/render-harness/cardAssetAdmission.d.ts +3 -0
  193. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -0
  194. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  195. package/dist/_members/render-harness/index.d.ts +1 -5
  196. package/dist/_members/render-harness/index.d.ts.map +1 -1
  197. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  198. package/dist/_members/render-harness/remotion-runtime.d.ts +20 -0
  199. package/dist/_members/render-harness/renderInputAssets.d.ts +2 -1
  200. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  201. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  202. package/dist/authoring/build-tools.js +8 -8
  203. package/dist/authoring/context.js +5 -5
  204. package/dist/authoring/models.js +3 -1
  205. package/dist/authoring/resource-routing.js +1 -1
  206. package/dist/authoring/resources.js +1 -1
  207. package/dist/authoring/tools.js +7 -7
  208. package/dist/authoring.js +15 -31
  209. package/dist/{chunk-R5BMJ2NX.js → chunk-4FOOBSEE.js} +33 -2
  210. package/dist/{chunk-YXEZ75MB.js → chunk-4JRUGT2Y.js} +43 -108
  211. package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
  212. package/dist/chunk-5OTQ7M43.js +718 -0
  213. package/dist/{chunk-O7GNE4BQ.js → chunk-6ID2J64H.js} +4 -4
  214. package/dist/{chunk-RXCEPCAQ.js → chunk-6XI57FZZ.js} +280 -191
  215. package/dist/{chunk-2SNY75AR.js → chunk-7KEUL3FI.js} +4 -2
  216. package/dist/{chunk-WTT3GGCA.js → chunk-AD5HWBCE.js} +1 -1
  217. package/dist/{chunk-JY26PIRP.js → chunk-C5SEPOWD.js} +163 -171
  218. package/dist/chunk-CGHTMZNC.js +6 -0
  219. package/dist/chunk-DHKQ47Q6.js +57 -0
  220. package/dist/{chunk-3PM6VICZ.js → chunk-DQKSCHFC.js} +4 -4
  221. package/dist/{chunk-D6S3ZKIY.js → chunk-EEXCDFY5.js} +1 -1
  222. package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
  223. package/dist/{chunk-ZBRPF6GV.js → chunk-GEGRJKKO.js} +1 -1
  224. package/dist/chunk-HHFDHJ3I.js +392 -0
  225. package/dist/{chunk-JRIPQ7DN.js → chunk-IBMJ33EL.js} +3 -3
  226. package/dist/{chunk-JTVFIN6H.js → chunk-IHFREGFA.js} +10 -4
  227. package/dist/chunk-IJ7PVJTK.js +114 -0
  228. package/dist/{chunk-6ABIXGLO.js → chunk-KKEY5MIW.js} +8 -8
  229. package/dist/{chunk-7TQCR7AB.js → chunk-LNBVTDFR.js} +1 -1
  230. package/dist/chunk-LQUWKBST.js +195 -0
  231. package/dist/chunk-M2TLRXEO.js +41 -0
  232. package/dist/{chunk-7V3F5HO4.js → chunk-NOEBAV2G.js} +58 -2
  233. package/dist/{chunk-RQ2G4DXI.js → chunk-QBKDEO7J.js} +1502 -1314
  234. package/dist/chunk-RFXR7ATW.js +244 -0
  235. package/dist/chunk-SIAXP3ZO.js +131 -0
  236. package/dist/{chunk-MCBUX5XV.js → chunk-SLN5UKLT.js} +2 -2
  237. package/dist/{chunk-GH27OS5S.js → chunk-VCBLGZQQ.js} +19 -4
  238. package/dist/{chunk-TLVPDT4R.js → chunk-XHUYWVYK.js} +1 -1
  239. package/dist/{chunk-D2EGO543.js → chunk-XVBOSPZI.js} +15 -17
  240. package/dist/{chunk-YE3F4LNJ.js → chunk-Y3QGYASW.js} +18 -18
  241. package/dist/{chunk-LSP4HN5N.js → chunk-ZCAQHNPI.js} +1 -1
  242. package/dist/{chunk-PJ4R4N4Q.js → chunk-ZN6P3KOJ.js} +70 -93
  243. package/dist/chunk-ZZRBKGDA.js +109 -0
  244. package/dist/component-runtime/browserOptions.d.ts +1 -0
  245. package/dist/component-runtime/browserOptions.js +7 -0
  246. package/dist/component-runtime/contracts.d.ts +1 -0
  247. package/dist/component-runtime/contracts.js +49 -0
  248. package/dist/component-runtime/identity/browser.d.ts +1 -0
  249. package/dist/component-runtime/identity/browser.js +35 -0
  250. package/dist/component-runtime/identity.d.ts +1 -0
  251. package/dist/component-runtime/identity.js +21 -0
  252. package/dist/component-runtime/importPolicy.d.ts +1 -0
  253. package/dist/component-runtime/importPolicy.js +10 -0
  254. package/dist/component-runtime/render.d.ts +1 -0
  255. package/dist/component-runtime/render.js +34 -0
  256. package/dist/component-runtime.d.ts +1 -0
  257. package/dist/component-runtime.js +132 -0
  258. package/dist/compose.js +17 -31
  259. package/dist/composition/graphics-plan.js +1 -1
  260. package/dist/composition/ops.js +4 -4
  261. package/dist/composition/primitive-catalog.js +1 -3
  262. package/dist/composition/projection.js +2 -2
  263. package/dist/composition/timeline.js +2 -2
  264. package/dist/composition/validators.js +2 -2
  265. package/dist/composition-ops.js +23 -17
  266. package/dist/composition.js +15 -15
  267. package/dist/{context-XWNT6QZH.js → context-4GSDBFT3.js} +5 -5
  268. package/dist/core/render.js +8 -8
  269. package/dist/core/select.js +2 -2
  270. package/dist/core.js +6 -6
  271. package/dist/director/ai-sdk.js +3 -3
  272. package/dist/director/domain.js +2 -2
  273. package/dist/director.js +3 -3
  274. package/dist/errors.js +1 -1
  275. package/dist/mcp/adapter.js +22 -29
  276. package/dist/mcp/core.js +1 -1
  277. package/dist/mcp/curation.js +1 -1
  278. package/dist/mcp/executor.js +1 -1
  279. package/dist/mcp/server.js +4 -6
  280. package/dist/mcp/wire-schema.d.ts +1 -0
  281. package/dist/mcp/wire-schema.js +37 -0
  282. package/dist/mcp.js +6 -29
  283. package/dist/nle-export.js +16 -25
  284. package/dist/plane/conformance.js +1 -1
  285. package/dist/plane/contract.js +7 -0
  286. package/dist/plane.js +1 -1
  287. package/dist/primitives/backgrounds.js +2 -2
  288. package/dist/primitives/captions.js +3 -3
  289. package/dist/primitives/effects.js +2 -2
  290. package/dist/primitives/layouts.js +2 -2
  291. package/dist/primitives/lib/index.js +8 -8
  292. package/dist/primitives/lib/schema.js +1 -1
  293. package/dist/primitives/lib.js +8 -8
  294. package/dist/primitives/text.js +2 -2
  295. package/dist/primitives/ui-blocks.js +2 -2
  296. package/dist/primitives.js +18 -18
  297. package/dist/render-harness/cardAssetAdmission.d.ts +1 -0
  298. package/dist/render-harness/cardAssetAdmission.js +8 -0
  299. package/dist/render-harness/renderInputAssets.d.ts +1 -0
  300. package/dist/render-harness/renderInputAssets.js +17 -0
  301. package/dist/render-harness.js +44 -574
  302. package/package.json +69 -36
  303. package/dist/_members/authoring/transpileComponent.d.ts +0 -6
  304. package/dist/_members/authoring/transpileHelper.d.ts +0 -8
  305. package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
  306. package/dist/_members/compose/sceneToRenderInput.d.ts +0 -25
  307. package/dist/_members/compose/schema.d.ts +0 -30
  308. package/dist/_members/compose/tokenResolver.d.ts +0 -17
  309. package/dist/_members/render-harness/browserOptions.d.ts +0 -11
  310. package/dist/_members/render-harness/browserOptions.d.ts.map +0 -1
  311. package/dist/_members/render-harness/contractRender.d.ts +0 -27
  312. package/dist/_members/render-harness/contractRender.d.ts.map +0 -1
  313. package/dist/_members/render-harness/localRender.d.ts.map +0 -1
  314. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -9
  315. package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +0 -1
  316. package/dist/authoring/transpileComponent.d.ts +0 -1
  317. package/dist/authoring/transpileComponent.js +0 -31
  318. package/dist/authoring/transpileHelper.d.ts +0 -1
  319. package/dist/authoring/transpileHelper.js +0 -9
  320. package/dist/chunk-MHOQTPOB.js +0 -124
  321. package/dist/chunk-QSDFTYKV.js +0 -85
  322. package/dist/chunk-RHVLQNYF.js +0 -20
  323. package/dist/chunk-V24L35GM.js +0 -61
  324. package/dist/compose/renderer.d.ts +0 -1
  325. package/dist/compose/renderer.js +0 -170
  326. package/dist/render-harness/sandboxGlobalSpecs.d.ts +0 -1
  327. package/dist/render-harness/sandboxGlobalSpecs.js +0 -13
  328. package/dist/{chunk-THJAY7QS.js → chunk-BKHGL4MB.js} +4 -4
  329. package/dist/{chunk-XATRRDVG.js → chunk-G5BFI32U.js} +3 -3
  330. package/dist/{chunk-23HFEKV7.js → chunk-QISFYLBB.js} +4 -4
package/dist/authoring.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  buildDirectorContext
3
- } from "./chunk-LSP4HN5N.js";
3
+ } from "./chunk-ZCAQHNPI.js";
4
4
  import {
5
5
  buildFastModel,
6
6
  buildModel,
7
7
  makeLangfuseFetch
8
- } from "./chunk-ZT7MHRQU.js";
8
+ } from "./chunk-GCQ7Z7S7.js";
9
9
  import {
10
10
  PipelineTrace
11
11
  } from "./chunk-GF52TW4I.js";
@@ -27,7 +27,7 @@ import {
27
27
  buildPlannerTools,
28
28
  buildToolsFromSchemas,
29
29
  extractProviderError
30
- } from "./chunk-ZBRPF6GV.js";
30
+ } from "./chunk-GEGRJKKO.js";
31
31
  import {
32
32
  COMPOSE_MOTION_TOOLS,
33
33
  COMPOSE_MOTION_VERIFY_TOOLS,
@@ -36,27 +36,27 @@ import {
36
36
  COMPOSE_ROLE_TOOLS,
37
37
  COMPOSE_ROLE_TOOL_NAMES,
38
38
  dispatchComposeRoleTool
39
- } from "./chunk-D2EGO543.js";
39
+ } from "./chunk-XVBOSPZI.js";
40
40
  import {
41
41
  AgentFixableCaptureError,
42
42
  getExcludedTools
43
43
  } from "./chunk-JOURGVOR.js";
44
- import "./chunk-JY26PIRP.js";
45
- import "./chunk-JRIPQ7DN.js";
46
- import "./chunk-7PA7FGLD.js";
47
- import "./chunk-KYRDKK2D.js";
48
- import "./chunk-WTT3GGCA.js";
44
+ import "./chunk-AD5HWBCE.js";
49
45
  import {
50
46
  cssLayoutVars
51
47
  } from "./chunk-YQ7FFW3G.js";
52
48
  import "./chunk-DSMLHYJ4.js";
49
+ import "./chunk-C5SEPOWD.js";
53
50
  import "./chunk-JF4JJAFP.js";
54
- import "./chunk-JTVFIN6H.js";
55
- import "./chunk-2SNY75AR.js";
51
+ import "./chunk-IBMJ33EL.js";
52
+ import "./chunk-IHFREGFA.js";
53
+ import "./chunk-7KEUL3FI.js";
56
54
  import "./chunk-WPZKOVYF.js";
57
55
  import "./chunk-2B5VJZHL.js";
56
+ import "./chunk-KYRDKK2D.js";
58
57
  import "./chunk-WREYUH2E.js";
59
- import "./chunk-R5BMJ2NX.js";
58
+ import "./chunk-7PA7FGLD.js";
59
+ import "./chunk-4FOOBSEE.js";
60
60
  import "./chunk-2ESYSVXG.js";
61
61
 
62
62
  // ../authoring/src/agent.ts
@@ -1058,6 +1058,8 @@ function generateMotionShell(cardHtml, opts) {
1058
1058
  }).join('\\n');` : "";
1059
1059
  const staggerStyleEl = opts.preset === "stagger-reveal" ? `<style>{staggerRules}</style>` : "";
1060
1060
  return `// generated by @cueframe/authoring generateMotionShell \u2014 preset: ${opts.preset}
1061
+ import { Easing, interpolate, useCurrentFrame, useVideoConfig } from 'remotion';
1062
+
1061
1063
  export default function CardMotionShell({ durationInFrames, params }) {
1062
1064
  const frame = useCurrentFrame();
1063
1065
  const { fps } = useVideoConfig();
@@ -1133,7 +1135,7 @@ function resolveMotionPresetCard(composition, input) {
1133
1135
  // ../authoring/src/motion/materializeMotionPresetOps.ts
1134
1136
  var isMotionPresetOp = (op) => !!op && typeof op === "object" && op.type === "applyMotionPreset";
1135
1137
  var hasMotionPresetOp = (ops) => ops.some(isMotionPresetOp);
1136
- async function materializeMotionPresetOpsCore(composition, ops, opts, deps) {
1138
+ async function materializeMotionPresetOpsCore(composition, ops, deps) {
1137
1139
  const out = [];
1138
1140
  let current = composition;
1139
1141
  for (let i = 0; i < ops.length; i++) {
@@ -1151,22 +1153,6 @@ async function materializeMotionPresetOpsCore(composition, ops, opts, deps) {
1151
1153
  throw err;
1152
1154
  }
1153
1155
  const componentId = `motion-shell-${op.clipId}`;
1154
- const projectedUpdate = {
1155
- type: "clip.update",
1156
- clipId: op.clipId,
1157
- patch: {
1158
- source: {
1159
- kind: "component",
1160
- componentId,
1161
- props: {},
1162
- ...card.zPlane !== void 0 ? { zPlane: card.zPlane } : {}
1163
- }
1164
- }
1165
- };
1166
- if (opts.dryRun) {
1167
- if (deps.apply) current = deps.apply(current, projectedUpdate);
1168
- continue;
1169
- }
1170
1156
  const tsxSource = generateMotionShell(card.cardHtml, {
1171
1157
  preset: op.preset,
1172
1158
  ...op.params?.enterMs !== void 0 ? { enterMs: op.params.enterMs } : {},
@@ -1174,13 +1160,11 @@ async function materializeMotionPresetOpsCore(composition, ops, opts, deps) {
1174
1160
  ...op.params?.staggerMs !== void 0 ? { staggerMs: op.params.staggerMs } : {},
1175
1161
  ...card.tokens !== void 0 ? { tokens: card.tokens } : {}
1176
1162
  });
1177
- const { jsSource } = await deps.transpile(componentId, tsxSource);
1178
1163
  const materialized = await deps.sink({
1179
1164
  componentId,
1180
1165
  clipId: op.clipId,
1181
1166
  preset: op.preset,
1182
1167
  tsxSource,
1183
- jsSource,
1184
1168
  ...card.zPlane !== void 0 ? { zPlane: card.zPlane } : {}
1185
1169
  });
1186
1170
  out.push(materialized);
@@ -41,6 +41,7 @@ var ERROR_CODES = {
41
41
  idempotency_key_mismatch: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
42
42
  invalid_cursor: { stage: "validate", category: "authoring", retryable: false, httpStatus: 400 },
43
43
  invalid_query: { stage: "validate", category: "authoring", retryable: false, httpStatus: 400 },
44
+ response_too_large: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
44
45
  precondition_required: { stage: "validate", category: "authoring", retryable: false, httpStatus: 428 },
45
46
  conflict: { stage: "validate", category: "authoring", retryable: false, httpStatus: 409 },
46
47
  candidate_mismatch: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
@@ -57,11 +58,23 @@ var ERROR_CODES = {
57
58
  disabled_primitive: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
58
59
  invalid_primitive_params: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
59
60
  overlapping_hero_overlays: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
60
- custom_missing_sourcecode: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
61
61
  invalid_prop_schema: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
62
+ invalid_component_source: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
63
+ unsupported_runtime_version: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
62
64
  component_does_not_compile: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
63
65
  component_runtime_error: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
64
- component_source_unavailable: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
66
+ component_deadline_exceeded: { stage: "render", category: "transient", retryable: true, httpStatus: 503 },
67
+ component_resource_exhausted: { stage: "render", category: "transient", retryable: true, httpStatus: 503 },
68
+ component_asset_undeclared: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
69
+ component_asset_unavailable: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
70
+ component_asset_integrity_failed: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
71
+ component_network_denied: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
72
+ component_import_denied: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
73
+ component_graphics_unavailable: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
74
+ component_graphics_mismatch: { stage: "render", category: "internal", retryable: false, httpStatus: 500 },
75
+ component_device_lost: { stage: "render", category: "transient", retryable: true, httpStatus: 503 },
76
+ component_output_invalid: { stage: "render", category: "internal", retryable: false, httpStatus: 500 },
77
+ component_conflict: { stage: "validate", category: "authoring", retryable: false, httpStatus: 409 },
65
78
  motion_preset_unknown: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
66
79
  motion_preset_target_invalid: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
67
80
  grid_target_invalid: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
@@ -87,6 +100,24 @@ var ERROR_CODES = {
87
100
  selector_identity_detector_version_mismatch: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
88
101
  variant_not_baked: { stage: "render", category: "internal", retryable: false, httpStatus: 422 },
89
102
  behind_matte_unresolved: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
103
+ packed_visual_envelope_unsupported: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
104
+ behind_subject_host_missing: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
105
+ behind_subject_host_ambiguous: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
106
+ behind_subject_caption_host_missing: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
107
+ behind_subject_caption_host_ambiguous: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
108
+ mixed_scene_mode_unsupported: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
109
+ clip_effect_scope_unsupported: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
110
+ component_alpha_unavailable: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
111
+ card_external_asset_forbidden: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
112
+ overlay_asset_unbound: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
113
+ font_not_reproducible: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
114
+ render_bundle_mismatch: { stage: "render", category: "internal", retryable: false, httpStatus: 422 },
115
+ capture_busy: { stage: "render", category: "transient", retryable: true, httpStatus: 429 },
116
+ capture_timed_out: { stage: "render", category: "transient", retryable: true, httpStatus: 503 },
117
+ capture_cancelled: { stage: "render", category: "transient", retryable: true, httpStatus: 409 },
118
+ tool_discovery_timed_out: { stage: "system", category: "transient", retryable: true, httpStatus: 503 },
119
+ evidence_payload_too_large: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
120
+ snapshot_stale: { stage: "render", category: "transient", retryable: true, httpStatus: 409 },
90
121
  render_output_invalid: { stage: "render", category: "internal", retryable: false, httpStatus: 422 },
91
122
  audio_sync_invalid: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
92
123
  generation_output_invalid: { stage: "render", category: "authoring", retryable: false, httpStatus: 422 },
@@ -1,9 +1,8 @@
1
1
  import {
2
+ querySchemaShape,
3
+ serializeQuery,
2
4
  waitForJob
3
- } from "./chunk-7V3F5HO4.js";
4
- import {
5
- CURATED_TOOLS
6
- } from "./chunk-PJ4R4N4Q.js";
5
+ } from "./chunk-NOEBAV2G.js";
7
6
  import {
8
7
  GENERATED_OPERATIONS,
9
8
  apiErrorFrom,
@@ -20,7 +19,10 @@ import {
20
19
  sniffImageMediaType,
21
20
  text,
22
21
  withMedia
23
- } from "./chunk-RQ2G4DXI.js";
22
+ } from "./chunk-QBKDEO7J.js";
23
+ import {
24
+ CURATED_TOOLS
25
+ } from "./chunk-ZN6P3KOJ.js";
24
26
 
25
27
  // ../mcp/src/prompts.ts
26
28
  var skillListCache = null;
@@ -91,7 +93,7 @@ CLIPPING (find the best short-form moments in a long video): \`suggest_briefs\`
91
93
 
92
94
  Every expensive step has a cheap, inspectable check \u2014 prefer reading a value over rendering and eyeballing:
93
95
  - Framing & timing are data: \`get_media_context\` BEFORE you compose.
94
- - Evidence beats guessing: \`preview_frame\` (whole-composition stills), \`preview_component\` (ONE authored graphic: \`executionMode:"live"\` returns a PNG image; \`executionMode:"baked"\` returns a transparent VP9 motion clip \u2014 exactly the lane production composites), \`preview_clip\` (a fromSec\u2192toSec window as a watchable MP4, max 60s, capture-priced \u2014 judge a cut or transition at full fidelity WITHOUT paying for a full render). These are STATELESS: nothing to open, warm, or close; concurrent previews do not contend. \`preview_frame\` defaults to the PERSISTED composition and echoes \`previewed.{source, compositionId, etag}\` \u2014 what you saw is what create_render encodes.
96
+ - Evidence beats guessing: \`preview_frame\` (whole-composition stills), \`preview_component\` (ONE authored graphic rendered from the same immutable component bundle used by production), \`preview_clip\` (a fromSec\u2192toSec window as a watchable MP4, max 60s, capture-priced \u2014 judge a cut or transition at full fidelity WITHOUT paying for a full render). These are STATELESS: nothing to open, warm, or close; concurrent previews do not contend. \`preview_frame\` defaults to the PERSISTED composition and echoes \`previewed.{source, compositionId, etag}\` \u2014 what you saw is what create_render encodes.
95
97
  - Quality is a number: \`score_composition\` returns scores + critique + a checkpointId; the compose result carries the winner's composite. **score vs consult**: score answers "how good IS this" (grounded numbers); \`consult\` answers "what SHOULD I change" (advice + an adoptable fix via \`select_candidate\`).
96
98
 
97
99
  ## Async model
@@ -101,7 +103,7 @@ Every long job is either polled or pushed \u2014 never guessed:
101
103
  - Webhooks (\`create_webhook\`): ONE terminal event per kind with status INSIDE the payload \u2014 \`render.completed\`, \`compose.completed\`, \`media.completed\`, \`suggest.completed\` \u2014 plus \`checkpoint.ready\` (a held compose paused for review). Read \`cueframe://webhook-events\` for the full contract before building a receiver.
102
104
  - Presigned URLs (stills, clips, render outputs) expire \u2014 render outputs last ~7 days (refresh via the render's refresh-url op); preview stills/clips ~1 hour. Re-read for a fresh link instead of caching one.
103
105
 
104
- CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns a PNG image for \`executionMode:"live"\` or a VP9 motion URL for \`executionMode:"baked"\`; a compile failure lands on the job's FAILED terminal carrying the sanitized compiler error) \u2192 fix via \`update_component\` \u2192 preview again. Place baked components via \`apply_composition\` as an \`alpha-layer\` clip \u2014 the shared renderer never runs authored source code (it composites the transparent baked video).
106
+ CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource + contract-v2 manifest) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns the verified artifact from the same immutable bundle used by production; a compile/runtime/capability failure lands on the job's FAILED terminal carrying the sanitized author-fixable message) \u2192 fix via \`update_component\` \u2192 preview again. Place the verified component artifact via \`apply_composition\` as an \`alpha-layer\` clip \u2014 the shared compositor never executes authored source.
105
107
 
106
108
  Cleanup: \`delete_project\` / \`delete_media\` / \`delete_webhook\` / \`delete_composition\`. \`list_projects\` re-orients you in an existing workspace; \`list_media\` (filter by \`source\`/\`tag\`) lists the library.
107
109
 
@@ -133,21 +135,30 @@ without resource support.
133
135
 
134
136
  ### Component Contract
135
137
 
136
- Component \`tsxSource\` MUST follow:
137
- - Signature: \`export default function Name({ durationInFrames, params }) { ... }\`
138
+ Component \`tsxSource\` MUST follow the component contract v2:
139
+ - Signature: \`export default function Name({ durationInFrames, params, assets, render }) { ... }\`
138
140
  - \`params\` is whatever the clip's \`source.params\` carries. The built-in catalog's
139
141
  convention \u2014 worth following so your component drops into the same slots:
140
142
  \`{ text, subtext?, position?, accentColor?, textColor?, fontFamily?, fontSize?, backgroundColor? }\`
141
- - ONLY \`useCurrentFrame()\` and \`useVideoConfig()\` hooks. NO useEffect/useState/useMemo/useCallback/useRef.
142
- - Inline styles only. No imports, no CSS files, no \`document\` access. Max 10000 chars.
143
- - All animation driven by frame number.`;
143
+ - Use normal static imports from the documented allowlist: React, Remotion, Three.js WebGPU/TSL,
144
+ React Three Fiber/Drei, Remotion Three, and CueFrame animate helpers. Dynamic imports, URL imports,
145
+ Node/Tauri modules, remote fetches, and arbitrary filesystem paths are refused.
146
+ - Ordinary React hooks, loops, classes, constructors, refs, typed arrays, canvas, and WebGPU are valid.
147
+ - Declare every media input in \`componentManifest.assets\` and bind it by project media id in
148
+ \`componentAssets\`. Read only the matching \`assets[name].handle\`; undeclared or missing assets fail.
149
+ - Declare \`componentManifest.graphics.api\` as \`canvas2d\` or \`webgpu\`. A required WebGPU component
150
+ fails if WebGPU cannot be attested; it is never rendered through WebGL or a static substitute.
151
+ - Declare \`componentManifest.alphaPolicy\` as \`requires-transparency\` or \`allows-opaque\`; opacity
152
+ validation reads this exact manifest field in both local and cloud adapters.
153
+ - Drive all visible animation from \`render.frame\` / \`render.fps\` (or Remotion frame hooks) and seed
154
+ procedural variation with \`render.seed\`. Ambient clocks, randomness, and requestAnimationFrame are refused.`;
144
155
 
145
156
  // ../mcp/src/server.ts
146
- import { McpServer as McpServer2 } from "@modelcontextprotocol/sdk/server/mcp.js";
157
+ import { McpServer as McpServer2 } from "@modelcontextprotocol/server";
147
158
  import { z } from "zod";
148
159
 
149
160
  // ../mcp/src/resources.ts
150
- import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
161
+ import { ResourceTemplate } from "@modelcontextprotocol/server";
151
162
  async function read(ex, operationId, mapArg) {
152
163
  const op = opById(operationId);
153
164
  const res = await ex.invoke({ method: "GET", path: buildPath(op, mapArg) });
@@ -168,11 +179,12 @@ async function jsonResourceWithPoster(uri, value) {
168
179
  const url = value?.thumbnail?.url;
169
180
  if (!url) return base;
170
181
  const data = await fetchAsBase64(url);
171
- if (!data) return base;
182
+ const mimeType = data ? sniffImageMediaType(data) : void 0;
183
+ if (!data || !mimeType) return base;
172
184
  return {
173
185
  contents: [
174
186
  ...base.contents,
175
- { uri: url, mimeType: sniffImageMediaType(data), blob: data }
187
+ { uri: url, mimeType, blob: data }
176
188
  ]
177
189
  };
178
190
  }
@@ -311,68 +323,6 @@ function registerResources(server, ex) {
311
323
  );
312
324
  }
313
325
 
314
- // ../mcp/src/burnedNames.ts
315
- var BURNED_NAMES = [
316
- {
317
- name: "create_composition",
318
- replacement: "compose",
319
- reason: "renamed \u2014 one flagship verb: compose {briefId | fromComposition | suggestionId} starts the Director run."
320
- },
321
- {
322
- name: "verify_composition",
323
- replacement: "score_composition",
324
- reason: "renamed \u2014 the standalone sighted check SCORES a composition and returns a Checkpoint packet."
325
- },
326
- {
327
- name: "render_frame",
328
- replacement: "preview_frame",
329
- reason: "renamed \u2014 the evidence family says preview_*; render_* is the paid finisher family."
330
- },
331
- {
332
- name: "trigger_suggestions",
333
- replacement: "suggest_briefs",
334
- reason: "renamed \u2014 the analysis mints kind-'clip' Briefs, each composable via compose {briefId}."
335
- },
336
- {
337
- name: "resume_compose",
338
- replacement: "resume",
339
- reason: "renamed \u2014 checkpoint-addressed: resume(checkpointId, {decision}) answers the packet, not the job."
340
- },
341
- {
342
- name: "open_session",
343
- replacement: "score_composition / preview_frame / preview_component",
344
- reason: "sessions dissolved \u2014 each op manages its own warm box server-side, billed flat per operation."
345
- },
346
- {
347
- name: "close_session",
348
- replacement: "(nothing \u2014 the managed box reaps itself on idle)",
349
- reason: "sessions dissolved \u2014 there is no client-held box to close."
350
- },
351
- {
352
- name: "commit_session",
353
- replacement: "apply_composition",
354
- reason: "scratch-vs-active dissolved into composition versioning \u2014 there is nothing left to commit."
355
- },
356
- {
357
- name: "new_video",
358
- replacement: "new_composition",
359
- reason: "renamed \u2014 every verb in the family says composition; only the mint said video."
360
- },
361
- {
362
- name: "list_components",
363
- replacement: "list_catalog",
364
- reason: "renamed \u2014 'component' on the wire means installed-only; the verb returns the whole catalog."
365
- },
366
- {
367
- name: "adopt_candidate",
368
- replacement: "apply_composition",
369
- reason: "removed \u2014 adopt a consult proposal by applying its composition (the client stays the author)."
370
- }
371
- ];
372
- function burnedNameError(b) {
373
- return `'${b.name}' was RETIRED in the 2026-07 verb cutover and will never come back. Use ${b.replacement}. (${b.reason})`;
374
- }
375
-
376
326
  // ../mcp/src/server.ts
377
327
  function emit(sink, event) {
378
328
  if (!sink) return;
@@ -404,9 +354,10 @@ function registerRawTools(server, ex, onEvent) {
404
354
  if (RAW_EXCLUDED_OPERATION_IDS.has(op.operationId)) continue;
405
355
  const inputSchema = {};
406
356
  for (const p of op.pathParams) inputSchema[p] = z.string().describe(`Path parameter \`${p}\``);
357
+ Object.assign(inputSchema, querySchemaShape(op.queryParams));
407
358
  const bodySchema = bodySchemaFor(op);
408
359
  if (bodySchema) inputSchema.body = bodySchema.optional().describe("Request body \u2014 typed from the OpenAPI spec.");
409
- server.registerTool(op.toolName, { title: op.title, description: op.description, inputSchema, annotations: op.annotations }, async (args, extra) => timed(onEvent, op.toolName, async () => {
360
+ server.registerTool(op.toolName, { title: op.title, description: op.description, inputSchema: z.object(inputSchema), annotations: op.annotations }, async (args, extra) => timed(onEvent, op.toolName, async () => {
410
361
  try {
411
362
  return await dispatchOp(
412
363
  ex,
@@ -415,7 +366,8 @@ function registerRawTools(server, ex, onEvent) {
415
366
  args.body,
416
367
  extra,
417
368
  op.toolName,
418
- (res) => text(res.text || `${op.method} ${op.pathTemplate} \u2192 ${res.status}`)
369
+ (res) => text(res.text || `${op.method} ${op.pathTemplate} \u2192 ${res.status}`),
370
+ serializeQuery(op.queryParams, args)
419
371
  );
420
372
  } catch (err) {
421
373
  return errText(`${op.toolName} failed: ${fmtErr(err)}`);
@@ -436,16 +388,14 @@ function registerCuratedTools(server, ex, opts) {
436
388
  for (const friendly of Object.keys(spec.pathArgs ?? {})) {
437
389
  inputSchema[friendly] = z.string().describe(`${friendly} (path).`);
438
390
  }
439
- for (const [queryArg, description] of Object.entries(spec.queryArgs ?? {})) {
440
- inputSchema[queryArg] = z.string().optional().describe(description);
441
- }
391
+ Object.assign(inputSchema, querySchemaShape(op.queryParams, spec.defaults));
442
392
  const bodySchema = bodySchemaFor(op);
443
393
  if (bodySchema) inputSchema.body = bodySchema;
444
394
  const annotations = { ...op.annotations, ...spec.annotations };
445
- server.registerTool(spec.name, { title: spec.title ?? titleCase(spec.name), description: spec.description, inputSchema, annotations }, async (args, extra) => timed(opts?.onEvent, spec.name, async (report) => {
446
- const a = args;
395
+ server.registerTool(spec.name, { title: spec.title ?? titleCase(spec.name), description: spec.description, inputSchema: z.object(inputSchema), annotations }, async (args, extra) => timed(opts?.onEvent, spec.name, async (report) => {
396
+ const a = { ...spec.defaults ?? {}, ...args };
447
397
  try {
448
- const query = Object.keys(spec.queryArgs ?? {}).filter((name) => a[name] !== void 0 && a[name] !== null && a[name] !== "").map((name) => `${encodeURIComponent(name)}=${encodeURIComponent(String(a[name]))}`).join("&");
398
+ const query = serializeQuery(op.queryParams, a);
449
399
  return await dispatchOp(ex, op, (p) => a[reverse[p]], a.body, extra, spec.name, async (res) => {
450
400
  if (spec.okText) return text(spec.okText(a));
451
401
  const json = res.text ? safeParse(res.text) : void 0;
@@ -458,7 +408,7 @@ function registerCuratedTools(server, ex, opts) {
458
408
  if (data.length) return withMedia(payload, data.map((d) => ({ data: d, kind })));
459
409
  }
460
410
  return text(payload);
461
- }, query || void 0);
411
+ }, query);
462
412
  } catch (err) {
463
413
  return errText(`${spec.name} failed: ${fmtErr(err)}`);
464
414
  }
@@ -474,12 +424,12 @@ function registerPreviewCard(server, ex, waitCapMs, onEvent) {
474
424
  {
475
425
  title: "Preview Card",
476
426
  description: 'Render ONE authored card on its own and SEE it, before placing it in a composition. Pass the same `html` (+ optional `tokens`) you would put in a {kind:"card"} clip; you get the still back as an image. Use this while writing a card \u2014 it is the fast loop for catching type that overflows the frame, a headline that collides with a logo, or tokens that did not resolve. Sized to the format you name, so what you see is what that aspect ratio will show. To judge MOTION rather than layout, shell the card with a motion preset and use preview_clip.',
477
- inputSchema: {
427
+ inputSchema: z.object({
478
428
  projectId: z.string().describe("projectId (path) \u2014 the card is rendered inline; nothing is persisted to the project."),
479
429
  html: z.string().min(1).describe('The card markup, exactly as it would appear in a {kind:"card"} clip source.'),
480
- tokens: z.record(z.string()).optional().describe("Token substitutions the html references (e.g. brand colours, fonts). Same shape as the clip source `tokens`."),
430
+ tokens: z.record(z.string(), z.string()).optional().describe("Token substitutions the html references (e.g. brand colours, fonts). Same shape as the clip source `tokens`."),
481
431
  aspectRatio: z.enum(["16:9", "9:16", "1:1", "4:5"]).optional().describe("Frame to size the card into. Default 9:16 \u2014 a card that fits 16:9 often overflows vertical.")
482
- },
432
+ }),
483
433
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
484
434
  },
485
435
  async (args, extra) => timed(onEvent, "preview_card", async (report) => {
@@ -541,12 +491,12 @@ function registerWaitJob(server, ex, waitCapMs, onEvent) {
541
491
  title: "Wait for Job",
542
492
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
543
493
  description: "Wait for a long-running job and return the resolved result \u2014 a BOUNDED long-poll. Polls job status (media import/generation / render / compose / consult / clip-suggestions / verify / preview-frame) and blocks up to the transport window (30s on the hosted transport); if still running, it returns a continuation \u2014 call wait_job again with the same arguments (the job keeps executing server-side). Call this after import_media / generate_media / finalize_upload / import_resource / compose / create_render / consult / suggest_briefs / score_composition / preview_frame / preview_component. For event-driven fan-out, create_webhook delivers the terminal instead.",
544
- inputSchema: {
494
+ inputSchema: z.object({
545
495
  kind: z.enum(["media", "render", "suggestions", "compose", "verify", "preview_frame", "preview", "brand_kit_extract", "consult"]).describe("What to wait on: media ingest/generation, render, compose, consult, clip-suggestion analysis, or a generic async job (verify / preview_frame / preview / brand-kit extract \u2014 use the enqueue receipt kind)."),
546
496
  id: z.string().describe('kind="media": mediaItemId returned by import/generate/finalize/import_resource. kind="render": renderId. kind="compose": composeJobId. kind="consult": consultJobId. kind="suggestions": mediaItemId. Generic kinds use the jobId from the enqueue receipt.'),
547
497
  projectId: z.string().optional().describe('Required when kind="render", "compose", or "consult".'),
548
498
  timeoutMs: z.number().int().min(1e3).max(30 * 60 * 1e3).optional().describe("Maximum wait in ms (default 30 min for render/compose, 5 min for suggestions).")
549
- }
499
+ })
550
500
  },
551
501
  async (args) => timed(onEvent, "wait_job", async (report) => {
552
502
  const kind = args.kind;
@@ -577,24 +527,10 @@ function buildServer(opts) {
577
527
  expert: opts.expert,
578
528
  onEvent: opts.onEvent
579
529
  });
580
- registerBurnedTombstones(server, opts.onEvent);
581
530
  registerResources(server, opts.executor);
582
531
  if (opts.expert) registerRawTools(server, opts.executor, opts.onEvent);
583
532
  return server;
584
533
  }
585
- function registerBurnedTombstones(server, onEvent) {
586
- for (const b of BURNED_NAMES) {
587
- server.registerTool(
588
- b.name,
589
- {
590
- title: `${titleCase(b.name)} (retired)`,
591
- description: `RETIRED (2026-07 verb cutover) \u2014 use ${b.replacement}. ${b.reason}`,
592
- annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
593
- },
594
- async () => timed(onEvent, b.name, async () => errText(burnedNameError(b)))
595
- );
596
- }
597
- }
598
534
 
599
535
  export {
600
536
  registerSkillPrompts,
@@ -604,6 +540,5 @@ export {
604
540
  registerRawTools,
605
541
  titleCase,
606
542
  registerCuratedTools,
607
- buildServer,
608
- registerBurnedTombstones
543
+ buildServer
609
544
  };
@@ -7,19 +7,22 @@ function gwFetchInit(gw, signal) {
7
7
  }
8
8
  function mapPexelsVideo(v, query) {
9
9
  const files = Array.isArray(v.video_files) ? v.video_files : [];
10
- const hdFile = files.find((f) => f.quality === "hd");
11
- const sdFile = files.find((f) => f.quality === "sd");
12
- const fallback = files[0];
10
+ const renditions = files.filter(
11
+ (file) => file.file_type === "video/mp4" && typeof file.link === "string" && file.link.startsWith("https://") && Number.isFinite(file.width) && file.width > 0 && Number.isFinite(file.height) && file.height > 0
12
+ ).sort((a, b) => b.width * b.height - a.width * a.height || Number(b.fps ?? 0) - Number(a.fps ?? 0) || String(a.link).localeCompare(String(b.link)));
13
+ const selected = renditions[0];
14
+ if (!selected) throw new Error(`Pexels video ${String(v.id)} has no valid MP4 rendition.`);
15
+ const preview = renditions[renditions.length - 1];
13
16
  return {
14
17
  provider: "pexels",
15
18
  externalId: String(v.id ?? ""),
16
19
  query,
17
20
  thumbnail: String(v.image ?? ""),
18
- previewUrl: String((sdFile ?? fallback)?.link ?? ""),
19
- downloadUrl: String((hdFile ?? fallback)?.link ?? ""),
21
+ previewUrl: preview.link,
22
+ downloadUrl: selected.link,
20
23
  duration: Number(v.duration ?? 0),
21
- width: Number(v.width ?? 0),
22
- height: Number(v.height ?? 0),
24
+ width: selected.width,
25
+ height: selected.height,
23
26
  photographer: String(v.user?.name ?? "Unknown"),
24
27
  photographerUrl: v.user?.url ? String(v.user.url) : void 0,
25
28
  assetUrl: v.url ? String(v.url) : void 0
@@ -39,8 +42,12 @@ function mapPexelsPhoto(p) {
39
42
  }
40
43
  function mapPixabayVideo(v, query) {
41
44
  const vids = v.videos ?? {};
42
- const best = vids.large ?? vids.medium ?? vids.small ?? vids.tiny ?? {};
43
- const preview = vids.tiny ?? vids.small ?? vids.medium ?? vids.large ?? {};
45
+ const renditions = Object.values(vids).filter(
46
+ (file) => typeof file?.url === "string" && file.url.startsWith("https://") && Number.isFinite(file.width) && file.width > 0 && Number.isFinite(file.height) && file.height > 0
47
+ ).sort((a, b) => b.width * b.height - a.width * a.height || String(a.url).localeCompare(String(b.url)));
48
+ const best = renditions[0];
49
+ if (!best) throw new Error(`Pixabay video ${String(v.id)} has no valid rendition.`);
50
+ const preview = renditions[renditions.length - 1];
44
51
  return {
45
52
  provider: "pixabay",
46
53
  externalId: String(v.id ?? ""),