@cueframe/kernel 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/agent/errors.d.ts +8 -0
- 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 +5 -7
- package/dist/_members/authoring/types.d.ts +1 -2
- package/dist/_members/cloud-import/CloudImportService.d.ts +3 -4
- package/dist/_members/cloud-import/ImportProvider.d.ts +3 -7
- package/dist/_members/cloud-import/cloudConfig.d.ts +0 -6
- package/dist/_members/cloud-import/index.d.ts +2 -4
- 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} +25 -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 +2 -15
- package/dist/_members/composition/projection/behind-readiness.d.ts +4 -2
- package/dist/_members/composition/reframe/index.d.ts +56 -528
- package/dist/_members/composition/validators/brandKit.d.ts +251 -1252
- package/dist/_members/composition/validators/composePlan.d.ts +106 -818
- package/dist/_members/composition/validators/composition.d.ts +1328 -5886
- package/dist/_members/composition/validators/font.d.ts +35 -91
- package/dist/_members/composition/validators/index.d.ts +1 -0
- package/dist/_members/composition/validators/opaqueId.d.ts +13 -0
- package/dist/_members/composition/validators/project.d.ts +17 -52
- package/dist/_members/composition/validators/registry.d.ts +53 -135
- package/dist/_members/composition/validators/render.d.ts +811 -7443
- package/dist/_members/composition/validators/session.d.ts +41 -99
- package/dist/_members/composition/validators/webhook.d.ts +25 -60
- package/dist/_members/composition-ops/alphaLayers.d.ts +3 -2
- package/dist/_members/composition-ops/index.d.ts +412 -4348
- 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 +10 -10
- package/dist/_members/errors/registry.d.ts +201 -3
- package/dist/_members/foundation/primitives/index.d.ts +1 -1
- package/dist/_members/mcp/adapter.d.ts +22 -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 -34
- 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 +12 -2
- 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 +123 -727
- package/dist/_members/media-model/generation.d.ts +141 -228
- package/dist/_members/media-model/index.d.ts +1 -0
- package/dist/_members/media-model/opaqueId.d.ts +10 -0
- 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 +28 -27
- package/dist/{chunk-AW57IWNW.js → chunk-4FOOBSEE.js} +53 -3
- package/dist/{chunk-KFECIHED.js → chunk-4JRUGT2Y.js} +41 -106
- package/dist/{chunk-FMODQD5P.js → chunk-4ZE564YF.js} +16 -9
- package/dist/chunk-5OTQ7M43.js +718 -0
- package/dist/{chunk-GMD33ZD7.js → chunk-6ID2J64H.js} +1 -1
- package/dist/{chunk-NQSMEUJ6.js → chunk-6XI57FZZ.js} +362 -212
- package/dist/chunk-7KEUL3FI.js +500 -0
- package/dist/{chunk-GIA2SVVB.js → chunk-AD5HWBCE.js} +9 -4
- package/dist/{chunk-DCVJWGIA.js → chunk-C5SEPOWD.js} +165 -173
- package/dist/chunk-CGHTMZNC.js +6 -0
- package/dist/chunk-DHKQ47Q6.js +57 -0
- package/dist/{chunk-RP4SXXLJ.js → chunk-DQKSCHFC.js} +1 -1
- package/dist/{chunk-TO4BFNLJ.js → chunk-EEXCDFY5.js} +1 -1
- package/dist/{chunk-ZT7MHRQU.js → chunk-GCQ7Z7S7.js} +15 -5
- package/dist/{chunk-TPA6PYN2.js → chunk-GEGRJKKO.js} +25 -10
- package/dist/chunk-HHFDHJ3I.js +392 -0
- package/dist/{chunk-ICSZF37W.js → chunk-IBMJ33EL.js} +3 -3
- package/dist/{chunk-TFGKUWHY.js → chunk-IHFREGFA.js} +24 -22
- package/dist/chunk-IJ7PVJTK.js +114 -0
- package/dist/{chunk-UQSOS726.js → chunk-KKEY5MIW.js} +8 -8
- package/dist/{chunk-ZPRBGW4Y.js → chunk-LNBVTDFR.js} +1 -1
- package/dist/chunk-LQUWKBST.js +195 -0
- package/dist/chunk-M2TLRXEO.js +41 -0
- package/dist/{chunk-SDCEJAO2.js → chunk-NOEBAV2G.js} +58 -2
- package/dist/{chunk-DL7WYISQ.js → chunk-QBKDEO7J.js} +1601 -1435
- package/dist/chunk-RFXR7ATW.js +244 -0
- package/dist/chunk-SIAXP3ZO.js +131 -0
- package/dist/{chunk-MCBUX5XV.js → chunk-SLN5UKLT.js} +2 -2
- package/dist/{chunk-GH27OS5S.js → chunk-VCBLGZQQ.js} +19 -4
- package/dist/{chunk-TMB5AY6Q.js → chunk-XHUYWVYK.js} +1 -1
- package/dist/{chunk-BZZTVOGG.js → chunk-XVBOSPZI.js} +15 -17
- package/dist/{chunk-HBVAZXYO.js → chunk-Y3QGYASW.js} +14 -14
- package/dist/{chunk-DWLNPNC4.js → chunk-ZCAQHNPI.js} +1 -1
- package/dist/{chunk-DJW3UGBH.js → chunk-ZN6P3KOJ.js} +90 -39
- package/dist/chunk-ZZRBKGDA.js +109 -0
- package/dist/cloud-import.js +20 -116
- 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 +16 -30
- 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 +4 -2
- package/dist/composition-ops.js +23 -17
- package/dist/composition.js +17 -15
- package/dist/{context-JLLU3MYD.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 +33 -33
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +5 -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/media-model/media-kind.js +98 -9
- package/dist/media-model.js +83 -77
- package/dist/nle-export.js +15 -24
- package/dist/plane/conformance.js +1 -1
- package/dist/plane/contract.js +7 -0
- package/dist/plane.js +1 -1
- package/dist/primitives/effects.js +1 -1
- package/dist/primitives/hero-text.js +2 -2
- package/dist/primitives/layouts.js +1 -1
- package/dist/primitives/lib/index.js +18 -18
- package/dist/primitives/lib/schema.js +1 -1
- package/dist/primitives/lib.js +18 -18
- package/dist/primitives/scenes.js +2 -2
- package/dist/primitives/text.js +2 -2
- package/dist/primitives.js +10 -10
- 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 -572
- package/package.json +69 -61
- package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -2
- package/dist/_members/authoring/transpileComponent.d.ts +0 -6
- package/dist/_members/authoring/transpileHelper.d.ts +0 -8
- package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -18
- package/dist/_members/cloud-import/multipartUpload.d.ts +0 -12
- 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/convex-api/api.d.ts +0 -5
- package/dist/_members/convex-api/api.generated.d.ts +0 -1444
- package/dist/_members/convex-api/dataModel.d.ts +0 -6
- 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-6IU2UQI5.js +0 -107
- package/dist/chunk-EP2Y6M2J.js +0 -64
- package/dist/chunk-MHOQTPOB.js +0 -124
- package/dist/chunk-RHVLQNYF.js +0 -20
- package/dist/chunk-TXSFYUZH.js +0 -85
- package/dist/chunk-V24L35GM.js +0 -61
- package/dist/chunk-WZH57M53.js +0 -494
- package/dist/cloud-import/multipart.d.ts +0 -1
- package/dist/cloud-import/multipart.js +0 -8
- package/dist/compose/renderer.d.ts +0 -1
- package/dist/compose/renderer.js +0 -170
- package/dist/convex-api/dataModel.d.ts +0 -1
- package/dist/convex-api/dataModel.js +0 -0
- package/dist/convex-api.d.ts +0 -1
- package/dist/convex-api.js +0 -8
- package/dist/render-harness/sandboxGlobalSpecs.d.ts +0 -1
- package/dist/render-harness/sandboxGlobalSpecs.js +0 -13
- package/dist/{chunk-SAMQUUO5.js → chunk-BIBYZJL3.js} +3 -3
- package/dist/{chunk-23HFEKV7.js → chunk-QISFYLBB.js} +4 -4
- package/dist/{chunk-DYZE7JZA.js → chunk-TMIBBD5E.js} +3 -3
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getPrimitiveCatalogMeta
|
|
3
|
+
} from "./chunk-C5SEPOWD.js";
|
|
4
|
+
|
|
5
|
+
// ../execution/render-harness/src/renderInputAssets.ts
|
|
6
|
+
function isRemoteUrl(u) {
|
|
7
|
+
return typeof u === "string" && /^https?:\/\//i.test(u) && !/^https?:\/\/(127\.0\.0\.1|localhost)(:|\/|$)/i.test(u);
|
|
8
|
+
}
|
|
9
|
+
function assetUrlKey(url) {
|
|
10
|
+
return url.split("?")[0];
|
|
11
|
+
}
|
|
12
|
+
var CORE_OVERLAY_PARAM_SCHEMAS = {
|
|
13
|
+
image: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
|
|
14
|
+
gif: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
|
|
15
|
+
lottie: { type: "object", properties: { src: { type: "string", cueframeAsset: true } } },
|
|
16
|
+
"alpha-layer": { type: "object", properties: { src: { type: "string", cueframeAsset: true } } }
|
|
17
|
+
};
|
|
18
|
+
function assetPathsFromSchema(schema, prefix = [], out = []) {
|
|
19
|
+
if (!schema || typeof schema !== "object") return out;
|
|
20
|
+
const node = schema;
|
|
21
|
+
if (node.cueframeAsset === true) {
|
|
22
|
+
if (prefix.length === 0) throw new Error("Asset schema annotation must name a parameter path.");
|
|
23
|
+
out.push(prefix.join("."));
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
if (node.properties && typeof node.properties === "object") {
|
|
27
|
+
for (const [name, child] of Object.entries(node.properties)) {
|
|
28
|
+
assetPathsFromSchema(child, [...prefix, name], out);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (node.items) assetPathsFromSchema(node.items, [...prefix, "*"], out);
|
|
32
|
+
for (const branchKey of ["allOf", "anyOf", "oneOf"]) {
|
|
33
|
+
const branches = node[branchKey];
|
|
34
|
+
if (Array.isArray(branches)) for (const branch of branches) assetPathsFromSchema(branch, prefix, out);
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function isUnsealedAssetRef(value) {
|
|
39
|
+
try {
|
|
40
|
+
const parsed = new URL(value);
|
|
41
|
+
return !((parsed.protocol === "http:" || parsed.protocol === "https:") && ["127.0.0.1", "localhost", "[::1]"].includes(parsed.hostname));
|
|
42
|
+
} catch {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function* annotatedSlots(value, segments, path) {
|
|
47
|
+
if (segments.length === 0) return;
|
|
48
|
+
const [head, ...tail] = segments;
|
|
49
|
+
if (head === "*") {
|
|
50
|
+
if (!Array.isArray(value)) return;
|
|
51
|
+
for (let index = 0; index < value.length; index++) {
|
|
52
|
+
if (tail.length === 0 && typeof value[index] === "string" && value[index].length > 0) {
|
|
53
|
+
yield {
|
|
54
|
+
role: "overlayAsset",
|
|
55
|
+
path: `${path}[${index}]`,
|
|
56
|
+
get: () => typeof value[index] === "string" ? value[index] : void 0,
|
|
57
|
+
set: (url) => {
|
|
58
|
+
value[index] = url;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
} else {
|
|
62
|
+
yield* annotatedSlots(value[index], tail, `${path}[${index}]`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (value === null || typeof value !== "object") return;
|
|
68
|
+
const record = value;
|
|
69
|
+
if (tail.length === 0) {
|
|
70
|
+
if (typeof record[head] !== "string" || record[head].length === 0) return;
|
|
71
|
+
yield {
|
|
72
|
+
role: "overlayAsset",
|
|
73
|
+
path: `${path}.${head}`,
|
|
74
|
+
get: () => typeof record[head] === "string" ? record[head] : void 0,
|
|
75
|
+
set: (url) => {
|
|
76
|
+
record[head] = url;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
yield* annotatedSlots(record[head], tail, `${path}.${head}`);
|
|
82
|
+
}
|
|
83
|
+
function parameterAssetPaths(primitiveId) {
|
|
84
|
+
const schema = CORE_OVERLAY_PARAM_SCHEMAS[primitiveId] ?? getPrimitiveCatalogMeta(primitiveId)?.propSchema;
|
|
85
|
+
return [...new Set(assetPathsFromSchema(schema))];
|
|
86
|
+
}
|
|
87
|
+
function suspiciousUnannotatedAsset(value) {
|
|
88
|
+
if (typeof value === "string") {
|
|
89
|
+
return /^(?:https?:\/\/|\/\/|data:|blob:|file:|\.\.?\/)/i.test(value) || /url\(\s*['"]?/i.test(value) || /^[^\s]+\.(?:png|jpe?g|gif|webp|svg|json|lottie|mp4|mov|webm|m4a|mp3|wav|woff2?|ttf|otf)(?:\?.*)?$/i.test(value);
|
|
90
|
+
}
|
|
91
|
+
if (Array.isArray(value)) return value.some(suspiciousUnannotatedAsset);
|
|
92
|
+
if (value && typeof value === "object") return Object.values(value).some(suspiciousUnannotatedAsset);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
function assertPrimitiveAssetAnnotations(primitiveId, params) {
|
|
96
|
+
const remaining = structuredClone(params);
|
|
97
|
+
for (const assetPath of parameterAssetPaths(primitiveId)) {
|
|
98
|
+
for (const slot of annotatedSlots(remaining, assetPath.split("."), "params")) slot.set("");
|
|
99
|
+
}
|
|
100
|
+
if (suspiciousUnannotatedAsset(remaining)) {
|
|
101
|
+
throw new Error(
|
|
102
|
+
`overlayAsset: Primitive '${primitiveId}' contains an asset-like parameter outside its cueframeAsset schema annotation.`
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function* assetSlots(input) {
|
|
107
|
+
for (const clip of input.clips ?? []) {
|
|
108
|
+
yield { role: "source", path: `clips[${clip.id}].src`, get: () => clip.src, set: (u) => {
|
|
109
|
+
clip.src = u;
|
|
110
|
+
} };
|
|
111
|
+
yield { role: "matte", path: `clips[${clip.id}].packedUrl`, get: () => clip.packedUrl, set: (u) => {
|
|
112
|
+
clip.packedUrl = u;
|
|
113
|
+
} };
|
|
114
|
+
yield {
|
|
115
|
+
role: "trajectory",
|
|
116
|
+
path: `clips[${clip.id}].cropTrajectoryUrl`,
|
|
117
|
+
get: () => clip.cropTrajectoryUrl,
|
|
118
|
+
set: (u) => {
|
|
119
|
+
clip.cropTrajectoryUrl = u;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
for (const track of input.audioTracks ?? []) {
|
|
124
|
+
yield { role: "audio", path: `audioTracks[${track.id}].src`, get: () => track.src, set: (u) => {
|
|
125
|
+
track.src = u;
|
|
126
|
+
} };
|
|
127
|
+
}
|
|
128
|
+
for (const overlay of input.overlays ?? []) {
|
|
129
|
+
for (const assetPath of parameterAssetPaths(overlay.template)) {
|
|
130
|
+
yield* annotatedSlots(overlay.params, assetPath.split("."), `overlays[${overlay.id}].params`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
for (const effect of input.effects ?? []) {
|
|
134
|
+
for (const assetPath of parameterAssetPaths(effect.primitiveId)) {
|
|
135
|
+
yield* annotatedSlots(effect.params, assetPath.split("."), `effects[${effect.id}].params`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
for (const font of input.brandKit?.fontAssets ?? []) {
|
|
139
|
+
yield { role: "font", path: `brandKit.fontAssets[${font.family}:${font.weight}].url`, get: () => font.url, set: (u) => {
|
|
140
|
+
font.url = u;
|
|
141
|
+
} };
|
|
142
|
+
}
|
|
143
|
+
const bk = input.brandKit;
|
|
144
|
+
if (bk) {
|
|
145
|
+
if (bk.logo) {
|
|
146
|
+
yield { role: "brandMedia", path: "brandKit.logo.src", get: () => bk.logo.src, set: (u) => {
|
|
147
|
+
bk.logo.src = u;
|
|
148
|
+
} };
|
|
149
|
+
}
|
|
150
|
+
if (bk.intro) {
|
|
151
|
+
yield { role: "brandMedia", path: "brandKit.intro.src", get: () => bk.intro.src, set: (u) => {
|
|
152
|
+
bk.intro.src = u;
|
|
153
|
+
} };
|
|
154
|
+
}
|
|
155
|
+
if (bk.outro) {
|
|
156
|
+
yield { role: "brandMedia", path: "brandKit.outro.src", get: () => bk.outro.src, set: (u) => {
|
|
157
|
+
bk.outro.src = u;
|
|
158
|
+
} };
|
|
159
|
+
}
|
|
160
|
+
if (bk.watermark) {
|
|
161
|
+
yield { role: "brandMedia", path: "brandKit.watermark.src", get: () => bk.watermark.src, set: (u) => {
|
|
162
|
+
bk.watermark.src = u;
|
|
163
|
+
} };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function extFor(url, role) {
|
|
168
|
+
const path = assetUrlKey(url);
|
|
169
|
+
const m = path.match(/\.([a-z0-9]{2,5})$/i);
|
|
170
|
+
if (m) return m[1].toLowerCase();
|
|
171
|
+
return role === "trajectory" ? "json" : role === "audio" ? "m4a" : role === "font" ? "woff2" : "mp4";
|
|
172
|
+
}
|
|
173
|
+
function shortHash(s) {
|
|
174
|
+
let h = 2166136261 >>> 0;
|
|
175
|
+
for (let i = 0; i < s.length; i++) {
|
|
176
|
+
h ^= s.charCodeAt(i);
|
|
177
|
+
h = Math.imul(h, 16777619) >>> 0;
|
|
178
|
+
}
|
|
179
|
+
return h.toString(36);
|
|
180
|
+
}
|
|
181
|
+
function filenameFor(url, role) {
|
|
182
|
+
return `${role}-${shortHash(assetUrlKey(url))}.${extFor(url, role)}`;
|
|
183
|
+
}
|
|
184
|
+
function renderInputAssets(input) {
|
|
185
|
+
const seen = /* @__PURE__ */ new Set();
|
|
186
|
+
const refs = [];
|
|
187
|
+
for (const slot of assetSlots(input)) {
|
|
188
|
+
const url = slot.get();
|
|
189
|
+
if (typeof url !== "string" || !isRemoteUrl(url)) continue;
|
|
190
|
+
const key = assetUrlKey(url);
|
|
191
|
+
if (seen.has(key)) continue;
|
|
192
|
+
seen.add(key);
|
|
193
|
+
refs.push({ role: slot.role, url, filename: filenameFor(url, slot.role) });
|
|
194
|
+
}
|
|
195
|
+
return refs;
|
|
196
|
+
}
|
|
197
|
+
function assertNoRemoteRefs(input) {
|
|
198
|
+
for (const font of input.brandKit?.fontAssets ?? []) {
|
|
199
|
+
if (typeof font.family !== "string" || font.family.length === 0 || typeof font.url !== "string" || font.url.length === 0) {
|
|
200
|
+
throw new Error("font_not_reproducible: Every custom brand font requires a family and sealed asset URL.");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const requiredBrandMedia = [
|
|
204
|
+
["logo", input.brandKit?.logo],
|
|
205
|
+
["watermark", input.brandKit?.watermark],
|
|
206
|
+
["intro", input.brandKit?.intro?.kind === "video" ? input.brandKit.intro : void 0],
|
|
207
|
+
["outro", input.brandKit?.outro?.kind === "video" ? input.brandKit.outro : void 0]
|
|
208
|
+
];
|
|
209
|
+
for (const [slot, media] of requiredBrandMedia) {
|
|
210
|
+
if (media && (typeof media.src !== "string" || media.src.length === 0)) {
|
|
211
|
+
throw new Error(`brand_kit_unresolved: Brand ${slot} media has no sealed src asset.`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const leftover = [];
|
|
215
|
+
for (const slot of assetSlots(input)) {
|
|
216
|
+
const url = slot.get();
|
|
217
|
+
if (url && isUnsealedAssetRef(url)) {
|
|
218
|
+
leftover.push(`${slot.role}: ${slot.path}: ${assetUrlKey(url)}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (leftover.length > 0) {
|
|
222
|
+
throw new Error(
|
|
223
|
+
`RenderInput still references ${leftover.length} un-localized remote asset(s) after staging \u2014 the render environment is incomplete and would block/hang in a no-egress sandbox:
|
|
224
|
+
` + leftover.join("\n ")
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
for (const overlay of input.overlays ?? []) {
|
|
228
|
+
assertPrimitiveAssetAnnotations(
|
|
229
|
+
overlay.template,
|
|
230
|
+
overlay.params
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
for (const effect of input.effects ?? []) {
|
|
234
|
+
assertPrimitiveAssetAnnotations(effect.primitiveId, effect.params);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export {
|
|
239
|
+
isRemoteUrl,
|
|
240
|
+
assetUrlKey,
|
|
241
|
+
assetSlots,
|
|
242
|
+
renderInputAssets,
|
|
243
|
+
assertNoRemoteRefs
|
|
244
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ComponentRuntimeError
|
|
3
|
+
} from "./chunk-LQUWKBST.js";
|
|
4
|
+
|
|
5
|
+
// ../execution/component-runtime/src/importPolicy.ts
|
|
6
|
+
import { parse } from "@babel/parser";
|
|
7
|
+
var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
|
|
8
|
+
"react",
|
|
9
|
+
"remotion",
|
|
10
|
+
"@remotion/media",
|
|
11
|
+
"@remotion/motion-blur",
|
|
12
|
+
"@remotion/noise",
|
|
13
|
+
"@remotion/paths",
|
|
14
|
+
"@remotion/shapes",
|
|
15
|
+
"@remotion/three",
|
|
16
|
+
"three",
|
|
17
|
+
"three/webgpu",
|
|
18
|
+
"three/tsl",
|
|
19
|
+
"@react-three/fiber",
|
|
20
|
+
"@react-three/drei",
|
|
21
|
+
"@cueframe/animate"
|
|
22
|
+
]);
|
|
23
|
+
var ALLOWED_IMPORTS = new Set(COMPONENT_IMPORT_ALLOWLIST);
|
|
24
|
+
var DENIED_NONDETERMINISTIC_MEMBERS = /* @__PURE__ */ new Set([
|
|
25
|
+
"Math.random",
|
|
26
|
+
"Date.now",
|
|
27
|
+
"performance.now",
|
|
28
|
+
"crypto.getRandomValues",
|
|
29
|
+
"crypto.randomUUID"
|
|
30
|
+
]);
|
|
31
|
+
var DENIED_AMBIENT_CALLS = /* @__PURE__ */ new Set([
|
|
32
|
+
"Date",
|
|
33
|
+
"requestAnimationFrame",
|
|
34
|
+
"setTimeout",
|
|
35
|
+
"setInterval"
|
|
36
|
+
]);
|
|
37
|
+
function staticMemberPath(value) {
|
|
38
|
+
if (!value || typeof value !== "object") return null;
|
|
39
|
+
const node = value;
|
|
40
|
+
if (node.type === "Identifier" && typeof node.name === "string") return node.name;
|
|
41
|
+
if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") return null;
|
|
42
|
+
const object = staticMemberPath(node.object);
|
|
43
|
+
if (!object || !node.property || typeof node.property !== "object") return null;
|
|
44
|
+
const property = node.property;
|
|
45
|
+
const key = node.computed === true ? property.type === "StringLiteral" && typeof property.value === "string" ? property.value : null : property.type === "Identifier" && typeof property.name === "string" ? property.name : null;
|
|
46
|
+
return key ? `${object}.${key}` : null;
|
|
47
|
+
}
|
|
48
|
+
function normalizedAmbientPath(value) {
|
|
49
|
+
return staticMemberPath(value)?.replace(/^(?:globalThis|window|self)\./, "") ?? null;
|
|
50
|
+
}
|
|
51
|
+
function denied(specifier) {
|
|
52
|
+
throw new ComponentRuntimeError(
|
|
53
|
+
"component_import_denied",
|
|
54
|
+
`Component import is not allowed: ${JSON.stringify(specifier)}.`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
function assertComponentImportsAllowed(tsxSource) {
|
|
58
|
+
let root;
|
|
59
|
+
try {
|
|
60
|
+
root = parse(tsxSource, {
|
|
61
|
+
sourceType: "module",
|
|
62
|
+
plugins: ["jsx", "typescript"],
|
|
63
|
+
errorRecovery: false
|
|
64
|
+
});
|
|
65
|
+
} catch (error) {
|
|
66
|
+
throw new ComponentRuntimeError(
|
|
67
|
+
"component_does_not_compile",
|
|
68
|
+
error instanceof Error ? error.message : String(error)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
const visit = (value) => {
|
|
72
|
+
if (!value || typeof value !== "object") return;
|
|
73
|
+
if (Array.isArray(value)) {
|
|
74
|
+
for (const child of value) visit(child);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const node = value;
|
|
78
|
+
const type = node.type;
|
|
79
|
+
if ((type === "ImportDeclaration" || type === "ExportNamedDeclaration" || type === "ExportAllDeclaration") && node.source && typeof node.source === "object") {
|
|
80
|
+
const specifier = node.source.value;
|
|
81
|
+
if (typeof specifier === "string" && !ALLOWED_IMPORTS.has(specifier)) denied(specifier);
|
|
82
|
+
}
|
|
83
|
+
if (type === "ImportExpression") denied("dynamic import()");
|
|
84
|
+
if (type === "CallExpression") {
|
|
85
|
+
const callee = node.callee;
|
|
86
|
+
if (callee?.type === "Import") denied("dynamic import()");
|
|
87
|
+
if (callee?.type === "Identifier" && callee.name === "require") denied("require()");
|
|
88
|
+
if (callee?.type === "Identifier" && typeof callee.name === "string" && DENIED_AMBIENT_CALLS.has(callee.name)) {
|
|
89
|
+
denied(`ambient ${callee.name}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (type === "NewExpression") {
|
|
93
|
+
const callee = node.callee;
|
|
94
|
+
if (callee?.type === "Identifier" && (callee.name === "Date" || callee.name === "Worker" || callee.name === "SharedWorker")) denied(`ambient ${String(callee.name)}`);
|
|
95
|
+
}
|
|
96
|
+
if (type === "MemberExpression" || type === "OptionalMemberExpression") {
|
|
97
|
+
const member = normalizedAmbientPath(node);
|
|
98
|
+
if (member && DENIED_NONDETERMINISTIC_MEMBERS.has(member)) denied(`ambient ${member}`);
|
|
99
|
+
}
|
|
100
|
+
if (type === "VariableDeclarator") {
|
|
101
|
+
const init = normalizedAmbientPath(node.init);
|
|
102
|
+
const id = node.id;
|
|
103
|
+
if (init && ["Math", "Date", "performance", "crypto"].includes(init) && id?.type === "Identifier") {
|
|
104
|
+
denied(`ambient ${init} alias`);
|
|
105
|
+
}
|
|
106
|
+
if (init === "Math" && id?.type === "ObjectPattern") {
|
|
107
|
+
const properties = Array.isArray(id.properties) ? id.properties : [];
|
|
108
|
+
if (properties.some((property) => {
|
|
109
|
+
const key = property.key;
|
|
110
|
+
return key?.name === "random" || key?.value === "random";
|
|
111
|
+
})) denied("ambient Math.random alias");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (type === "TSImportType") {
|
|
115
|
+
const argument = node.argument;
|
|
116
|
+
if (argument?.type === "StringLiteral" && typeof argument.value === "string" && !ALLOWED_IMPORTS.has(argument.value)) {
|
|
117
|
+
denied(argument.value);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
for (const [key, child] of Object.entries(node)) {
|
|
121
|
+
if (key === "loc" || key === "start" || key === "end" || key === "errors" || key === "comments") continue;
|
|
122
|
+
visit(child);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
visit(root);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
COMPONENT_IMPORT_ALLOWLIST,
|
|
130
|
+
assertComponentImportsAllowed
|
|
131
|
+
};
|
|
@@ -48,14 +48,14 @@ var PREVIEW_FRAME_CASES = [
|
|
|
48
48
|
why: "THE 2026-08-15 WRONG-PIXELS BUG. Asked 6s past the end of a 5s composition, the local lane answers 200 with the LAST frame (Remotion's Thumbnail pins), and the founder's agent read that as evidence about its own timeline. NEITHER LANE DECIDES THIS AT THE ROUTE. The cloud's 422 comes from its RENDERER \u2014 `rethrowCoded` forwarding a downstream 422 (internal/sightedAction.ts:63) \u2014 so with the executor stubbed, as it is on both sides here, the cloud answers 200 too. That is the finding, not a gap in the harness: a rule enforced only by one lane's renderer is not a rule the API applies. `timestamp_out_of_bounds` already exists in the shared registry (packages/errors/src/registry.ts:94, httpStatus 422) \u2014 the vocabulary is single-sourced; the DECISION has no home. Stage 2 gives it one: a pure precondition both lanes run before reaching for an executor.",
|
|
49
49
|
body: { timestamps: [CONFORMANCE_DURATION_SEC + 6] },
|
|
50
50
|
expect: { status: 422, code: "timestamp_out_of_bounds" },
|
|
51
|
-
knownRed: ["
|
|
51
|
+
knownRed: ["cloud"]
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
name: "an unrecognised body key is refused",
|
|
55
55
|
why: "THREE DEFINITIONS, AND THE PUBLISHED ONE IS THE STRICTEST. The generated `previewFrameBody` ends `.strict()`, and SDK + MCP clients enforce it. But the route's own `PreviewFrameRequest` (evidence.ts:72) \u2014 the schema `zodJson` actually runs \u2014 ends `});` with NO `.strict()`, and the local handler has no unknown-key check either (ALLOWED_KEYS covers apply only). So a typo like `timestamp` or `dryRun` is accepted and ignored by BOTH servers while the published contract says it is rejected. This row asserts the STRICT reading because that is what is published and what every generated client already enforces; a server looser than its own spec is the divergence. Note this inverts the obvious stage-1 move: adopting the generated schema locally and nowhere else would make the desktop stricter than the cloud \u2014 a NEW divergence pointing the other way. Stage 1 has to settle strictness once, for both.",
|
|
56
56
|
body: { timestamps: [1], nonsenseKey: true },
|
|
57
57
|
expect: { status: 400, code: "validation_error" },
|
|
58
|
-
knownRed: ["
|
|
58
|
+
knownRed: ["cloud"]
|
|
59
59
|
}
|
|
60
60
|
];
|
|
61
61
|
function isKnownRed(c, lane) {
|
|
@@ -26,7 +26,7 @@ function makeNetworkExecutor(baseUrl, apiKey) {
|
|
|
26
26
|
}
|
|
27
27
|
function makeSessionExecutor(opts) {
|
|
28
28
|
return {
|
|
29
|
-
async invoke({ method, path, body, query }) {
|
|
29
|
+
async invoke({ method, path, body, query, idempotent }) {
|
|
30
30
|
const token = await opts.getToken();
|
|
31
31
|
if (!token) {
|
|
32
32
|
return { status: 0, text: JSON.stringify({ error: { code: "offline", message: "No session \u2014 sign in to use cloud features." } }) };
|
|
@@ -43,7 +43,11 @@ function makeSessionExecutor(opts) {
|
|
|
43
43
|
}
|
|
44
44
|
const mutating = method !== "GET" && method !== "HEAD";
|
|
45
45
|
if (mutating) {
|
|
46
|
-
headers["idempotency-key"] =
|
|
46
|
+
headers["idempotency-key"] = requestIdempotencyKey(
|
|
47
|
+
"sess",
|
|
48
|
+
`${method}|${path}|${payload ?? ""}`,
|
|
49
|
+
idempotent === true
|
|
50
|
+
);
|
|
47
51
|
}
|
|
48
52
|
const attempt = () => fetch(url, { method, headers, body: payload });
|
|
49
53
|
let res;
|
|
@@ -69,9 +73,16 @@ function fnv1a(input) {
|
|
|
69
73
|
}
|
|
70
74
|
return h.toString(16);
|
|
71
75
|
}
|
|
76
|
+
function freshInvocationNonce() {
|
|
77
|
+
return globalThis.crypto.randomUUID();
|
|
78
|
+
}
|
|
79
|
+
function requestIdempotencyKey(prefix, content, idempotent) {
|
|
80
|
+
const identity = idempotent ? content : `${content}|${freshInvocationNonce()}`;
|
|
81
|
+
return `${prefix}-${fnv1a(identity)}`;
|
|
82
|
+
}
|
|
72
83
|
function makePlatformExecutor(baseUrl, deployKey, orgId, opts) {
|
|
73
84
|
return {
|
|
74
|
-
async invoke({ method, path, body, query }) {
|
|
85
|
+
async invoke({ method, path, body, query, idempotent }) {
|
|
75
86
|
const url = `${baseUrl}${path}${query ? `?${query}` : ""}`;
|
|
76
87
|
const headers = {
|
|
77
88
|
"x-deploy-key": deployKey,
|
|
@@ -79,7 +90,11 @@ function makePlatformExecutor(baseUrl, deployKey, orgId, opts) {
|
|
|
79
90
|
...opts?.actingUserId ? { "x-acting-user-id": opts.actingUserId } : {}
|
|
80
91
|
};
|
|
81
92
|
if (method !== "GET" && method !== "HEAD") {
|
|
82
|
-
headers["idempotency-key"] =
|
|
93
|
+
headers["idempotency-key"] = requestIdempotencyKey(
|
|
94
|
+
"plat",
|
|
95
|
+
`${method}|${path}|${body === void 0 ? "" : JSON.stringify(body)}`,
|
|
96
|
+
idempotent === true
|
|
97
|
+
);
|
|
83
98
|
}
|
|
84
99
|
let payload;
|
|
85
100
|
if (body !== void 0) {
|
|
@@ -4,16 +4,16 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
getPrimitiveSubtextParam,
|
|
6
6
|
getPrimitiveTextParam
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-C5SEPOWD.js";
|
|
8
8
|
import {
|
|
9
9
|
selectAllOverlays
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-IBMJ33EL.js";
|
|
11
11
|
import {
|
|
12
12
|
ComposePlan
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IHFREGFA.js";
|
|
14
14
|
import {
|
|
15
15
|
OverlayClipSource
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7KEUL3FI.js";
|
|
17
17
|
|
|
18
18
|
// ../authoring/src/tools/toolSets.ts
|
|
19
19
|
var COMPOSE_PLANNER_TOOLS = [
|
|
@@ -63,7 +63,7 @@ var COMPOSE_ROLE_TOOLS = Object.freeze({
|
|
|
63
63
|
schema: z.object({}),
|
|
64
64
|
metadata: { label: "Get Context" },
|
|
65
65
|
handler: async (_args, capabilities) => {
|
|
66
|
-
const { buildDirectorContext } = await import("./context-
|
|
66
|
+
const { buildDirectorContext } = await import("./context-4GSDBFT3.js");
|
|
67
67
|
return buildDirectorContext(capabilities);
|
|
68
68
|
}
|
|
69
69
|
},
|
|
@@ -113,9 +113,6 @@ var COMPOSE_ROLE_TOOLS = Object.freeze({
|
|
|
113
113
|
lines.push(`
|
|
114
114
|
Source code:
|
|
115
115
|
${overlay.params.jsxSource}`);
|
|
116
|
-
} else if (overlay.params.sourceCode) {
|
|
117
|
-
lines.push(`
|
|
118
|
-
(Compiled code only \u2014 no JSX source available)`);
|
|
119
116
|
} else {
|
|
120
117
|
lines.push(`
|
|
121
118
|
(No custom source code \u2014 uses built-in template rendering)`);
|
|
@@ -125,7 +122,7 @@ ${overlay.params.jsxSource}`);
|
|
|
125
122
|
},
|
|
126
123
|
update_overlay: {
|
|
127
124
|
name: "update_overlay",
|
|
128
|
-
description: "Update properties of an existing motion graphic overlay. Only include the fields you want to change.
|
|
125
|
+
description: "Update properties of an existing motion graphic overlay. Only include the fields you want to change. Provide authored jsxSource to re-generate a custom component.",
|
|
129
126
|
schema: z.object({
|
|
130
127
|
id: z.string().min(1).describe("The overlay clip ID (a UUID). Use the exact id inspect_overlay reports \u2014 never fabricate IDs."),
|
|
131
128
|
startTime: z.coerce.number().min(0).optional().describe("New start time in seconds"),
|
|
@@ -141,7 +138,7 @@ ${overlay.params.jsxSource}`);
|
|
|
141
138
|
textColor: z.string().regex(/^#[0-9a-fA-F]{3,8}$/, "Must be a hex color").optional().describe("New text color as hex"),
|
|
142
139
|
fontFamily: z.string().optional().describe("New font family"),
|
|
143
140
|
backgroundColor: z.string().regex(/^#[0-9a-fA-F]{3,8}$/, "Must be a hex color").optional().describe("New background color as hex"),
|
|
144
|
-
|
|
141
|
+
jsxSource: z.string().max(1e4).optional().describe("New canonical TSX module source for the overlay"),
|
|
145
142
|
transition: z.enum(["fade", "slide", "wipe", "none"]).optional().describe("New transition type"),
|
|
146
143
|
sequenceGroup: z.string().optional().describe("New sequence group ID"),
|
|
147
144
|
primitiveId: z.string().optional().describe(
|
|
@@ -166,7 +163,7 @@ ${overlay.params.jsxSource}`);
|
|
|
166
163
|
metadata: { label: "Update Overlay" },
|
|
167
164
|
inputExamples: [
|
|
168
165
|
{ input: { id: "abc-123", text: "Updated Title", accentColor: "#6366f1" } },
|
|
169
|
-
{ input: { id: "def-456", startTime: 10, duration: 5,
|
|
166
|
+
{ input: { id: "def-456", startTime: 10, duration: 5, jsxSource: "export default function..." } },
|
|
170
167
|
{ input: { id: "ghi-789", zPlane: "behind-subject", anchor: { x: 0.5, y: 0.4 }, parallax: 0.1 } }
|
|
171
168
|
],
|
|
172
169
|
handler: async (args, capabilities) => {
|
|
@@ -207,15 +204,16 @@ ${overlay.params.jsxSource}`);
|
|
|
207
204
|
if (args.position != null) newParams.position = args.position;
|
|
208
205
|
if (args.transition != null) newParams.transition = args.transition;
|
|
209
206
|
if (args.sequenceGroup != null) newParams.sequenceGroup = args.sequenceGroup;
|
|
210
|
-
const jsxSource = args.
|
|
207
|
+
const jsxSource = args.jsxSource;
|
|
211
208
|
let primitiveId = args.primitiveId ?? existingTemplate;
|
|
212
209
|
if (jsxSource) {
|
|
213
|
-
const transpileFn = capabilities.transpile?.transpile;
|
|
214
|
-
if (!transpileFn) return { error: "Transpiler not available" };
|
|
215
|
-
const result = await transpileFn(jsxSource);
|
|
216
|
-
if (!result.success) return { error: `JSX transpile failed: ${result.error}` };
|
|
217
|
-
newParams.sourceCode = result.code;
|
|
218
210
|
newParams.jsxSource = jsxSource;
|
|
211
|
+
newParams.componentManifest ??= {
|
|
212
|
+
version: 2,
|
|
213
|
+
assets: {},
|
|
214
|
+
graphics: { api: "canvas2d", required: true, accelerationPreference: "software-allowed" },
|
|
215
|
+
alphaPolicy: "requires-transparency"
|
|
216
|
+
};
|
|
219
217
|
primitiveId = "custom";
|
|
220
218
|
}
|
|
221
219
|
const newSource = { ...existingSource, primitiveId, params: newParams };
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isContrastCritical
|
|
3
3
|
} from "./chunk-YLDMAZZE.js";
|
|
4
|
+
import {
|
|
5
|
+
catalog as catalog3
|
|
6
|
+
} from "./chunk-AWT3P5ZN.js";
|
|
4
7
|
import {
|
|
5
8
|
catalog as catalog6
|
|
6
9
|
} from "./chunk-BKHGL4MB.js";
|
|
7
10
|
import {
|
|
8
11
|
catalog as catalog2
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6ID2J64H.js";
|
|
10
13
|
import {
|
|
11
14
|
catalog as catalog8
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BIBYZJL3.js";
|
|
13
16
|
import {
|
|
14
17
|
catalog as catalog4
|
|
15
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-DQKSCHFC.js";
|
|
16
19
|
import {
|
|
17
20
|
catalog as catalog7
|
|
18
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-TMIBBD5E.js";
|
|
19
22
|
import {
|
|
20
23
|
catalog
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import {
|
|
23
|
-
catalog as catalog3
|
|
24
|
-
} from "./chunk-AWT3P5ZN.js";
|
|
24
|
+
} from "./chunk-KKEY5MIW.js";
|
|
25
25
|
import {
|
|
26
26
|
catalog as catalog5
|
|
27
27
|
} from "./chunk-G5BFI32U.js";
|
|
28
28
|
import {
|
|
29
29
|
getPrimitiveSubtextParam,
|
|
30
30
|
getPrimitiveTextParam
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-C5SEPOWD.js";
|
|
32
32
|
import {
|
|
33
33
|
NEUTRAL_RAMP
|
|
34
34
|
} from "./chunk-JF4JJAFP.js";
|
|
35
35
|
import {
|
|
36
36
|
CueframeError,
|
|
37
37
|
encodeError
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-4FOOBSEE.js";
|
|
39
39
|
|
|
40
40
|
// ../execution/compose/src/primitiveRegistry.ts
|
|
41
41
|
var allCatalogs = [
|
|
@@ -89,8 +89,8 @@ function getPrimitiveText(overlay) {
|
|
|
89
89
|
if (typeof canonical === "string" && canonical.length > 0) return canonical;
|
|
90
90
|
const textParam = getPrimitiveTextParam(overlay.template);
|
|
91
91
|
if (typeof textParam === "string") {
|
|
92
|
-
const
|
|
93
|
-
if (typeof
|
|
92
|
+
const native = overlay.params[textParam];
|
|
93
|
+
if (typeof native === "string") return native;
|
|
94
94
|
}
|
|
95
95
|
return void 0;
|
|
96
96
|
}
|
|
@@ -99,8 +99,8 @@ function getPrimitiveSubtext(overlay) {
|
|
|
99
99
|
if (typeof canonical === "string" && canonical.length > 0) return canonical;
|
|
100
100
|
const subtextParam = getPrimitiveSubtextParam(overlay.template);
|
|
101
101
|
if (typeof subtextParam === "string") {
|
|
102
|
-
const
|
|
103
|
-
if (typeof
|
|
102
|
+
const native = overlay.params[subtextParam];
|
|
103
|
+
if (typeof native === "string") return native;
|
|
104
104
|
}
|
|
105
105
|
return void 0;
|
|
106
106
|
}
|