@cueframe/kernel 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_members/account-model/validators/contextFile.d.ts +3 -21
- package/dist/_members/account-model/validators/conversation.d.ts +12 -42
- package/dist/_members/account-model/validators/dashboardInsight.d.ts +3 -17
- package/dist/_members/account-model/validators/sessionToken.d.ts +10 -36
- package/dist/_members/account-model/validators/uploadToken.d.ts +11 -21
- package/dist/_members/account-model/validators/userSettings.d.ts +3 -13
- package/dist/_members/account-model/validators/workingComposition.d.ts +3 -19
- package/dist/_members/authoring/capabilities.d.ts +0 -9
- package/dist/_members/authoring/index.d.ts +1 -1
- package/dist/_members/authoring/models/defaultModels.d.ts +12 -0
- package/dist/_members/authoring/models/modelFactory.d.ts +1 -0
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +1 -7
- package/dist/_members/authoring/types.d.ts +0 -1
- package/dist/_members/component-runtime/assetServer.d.ts +18 -0
- package/dist/_members/component-runtime/assetServer.d.ts.map +1 -0
- package/dist/_members/component-runtime/bake.d.ts +12 -0
- package/dist/_members/component-runtime/bake.d.ts.map +1 -0
- package/dist/_members/component-runtime/browserFirewall.d.ts +21 -0
- package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -0
- package/dist/_members/component-runtime/browserIdentity.d.ts +14 -0
- package/dist/_members/component-runtime/browserIdentity.d.ts.map +1 -0
- package/dist/_members/component-runtime/browserOptions.d.ts +8 -0
- package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -0
- package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
- package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -0
- package/dist/_members/component-runtime/contracts.d.ts +443 -0
- package/dist/_members/component-runtime/contracts.d.ts.map +1 -0
- package/dist/_members/component-runtime/determinism.d.ts +18 -0
- package/dist/_members/component-runtime/determinism.d.ts.map +1 -0
- package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +9 -0
- package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +1 -0
- package/dist/_members/component-runtime/identity.d.ts +16 -0
- package/dist/_members/component-runtime/identity.d.ts.map +1 -0
- package/dist/_members/component-runtime/importPolicy.d.ts +3 -0
- package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -0
- package/dist/_members/component-runtime/index.d.ts +11 -0
- package/dist/_members/component-runtime/index.d.ts.map +1 -0
- package/dist/_members/component-runtime/outputVerifier.d.ts +29 -0
- package/dist/_members/component-runtime/outputVerifier.d.ts.map +1 -0
- package/dist/_members/{render-harness/localRender.d.ts → component-runtime/render.d.ts} +22 -15
- package/dist/_members/component-runtime/render.d.ts.map +1 -0
- package/dist/_members/component-runtime/sourceWorkspace.d.ts +10 -0
- package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -0
- package/dist/_members/compose/index.d.ts +0 -5
- package/dist/_members/composition/graphics-plan/schemas.d.ts +299 -1309
- package/dist/_members/composition/primitive-catalog/index.d.ts +2 -2
- package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -14
- package/dist/_members/composition/reframe/index.d.ts +56 -528
- package/dist/_members/composition/validators/brandKit.d.ts +247 -1208
- package/dist/_members/composition/validators/composePlan.d.ts +106 -818
- package/dist/_members/composition/validators/composition.d.ts +1338 -5856
- package/dist/_members/composition/validators/font.d.ts +35 -91
- package/dist/_members/composition/validators/project.d.ts +15 -46
- package/dist/_members/composition/validators/registry.d.ts +53 -135
- package/dist/_members/composition/validators/render.d.ts +803 -7273
- package/dist/_members/composition/validators/session.d.ts +38 -76
- package/dist/_members/composition/validators/webhook.d.ts +23 -50
- package/dist/_members/composition-ops/alphaLayers.d.ts +3 -2
- package/dist/_members/composition-ops/index.d.ts +409 -4309
- package/dist/_members/core/render/compositionAudioAndDepth.d.ts +6 -0
- package/dist/_members/core/render/compositionRender.d.ts +3 -4
- package/dist/_members/core/render/compositionValidation.d.ts +4 -0
- package/dist/_members/core/render/index.d.ts +2 -2
- package/dist/_members/core/render/types.d.ts +16 -8
- package/dist/_members/director/ai-sdk/messages.d.ts +67 -217
- package/dist/_members/director/domain/chat.d.ts +70 -293
- package/dist/_members/director/testing/contract.d.ts +11 -11
- package/dist/_members/errors/registry.d.ts +189 -3
- package/dist/_members/foundation/primitives/index.d.ts +1 -1
- package/dist/_members/mcp/adapter.d.ts +3 -0
- package/dist/_members/mcp/burnedNames.d.ts +0 -1
- package/dist/_members/mcp/core.d.ts +6 -3
- package/dist/_members/mcp/curation.d.ts +3 -38
- package/dist/_members/mcp/curationTypes.d.ts +34 -0
- package/dist/_members/mcp/generated/harness.d.ts +1 -1
- package/dist/_members/mcp/generated/operations.d.ts +10 -0
- package/dist/_members/mcp/main.d.ts +1 -0
- package/dist/_members/mcp/mediaContextFormat.d.ts +4 -0
- package/dist/_members/mcp/prompts.d.ts +1 -1
- package/dist/_members/mcp/query.d.ts +4 -0
- package/dist/_members/mcp/resources.d.ts +1 -1
- package/dist/_members/mcp/server.d.ts +1 -2
- package/dist/_members/mcp/wireSchema.d.ts +13 -0
- package/dist/_members/media-model/api.d.ts +114 -662
- package/dist/_members/media-model/generation.d.ts +141 -228
- package/dist/_members/plane/contract.d.ts +16 -19
- package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +3 -27
- package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +2 -26
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +1 -17
- package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +6 -14
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +1 -11
- package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +1 -21
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +2 -12
- package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +2 -26
- package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +2 -22
- package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +1 -17
- package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +1 -19
- package/dist/_members/primitives/effects/blur/config.d.ts +5 -14
- package/dist/_members/primitives/effects/color-grade/config.d.ts +10 -18
- package/dist/_members/primitives/effects/grain/config.d.ts +9 -12
- package/dist/_members/primitives/effects/parallax/config.d.ts +8 -12
- package/dist/_members/primitives/effects/particles/config.d.ts +9 -20
- package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +1 -13
- package/dist/_members/primitives/effects/spotlight-card/config.d.ts +1 -25
- package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +1 -15
- package/dist/_members/primitives/effects/success-confetti/config.d.ts +2 -26
- package/dist/_members/primitives/effects/vignette/config.d.ts +5 -12
- package/dist/_members/primitives/hero-text/config.d.ts +9 -24
- package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +1 -11
- package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +1 -9
- package/dist/_members/primitives/layouts/letterbox/config.d.ts +1 -9
- package/dist/_members/primitives/layouts/photo-grid/config.d.ts +2 -12
- package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +7 -12
- package/dist/_members/primitives/layouts/split-screen/config.d.ts +1 -7
- package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +3 -51
- package/dist/_members/primitives/lib/schema.d.ts +1 -1
- package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +7 -24
- package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +5 -14
- package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +1 -7
- package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +1 -7
- package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +2 -12
- package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +1 -19
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +1 -11
- package/dist/_members/primitives/text/blur-reveal/config.d.ts +1 -17
- package/dist/_members/primitives/text/cinematic-title/config.d.ts +13 -73
- package/dist/_members/primitives/text/inline-highlight/config.d.ts +1 -21
- package/dist/_members/primitives/text/karaoke/config.d.ts +10 -93
- package/dist/_members/primitives/text/kinetic-type/config.d.ts +14 -49
- package/dist/_members/primitives/text/lower-third/config.d.ts +8 -70
- package/dist/_members/primitives/text/marker-highlight/config.d.ts +1 -23
- package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +1 -17
- package/dist/_members/primitives/text/matrix-decode/config.d.ts +1 -19
- package/dist/_members/primitives/text/quote-card/config.d.ts +1 -11
- package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +1 -23
- package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +1 -17
- package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +1 -17
- package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +2 -24
- package/dist/_members/primitives/text/stat-counter/config.d.ts +6 -20
- package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +1 -19
- package/dist/_members/primitives/text/text-effect/config.d.ts +10 -15
- package/dist/_members/primitives/text/text-fade-replace/config.d.ts +1 -17
- package/dist/_members/primitives/text/token-stream/config.d.ts +1 -11
- package/dist/_members/primitives/text/tracking-in/config.d.ts +1 -19
- package/dist/_members/primitives/text/typewriter/config.d.ts +1 -21
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +5 -8
- package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +1 -21
- package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +7 -6
- package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +1 -5
- package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +1 -7
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +6 -12
- package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +7 -8
- package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +1 -7
- package/dist/_members/primitives/transitions/light-leak/config.d.ts +1 -7
- package/dist/_members/primitives/transitions/luma-matte/config.d.ts +6 -6
- package/dist/_members/primitives/transitions/morph/config.d.ts +5 -6
- package/dist/_members/primitives/transitions/spatial-push/config.d.ts +7 -6
- package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +5 -10
- package/dist/_members/primitives/transitions/zoom-through/config.d.ts +2 -30
- package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +1 -13
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +1 -29
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +1 -11
- package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +8 -16
- package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +1 -11
- package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +3 -73
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +1 -15
- package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +1 -7
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +1 -21
- package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +1 -15
- package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +2 -26
- package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +1 -13
- package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +2 -66
- package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +1 -9
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +3 -97
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +5 -14
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +1 -13
- package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +2 -36
- package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +1 -23
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +3 -113
- package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +2 -34
- package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +3 -113
- package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +1 -9
- package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +6 -37
- package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +2 -12
- package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +2 -54
- package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +9 -48
- package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +7 -20
- package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +2 -42
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +1 -19
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +3 -71
- package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +5 -14
- package/dist/_members/primitives/workspace.d.ts +1 -5
- package/dist/_members/render-harness/cardAssetAdmission.d.ts +3 -0
- package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -0
- package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
- package/dist/_members/render-harness/index.d.ts +1 -5
- package/dist/_members/render-harness/index.d.ts.map +1 -1
- package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
- package/dist/_members/render-harness/remotion-runtime.d.ts +20 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts +2 -1
- package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
- package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
- package/dist/authoring/build-tools.js +8 -8
- package/dist/authoring/context.js +5 -5
- package/dist/authoring/models.js +3 -1
- package/dist/authoring/resource-routing.js +1 -1
- package/dist/authoring/resources.js +1 -1
- package/dist/authoring/tools.js +7 -7
- package/dist/authoring.js +15 -31
- package/dist/chunk-2PGLNTB7.js +132 -0
- package/dist/{chunk-R5BMJ2NX.js → chunk-4FOOBSEE.js} +33 -2
- package/dist/{chunk-YXEZ75MB.js → chunk-4JRUGT2Y.js} +43 -108
- package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
- package/dist/chunk-5OTQ7M43.js +718 -0
- package/dist/{chunk-O7GNE4BQ.js → chunk-6ID2J64H.js} +4 -4
- package/dist/{chunk-RXCEPCAQ.js → chunk-6XI57FZZ.js} +280 -191
- package/dist/{chunk-2SNY75AR.js → chunk-7KEUL3FI.js} +4 -2
- package/dist/{chunk-WTT3GGCA.js → chunk-AD5HWBCE.js} +1 -1
- package/dist/{chunk-JY26PIRP.js → chunk-C5SEPOWD.js} +163 -171
- package/dist/chunk-CGHTMZNC.js +6 -0
- package/dist/chunk-DHKQ47Q6.js +57 -0
- package/dist/{chunk-3PM6VICZ.js → chunk-DQKSCHFC.js} +4 -4
- package/dist/{chunk-D6S3ZKIY.js → chunk-EEXCDFY5.js} +1 -1
- package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
- package/dist/{chunk-ZBRPF6GV.js → chunk-GEGRJKKO.js} +1 -1
- package/dist/{chunk-JRIPQ7DN.js → chunk-IBMJ33EL.js} +3 -3
- package/dist/{chunk-JTVFIN6H.js → chunk-IHFREGFA.js} +10 -4
- package/dist/chunk-IJ7PVJTK.js +114 -0
- package/dist/{chunk-6ABIXGLO.js → chunk-KKEY5MIW.js} +8 -8
- package/dist/chunk-KU376ELE.js +392 -0
- package/dist/{chunk-7TQCR7AB.js → chunk-LNBVTDFR.js} +1 -1
- package/dist/chunk-LQUWKBST.js +195 -0
- package/dist/chunk-M2TLRXEO.js +41 -0
- package/dist/{chunk-7V3F5HO4.js → chunk-NOEBAV2G.js} +58 -2
- package/dist/{chunk-RQ2G4DXI.js → chunk-QBKDEO7J.js} +1502 -1314
- package/dist/chunk-RFXR7ATW.js +244 -0
- package/dist/{chunk-MCBUX5XV.js → chunk-SLN5UKLT.js} +2 -2
- package/dist/{chunk-GH27OS5S.js → chunk-VCBLGZQQ.js} +19 -4
- package/dist/{chunk-TLVPDT4R.js → chunk-XHUYWVYK.js} +1 -1
- package/dist/{chunk-D2EGO543.js → chunk-XVBOSPZI.js} +15 -17
- package/dist/{chunk-YE3F4LNJ.js → chunk-Y3QGYASW.js} +18 -18
- package/dist/{chunk-LSP4HN5N.js → chunk-ZCAQHNPI.js} +1 -1
- package/dist/{chunk-PJ4R4N4Q.js → chunk-ZN6P3KOJ.js} +70 -93
- package/dist/chunk-ZZRBKGDA.js +109 -0
- package/dist/component-runtime/browserOptions.d.ts +1 -0
- package/dist/component-runtime/browserOptions.js +7 -0
- package/dist/component-runtime/contracts.d.ts +1 -0
- package/dist/component-runtime/contracts.js +49 -0
- package/dist/component-runtime/identity/browser.d.ts +1 -0
- package/dist/component-runtime/identity/browser.js +35 -0
- package/dist/component-runtime/identity.d.ts +1 -0
- package/dist/component-runtime/identity.js +21 -0
- package/dist/component-runtime/importPolicy.d.ts +1 -0
- package/dist/component-runtime/importPolicy.js +10 -0
- package/dist/component-runtime/render.d.ts +1 -0
- package/dist/component-runtime/render.js +34 -0
- package/dist/component-runtime.d.ts +1 -0
- package/dist/component-runtime.js +132 -0
- package/dist/compose.js +17 -31
- package/dist/composition/graphics-plan.js +1 -1
- package/dist/composition/ops.js +4 -4
- package/dist/composition/primitive-catalog.js +1 -3
- package/dist/composition/projection.js +2 -2
- package/dist/composition/timeline.js +2 -2
- package/dist/composition/validators.js +2 -2
- package/dist/composition-ops.js +23 -17
- package/dist/composition.js +15 -15
- package/dist/{context-XWNT6QZH.js → context-4GSDBFT3.js} +5 -5
- package/dist/core/render.js +8 -8
- package/dist/core/select.js +2 -2
- package/dist/core.js +6 -6
- package/dist/director/ai-sdk.js +3 -3
- package/dist/director/domain.js +2 -2
- package/dist/director.js +3 -3
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +22 -29
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +1 -1
- package/dist/mcp/executor.js +1 -1
- package/dist/mcp/server.js +4 -6
- package/dist/mcp/wire-schema.d.ts +1 -0
- package/dist/mcp/wire-schema.js +37 -0
- package/dist/mcp.js +6 -29
- package/dist/nle-export.js +16 -25
- package/dist/plane/conformance.js +1 -1
- package/dist/plane/contract.js +7 -0
- package/dist/plane.js +1 -1
- package/dist/primitives/backgrounds.js +2 -2
- package/dist/primitives/captions.js +3 -3
- package/dist/primitives/effects.js +2 -2
- package/dist/primitives/layouts.js +2 -2
- package/dist/primitives/lib/index.js +8 -8
- package/dist/primitives/lib/schema.js +1 -1
- package/dist/primitives/lib.js +8 -8
- package/dist/primitives/text.js +2 -2
- package/dist/primitives/ui-blocks.js +2 -2
- package/dist/primitives.js +18 -18
- package/dist/render-harness/cardAssetAdmission.d.ts +1 -0
- package/dist/render-harness/cardAssetAdmission.js +8 -0
- package/dist/render-harness/renderInputAssets.d.ts +1 -0
- package/dist/render-harness/renderInputAssets.js +17 -0
- package/dist/render-harness.js +44 -574
- package/package.json +71 -34
- package/dist/_members/authoring/transpileComponent.d.ts +0 -6
- package/dist/_members/authoring/transpileHelper.d.ts +0 -8
- package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
- package/dist/_members/compose/sceneToRenderInput.d.ts +0 -25
- package/dist/_members/compose/schema.d.ts +0 -30
- package/dist/_members/compose/tokenResolver.d.ts +0 -17
- package/dist/_members/render-harness/browserOptions.d.ts +0 -11
- package/dist/_members/render-harness/browserOptions.d.ts.map +0 -1
- package/dist/_members/render-harness/contractRender.d.ts +0 -27
- package/dist/_members/render-harness/contractRender.d.ts.map +0 -1
- package/dist/_members/render-harness/localRender.d.ts.map +0 -1
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -9
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +0 -1
- package/dist/authoring/transpileComponent.d.ts +0 -1
- package/dist/authoring/transpileComponent.js +0 -31
- package/dist/authoring/transpileHelper.d.ts +0 -1
- package/dist/authoring/transpileHelper.js +0 -9
- package/dist/chunk-MHOQTPOB.js +0 -124
- package/dist/chunk-QSDFTYKV.js +0 -85
- package/dist/chunk-RHVLQNYF.js +0 -20
- package/dist/chunk-V24L35GM.js +0 -61
- package/dist/compose/renderer.d.ts +0 -1
- package/dist/compose/renderer.js +0 -170
- package/dist/render-harness/sandboxGlobalSpecs.d.ts +0 -1
- package/dist/render-harness/sandboxGlobalSpecs.js +0 -13
- package/dist/{chunk-THJAY7QS.js → chunk-BKHGL4MB.js} +4 -4
- package/dist/{chunk-XATRRDVG.js → chunk-G5BFI32U.js} +3 -3
- 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-
|
|
3
|
+
} from "./chunk-ZCAQHNPI.js";
|
|
4
4
|
import {
|
|
5
5
|
buildFastModel,
|
|
6
6
|
buildModel,
|
|
7
7
|
makeLangfuseFetch
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
39
|
+
} from "./chunk-XVBOSPZI.js";
|
|
40
40
|
import {
|
|
41
41
|
AgentFixableCaptureError,
|
|
42
42
|
getExcludedTools
|
|
43
43
|
} from "./chunk-JOURGVOR.js";
|
|
44
|
-
import "./chunk-
|
|
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-
|
|
55
|
-
import "./chunk-
|
|
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-
|
|
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,
|
|
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);
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ComponentRuntimeError
|
|
3
|
+
} from "./chunk-LQUWKBST.js";
|
|
4
|
+
|
|
5
|
+
// ../execution/component-runtime/src/importPolicy.ts
|
|
6
|
+
import { parse } from "@babel/parser";
|
|
7
|
+
var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
|
|
8
|
+
"react",
|
|
9
|
+
"remotion",
|
|
10
|
+
"@remotion/media",
|
|
11
|
+
"@remotion/motion-blur",
|
|
12
|
+
"@remotion/noise",
|
|
13
|
+
"@remotion/paths",
|
|
14
|
+
"@remotion/shapes",
|
|
15
|
+
"@remotion/three",
|
|
16
|
+
"three",
|
|
17
|
+
"three/webgpu",
|
|
18
|
+
"three/tsl",
|
|
19
|
+
"@react-three/fiber",
|
|
20
|
+
"@react-three/drei",
|
|
21
|
+
"@cueframe/animate",
|
|
22
|
+
"gsap"
|
|
23
|
+
]);
|
|
24
|
+
var ALLOWED_IMPORTS = new Set(COMPONENT_IMPORT_ALLOWLIST);
|
|
25
|
+
var DENIED_NONDETERMINISTIC_MEMBERS = /* @__PURE__ */ new Set([
|
|
26
|
+
"Math.random",
|
|
27
|
+
"Date.now",
|
|
28
|
+
"performance.now",
|
|
29
|
+
"crypto.getRandomValues",
|
|
30
|
+
"crypto.randomUUID"
|
|
31
|
+
]);
|
|
32
|
+
var DENIED_AMBIENT_CALLS = /* @__PURE__ */ new Set([
|
|
33
|
+
"Date",
|
|
34
|
+
"requestAnimationFrame",
|
|
35
|
+
"setTimeout",
|
|
36
|
+
"setInterval"
|
|
37
|
+
]);
|
|
38
|
+
function staticMemberPath(value) {
|
|
39
|
+
if (!value || typeof value !== "object") return null;
|
|
40
|
+
const node = value;
|
|
41
|
+
if (node.type === "Identifier" && typeof node.name === "string") return node.name;
|
|
42
|
+
if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") return null;
|
|
43
|
+
const object = staticMemberPath(node.object);
|
|
44
|
+
if (!object || !node.property || typeof node.property !== "object") return null;
|
|
45
|
+
const property = node.property;
|
|
46
|
+
const key = node.computed === true ? property.type === "StringLiteral" && typeof property.value === "string" ? property.value : null : property.type === "Identifier" && typeof property.name === "string" ? property.name : null;
|
|
47
|
+
return key ? `${object}.${key}` : null;
|
|
48
|
+
}
|
|
49
|
+
function normalizedAmbientPath(value) {
|
|
50
|
+
return staticMemberPath(value)?.replace(/^(?:globalThis|window|self)\./, "") ?? null;
|
|
51
|
+
}
|
|
52
|
+
function denied(specifier) {
|
|
53
|
+
throw new ComponentRuntimeError(
|
|
54
|
+
"component_import_denied",
|
|
55
|
+
`Component import is not allowed: ${JSON.stringify(specifier)}.`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function assertComponentImportsAllowed(tsxSource) {
|
|
59
|
+
let root;
|
|
60
|
+
try {
|
|
61
|
+
root = parse(tsxSource, {
|
|
62
|
+
sourceType: "module",
|
|
63
|
+
plugins: ["jsx", "typescript"],
|
|
64
|
+
errorRecovery: false
|
|
65
|
+
});
|
|
66
|
+
} catch (error) {
|
|
67
|
+
throw new ComponentRuntimeError(
|
|
68
|
+
"component_does_not_compile",
|
|
69
|
+
error instanceof Error ? error.message : String(error)
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
const visit = (value) => {
|
|
73
|
+
if (!value || typeof value !== "object") return;
|
|
74
|
+
if (Array.isArray(value)) {
|
|
75
|
+
for (const child of value) visit(child);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const node = value;
|
|
79
|
+
const type = node.type;
|
|
80
|
+
if ((type === "ImportDeclaration" || type === "ExportNamedDeclaration" || type === "ExportAllDeclaration") && node.source && typeof node.source === "object") {
|
|
81
|
+
const specifier = node.source.value;
|
|
82
|
+
if (typeof specifier === "string" && !ALLOWED_IMPORTS.has(specifier)) denied(specifier);
|
|
83
|
+
}
|
|
84
|
+
if (type === "ImportExpression") denied("dynamic import()");
|
|
85
|
+
if (type === "CallExpression") {
|
|
86
|
+
const callee = node.callee;
|
|
87
|
+
if (callee?.type === "Import") denied("dynamic import()");
|
|
88
|
+
if (callee?.type === "Identifier" && callee.name === "require") denied("require()");
|
|
89
|
+
if (callee?.type === "Identifier" && typeof callee.name === "string" && DENIED_AMBIENT_CALLS.has(callee.name)) {
|
|
90
|
+
denied(`ambient ${callee.name}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (type === "NewExpression") {
|
|
94
|
+
const callee = node.callee;
|
|
95
|
+
if (callee?.type === "Identifier" && (callee.name === "Date" || callee.name === "Worker" || callee.name === "SharedWorker")) denied(`ambient ${String(callee.name)}`);
|
|
96
|
+
}
|
|
97
|
+
if (type === "MemberExpression" || type === "OptionalMemberExpression") {
|
|
98
|
+
const member = normalizedAmbientPath(node);
|
|
99
|
+
if (member && DENIED_NONDETERMINISTIC_MEMBERS.has(member)) denied(`ambient ${member}`);
|
|
100
|
+
}
|
|
101
|
+
if (type === "VariableDeclarator") {
|
|
102
|
+
const init = normalizedAmbientPath(node.init);
|
|
103
|
+
const id = node.id;
|
|
104
|
+
if (init && ["Math", "Date", "performance", "crypto"].includes(init) && id?.type === "Identifier") {
|
|
105
|
+
denied(`ambient ${init} alias`);
|
|
106
|
+
}
|
|
107
|
+
if (init === "Math" && id?.type === "ObjectPattern") {
|
|
108
|
+
const properties = Array.isArray(id.properties) ? id.properties : [];
|
|
109
|
+
if (properties.some((property) => {
|
|
110
|
+
const key = property.key;
|
|
111
|
+
return key?.name === "random" || key?.value === "random";
|
|
112
|
+
})) denied("ambient Math.random alias");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (type === "TSImportType") {
|
|
116
|
+
const argument = node.argument;
|
|
117
|
+
if (argument?.type === "StringLiteral" && typeof argument.value === "string" && !ALLOWED_IMPORTS.has(argument.value)) {
|
|
118
|
+
denied(argument.value);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
for (const [key, child] of Object.entries(node)) {
|
|
122
|
+
if (key === "loc" || key === "start" || key === "end" || key === "errors" || key === "comments") continue;
|
|
123
|
+
visit(child);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
visit(root);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
COMPONENT_IMPORT_ALLOWLIST,
|
|
131
|
+
assertComponentImportsAllowed
|
|
132
|
+
};
|
|
@@ -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
|
-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
-
-
|
|
142
|
-
|
|
143
|
-
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
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:
|
|
19
|
-
downloadUrl:
|
|
21
|
+
previewUrl: preview.link,
|
|
22
|
+
downloadUrl: selected.link,
|
|
20
23
|
duration: Number(v.duration ?? 0),
|
|
21
|
-
width:
|
|
22
|
-
height:
|
|
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
|
|
43
|
-
|
|
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 ?? ""),
|