@cueframe/kernel 0.0.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/TextureLoader-UQOFUSAP.js +422 -0
- package/dist/VideoTexture-AQWSPIJG.js +62 -0
- package/dist/_members/account-model/index.d.ts +1 -0
- package/dist/_members/account-model/index.js +4 -0
- package/dist/_members/account-model/testing/conversationStoreContract.d.ts +97 -0
- package/dist/_members/account-model/testing/conversationStoreContract.js +168 -0
- package/dist/_members/account-model/testing/index.d.ts +7 -0
- package/dist/_members/account-model/testing/index.js +7 -0
- package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +52 -0
- package/dist/_members/account-model/testing/restorePointStoreContract.js +69 -0
- package/dist/_members/account-model/types/index.d.ts +5 -0
- package/dist/_members/account-model/types/index.js +1 -0
- package/dist/_members/account-model/validators/contextFile.d.ts +36 -0
- package/dist/_members/account-model/validators/contextFile.js +18 -0
- package/dist/_members/account-model/validators/conversation.d.ts +153 -0
- package/dist/_members/account-model/validators/conversation.js +95 -0
- package/dist/_members/account-model/validators/dashboardInsight.d.ts +30 -0
- package/dist/_members/account-model/validators/dashboardInsight.js +16 -0
- package/dist/_members/account-model/validators/index.d.ts +7 -0
- package/dist/_members/account-model/validators/index.js +7 -0
- package/dist/_members/account-model/validators/sessionToken.d.ts +79 -0
- package/dist/_members/account-model/validators/sessionToken.js +49 -0
- package/dist/_members/account-model/validators/uploadToken.d.ts +33 -0
- package/dist/_members/account-model/validators/uploadToken.js +16 -0
- package/dist/_members/account-model/validators/userSettings.d.ts +22 -0
- package/dist/_members/account-model/validators/userSettings.js +12 -0
- package/dist/_members/account-model/validators/workingComposition.d.ts +34 -0
- package/dist/_members/account-model/validators/workingComposition.js +20 -0
- package/dist/_members/animate/animations/Create.d.ts +36 -0
- package/dist/_members/animate/animations/FadeIn.d.ts +36 -0
- package/dist/_members/animate/animations/GrowArrow.d.ts +36 -0
- package/dist/_members/animate/animations/GrowFromCenter.d.ts +25 -0
- package/dist/_members/animate/animations/Indicate.d.ts +29 -0
- package/dist/_members/animate/animations/MoveAlongPath.d.ts +30 -0
- package/dist/_members/animate/animations/Transform.d.ts +46 -0
- package/dist/_members/animate/animations/Wiggle.d.ts +31 -0
- package/dist/_members/animate/animations/Write.d.ts +35 -0
- package/dist/_members/animate/animations/index.d.ts +9 -0
- package/dist/_members/animate/composition/AnimationGroup.d.ts +32 -0
- package/dist/_members/animate/composition/LaggedStart.d.ts +33 -0
- package/dist/_members/animate/composition/Succession.d.ts +27 -0
- package/dist/_members/animate/composition/index.d.ts +3 -0
- package/dist/_members/animate/easing/index.d.ts +3 -0
- package/dist/_members/animate/easing/rush.d.ts +16 -0
- package/dist/_members/animate/easing/smooth.d.ts +8 -0
- package/dist/_members/animate/easing/smootherstep.d.ts +7 -0
- package/dist/_members/animate/index.d.ts +25 -0
- package/dist/_members/animate/mobjects/Arrow.d.ts +41 -0
- package/dist/_members/animate/mobjects/BrandBox.d.ts +43 -0
- package/dist/_members/animate/mobjects/DiGraph.d.ts +21 -0
- package/dist/_members/animate/mobjects/Graph.d.ts +72 -0
- package/dist/_members/animate/mobjects/index.d.ts +4 -0
- package/dist/_members/animate/three/ThreeCanvas.d.ts +36 -0
- package/dist/_members/animate/three/drei.d.ts +13 -0
- package/dist/_members/animate/three/index.d.ts +2 -0
- package/dist/_members/authoring/agent/buildTools.d.ts +54 -0
- package/dist/_members/authoring/agent/contextManagement.d.ts +73 -0
- package/dist/_members/authoring/agent/errors.d.ts +12 -0
- package/dist/_members/authoring/agent/index.d.ts +2 -0
- package/dist/_members/authoring/agent/memoryTool.d.ts +8 -0
- package/dist/_members/authoring/agent/promptCache.d.ts +34 -0
- package/dist/_members/authoring/agent.d.ts +59 -0
- package/dist/_members/authoring/capabilities.d.ts +306 -0
- package/dist/_members/authoring/composer/index.d.ts +2 -0
- package/dist/_members/authoring/composer/scopes.d.ts +26 -0
- package/dist/_members/authoring/context/brand.d.ts +37 -0
- package/dist/_members/authoring/context/brandTokens.d.ts +6 -0
- package/dist/_members/authoring/context/index.d.ts +8 -0
- package/dist/_members/authoring/context/timeline.d.ts +33 -0
- package/dist/_members/authoring/context/transcript.d.ts +24 -0
- package/dist/_members/authoring/context/types.d.ts +5 -0
- package/dist/_members/authoring/decomposer.d.ts +17 -0
- package/dist/_members/authoring/evaluate.d.ts +37 -0
- package/dist/_members/authoring/evaluator.d.ts +22 -0
- package/dist/_members/authoring/index.d.ts +25 -0
- package/dist/_members/authoring/models/modelFactory.d.ts +107 -0
- package/dist/_members/authoring/motion/applyMotionPreset.d.ts +31 -0
- package/dist/_members/authoring/motion/index.d.ts +6 -0
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +38 -0
- package/dist/_members/authoring/motion/shell.d.ts +30 -0
- package/dist/_members/authoring/pipelineTrace.d.ts +38 -0
- package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +5 -0
- package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +18 -0
- package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +5 -0
- package/dist/_members/authoring/prompts/graphics.d.ts +14 -0
- package/dist/_members/authoring/prompts/index.d.ts +4 -0
- package/dist/_members/authoring/prompts/plannerPrompt.d.ts +48 -0
- package/dist/_members/authoring/providers/index.d.ts +1 -0
- package/dist/_members/authoring/providers/resourceApi.d.ts +32 -0
- package/dist/_members/authoring/resource-routing.d.ts +186 -0
- package/dist/_members/authoring/resources.d.ts +59 -0
- package/dist/_members/authoring/scope.d.ts +31 -0
- package/dist/_members/authoring/tools/brandTokens.d.ts +34 -0
- package/dist/_members/authoring/tools/composeRoleTools.d.ts +112 -0
- package/dist/_members/authoring/tools/index.d.ts +4 -0
- package/dist/_members/authoring/tools/toolSets.d.ts +54 -0
- package/dist/_members/authoring/transpileComponent.d.ts +40 -0
- package/dist/_members/authoring/transpileHelper.d.ts +26 -0
- package/dist/_members/authoring/types.d.ts +572 -0
- package/dist/_members/brand-derivation/constants.d.ts +27 -0
- package/dist/_members/brand-derivation/constants.js +20 -0
- package/dist/_members/brand-derivation/contrastSafe.d.ts +47 -0
- package/dist/_members/brand-derivation/contrastSafe.js +114 -0
- package/dist/_members/brand-derivation/index.d.ts +1 -0
- package/dist/_members/brand-derivation/index.js +1 -0
- package/dist/_members/compose/CompositionRenderer.d.ts +12 -0
- package/dist/_members/compose/catalog.d.ts +1 -0
- package/dist/_members/compose/index.d.ts +8 -0
- package/dist/_members/compose/primitiveRegistry.d.ts +90 -0
- package/dist/_members/compose/sceneToRenderInput.d.ts +51 -0
- package/dist/_members/compose/schema.d.ts +45 -0
- package/dist/_members/compose/tokenResolver.d.ts +28 -0
- package/dist/_members/composition/audio/audioMix.d.ts +67 -0
- package/dist/_members/composition/audio/audioMix.js +61 -0
- package/dist/_members/composition/audio/index.d.ts +5 -0
- package/dist/_members/composition/audio/index.js +5 -0
- package/dist/_members/composition/audio/mixStaging.d.ts +107 -0
- package/dist/_members/composition/audio/mixStaging.js +195 -0
- package/dist/_members/composition/audio/musicPack.d.ts +56 -0
- package/dist/_members/composition/audio/musicPack.generated.d.ts +9 -0
- package/dist/_members/composition/audio/musicPack.generated.js +136 -0
- package/dist/_members/composition/audio/musicPack.js +36 -0
- package/dist/_members/composition/audio/pack.d.ts +67 -0
- package/dist/_members/composition/audio/pack.generated.d.ts +9 -0
- package/dist/_members/composition/audio/pack.generated.js +603 -0
- package/dist/_members/composition/audio/pack.js +48 -0
- package/dist/_members/composition/audio/palette.d.ts +82 -0
- package/dist/_members/composition/audio/palette.js +134 -0
- package/dist/_members/composition/autozoom/index.d.ts +57 -0
- package/dist/_members/composition/autozoom/index.js +83 -0
- package/dist/_members/composition/brand-kit.d.ts +58 -0
- package/dist/_members/composition/brand-kit.js +45 -0
- package/dist/_members/composition/brief/contract.d.ts +132 -0
- package/dist/_members/composition/brief/contract.js +209 -0
- package/dist/_members/composition/color-grade.d.ts +17 -0
- package/dist/_members/composition/color-grade.js +80 -0
- package/dist/_members/composition/depth.d.ts +24 -0
- package/dist/_members/composition/depth.js +8 -0
- package/dist/_members/composition/fixtures/agentErrored.d.ts +25 -0
- package/dist/_members/composition/fixtures/index.d.ts +7 -0
- package/dist/_members/composition/fixtures/index.js +143 -0
- package/dist/_members/composition/fixtures/vaayaErrored.d.ts +25 -0
- package/dist/_members/composition/fixtures/vaayaErrored.js +203 -0
- package/dist/_members/composition/fonts.d.ts +68 -0
- package/dist/_members/composition/fonts.js +162 -0
- package/dist/_members/composition/graphics-plan/compile.d.ts +43 -0
- package/dist/_members/composition/graphics-plan/compile.js +221 -0
- package/dist/_members/composition/graphics-plan/index.d.ts +11 -0
- package/dist/_members/composition/graphics-plan/index.js +10 -0
- package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +51 -0
- package/dist/_members/composition/graphics-plan/instantiateMotif.js +44 -0
- package/dist/_members/composition/graphics-plan/motion.d.ts +19 -0
- package/dist/_members/composition/graphics-plan/motion.js +66 -0
- package/dist/_members/composition/graphics-plan/schemas.d.ts +1672 -0
- package/dist/_members/composition/graphics-plan/schemas.js +261 -0
- package/dist/_members/composition/graphics-plan/solve.d.ts +34 -0
- package/dist/_members/composition/graphics-plan/solve.js +145 -0
- package/dist/_members/composition/index.d.ts +7 -0
- package/dist/_members/composition/index.js +5 -0
- package/dist/_members/composition/invariants/clipPlacement.d.ts +65 -0
- package/dist/_members/composition/invariants/clipPlacement.js +69 -0
- package/dist/_members/composition/invariants/composition.d.ts +9 -0
- package/dist/_members/composition/invariants/composition.js +28 -0
- package/dist/_members/composition/invariants/errors.d.ts +11 -0
- package/dist/_members/composition/invariants/errors.js +10 -0
- package/dist/_members/composition/invariants/etag.d.ts +10 -0
- package/dist/_members/composition/invariants/etag.js +38 -0
- package/dist/_members/composition/invariants/ids.d.ts +9 -0
- package/dist/_members/composition/invariants/ids.js +33 -0
- package/dist/_members/composition/invariants/index.d.ts +9 -0
- package/dist/_members/composition/invariants/index.js +9 -0
- package/dist/_members/composition/invariants/keyframes.d.ts +23 -0
- package/dist/_members/composition/invariants/keyframes.js +45 -0
- package/dist/_members/composition/invariants/markers.d.ts +9 -0
- package/dist/_members/composition/invariants/markers.js +29 -0
- package/dist/_members/composition/invariants/time.d.ts +22 -0
- package/dist/_members/composition/invariants/time.js +20 -0
- package/dist/_members/composition/invariants/tracks.d.ts +58 -0
- package/dist/_members/composition/invariants/tracks.js +304 -0
- package/dist/_members/composition/ops/compositionOps.d.ts +129 -0
- package/dist/_members/composition/ops/compositionOps.js +1056 -0
- package/dist/_members/composition/ops/headlessStore.d.ts +40 -0
- package/dist/_members/composition/ops/headlessStore.js +94 -0
- package/dist/_members/composition/ops/index.d.ts +6 -0
- package/dist/_members/composition/ops/index.js +4 -0
- package/dist/_members/composition/ops/selectors.d.ts +81 -0
- package/dist/_members/composition/ops/selectors.js +118 -0
- package/dist/_members/composition/ops/timeline-word.d.ts +24 -0
- package/dist/_members/composition/ops/timeline-word.js +1 -0
- package/dist/_members/composition/ops/transcript.d.ts +44 -0
- package/dist/_members/composition/ops/transcript.js +77 -0
- package/dist/_members/composition/ops/types.d.ts +145 -0
- package/dist/_members/composition/ops/types.js +16 -0
- package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +82 -0
- package/dist/_members/composition/primitive-catalog/catalogQuery.js +150 -0
- package/dist/_members/composition/primitive-catalog/disabled.d.ts +3 -0
- package/dist/_members/composition/primitive-catalog/disabled.js +32 -0
- package/dist/_members/composition/primitive-catalog/generated/meta.d.ts +2 -0
- package/dist/_members/composition/primitive-catalog/generated/meta.js +15161 -0
- package/dist/_members/composition/primitive-catalog/index.d.ts +28 -0
- package/dist/_members/composition/primitive-catalog/index.js +46 -0
- package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +76 -0
- package/dist/_members/composition/primitive-catalog/paramValidation.js +231 -0
- package/dist/_members/composition/primitive-catalog/projection.d.ts +99 -0
- package/dist/_members/composition/primitive-catalog/projection.js +164 -0
- package/dist/_members/composition/primitive-catalog/types.d.ts +123 -0
- package/dist/_members/composition/primitive-catalog/types.js +14 -0
- package/dist/_members/composition/projection/behind-placement.d.ts +64 -0
- package/dist/_members/composition/projection/behind-placement.js +62 -0
- package/dist/_members/composition/projection/brandKit.d.ts +308 -0
- package/dist/_members/composition/projection/brandKit.js +482 -0
- package/dist/_members/composition/projection/cardTokens.d.ts +70 -0
- package/dist/_members/composition/projection/cardTokens.js +209 -0
- package/dist/_members/composition/projection/composition-floor.d.ts +349 -0
- package/dist/_members/composition/projection/composition-floor.js +582 -0
- package/dist/_members/composition/projection/cropProjection.d.ts +140 -0
- package/dist/_members/composition/projection/cropProjection.js +257 -0
- package/dist/_members/composition/projection/index.d.ts +7 -0
- package/dist/_members/composition/projection/index.js +7 -0
- package/dist/_members/composition/projection/occlusion-budget.d.ts +67 -0
- package/dist/_members/composition/projection/occlusion-budget.js +104 -0
- package/dist/_members/composition/projection/safe-zones.d.ts +38 -0
- package/dist/_members/composition/projection/safe-zones.js +99 -0
- package/dist/_members/composition/reframe/aspectLoss.d.ts +49 -0
- package/dist/_members/composition/reframe/aspectLoss.js +115 -0
- package/dist/_members/composition/reframe/coverage.d.ts +48 -0
- package/dist/_members/composition/reframe/coverage.js +62 -0
- package/dist/_members/composition/reframe/derive.d.ts +37 -0
- package/dist/_members/composition/reframe/derive.js +73 -0
- package/dist/_members/composition/reframe/index.d.ts +658 -0
- package/dist/_members/composition/reframe/index.js +109 -0
- package/dist/_members/composition/reframe/kenBurns.d.ts +43 -0
- package/dist/_members/composition/reframe/kenBurns.js +64 -0
- package/dist/_members/composition/reframe/shotScale.d.ts +118 -0
- package/dist/_members/composition/reframe/shotScale.js +176 -0
- package/dist/_members/composition/reframe/trajectory.d.ts +99 -0
- package/dist/_members/composition/reframe/trajectory.js +124 -0
- package/dist/_members/composition/timeline/compound.d.ts +36 -0
- package/dist/_members/composition/timeline/compound.js +134 -0
- package/dist/_members/composition/timeline/index.d.ts +9 -0
- package/dist/_members/composition/timeline/index.js +9 -0
- package/dist/_members/composition/timeline/intent.d.ts +54 -0
- package/dist/_members/composition/timeline/intent.js +228 -0
- package/dist/_members/composition/timeline/keyframes.d.ts +50 -0
- package/dist/_members/composition/timeline/keyframes.js +121 -0
- package/dist/_members/composition/timeline/link.d.ts +36 -0
- package/dist/_members/composition/timeline/link.js +59 -0
- package/dist/_members/composition/timeline/occupancy.d.ts +72 -0
- package/dist/_members/composition/timeline/occupancy.js +36 -0
- package/dist/_members/composition/timeline/placement.d.ts +86 -0
- package/dist/_members/composition/timeline/placement.js +74 -0
- package/dist/_members/composition/timeline/plan.d.ts +109 -0
- package/dist/_members/composition/timeline/plan.js +31 -0
- package/dist/_members/composition/timeline/resolve.d.ts +55 -0
- package/dist/_members/composition/timeline/resolve.js +170 -0
- package/dist/_members/composition/timeline/trims.d.ts +54 -0
- package/dist/_members/composition/timeline/trims.js +278 -0
- package/dist/_members/composition/types/index.d.ts +8 -0
- package/dist/_members/composition/types/index.js +1 -0
- package/dist/_members/composition/validators/brandKit.d.ts +1472 -0
- package/dist/_members/composition/validators/brandKit.js +295 -0
- package/dist/_members/composition/validators/composePlan.d.ts +960 -0
- package/dist/_members/composition/validators/composePlan.js +113 -0
- package/dist/_members/composition/validators/composition.d.ts +6881 -0
- package/dist/_members/composition/validators/composition.js +703 -0
- package/dist/_members/composition/validators/font.d.ts +114 -0
- package/dist/_members/composition/validators/font.js +34 -0
- package/dist/_members/composition/validators/graphicKinds.d.ts +32 -0
- package/dist/_members/composition/validators/graphicKinds.js +30 -0
- package/dist/_members/composition/validators/index.d.ts +9 -0
- package/dist/_members/composition/validators/index.js +9 -0
- package/dist/_members/composition/validators/project.d.ts +62 -0
- package/dist/_members/composition/validators/project.js +29 -0
- package/dist/_members/composition/validators/registry.d.ts +161 -0
- package/dist/_members/composition/validators/registry.js +41 -0
- package/dist/_members/composition/validators/render.d.ts +8274 -0
- package/dist/_members/composition/validators/render.js +139 -0
- package/dist/_members/composition/validators/session.d.ts +117 -0
- package/dist/_members/composition/validators/session.js +37 -0
- package/dist/_members/composition/validators/webhook.d.ts +83 -0
- package/dist/_members/composition/validators/webhook.js +72 -0
- package/dist/_members/composition-ops/alphaLayers.d.ts +70 -0
- package/dist/_members/composition-ops/alphaLayers.js +141 -0
- package/dist/_members/composition-ops/index.d.ts +4940 -0
- package/dist/_members/composition-ops/index.js +637 -0
- package/dist/_members/composition-ops/materializeGrid.d.ts +56 -0
- package/dist/_members/composition-ops/materializeGrid.js +99 -0
- package/dist/_members/composition-ops/opRecorder.d.ts +77 -0
- package/dist/_members/composition-ops/opRecorder.js +196 -0
- package/dist/_members/composition-ops/recordingStore.d.ts +23 -0
- package/dist/_members/composition-ops/recordingStore.js +14 -0
- package/dist/_members/composition-ops/replaceRegion.d.ts +65 -0
- package/dist/_members/composition-ops/replaceRegion.js +102 -0
- package/dist/_members/composition-ops/testFixtures.d.ts +19 -0
- package/dist/_members/composition-ops/testFixtures.js +19 -0
- package/dist/_members/core/index.d.ts +3 -0
- package/dist/_members/core/index.js +5 -0
- package/dist/_members/core/render/bookends.d.ts +62 -0
- package/dist/_members/core/render/bookends.js +53 -0
- package/dist/_members/core/render/captions.d.ts +65 -0
- package/dist/_members/core/render/captions.js +127 -0
- package/dist/_members/core/render/compositionRender.d.ts +190 -0
- package/dist/_members/core/render/compositionRender.js +1249 -0
- package/dist/_members/core/render/deriveTrajectory.d.ts +188 -0
- package/dist/_members/core/render/deriveTrajectory.js +889 -0
- package/dist/_members/core/render/emphasis.d.ts +13 -0
- package/dist/_members/core/render/emphasis.js +16 -0
- package/dist/_members/core/render/eval/cropBox.d.ts +88 -0
- package/dist/_members/core/render/eval/cropBox.js +139 -0
- package/dist/_members/core/render/eval/inclusion.d.ts +50 -0
- package/dist/_members/core/render/eval/inclusion.js +96 -0
- package/dist/_members/core/render/eval/index.d.ts +93 -0
- package/dist/_members/core/render/eval/index.js +146 -0
- package/dist/_members/core/render/eval/metrics.d.ts +50 -0
- package/dist/_members/core/render/eval/metrics.js +94 -0
- package/dist/_members/core/render/exportSettings.d.ts +40 -0
- package/dist/_members/core/render/exportSettings.js +65 -0
- package/dist/_members/core/render/index.d.ts +14 -0
- package/dist/_members/core/render/index.js +20 -0
- package/dist/_members/core/render/mapFaceToPerson.d.ts +39 -0
- package/dist/_members/core/render/mapFaceToPerson.js +73 -0
- package/dist/_members/core/render/types.d.ts +304 -0
- package/dist/_members/core/render/types.js +8 -0
- package/dist/_members/core/render/vcam/cameraPath.d.ts +51 -0
- package/dist/_members/core/render/vcam/cameraPath.js +248 -0
- package/dist/_members/core/render/vcam/constants.d.ts +113 -0
- package/dist/_members/core/render/vcam/constants.js +115 -0
- package/dist/_members/core/render/vcam/errorCodes.d.ts +30 -0
- package/dist/_members/core/render/vcam/errorCodes.js +39 -0
- package/dist/_members/core/render/vcam/framing.d.ts +90 -0
- package/dist/_members/core/render/vcam/framing.js +136 -0
- package/dist/_members/core/render/vcam/requiredRegion.d.ts +85 -0
- package/dist/_members/core/render/vcam/requiredRegion.js +137 -0
- package/dist/_members/core/render/vcam/shots.d.ts +45 -0
- package/dist/_members/core/render/vcam/shots.js +53 -0
- package/dist/_members/core/render/vcam/subjectSet.d.ts +106 -0
- package/dist/_members/core/render/vcam/subjectSet.js +388 -0
- package/dist/_members/core/select/errorCodes.d.ts +27 -0
- package/dist/_members/core/select/errorCodes.js +38 -0
- package/dist/_members/core/select/index.d.ts +27 -0
- package/dist/_members/core/select/index.js +26 -0
- package/dist/_members/core/select/model.d.ts +178 -0
- package/dist/_members/core/select/model.js +18 -0
- package/dist/_members/core/select/select.d.ts +63 -0
- package/dist/_members/core/select/select.js +244 -0
- package/dist/_members/core/select/stabilize.d.ts +145 -0
- package/dist/_members/core/select/stabilize.js +242 -0
- package/dist/_members/core/types.d.ts +84 -0
- package/dist/_members/core/types.js +7 -0
- package/dist/_members/errors/index.d.ts +1 -0
- package/dist/_members/errors/index.js +1 -0
- package/dist/_members/errors/registry.d.ts +708 -0
- package/dist/_members/errors/registry.js +560 -0
- package/dist/_members/foundation/codes/index.d.ts +31 -0
- package/dist/_members/foundation/codes/index.js +31 -0
- package/dist/_members/foundation/index.d.ts +2 -0
- package/dist/_members/foundation/index.js +2 -0
- package/dist/_members/foundation/primitives/index.d.ts +9 -0
- package/dist/_members/foundation/primitives/index.js +5 -0
- package/dist/_members/mcp/adapter.d.ts +138 -0
- package/dist/_members/mcp/adapter.js +771 -0
- package/dist/_members/mcp/burnedNames.d.ts +23 -0
- package/dist/_members/mcp/burnedNames.js +73 -0
- package/dist/_members/mcp/core.d.ts +158 -0
- package/dist/_members/mcp/core.js +390 -0
- package/dist/_members/mcp/curation.d.ts +155 -0
- package/dist/_members/mcp/curation.js +792 -0
- package/dist/_members/mcp/executor.d.ts +60 -0
- package/dist/_members/mcp/executor.js +142 -0
- package/dist/_members/mcp/format.d.ts +7 -0
- package/dist/_members/mcp/format.js +9 -0
- package/dist/_members/mcp/generated/catalogPreviews.d.ts +2 -0
- package/dist/_members/mcp/generated/catalogPreviews.js +95 -0
- package/dist/_members/mcp/generated/harness.d.ts +1 -0
- package/dist/_members/mcp/generated/harness.js +81 -0
- package/dist/_members/mcp/generated/operations.d.ts +41 -0
- package/dist/_members/mcp/generated/operations.js +131 -0
- package/dist/_members/mcp/index.d.ts +3 -0
- package/dist/_members/mcp/index.js +50 -0
- package/dist/_members/mcp/internalLoopTools.d.ts +25 -0
- package/dist/_members/mcp/internalLoopTools.js +109 -0
- package/dist/_members/mcp/prompts.d.ts +22 -0
- package/dist/_members/mcp/prompts.js +45 -0
- package/dist/_members/mcp/resources.d.ts +16 -0
- package/dist/_members/mcp/resources.js +166 -0
- package/dist/_members/mcp/server.d.ts +92 -0
- package/dist/_members/mcp/server.js +340 -0
- package/dist/_members/mcp/wait.d.ts +37 -0
- package/dist/_members/mcp/wait.js +378 -0
- package/dist/_members/mcp/x402Meta.d.ts +50 -0
- package/dist/_members/mcp/x402Meta.js +66 -0
- package/dist/_members/media-model/api.d.ts +877 -0
- package/dist/_members/media-model/api.js +175 -0
- package/dist/_members/media-model/index.d.ts +1 -0
- package/dist/_members/media-model/index.js +1 -0
- package/dist/_members/media-model/media-kind.d.ts +36 -0
- package/dist/_members/media-model/media-kind.js +116 -0
- package/dist/_members/media-model/testing/index.d.ts +2 -0
- package/dist/_members/media-model/testing/index.js +1 -0
- package/dist/_members/media-model/testing/mediaStoreContract.d.ts +17 -0
- package/dist/_members/media-model/testing/mediaStoreContract.js +82 -0
- package/dist/_members/media-model/transcriptSearch.d.ts +54 -0
- package/dist/_members/media-model/transcriptSearch.js +70 -0
- package/dist/_members/media-model/transcriptSearchCases.json +79 -0
- package/dist/_members/nle-export/compact-timeline.d.ts +2 -0
- package/dist/_members/nle-export/compact-timeline.js +73 -0
- package/dist/_members/nle-export/compact-timeline.js.map +1 -0
- package/dist/_members/nle-export/composition-to-input.d.ts +2 -0
- package/dist/_members/nle-export/composition-to-input.js +147 -0
- package/dist/_members/nle-export/composition-to-input.js.map +1 -0
- package/dist/_members/nle-export/fcpxml.d.ts +15 -0
- package/dist/_members/nle-export/fcpxml.js +159 -0
- package/dist/_members/nle-export/fcpxml.js.map +1 -0
- package/dist/_members/nle-export/index.d.ts +11 -0
- package/dist/_members/nle-export/index.js +12 -0
- package/dist/_members/nle-export/index.js.map +1 -0
- package/dist/_members/nle-export/premiere.d.ts +2 -0
- package/dist/_members/nle-export/premiere.js +161 -0
- package/dist/_members/nle-export/premiere.js.map +1 -0
- package/dist/_members/nle-export/server/index.d.ts +1 -0
- package/dist/_members/nle-export/server/index.js +2 -0
- package/dist/_members/nle-export/server/index.js.map +1 -0
- package/dist/_members/nle-export/server/pack-zip.d.ts +6 -0
- package/dist/_members/nle-export/server/pack-zip.js +38 -0
- package/dist/_members/nle-export/server/pack-zip.js.map +1 -0
- package/dist/_members/nle-export/srt.d.ts +2 -0
- package/dist/_members/nle-export/srt.js +50 -0
- package/dist/_members/nle-export/srt.js.map +1 -0
- package/dist/_members/nle-export/types.d.ts +183 -0
- package/dist/_members/nle-export/types.js +9 -0
- package/dist/_members/nle-export/types.js.map +1 -0
- package/dist/_members/nle-export/xml/index.d.ts +10 -0
- package/dist/_members/nle-export/xml/index.js +11 -0
- package/dist/_members/nle-export/xml/index.js.map +1 -0
- package/dist/_members/nle-export/xml-utils.d.ts +21 -0
- package/dist/_members/nle-export/xml-utils.js +48 -0
- package/dist/_members/nle-export/xml-utils.js.map +1 -0
- package/dist/_members/perception/activeSpeaker.d.ts +108 -0
- package/dist/_members/perception/activeSpeaker.js +103 -0
- package/dist/_members/perception/audioQuality.d.ts +78 -0
- package/dist/_members/perception/audioQuality.js +76 -0
- package/dist/_members/perception/energyBeat.d.ts +95 -0
- package/dist/_members/perception/energyBeat.js +99 -0
- package/dist/_members/perception/identityMatch.d.ts +80 -0
- package/dist/_members/perception/identityMatch.js +91 -0
- package/dist/_members/perception/index.d.ts +90 -0
- package/dist/_members/perception/index.js +48 -0
- package/dist/_members/perception/visualQuality.d.ts +86 -0
- package/dist/_members/perception/visualQuality.js +95 -0
- package/dist/_members/plane/conformance.d.ts +75 -0
- package/dist/_members/plane/conformance.js +90 -0
- package/dist/_members/plane/contract.d.ts +55 -0
- package/dist/_members/plane/contract.js +49 -0
- package/dist/_members/plane/index.d.ts +16 -0
- package/dist/_members/plane/index.js +16 -0
- package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +28 -0
- package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +29 -0
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +25 -0
- package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +24 -0
- package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +17 -0
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +16 -0
- package/dist/_members/primitives/backgrounds/index.d.ts +13 -0
- package/dist/_members/primitives/backgrounds/index.js +32 -0
- package/dist/_members/primitives/backgrounds/index.js.map +1 -0
- package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +36 -0
- package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +16 -0
- package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +23 -0
- package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +36 -0
- package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +25 -0
- package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +33 -0
- package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +30 -0
- package/dist/_members/primitives/captions/Captions.d.ts +33 -0
- package/dist/_members/primitives/captions/index.d.ts +17 -0
- package/dist/_members/primitives/captions/index.js +398 -0
- package/dist/_members/primitives/captions/index.js.map +1 -0
- package/dist/_members/primitives/captions/paginate.d.ts +31 -0
- package/dist/_members/primitives/captions/placement.d.ts +35 -0
- package/dist/_members/primitives/chunk-2LVE4UIT.js +139 -0
- package/dist/_members/primitives/chunk-2LVE4UIT.js.map +1 -0
- package/dist/_members/primitives/chunk-3IQUH6KK.js +20 -0
- package/dist/_members/primitives/chunk-3IQUH6KK.js.map +1 -0
- package/dist/_members/primitives/chunk-3OMURV6Q.js +112 -0
- package/dist/_members/primitives/chunk-3OMURV6Q.js.map +1 -0
- package/dist/_members/primitives/chunk-4IS6TMEG.js +21 -0
- package/dist/_members/primitives/chunk-4IS6TMEG.js.map +1 -0
- package/dist/_members/primitives/chunk-5MWGAEGQ.js +1644 -0
- package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +1 -0
- package/dist/_members/primitives/chunk-7RRPFPQK.js +15 -0
- package/dist/_members/primitives/chunk-7RRPFPQK.js.map +1 -0
- package/dist/_members/primitives/chunk-DH5TRZK2.js +125 -0
- package/dist/_members/primitives/chunk-DH5TRZK2.js.map +1 -0
- package/dist/_members/primitives/chunk-E3KNUSFG.js +2337 -0
- package/dist/_members/primitives/chunk-E3KNUSFG.js.map +1 -0
- package/dist/_members/primitives/chunk-G2B3G4HK.js +47 -0
- package/dist/_members/primitives/chunk-G2B3G4HK.js.map +1 -0
- package/dist/_members/primitives/chunk-HFPFGZXT.js +1494 -0
- package/dist/_members/primitives/chunk-HFPFGZXT.js.map +1 -0
- package/dist/_members/primitives/chunk-HIWVFZVH.js +19 -0
- package/dist/_members/primitives/chunk-HIWVFZVH.js.map +1 -0
- package/dist/_members/primitives/chunk-IDAL6G3Y.js +134 -0
- package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +1 -0
- package/dist/_members/primitives/chunk-KNC6JP5F.js +34 -0
- package/dist/_members/primitives/chunk-KNC6JP5F.js.map +1 -0
- package/dist/_members/primitives/chunk-KYRDVZST.js +459 -0
- package/dist/_members/primitives/chunk-KYRDVZST.js.map +1 -0
- package/dist/_members/primitives/chunk-LWLHS2NS.js +3410 -0
- package/dist/_members/primitives/chunk-LWLHS2NS.js.map +1 -0
- package/dist/_members/primitives/chunk-QAQ3P7DR.js +8855 -0
- package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +1 -0
- package/dist/_members/primitives/chunk-ROV2ODWC.js +81 -0
- package/dist/_members/primitives/chunk-ROV2ODWC.js.map +1 -0
- package/dist/_members/primitives/chunk-TCRC2FH3.js +183 -0
- package/dist/_members/primitives/chunk-TCRC2FH3.js.map +1 -0
- package/dist/_members/primitives/chunk-US4YEDAA.js +96 -0
- package/dist/_members/primitives/chunk-US4YEDAA.js.map +1 -0
- package/dist/_members/primitives/chunk-UVKRO5ER.js +13 -0
- package/dist/_members/primitives/chunk-UVKRO5ER.js.map +1 -0
- package/dist/_members/primitives/chunk-W4EIIF2I.js +10 -0
- package/dist/_members/primitives/chunk-W4EIIF2I.js.map +1 -0
- package/dist/_members/primitives/chunk-WPGKIPCO.js +3563 -0
- package/dist/_members/primitives/chunk-WPGKIPCO.js.map +1 -0
- package/dist/_members/primitives/chunk-WZFLEGMD.js +1435 -0
- package/dist/_members/primitives/chunk-WZFLEGMD.js.map +1 -0
- package/dist/_members/primitives/chunk-XHU3WBEI.js +33 -0
- package/dist/_members/primitives/chunk-XHU3WBEI.js.map +1 -0
- package/dist/_members/primitives/chunk-YN7WTZZ7.js +46 -0
- package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +1 -0
- package/dist/_members/primitives/effects/blur/config.d.ts +24 -0
- package/dist/_members/primitives/effects/blur/index.d.ts +29 -0
- package/dist/_members/primitives/effects/color-grade/config.d.ts +30 -0
- package/dist/_members/primitives/effects/color-grade/index.d.ts +35 -0
- package/dist/_members/primitives/effects/grain/config.d.ts +21 -0
- package/dist/_members/primitives/effects/grain/index.d.ts +21 -0
- package/dist/_members/primitives/effects/index.d.ts +12 -0
- package/dist/_members/primitives/effects/index.js +30 -0
- package/dist/_members/primitives/effects/index.js.map +1 -0
- package/dist/_members/primitives/effects/parallax/config.d.ts +21 -0
- package/dist/_members/primitives/effects/parallax/index.d.ts +25 -0
- package/dist/_members/primitives/effects/particles/config.d.ts +33 -0
- package/dist/_members/primitives/effects/particles/index.d.ts +31 -0
- package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +24 -0
- package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +19 -0
- package/dist/_members/primitives/effects/spotlight-card/config.d.ts +42 -0
- package/dist/_members/primitives/effects/spotlight-card/index.d.ts +25 -0
- package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +27 -0
- package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +22 -0
- package/dist/_members/primitives/effects/success-confetti/config.d.ts +42 -0
- package/dist/_members/primitives/effects/success-confetti/index.d.ts +23 -0
- package/dist/_members/primitives/effects/vignette/config.d.ts +21 -0
- package/dist/_members/primitives/effects/vignette/index.d.ts +23 -0
- package/dist/_members/primitives/hero-text/HeroText.d.ts +29 -0
- package/dist/_members/primitives/hero-text/config.d.ts +46 -0
- package/dist/_members/primitives/hero-text/index.d.ts +18 -0
- package/dist/_members/primitives/hero-text/index.js +14 -0
- package/dist/_members/primitives/hero-text/index.js.map +1 -0
- package/dist/_members/primitives/index.d.ts +21 -0
- package/dist/_members/primitives/index.js +64 -0
- package/dist/_members/primitives/index.js.map +1 -0
- package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +19 -0
- package/dist/_members/primitives/layouts/index.d.ts +9 -0
- package/dist/_members/primitives/layouts/index.js +24 -0
- package/dist/_members/primitives/layouts/index.js.map +1 -0
- package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +18 -0
- package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +15 -0
- package/dist/_members/primitives/layouts/letterbox/config.d.ts +18 -0
- package/dist/_members/primitives/layouts/letterbox/index.d.ts +23 -0
- package/dist/_members/primitives/layouts/photo-grid/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/photo-grid/index.d.ts +25 -0
- package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +32 -0
- package/dist/_members/primitives/layouts/split-screen/config.d.ts +15 -0
- package/dist/_members/primitives/layouts/split-screen/index.d.ts +22 -0
- package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +66 -0
- package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +24 -0
- package/dist/_members/primitives/lib/easings.d.ts +47 -0
- package/dist/_members/primitives/lib/easings.js +26 -0
- package/dist/_members/primitives/lib/easings.js.map +1 -0
- package/dist/_members/primitives/lib/index.d.ts +8 -0
- package/dist/_members/primitives/lib/index.js +74 -0
- package/dist/_members/primitives/lib/index.js.map +1 -0
- package/dist/_members/primitives/lib/palette.d.ts +55 -0
- package/dist/_members/primitives/lib/palette.js +72 -0
- package/dist/_members/primitives/lib/palette.js.map +1 -0
- package/dist/_members/primitives/lib/preview.d.ts +36 -0
- package/dist/_members/primitives/lib/preview.js +8 -0
- package/dist/_members/primitives/lib/preview.js.map +1 -0
- package/dist/_members/primitives/lib/schema.d.ts +53 -0
- package/dist/_members/primitives/lib/schema.js +12 -0
- package/dist/_members/primitives/lib/schema.js.map +1 -0
- package/dist/_members/primitives/lib/seeded-random.d.ts +33 -0
- package/dist/_members/primitives/lib/seeded-random.js +14 -0
- package/dist/_members/primitives/lib/seeded-random.js.map +1 -0
- package/dist/_members/primitives/lib/text/contrast.d.ts +27 -0
- package/dist/_members/primitives/lib/text/contrast.js +12 -0
- package/dist/_members/primitives/lib/text/contrast.js.map +1 -0
- package/dist/_members/primitives/lib/text/fill.d.ts +8 -0
- package/dist/_members/primitives/lib/text/fill.js +8 -0
- package/dist/_members/primitives/lib/text/fill.js.map +1 -0
- package/dist/_members/primitives/lib/text/fitText.d.ts +62 -0
- package/dist/_members/primitives/lib/text/fitText.js +10 -0
- package/dist/_members/primitives/lib/text/fitText.js.map +1 -0
- package/dist/_members/primitives/lib/text/marker.d.ts +15 -0
- package/dist/_members/primitives/lib/text/marker.js +8 -0
- package/dist/_members/primitives/lib/text/marker.js.map +1 -0
- package/dist/_members/primitives/lib/text/motion.d.ts +57 -0
- package/dist/_members/primitives/lib/text/motion.js +16 -0
- package/dist/_members/primitives/lib/text/motion.js.map +1 -0
- package/dist/_members/primitives/lib/text/recolor.d.ts +12 -0
- package/dist/_members/primitives/lib/text/recolor.js +8 -0
- package/dist/_members/primitives/lib/text/recolor.js.map +1 -0
- package/dist/_members/primitives/lib/text/spec.d.ts +82 -0
- package/dist/_members/primitives/lib/text/spec.js +1 -0
- package/dist/_members/primitives/lib/text/spec.js.map +1 -0
- package/dist/_members/primitives/lib/text/stage.d.ts +23 -0
- package/dist/_members/primitives/lib/text/stage.js +8 -0
- package/dist/_members/primitives/lib/text/stage.js.map +1 -0
- package/dist/_members/primitives/lib/text/typeface.d.ts +16 -0
- package/dist/_members/primitives/lib/text/typeface.js +8 -0
- package/dist/_members/primitives/lib/text/typeface.js.map +1 -0
- package/dist/_members/primitives/lib/tokens.d.ts +109 -0
- package/dist/_members/primitives/lib/tokens.js +24 -0
- package/dist/_members/primitives/lib/tokens.js.map +1 -0
- package/dist/_members/primitives/lib/types.d.ts +200 -0
- package/dist/_members/primitives/lib/types.js +1 -0
- package/dist/_members/primitives/lib/types.js.map +1 -0
- package/dist/_members/primitives/params-required.json +153 -0
- package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +36 -0
- package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +28 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +24 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +16 -0
- package/dist/_members/primitives/scenes/index.d.ts +9 -0
- package/dist/_members/primitives/scenes/index.js +25 -0
- package/dist/_members/primitives/scenes/index.js.map +1 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +15 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +15 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/timeline.d.ts +15 -0
- package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +15 -0
- package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +14 -0
- package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +21 -0
- package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +15 -0
- package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +33 -0
- package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +20 -0
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +21 -0
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +15 -0
- package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +43 -0
- package/dist/_members/primitives/subject-foreground/index.d.ts +23 -0
- package/dist/_members/primitives/subject-foreground/index.js +30 -0
- package/dist/_members/primitives/subject-foreground/index.js.map +1 -0
- package/dist/_members/primitives/text/blur-reveal/config.d.ts +30 -0
- package/dist/_members/primitives/text/blur-reveal/index.d.ts +20 -0
- package/dist/_members/primitives/text/cinematic-title/config.d.ts +87 -0
- package/dist/_members/primitives/text/cinematic-title/index.d.ts +31 -0
- package/dist/_members/primitives/text/index.d.ts +23 -0
- package/dist/_members/primitives/text/index.js +57 -0
- package/dist/_members/primitives/text/index.js.map +1 -0
- package/dist/_members/primitives/text/inline-highlight/config.d.ts +36 -0
- package/dist/_members/primitives/text/inline-highlight/index.d.ts +24 -0
- package/dist/_members/primitives/text/karaoke/config.d.ts +108 -0
- package/dist/_members/primitives/text/karaoke/index.d.ts +32 -0
- package/dist/_members/primitives/text/kinetic-type/config.d.ts +60 -0
- package/dist/_members/primitives/text/kinetic-type/index.d.ts +29 -0
- package/dist/_members/primitives/text/lower-third/config.d.ts +84 -0
- package/dist/_members/primitives/text/lower-third/index.d.ts +30 -0
- package/dist/_members/primitives/text/marker-highlight/config.d.ts +39 -0
- package/dist/_members/primitives/text/marker-highlight/index.d.ts +24 -0
- package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +30 -0
- package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +19 -0
- package/dist/_members/primitives/text/matrix-decode/config.d.ts +33 -0
- package/dist/_members/primitives/text/matrix-decode/index.d.ts +21 -0
- package/dist/_members/primitives/text/quote-card/config.d.ts +21 -0
- package/dist/_members/primitives/text/quote-card/index.d.ts +23 -0
- package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +39 -0
- package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +27 -0
- package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +30 -0
- package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +21 -0
- package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +30 -0
- package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +19 -0
- package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +39 -0
- package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +26 -0
- package/dist/_members/primitives/text/stat-counter/config.d.ts +33 -0
- package/dist/_members/primitives/text/stat-counter/index.d.ts +31 -0
- package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +33 -0
- package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +21 -0
- package/dist/_members/primitives/text/text-effect/config.d.ts +24 -0
- package/dist/_members/primitives/text/text-effect/index.d.ts +29 -0
- package/dist/_members/primitives/text/text-fade-replace/config.d.ts +30 -0
- package/dist/_members/primitives/text/text-fade-replace/index.d.ts +19 -0
- package/dist/_members/primitives/text/token-stream/config.d.ts +21 -0
- package/dist/_members/primitives/text/token-stream/index.d.ts +25 -0
- package/dist/_members/primitives/text/tracking-in/config.d.ts +33 -0
- package/dist/_members/primitives/text/tracking-in/index.d.ts +21 -0
- package/dist/_members/primitives/text/typewriter/config.d.ts +36 -0
- package/dist/_members/primitives/text/typewriter/index.d.ts +26 -0
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +19 -0
- package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +36 -0
- package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +21 -0
- package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +21 -0
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +24 -0
- package/dist/_members/primitives/transitions/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/index.js +67 -0
- package/dist/_members/primitives/transitions/index.js.map +1 -0
- package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +13 -0
- package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +20 -0
- package/dist/_members/primitives/transitions/light-leak/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/light-leak/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/luma-matte/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/luma-matte/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/morph/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/morph/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/spatial-push/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/spatial-push/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +18 -0
- package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +22 -0
- package/dist/_members/primitives/transitions/zoom-through/config.d.ts +39 -0
- package/dist/_members/primitives/transitions/zoom-through/index.d.ts +12 -0
- package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +24 -0
- package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +48 -0
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +25 -0
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +16 -0
- package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +86 -0
- package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +25 -0
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +36 -0
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +32 -0
- package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +42 -0
- package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +84 -0
- package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +29 -0
- package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +120 -0
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +34 -0
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +19 -0
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +17 -0
- package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +48 -0
- package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +39 -0
- package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +22 -0
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +141 -0
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +32 -0
- package/dist/_members/primitives/ui-blocks/index.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/index.js +76 -0
- package/dist/_members/primitives/ui-blocks/index.js.map +1 -0
- package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +46 -0
- package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +141 -0
- package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +35 -0
- package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +51 -0
- package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +22 -0
- package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +69 -0
- package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +63 -0
- package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +39 -0
- package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +54 -0
- package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +90 -0
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +20 -0
- package/dist/_members/primitives/version-map.json +105 -0
- package/dist/_members/primitives/workspace.d.ts +51 -0
- package/dist/_members/primitives/workspace.js +60 -0
- package/dist/_members/primitives/workspace.js.map +1 -0
- package/dist/_members/render-harness/cardRender.d.ts +64 -0
- package/dist/_members/render-harness/cardRender.d.ts.map +1 -0
- package/dist/_members/render-harness/contractRender.d.ts +43 -0
- package/dist/_members/render-harness/contractRender.d.ts.map +1 -0
- package/dist/_members/render-harness/extractSegments.d.ts +53 -0
- package/dist/_members/render-harness/extractSegments.d.ts.map +1 -0
- package/dist/_members/render-harness/index.d.ts +30 -0
- package/dist/_members/render-harness/index.d.ts.map +1 -0
- package/dist/_members/render-harness/localRender.d.ts +167 -0
- package/dist/_members/render-harness/localRender.d.ts.map +1 -0
- package/dist/_members/render-harness/materializeSources.d.ts +29 -0
- package/dist/_members/render-harness/materializeSources.d.ts.map +1 -0
- package/dist/_members/render-harness/mediaServer.d.ts +22 -0
- package/dist/_members/render-harness/mediaServer.d.ts.map +1 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts +63 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -0
- package/dist/_members/render-harness/resolveAssets.d.ts +33 -0
- package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -0
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +23 -0
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -0
- package/dist/account-model/testing.d.ts +1 -0
- package/dist/account-model/testing.js +145 -0
- package/dist/account-model/types.d.ts +1 -0
- package/dist/account-model/types.js +0 -0
- package/dist/account-model/validators.d.ts +1 -0
- package/dist/account-model/validators.js +26 -0
- package/dist/account-model.d.ts +1 -0
- package/dist/account-model.js +26 -0
- package/dist/animate.d.ts +1 -0
- package/dist/animate.js +79412 -0
- package/dist/authoring/build-tools.d.ts +1 -0
- package/dist/authoring/build-tools.js +29 -0
- package/dist/authoring/capabilities.d.ts +1 -0
- package/dist/authoring/capabilities.js +11 -0
- package/dist/authoring/composer.d.ts +1 -0
- package/dist/authoring/composer.js +53 -0
- package/dist/authoring/context.d.ts +1 -0
- package/dist/authoring/context.js +14 -0
- package/dist/authoring/models.d.ts +1 -0
- package/dist/authoring/models.js +14 -0
- package/dist/authoring/pipelineTrace.d.ts +1 -0
- package/dist/authoring/pipelineTrace.js +7 -0
- package/dist/authoring/prompts.d.ts +1 -0
- package/dist/authoring/prompts.js +29 -0
- package/dist/authoring/providers.d.ts +1 -0
- package/dist/authoring/providers.js +99 -0
- package/dist/authoring/resource-routing.d.ts +1 -0
- package/dist/authoring/resource-routing.js +206 -0
- package/dist/authoring/resources.d.ts +1 -0
- package/dist/authoring/resources.js +35 -0
- package/dist/authoring/tools.d.ts +1 -0
- package/dist/authoring/tools.js +29 -0
- package/dist/authoring/transpileComponent.d.ts +1 -0
- package/dist/authoring/transpileComponent.js +2248 -0
- package/dist/authoring/transpileHelper.d.ts +1 -0
- package/dist/authoring/transpileHelper.js +9 -0
- package/dist/authoring/types.d.ts +1 -0
- package/dist/authoring/types.js +0 -0
- package/dist/authoring.d.ts +1 -0
- package/dist/authoring.js +1295 -0
- package/dist/brand-derivation/constants.d.ts +1 -0
- package/dist/brand-derivation/constants.js +11 -0
- package/dist/brand-derivation.d.ts +1 -0
- package/dist/brand-derivation.js +23 -0
- package/dist/chunk-2ESYSVXG.js +48 -0
- package/dist/chunk-37NJ27UU.js +501 -0
- package/dist/chunk-52AHXNKM.js +435 -0
- package/dist/chunk-5I7VDCAC.js +15647 -0
- package/dist/chunk-6CMVBTTP.js +1933 -0
- package/dist/chunk-6EQXLEP6.js +194 -0
- package/dist/chunk-6QJ3V3VS.js +1444 -0
- package/dist/chunk-7DHP4ESU.js +138 -0
- package/dist/chunk-7GISRVON.js +14176 -0
- package/dist/chunk-7PA7FGLD.js +609 -0
- package/dist/chunk-ATAF24QG.js +735 -0
- package/dist/chunk-AWT3P5ZN.js +1609 -0
- package/dist/chunk-B4VMU2IJ.js +211 -0
- package/dist/chunk-BDMTUEEZ.js +19 -0
- package/dist/chunk-BRKJKB33.js +683 -0
- package/dist/chunk-CX2IIQ4R.js +111 -0
- package/dist/chunk-D2EG7J7X.js +31 -0
- package/dist/chunk-DENF4TPI.js +249 -0
- package/dist/chunk-DIBOJJMU.js +16838 -0
- package/dist/chunk-DLF4WVSE.js +9 -0
- package/dist/chunk-DSNG6WLU.js +82 -0
- package/dist/chunk-EA6MYCYW.js +135 -0
- package/dist/chunk-EAUSEGB7.js +420 -0
- package/dist/chunk-ELLSET2N.js +195 -0
- package/dist/chunk-EMGFZ3PR.js +14 -0
- package/dist/chunk-FUWJOVVK.js +3633 -0
- package/dist/chunk-G3PBH53P.js +85 -0
- package/dist/chunk-G75E7YA4.js +11883 -0
- package/dist/chunk-GBRNYH7W.js +72 -0
- package/dist/chunk-GH27OS5S.js +104 -0
- package/dist/chunk-GULDS3VE.js +41 -0
- package/dist/chunk-H5LMJKZU.js +0 -0
- package/dist/chunk-HI4UTTPS.js +954 -0
- package/dist/chunk-JCZQT7K3.js +3266 -0
- package/dist/chunk-JD77Y2WM.js +3423 -0
- package/dist/chunk-JF4JJAFP.js +10 -0
- package/dist/chunk-JMURQODM.js +438 -0
- package/dist/chunk-JOURGVOR.js +27 -0
- package/dist/chunk-JRQVPFLF.js +459 -0
- package/dist/chunk-KF5ETMKB.js +544 -0
- package/dist/chunk-KYRDKK2D.js +47 -0
- package/dist/chunk-LD5ZOUFT.js +55 -0
- package/dist/chunk-M3I5LMAB.js +426 -0
- package/dist/chunk-MC5DLSEV.js +202 -0
- package/dist/chunk-MCBUX5XV.js +70 -0
- package/dist/chunk-MFHXCHRI.js +33 -0
- package/dist/chunk-MMEJ3Y7E.js +327 -0
- package/dist/chunk-MVEE6HEC.js +8512 -0
- package/dist/chunk-N67PDTKQ.js +1419 -0
- package/dist/chunk-NDKERSXY.js +1296 -0
- package/dist/chunk-NV4I6GJV.js +1091 -0
- package/dist/chunk-OIRUO5P7.js +397 -0
- package/dist/chunk-P43IE4WB.js +181 -0
- package/dist/chunk-QGAWDLYX.js +92 -0
- package/dist/chunk-QH3YI3ND.js +100 -0
- package/dist/chunk-QLAQHR3L.js +254 -0
- package/dist/chunk-RHVLQNYF.js +20 -0
- package/dist/chunk-S3P5BFFL.js +2265 -0
- package/dist/chunk-SIGGQRY2.js +8483 -0
- package/dist/chunk-TULRCY6U.js +729 -0
- package/dist/chunk-TWQOKKAF.js +859 -0
- package/dist/chunk-U3JPILZS.js +15 -0
- package/dist/chunk-U4V4FZGE.js +20 -0
- package/dist/chunk-UEI3NLNK.js +127 -0
- package/dist/chunk-V43Y7IE4.js +3621 -0
- package/dist/chunk-VIVQHIGZ.js +4319 -0
- package/dist/chunk-W35ZMOXB.js +23 -0
- package/dist/chunk-WB2VFDQZ.js +58 -0
- package/dist/chunk-WREYUH2E.js +104 -0
- package/dist/chunk-WZTTZHNR.js +3339 -0
- package/dist/chunk-XELS2BGA.js +13 -0
- package/dist/chunk-XLIPPLG3.js +18 -0
- package/dist/chunk-YA3OR2KK.js +249 -0
- package/dist/chunk-ZE76SSRT.js +358 -0
- package/dist/chunk-ZFEXATWN.js +46 -0
- package/dist/chunk-ZSZABOE5.js +425 -0
- package/dist/compose/renderer.d.ts +1 -0
- package/dist/compose/renderer.js +173 -0
- package/dist/compose.d.ts +1 -0
- package/dist/compose.js +76 -0
- package/dist/composition/audio.d.ts +1 -0
- package/dist/composition/audio.js +63 -0
- package/dist/composition/autozoom.d.ts +1 -0
- package/dist/composition/autozoom.js +76 -0
- package/dist/composition/brand-kit.d.ts +1 -0
- package/dist/composition/brand-kit.js +34 -0
- package/dist/composition/brief.d.ts +1 -0
- package/dist/composition/brief.js +112 -0
- package/dist/composition/depth.d.ts +1 -0
- package/dist/composition/depth.js +12 -0
- package/dist/composition/fixtures.d.ts +1 -0
- package/dist/composition/fixtures.js +154 -0
- package/dist/composition/fonts.d.ts +1 -0
- package/dist/composition/fonts.js +74 -0
- package/dist/composition/graphics-plan.d.ts +1 -0
- package/dist/composition/graphics-plan.js +400 -0
- package/dist/composition/invariants.d.ts +1 -0
- package/dist/composition/invariants.js +49 -0
- package/dist/composition/ops.d.ts +1 -0
- package/dist/composition/ops.js +53 -0
- package/dist/composition/primitive-catalog.d.ts +1 -0
- package/dist/composition/primitive-catalog.js +60 -0
- package/dist/composition/projection.d.ts +1 -0
- package/dist/composition/projection.js +119 -0
- package/dist/composition/reframe/coverage.d.ts +1 -0
- package/dist/composition/reframe/coverage.js +20 -0
- package/dist/composition/reframe/kenBurns.d.ts +1 -0
- package/dist/composition/reframe/kenBurns.js +53 -0
- package/dist/composition/reframe/shotScale.d.ts +1 -0
- package/dist/composition/reframe/shotScale.js +25 -0
- package/dist/composition/reframe/trajectory.d.ts +1 -0
- package/dist/composition/reframe/trajectory.js +17 -0
- package/dist/composition/reframe.d.ts +1 -0
- package/dist/composition/reframe.js +39 -0
- package/dist/composition/timeline.d.ts +1 -0
- package/dist/composition/timeline.js +70 -0
- package/dist/composition/types.d.ts +1 -0
- package/dist/composition/types.js +0 -0
- package/dist/composition/validators/graphic-kinds.d.ts +1 -0
- package/dist/composition/validators/graphic-kinds.js +9 -0
- package/dist/composition/validators.d.ts +1 -0
- package/dist/composition/validators.js +180 -0
- package/dist/composition-ops.d.ts +1 -0
- package/dist/composition-ops.js +882 -0
- package/dist/composition.d.ts +1 -0
- package/dist/composition.js +433 -0
- package/dist/context-CEAKQ5T7.js +14 -0
- package/dist/core/render.d.ts +1 -0
- package/dist/core/render.js +105 -0
- package/dist/core/select.d.ts +1 -0
- package/dist/core/select.js +42 -0
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.js +0 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +38 -0
- package/dist/dist-LAJ2363K.js +545 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +17 -0
- package/dist/foundation/codes.d.ts +1 -0
- package/dist/foundation/codes.js +7 -0
- package/dist/foundation/primitives.d.ts +1 -0
- package/dist/foundation/primitives.js +13 -0
- package/dist/foundation.d.ts +1 -0
- package/dist/foundation.js +17 -0
- package/dist/hls-HD4C5G6W.js +33000 -0
- package/dist/magic-string.es-SDTMJBWP.js +1308 -0
- package/dist/mcp/adapter.d.ts +1 -0
- package/dist/mcp/adapter.js +670 -0
- package/dist/mcp/core.d.ts +1 -0
- package/dist/mcp/core.js +41 -0
- package/dist/mcp/curation.d.ts +1 -0
- package/dist/mcp/curation.js +23 -0
- package/dist/mcp/executor.d.ts +1 -0
- package/dist/mcp/executor.js +13 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +27 -0
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.js +138 -0
- package/dist/media-model/media-kind.d.ts +1 -0
- package/dist/media-model/media-kind.js +108 -0
- package/dist/media-model/testing.d.ts +1 -0
- package/dist/media-model/testing.js +16029 -0
- package/dist/media-model/transcriptSearch.d.ts +1 -0
- package/dist/media-model/transcriptSearch.js +32 -0
- package/dist/media-model.d.ts +1 -0
- package/dist/media-model.js +154 -0
- package/dist/nle-export/server.d.ts +1 -0
- package/dist/nle-export/server.js +25658 -0
- package/dist/nle-export/xml.d.ts +1 -0
- package/dist/nle-export/xml.js +23102 -0
- package/dist/nle-export.d.ts +1 -0
- package/dist/nle-export.js +313 -0
- package/dist/perception.d.ts +1 -0
- package/dist/perception.js +145 -0
- package/dist/plane/conformance.d.ts +1 -0
- package/dist/plane/conformance.js +13 -0
- package/dist/plane/contract.d.ts +1 -0
- package/dist/plane/contract.js +31 -0
- package/dist/plane.d.ts +1 -0
- package/dist/plane.js +13 -0
- package/dist/primitives/backgrounds.d.ts +1 -0
- package/dist/primitives/backgrounds.js +32 -0
- package/dist/primitives/captions.d.ts +1 -0
- package/dist/primitives/captions.js +629 -0
- package/dist/primitives/effects.d.ts +1 -0
- package/dist/primitives/effects.js +30 -0
- package/dist/primitives/hero-text.d.ts +1 -0
- package/dist/primitives/hero-text.js +14 -0
- package/dist/primitives/layouts.d.ts +1 -0
- package/dist/primitives/layouts.js +24 -0
- package/dist/primitives/lib/easings.d.ts +1 -0
- package/dist/primitives/lib/easings.js +25 -0
- package/dist/primitives/lib/index.d.ts +1 -0
- package/dist/primitives/lib/index.js +78 -0
- package/dist/primitives/lib/palette.d.ts +1 -0
- package/dist/primitives/lib/palette.js +71 -0
- package/dist/primitives/lib/preview.d.ts +1 -0
- package/dist/primitives/lib/preview.js +8 -0
- package/dist/primitives/lib/schema.d.ts +1 -0
- package/dist/primitives/lib/schema.js +12 -0
- package/dist/primitives/lib/seeded-random.d.ts +1 -0
- package/dist/primitives/lib/seeded-random.js +13 -0
- package/dist/primitives/lib/text/contrast.d.ts +1 -0
- package/dist/primitives/lib/text/contrast.js +11 -0
- package/dist/primitives/lib/text/fill.d.ts +1 -0
- package/dist/primitives/lib/text/fill.js +7 -0
- package/dist/primitives/lib/text/fitText.d.ts +1 -0
- package/dist/primitives/lib/text/fitText.js +10 -0
- package/dist/primitives/lib/text/marker.d.ts +1 -0
- package/dist/primitives/lib/text/marker.js +7 -0
- package/dist/primitives/lib/text/motion.d.ts +1 -0
- package/dist/primitives/lib/text/motion.js +15 -0
- package/dist/primitives/lib/text/recolor.d.ts +1 -0
- package/dist/primitives/lib/text/recolor.js +7 -0
- package/dist/primitives/lib/text/spec.d.ts +1 -0
- package/dist/primitives/lib/text/spec.js +0 -0
- package/dist/primitives/lib/text/stage.d.ts +1 -0
- package/dist/primitives/lib/text/stage.js +7 -0
- package/dist/primitives/lib/text/typeface.d.ts +1 -0
- package/dist/primitives/lib/text/typeface.js +7 -0
- package/dist/primitives/lib/tokens.d.ts +1 -0
- package/dist/primitives/lib/tokens.js +24 -0
- package/dist/primitives/lib/types.d.ts +1 -0
- package/dist/primitives/lib/types.js +0 -0
- package/dist/primitives/lib.d.ts +1 -0
- package/dist/primitives/lib.js +78 -0
- package/dist/primitives/params-required.json +153 -0
- package/dist/primitives/scenes.d.ts +1 -0
- package/dist/primitives/scenes.js +25 -0
- package/dist/primitives/subject-foreground.d.ts +1 -0
- package/dist/primitives/subject-foreground.js +28 -0
- package/dist/primitives/text.d.ts +1 -0
- package/dist/primitives/text.js +57 -0
- package/dist/primitives/transitions.d.ts +1 -0
- package/dist/primitives/transitions.js +66 -0
- package/dist/primitives/ui-blocks.d.ts +1 -0
- package/dist/primitives/ui-blocks.js +76 -0
- package/dist/primitives/version-map.json +105 -0
- package/dist/primitives/workspace.d.ts +1 -0
- package/dist/primitives/workspace.js +25 -0
- package/dist/primitives.d.ts +1 -0
- package/dist/primitives.js +65 -0
- package/dist/render-harness/sandboxGlobalSpecs.d.ts +1 -0
- package/dist/render-harness/sandboxGlobalSpecs.js +13 -0
- package/dist/render-harness.d.ts +1 -0
- package/dist/render-harness.js +1019 -0
- package/dist/token-RGFIT24D.js +69 -0
- package/dist/token-util-GPLSGYVO.js +5 -0
- package/dist/vision_bundle-5Y376MAR.js +4084 -0
- package/package.json +493 -0
|
@@ -0,0 +1,1056 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* compositionOps — pure shared core for v2 wire-shape composition mutations.
|
|
3
|
+
*
|
|
4
|
+
* All operations are side-effect-free: no persistence, no logging. Only
|
|
5
|
+
* state mutations via set/get on the wire-shape Composition.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors the desktop store's v2 ops (cueframe/src/store/compositionStore/
|
|
8
|
+
* compositionOps.ts). The OSS module drops desktop-only concerns
|
|
9
|
+
* (corrections, transcriptDoc) — those live on the desktop envelope.
|
|
10
|
+
*/
|
|
11
|
+
import { expandToLinkGroup } from '../timeline/link';
|
|
12
|
+
// ── Track-walking helpers ──
|
|
13
|
+
/** Find the first track of `kind`, creating one if absent. Mutates `composition`. */
|
|
14
|
+
export function findOrCreateTrackByKind(composition, kind) {
|
|
15
|
+
const existing = composition.tracks.find((t) => t.kind === kind);
|
|
16
|
+
if (existing)
|
|
17
|
+
return existing;
|
|
18
|
+
const track = {
|
|
19
|
+
// UUID suffix avoids id collisions when a track of `kind` is created,
|
|
20
|
+
// deleted, then re-created at the same `tracks.length` index.
|
|
21
|
+
id: `track-${kind}-${crypto.randomUUID().slice(0, 8)}`,
|
|
22
|
+
kind,
|
|
23
|
+
contents: [],
|
|
24
|
+
};
|
|
25
|
+
composition.tracks.push(track);
|
|
26
|
+
return track;
|
|
27
|
+
}
|
|
28
|
+
/** Find a clip by id across every track. Returns undefined if not found. */
|
|
29
|
+
export function findClipById(composition, id) {
|
|
30
|
+
for (let ti = 0; ti < composition.tracks.length; ti++) {
|
|
31
|
+
const track = composition.tracks[ti];
|
|
32
|
+
for (let ci = 0; ci < track.contents.length; ci++) {
|
|
33
|
+
const item = track.contents[ci];
|
|
34
|
+
if ('source' in item && item.id === id) {
|
|
35
|
+
return { clip: item, trackIndex: ti, clipIndex: ci };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
/** Find the track containing the clip with given id. */
|
|
42
|
+
export function findTrackContainingClipId(composition, id) {
|
|
43
|
+
for (let ti = 0; ti < composition.tracks.length; ti++) {
|
|
44
|
+
const track = composition.tracks[ti];
|
|
45
|
+
for (let ci = 0; ci < track.contents.length; ci++) {
|
|
46
|
+
const item = track.contents[ci];
|
|
47
|
+
if ('source' in item && item.id === id) {
|
|
48
|
+
return { track, trackIndex: ti, clipIndex: ci };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Find a marker by id. */
|
|
55
|
+
export function findMarkerById(composition, id) {
|
|
56
|
+
const markers = composition.markers ?? [];
|
|
57
|
+
for (let i = 0; i < markers.length; i++) {
|
|
58
|
+
if (markers[i].id === id)
|
|
59
|
+
return { marker: markers[i], index: i };
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* For a media-source clip, narrow the source's `trim` window to
|
|
65
|
+
* `[clipRelStart, clipRelEnd]` (seconds within the clip's existing
|
|
66
|
+
* timeline duration). For non-media sources, return the source
|
|
67
|
+
* unchanged — overlay/effect/component sources don't trim.
|
|
68
|
+
*/
|
|
69
|
+
function trimSourceFor(source, clipRelStart, clipRelEnd) {
|
|
70
|
+
if (source.kind !== 'media')
|
|
71
|
+
return source;
|
|
72
|
+
const baseStart = source.trim?.start ?? 0;
|
|
73
|
+
return {
|
|
74
|
+
...source,
|
|
75
|
+
trim: { start: baseStart + clipRelStart, end: baseStart + clipRelEnd },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Ripple one timed range through a deleted window `[cutStart, cutEnd)`: a range
|
|
80
|
+
* starting at/after the window shifts left by the span; a range starting before
|
|
81
|
+
* it is kept (its end clamped if it straddles the cut start); a range fully
|
|
82
|
+
* inside is dropped (`null`). `end` may be undefined (a point). Unit-agnostic —
|
|
83
|
+
* the caller passes the window in the item's own unit. Shared by `cutAndRipple`
|
|
84
|
+
* for markers (seconds) and caption words (ms) so the algorithm lives once.
|
|
85
|
+
*/
|
|
86
|
+
function cutTimedRange(start, end, cutStart, cutEnd) {
|
|
87
|
+
const span = cutEnd - cutStart;
|
|
88
|
+
if (start >= cutEnd) {
|
|
89
|
+
return { start: start - span, end: end !== undefined ? end - span : undefined };
|
|
90
|
+
}
|
|
91
|
+
if (start < cutStart) {
|
|
92
|
+
if (end === undefined || end <= cutStart)
|
|
93
|
+
return { start, end };
|
|
94
|
+
return { start, end: Math.max(start, end - span) };
|
|
95
|
+
}
|
|
96
|
+
return null; // fully inside the cut → dropped
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Shift one timed range that starts at/after `from` by `amount` (start clamped
|
|
100
|
+
* ≥0; end never precedes start). `null` when unchanged (starts before `from`).
|
|
101
|
+
* Unit-agnostic. Shared by `ripple` for markers and caption words.
|
|
102
|
+
*/
|
|
103
|
+
function shiftTimedRange(start, end, from, amount) {
|
|
104
|
+
if (start < from)
|
|
105
|
+
return null;
|
|
106
|
+
const s = Math.max(0, start + amount);
|
|
107
|
+
return { start: s, end: end !== undefined ? Math.max(s, end + amount) : undefined };
|
|
108
|
+
}
|
|
109
|
+
// ── Ops factory ──
|
|
110
|
+
/**
|
|
111
|
+
* THE ONLY WRITER of selection state.
|
|
112
|
+
*
|
|
113
|
+
* `selection` is the truth; `selectedClipId` / `selectedOverlayId` are mirrors
|
|
114
|
+
* derived from it here and nowhere else. Two independently-written
|
|
115
|
+
* representations of the same fact is how they end up disagreeing, so there is
|
|
116
|
+
* exactly one function that can set any of the three.
|
|
117
|
+
*/
|
|
118
|
+
function selectionPatch(composition, entities) {
|
|
119
|
+
const clipIds = entities.filter((e) => e.kind === 'clip').map((e) => e.clipId);
|
|
120
|
+
const overlayIds = new Set();
|
|
121
|
+
for (const track of composition.tracks) {
|
|
122
|
+
if (track.kind !== 'overlay')
|
|
123
|
+
continue;
|
|
124
|
+
for (const item of track.contents) {
|
|
125
|
+
if ('source' in item)
|
|
126
|
+
overlayIds.add(item.id);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
selection: [...entities],
|
|
131
|
+
selectedClipId: clipIds.find((id) => !overlayIds.has(id)) ?? null,
|
|
132
|
+
selectedOverlayId: clipIds.find((id) => overlayIds.has(id)) ?? null,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Drop every selection entity naming a now-gone clip, AND recompute the derived
|
|
137
|
+
* mirrors from what survives.
|
|
138
|
+
*
|
|
139
|
+
* Recomputing is the whole point. The first cut of this pruned `selection` and
|
|
140
|
+
* left the mirrors to their old "null it if it was the removed id" logic, so
|
|
141
|
+
* deleting clip A out of a selection of {A, B} left `selection: [B]` beside
|
|
142
|
+
* `selectedClipId: null` — the two representations disagreeing within one op,
|
|
143
|
+
* which is the exact failure the single-writer rule exists to stop. Caught by
|
|
144
|
+
* `selection.test.ts`.
|
|
145
|
+
*/
|
|
146
|
+
function pruneSelectionInDraft(draft, removedClipIds) {
|
|
147
|
+
const kept = draft.selection.filter((e) => !('clipId' in e) || !removedClipIds.has(e.clipId));
|
|
148
|
+
const patch = selectionPatch(draft.composition, kept);
|
|
149
|
+
draft.selection = patch.selection;
|
|
150
|
+
draft.selectedClipId = patch.selectedClipId;
|
|
151
|
+
draft.selectedOverlayId = patch.selectedOverlayId;
|
|
152
|
+
}
|
|
153
|
+
export function createCompositionOps(get, set) {
|
|
154
|
+
return {
|
|
155
|
+
// ── Clip operations ──
|
|
156
|
+
addClip: (clip, options) => {
|
|
157
|
+
set((draft) => {
|
|
158
|
+
if (options?.newTrack) {
|
|
159
|
+
// Layered placement (b-roll over A-roll, picture-in-picture, etc.)
|
|
160
|
+
// — create a fresh `video` track so z-order separates the new clip
|
|
161
|
+
// from the existing source video. `newTrackId` lets a caller PIN the
|
|
162
|
+
// generated id (the op-recording seam passes it so a recorded op
|
|
163
|
+
// replays to the identical track); otherwise a uuid suffix is minted
|
|
164
|
+
// (matches the `findOrCreateTrackByKind` convention).
|
|
165
|
+
const track = {
|
|
166
|
+
id: options.newTrackId ?? `track-video-${crypto.randomUUID().slice(0, 8)}`,
|
|
167
|
+
kind: 'video',
|
|
168
|
+
contents: [clip],
|
|
169
|
+
};
|
|
170
|
+
draft.composition.tracks.push(track);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const track = findOrCreateTrackByKind(draft.composition, 'video');
|
|
174
|
+
track.contents.push(clip);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
},
|
|
178
|
+
/**
|
|
179
|
+
* Family-routed clip add — the single primitive behind the consolidated
|
|
180
|
+
* `clip.add` op (@cueframe/composition-ops). Routes a clip onto a track of
|
|
181
|
+
* the resolved FAMILY: either an existing track pinned by `trackId`, or a
|
|
182
|
+
* track of `kind` (created if absent, optionally with a pinned `newTrackId`
|
|
183
|
+
* for byte-faithful op-replay). Replaces the three family-specific adders
|
|
184
|
+
* (addClip/addOverlay/addAudioClip) at the OP layer — those stay for the
|
|
185
|
+
* editor's direct calls.
|
|
186
|
+
*
|
|
187
|
+
* Fails LOUD if `trackId` names a missing track, or a track of a DIFFERENT
|
|
188
|
+
* family (a clip must land on its own family — never silently mis-route).
|
|
189
|
+
*/
|
|
190
|
+
addClipToTrack: (clip, target) => {
|
|
191
|
+
set((draft) => {
|
|
192
|
+
if ('trackId' in target) {
|
|
193
|
+
const track = draft.composition.tracks.find((t) => t.id === target.trackId);
|
|
194
|
+
if (!track) {
|
|
195
|
+
throw new Error(`addClipToTrack: track '${target.trackId}' not found`);
|
|
196
|
+
}
|
|
197
|
+
track.contents.push(clip);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (target.newTrack) {
|
|
201
|
+
draft.composition.tracks.push({
|
|
202
|
+
id: target.newTrackId ?? `track-${target.kind}-${crypto.randomUUID().slice(0, 8)}`,
|
|
203
|
+
kind: target.kind,
|
|
204
|
+
contents: [clip],
|
|
205
|
+
});
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const track = findOrCreateTrackByKind(draft.composition, target.kind);
|
|
209
|
+
track.contents.push(clip);
|
|
210
|
+
});
|
|
211
|
+
},
|
|
212
|
+
removeClip: (id) => {
|
|
213
|
+
set((draft) => {
|
|
214
|
+
for (const track of draft.composition.tracks) {
|
|
215
|
+
const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
|
|
216
|
+
if (idx >= 0) {
|
|
217
|
+
track.contents.splice(idx, 1);
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
pruneSelectionInDraft(draft, new Set([id]));
|
|
222
|
+
if (draft.selectedOverlayId === id)
|
|
223
|
+
draft.selectedOverlayId = null;
|
|
224
|
+
if (draft.composition.markers) {
|
|
225
|
+
draft.composition.markers = draft.composition.markers.filter((m) => m.kind !== 'scene' ||
|
|
226
|
+
m.metadata?.clipId !== id);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
updateClip: (id, updates) => {
|
|
231
|
+
set((draft) => {
|
|
232
|
+
for (const track of draft.composition.tracks) {
|
|
233
|
+
for (let i = 0; i < track.contents.length; i++) {
|
|
234
|
+
const item = track.contents[i];
|
|
235
|
+
if ('source' in item && item.id === id) {
|
|
236
|
+
track.contents[i] = { ...item, ...updates };
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
/** Remove every clip whose `source.mediaId === mediaId`. */
|
|
244
|
+
removeClipsByMediaId: (mediaId) => {
|
|
245
|
+
set((draft) => {
|
|
246
|
+
const removed = new Set();
|
|
247
|
+
for (const track of draft.composition.tracks) {
|
|
248
|
+
track.contents = track.contents.filter((c) => {
|
|
249
|
+
if ('source' in c && c.source.kind === 'media' && c.source.mediaId === mediaId) {
|
|
250
|
+
removed.add(c.id);
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
return true;
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
if (draft.composition.markers) {
|
|
257
|
+
draft.composition.markers = draft.composition.markers.filter((m) => m.kind !== 'scene' ||
|
|
258
|
+
!removed.has(m.metadata?.clipId ?? ''));
|
|
259
|
+
}
|
|
260
|
+
pruneSelectionInDraft(draft, removed);
|
|
261
|
+
});
|
|
262
|
+
},
|
|
263
|
+
selectClip: (id) => {
|
|
264
|
+
const composition = get().composition;
|
|
265
|
+
if (id === null) {
|
|
266
|
+
set(selectionPatch(composition, []));
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (findClipById(composition, id)) {
|
|
270
|
+
set(selectionPatch(composition, expandToLinkGroup(composition, [{ kind: 'clip', clipId: id }])));
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
/** Replace the whole selection. The multi-select entry point. */
|
|
274
|
+
setSelection: (entities) => {
|
|
275
|
+
const composition = get().composition;
|
|
276
|
+
// Entities naming a clip that is not on the timeline are dropped rather
|
|
277
|
+
// than stored — a selection that points at nothing is how a verb ends up
|
|
278
|
+
// acting on a ghost.
|
|
279
|
+
const live = entities.filter((e) => !('clipId' in e) || !!findClipById(composition, e.clipId));
|
|
280
|
+
// LINK EXPANSION HAPPENS HERE, once, between selection and every verb.
|
|
281
|
+
// Putting it inside each verb would work until someone adds a verb and
|
|
282
|
+
// forgets — and that failure is silent: picture moves, sound does not.
|
|
283
|
+
set(selectionPatch(composition, expandToLinkGroup(composition, live)));
|
|
284
|
+
},
|
|
285
|
+
/** Every clip on the timeline, in track then start order. */
|
|
286
|
+
selectAllClips: () => {
|
|
287
|
+
const composition = get().composition;
|
|
288
|
+
const entities = [];
|
|
289
|
+
for (const track of composition.tracks) {
|
|
290
|
+
for (const item of track.contents) {
|
|
291
|
+
if ('source' in item) {
|
|
292
|
+
entities.push({ kind: 'clip', clipId: item.id });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
set(selectionPatch(composition, entities));
|
|
297
|
+
},
|
|
298
|
+
setClipProperties: (id, props) => {
|
|
299
|
+
const found = findClipById(get().composition, id);
|
|
300
|
+
if (!found)
|
|
301
|
+
return { rippled: false };
|
|
302
|
+
const clip = found.clip;
|
|
303
|
+
// Pre-compute whether a rate change applies. Rate-handling and
|
|
304
|
+
// transform-handling are independent paths so opacity/scale/rotation are
|
|
305
|
+
// never silently dropped, regardless of source kind or whether the new
|
|
306
|
+
// rate equals the old (M4, M5).
|
|
307
|
+
let rateChange = null;
|
|
308
|
+
if (props.playbackRate != null && clip.source.kind === 'media') {
|
|
309
|
+
const oldRate = clip.source.playbackRate ?? 1;
|
|
310
|
+
if (props.playbackRate !== oldRate) {
|
|
311
|
+
const trim = clip.source.trim;
|
|
312
|
+
const sourceDuration = trim ? trim.end - trim.start : clip.duration * oldRate;
|
|
313
|
+
const newDuration = sourceDuration / props.playbackRate;
|
|
314
|
+
const oldEnd = clip.startTime + clip.duration;
|
|
315
|
+
const delta = newDuration - clip.duration;
|
|
316
|
+
rateChange = { newRate: props.playbackRate, newDuration, oldEnd, delta };
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
set((draft) => {
|
|
320
|
+
const f = findClipById(draft.composition, id);
|
|
321
|
+
if (!f)
|
|
322
|
+
return;
|
|
323
|
+
const target = f.clip;
|
|
324
|
+
// Always apply transform fields if provided — independent of the
|
|
325
|
+
// rate-handling branch.
|
|
326
|
+
if (props.opacity !== undefined)
|
|
327
|
+
target.opacity = props.opacity;
|
|
328
|
+
if (props.scale !== undefined)
|
|
329
|
+
target.scale = props.scale;
|
|
330
|
+
if (props.rotation !== undefined)
|
|
331
|
+
target.rotation = props.rotation;
|
|
332
|
+
// Output-space placement primitive (PiP / inset / banner / split-screen).
|
|
333
|
+
if (props.region !== undefined)
|
|
334
|
+
target.region = props.region;
|
|
335
|
+
if (props.fit !== undefined)
|
|
336
|
+
target.fit = props.fit;
|
|
337
|
+
if (rateChange) {
|
|
338
|
+
if (target.source.kind === 'media') {
|
|
339
|
+
target.source.playbackRate = rateChange.newRate;
|
|
340
|
+
}
|
|
341
|
+
target.duration = rateChange.newDuration;
|
|
342
|
+
if (rateChange.delta !== 0) {
|
|
343
|
+
for (const track of draft.composition.tracks) {
|
|
344
|
+
for (let i = 0; i < track.contents.length; i++) {
|
|
345
|
+
const item = track.contents[i];
|
|
346
|
+
if ('source' in item && item.id !== id && item.startTime >= rateChange.oldEnd) {
|
|
347
|
+
item.startTime = Math.max(0, item.startTime + rateChange.delta);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
for (const m of draft.composition.markers ?? []) {
|
|
352
|
+
if (m.startTime >= rateChange.oldEnd) {
|
|
353
|
+
m.startTime = Math.max(0, m.startTime + rateChange.delta);
|
|
354
|
+
if (m.endTime !== undefined) {
|
|
355
|
+
m.endTime = Math.max(m.startTime, m.endTime + rateChange.delta);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
return { rippled: rateChange ? rateChange.delta !== 0 : false };
|
|
363
|
+
},
|
|
364
|
+
// ── Overlay operations (TimelineClips on kind:'overlay' tracks) ──
|
|
365
|
+
// GUARD AT THE WRITE. An overlay source without a `primitiveId` is not a clip — it is a
|
|
366
|
+
// hole that renders as `unknown overlay primitive 'undefined'`, and the RENDERER was the
|
|
367
|
+
// first thing to notice it (2026-07-13: every capture_frames of a live compose died on
|
|
368
|
+
// this, the author went blind, and it landed zero graphics on a 90s customer pitch).
|
|
369
|
+
//
|
|
370
|
+
// `primitiveId: z.string().min(1)` is ALREADY required by the composition validator — but
|
|
371
|
+
// the in-loop capture path renders the in-memory store and never validates it, so the
|
|
372
|
+
// schema never ran. Refuse at the write instead, where the caller is still on the stack and
|
|
373
|
+
// the message can name it. (Same reasoning as compositionRender's `custom`-with-no-
|
|
374
|
+
// sourceCode guard, which patched one instance of this at the render boundary; this closes
|
|
375
|
+
// the class.)
|
|
376
|
+
addOverlay: (clip) => {
|
|
377
|
+
if (clip.source.kind === 'overlay' && !clip.source.primitiveId) {
|
|
378
|
+
throw new Error(`addOverlay: clip "${clip.id}" has an overlay source with no primitiveId. ` +
|
|
379
|
+
`A built-in is placed by primitiveId (source.kind:'overlay'); an org-installed ` +
|
|
380
|
+
`component is placed by componentId (source.kind:'component'). Use the catalog's ` +
|
|
381
|
+
`\`placement\` hint for the id you picked — do not write one kind with the other's id.`);
|
|
382
|
+
}
|
|
383
|
+
set((draft) => {
|
|
384
|
+
const track = findOrCreateTrackByKind(draft.composition, 'overlay');
|
|
385
|
+
track.contents.push(clip);
|
|
386
|
+
});
|
|
387
|
+
},
|
|
388
|
+
removeOverlay: (id) => {
|
|
389
|
+
set((draft) => {
|
|
390
|
+
for (const track of draft.composition.tracks) {
|
|
391
|
+
if (track.kind !== 'overlay')
|
|
392
|
+
continue;
|
|
393
|
+
const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
|
|
394
|
+
if (idx >= 0) {
|
|
395
|
+
track.contents.splice(idx, 1);
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
if (draft.selectedOverlayId === id)
|
|
400
|
+
draft.selectedOverlayId = null;
|
|
401
|
+
});
|
|
402
|
+
},
|
|
403
|
+
updateOverlay: (id, updates) => {
|
|
404
|
+
set((draft) => {
|
|
405
|
+
for (const track of draft.composition.tracks) {
|
|
406
|
+
if (track.kind !== 'overlay')
|
|
407
|
+
continue;
|
|
408
|
+
for (let i = 0; i < track.contents.length; i++) {
|
|
409
|
+
const item = track.contents[i];
|
|
410
|
+
if ('source' in item && item.id === id) {
|
|
411
|
+
track.contents[i] = { ...item, ...updates };
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
},
|
|
418
|
+
selectOverlay: (id) => {
|
|
419
|
+
for (const track of get().composition.tracks) {
|
|
420
|
+
if (track.kind !== 'overlay')
|
|
421
|
+
continue;
|
|
422
|
+
if (track.contents.some((c) => 'source' in c && c.id === id)) {
|
|
423
|
+
set(selectionPatch(get().composition, [{ kind: 'clip', clipId: id }]));
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
clearOverlaySelection: () => {
|
|
429
|
+
const composition = get().composition;
|
|
430
|
+
const kept = get().selection.filter((e) => {
|
|
431
|
+
if (e.kind !== 'clip')
|
|
432
|
+
return true;
|
|
433
|
+
const found = findClipById(composition, e.clipId);
|
|
434
|
+
return found ? composition.tracks[found.trackIndex].kind !== 'overlay' : false;
|
|
435
|
+
});
|
|
436
|
+
set(selectionPatch(composition, kept));
|
|
437
|
+
},
|
|
438
|
+
/**
|
|
439
|
+
* (see addOverlay's guard) Replace all overlays — clears existing overlay tracks, creates
|
|
440
|
+
* one with provided clips.
|
|
441
|
+
*/
|
|
442
|
+
loadOverlays: (clips) => {
|
|
443
|
+
set((draft) => {
|
|
444
|
+
draft.composition.tracks = draft.composition.tracks.filter((t) => t.kind !== 'overlay');
|
|
445
|
+
if (clips.length > 0) {
|
|
446
|
+
draft.composition.tracks.push({
|
|
447
|
+
id: `track-overlay-${crypto.randomUUID().slice(0, 8)}`,
|
|
448
|
+
kind: 'overlay',
|
|
449
|
+
contents: clips,
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
draft.selectedOverlayId = null;
|
|
453
|
+
});
|
|
454
|
+
},
|
|
455
|
+
// ── Audio operations (TimelineClips on kind:'audio' tracks) ──
|
|
456
|
+
addAudioClip: (clip) => {
|
|
457
|
+
set((draft) => {
|
|
458
|
+
const track = findOrCreateTrackByKind(draft.composition, 'audio');
|
|
459
|
+
track.contents.push(clip);
|
|
460
|
+
});
|
|
461
|
+
},
|
|
462
|
+
removeAudioClip: (id) => {
|
|
463
|
+
set((draft) => {
|
|
464
|
+
for (const track of draft.composition.tracks) {
|
|
465
|
+
if (track.kind !== 'audio')
|
|
466
|
+
continue;
|
|
467
|
+
const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
|
|
468
|
+
if (idx >= 0) {
|
|
469
|
+
track.contents.splice(idx, 1);
|
|
470
|
+
break;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
},
|
|
475
|
+
updateAudioClip: (id, updates) => {
|
|
476
|
+
set((draft) => {
|
|
477
|
+
for (const track of draft.composition.tracks) {
|
|
478
|
+
if (track.kind !== 'audio')
|
|
479
|
+
continue;
|
|
480
|
+
for (let i = 0; i < track.contents.length; i++) {
|
|
481
|
+
const item = track.contents[i];
|
|
482
|
+
if ('source' in item && item.id === id) {
|
|
483
|
+
track.contents[i] = { ...item, ...updates };
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
},
|
|
490
|
+
// ── Marker operations ──
|
|
491
|
+
addMarker: (marker) => {
|
|
492
|
+
set((draft) => {
|
|
493
|
+
if (!draft.composition.markers)
|
|
494
|
+
draft.composition.markers = [];
|
|
495
|
+
draft.composition.markers.push(marker);
|
|
496
|
+
});
|
|
497
|
+
},
|
|
498
|
+
removeMarker: (id) => {
|
|
499
|
+
set((draft) => {
|
|
500
|
+
if (!draft.composition.markers)
|
|
501
|
+
return;
|
|
502
|
+
draft.composition.markers = draft.composition.markers.filter((m) => m.id !== id);
|
|
503
|
+
});
|
|
504
|
+
},
|
|
505
|
+
updateMarker: (id, updates) => {
|
|
506
|
+
set((draft) => {
|
|
507
|
+
if (!draft.composition.markers)
|
|
508
|
+
return;
|
|
509
|
+
const m = draft.composition.markers.find((x) => x.id === id);
|
|
510
|
+
if (m)
|
|
511
|
+
Object.assign(m, updates);
|
|
512
|
+
});
|
|
513
|
+
},
|
|
514
|
+
// ── cutAndRipple (replaces v1 deletedRanges) ──
|
|
515
|
+
cutAndRipple: (start, end) => {
|
|
516
|
+
if (!Number.isFinite(start) || !Number.isFinite(end) || start >= end)
|
|
517
|
+
return;
|
|
518
|
+
const span = end - start;
|
|
519
|
+
set((draft) => {
|
|
520
|
+
for (const track of draft.composition.tracks) {
|
|
521
|
+
const next = [];
|
|
522
|
+
for (const item of track.contents) {
|
|
523
|
+
if (!('source' in item)) {
|
|
524
|
+
next.push(item);
|
|
525
|
+
continue;
|
|
526
|
+
}
|
|
527
|
+
const c = item;
|
|
528
|
+
const cs = c.startTime;
|
|
529
|
+
const ce = c.startTime + c.duration;
|
|
530
|
+
if (ce <= start) {
|
|
531
|
+
next.push(c);
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
534
|
+
if (cs >= end) {
|
|
535
|
+
next.push({ ...c, startTime: Math.max(0, cs - span) });
|
|
536
|
+
continue;
|
|
537
|
+
}
|
|
538
|
+
if (cs < start) {
|
|
539
|
+
const leftDuration = start - cs;
|
|
540
|
+
const leftSource = trimSourceFor(c.source, 0, leftDuration);
|
|
541
|
+
next.push({ ...c, id: c.id, duration: leftDuration, source: leftSource });
|
|
542
|
+
}
|
|
543
|
+
if (ce > end) {
|
|
544
|
+
const rightDuration = ce - end;
|
|
545
|
+
const sourceOffsetIntoOriginal = end - cs;
|
|
546
|
+
const rightSource = trimSourceFor(c.source, sourceOffsetIntoOriginal, sourceOffsetIntoOriginal + rightDuration);
|
|
547
|
+
next.push({
|
|
548
|
+
...c,
|
|
549
|
+
id: `${c.id}-r`,
|
|
550
|
+
startTime: start,
|
|
551
|
+
duration: rightDuration,
|
|
552
|
+
source: rightSource,
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
track.contents = next;
|
|
557
|
+
}
|
|
558
|
+
if (draft.composition.markers) {
|
|
559
|
+
draft.composition.markers = draft.composition.markers.flatMap((m) => {
|
|
560
|
+
const r = cutTimedRange(m.startTime, m.endTime, start, end);
|
|
561
|
+
return r ? [{ ...m, startTime: r.start, endTime: r.end }] : [];
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
// Captions ride the same ripple as the clips they caption (in ms).
|
|
565
|
+
// Without this, a leading/interior cut moves the clip's source `trim`
|
|
566
|
+
// (which seconds play) while the frozen top-level caption words stay put
|
|
567
|
+
// — desyncing video and captions by the cut span.
|
|
568
|
+
// DERIVED ONLY. Rippling is an incremental re-derivation: correct for
|
|
569
|
+
// words that are a projection of the clip, and vandalism for words a
|
|
570
|
+
// human or agent wrote. Before captions carried provenance this could
|
|
571
|
+
// not tell the two apart and silently rewrote both.
|
|
572
|
+
if (draft.composition.captions?.source === "derived") {
|
|
573
|
+
for (const seg of draft.composition.captions.segments) {
|
|
574
|
+
seg.words = seg.words.flatMap((w) => {
|
|
575
|
+
const r = cutTimedRange(w.startMs, w.endMs, start * 1000, end * 1000);
|
|
576
|
+
return r ? [{ ...w, startMs: r.start, endMs: r.end ?? w.endMs }] : [];
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
});
|
|
581
|
+
},
|
|
582
|
+
// ── addExcludedRange ──
|
|
583
|
+
//
|
|
584
|
+
// Marks a range of source media on a media-source clip as excluded.
|
|
585
|
+
// Atomically: clamps to the clip's `trim` window, merges/coalesces with
|
|
586
|
+
// existing `excludedRanges` (touching ranges merge), shrinks
|
|
587
|
+
// `clip.duration` by the net delta added to Σ excluded, and ripples
|
|
588
|
+
// downstream same-track items left by that delta.
|
|
589
|
+
//
|
|
590
|
+
// Wire-shape invariant: (trim.end − trim.start) − Σexcludedrange = duration.
|
|
591
|
+
// The `trimEnd` fallback below restores trim.end from
|
|
592
|
+
// `duration + Σexcluded` when `trim` is absent — the same invariant
|
|
593
|
+
// rearranged.
|
|
594
|
+
addExcludedRange: (clipId, sourceStart, sourceEnd, reason) => {
|
|
595
|
+
if (!Number.isFinite(sourceStart) || !Number.isFinite(sourceEnd))
|
|
596
|
+
return;
|
|
597
|
+
if (!(sourceEnd > sourceStart))
|
|
598
|
+
return;
|
|
599
|
+
set((draft) => {
|
|
600
|
+
const found = findClipById(draft.composition, clipId);
|
|
601
|
+
if (!found)
|
|
602
|
+
return;
|
|
603
|
+
const track = draft.composition.tracks[found.trackIndex];
|
|
604
|
+
if (track.kind !== 'video' && track.kind !== 'audio')
|
|
605
|
+
return;
|
|
606
|
+
const target = found.clip;
|
|
607
|
+
if (target.source.kind !== 'media')
|
|
608
|
+
return;
|
|
609
|
+
const before = target.source.excludedRanges ?? [];
|
|
610
|
+
const beforeTotal = before.reduce((acc, r) => acc + (r.end - r.start), 0);
|
|
611
|
+
const trimStart = target.source.trim?.start ?? 0;
|
|
612
|
+
const trimEnd = target.source.trim?.end ?? trimStart + target.duration + beforeTotal;
|
|
613
|
+
const lo = Math.max(sourceStart, trimStart);
|
|
614
|
+
const hi = Math.min(sourceEnd, trimEnd);
|
|
615
|
+
if (!(hi > lo))
|
|
616
|
+
return;
|
|
617
|
+
const merged = [];
|
|
618
|
+
let inserted = false;
|
|
619
|
+
let curStart = lo;
|
|
620
|
+
let curEnd = hi;
|
|
621
|
+
let curReason = reason;
|
|
622
|
+
for (const r of before) {
|
|
623
|
+
if (r.end < curStart) {
|
|
624
|
+
merged.push(r);
|
|
625
|
+
continue;
|
|
626
|
+
}
|
|
627
|
+
if (r.start > curEnd) {
|
|
628
|
+
if (!inserted) {
|
|
629
|
+
merged.push({
|
|
630
|
+
start: curStart,
|
|
631
|
+
end: curEnd,
|
|
632
|
+
...(curReason !== undefined ? { reason: curReason } : {}),
|
|
633
|
+
});
|
|
634
|
+
inserted = true;
|
|
635
|
+
}
|
|
636
|
+
merged.push(r);
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
curStart = Math.min(curStart, r.start);
|
|
640
|
+
curEnd = Math.max(curEnd, r.end);
|
|
641
|
+
curReason = curReason ?? r.reason;
|
|
642
|
+
}
|
|
643
|
+
if (!inserted) {
|
|
644
|
+
merged.push({
|
|
645
|
+
start: curStart,
|
|
646
|
+
end: curEnd,
|
|
647
|
+
...(curReason !== undefined ? { reason: curReason } : {}),
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
const afterTotal = merged.reduce((acc, r) => acc + (r.end - r.start), 0);
|
|
651
|
+
const delta = afterTotal - beforeTotal;
|
|
652
|
+
if (delta <= 0)
|
|
653
|
+
return;
|
|
654
|
+
// Refuse to shrink to zero duration — wire shape requires duration > 0.
|
|
655
|
+
if (target.duration - delta <= 1e-3)
|
|
656
|
+
return;
|
|
657
|
+
target.source.excludedRanges = merged;
|
|
658
|
+
target.duration = target.duration - delta;
|
|
659
|
+
for (let i = found.clipIndex + 1; i < track.contents.length; i++) {
|
|
660
|
+
track.contents[i].startTime = Math.max(0, track.contents[i].startTime - delta);
|
|
661
|
+
}
|
|
662
|
+
// Ripple top-level markers + captions the same `delta` so they stay
|
|
663
|
+
// aligned with the now-shorter source — parity with cutAndRipple's
|
|
664
|
+
// "captions ride clip cuts" invariant (commit 2fac4cf), but WITHOUT
|
|
665
|
+
// fragmenting the clip. The removed timeline span is [tStart, tStart+delta]
|
|
666
|
+
// where tStart is the timeline position of the newly-excluded source start:
|
|
667
|
+
// clip.startTime + played-source-before-lo. `excludedBeforeLo` is the
|
|
668
|
+
// source already excluded in [trimStart, lo], so the mapping accounts for
|
|
669
|
+
// prior exclusions and is order-independent across calls.
|
|
670
|
+
const excludedBeforeLo = before.reduce((acc, r) => acc + Math.max(0, Math.min(r.end, lo) - Math.max(r.start, trimStart)), 0);
|
|
671
|
+
const tStart = target.startTime + (lo - trimStart) - excludedBeforeLo;
|
|
672
|
+
const tEnd = tStart + delta;
|
|
673
|
+
if (draft.composition.markers) {
|
|
674
|
+
draft.composition.markers = draft.composition.markers.flatMap((m) => {
|
|
675
|
+
const r = cutTimedRange(m.startTime, m.endTime, tStart, tEnd);
|
|
676
|
+
return r ? [{ ...m, startTime: r.start, endTime: r.end }] : [];
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
if (draft.composition.captions) {
|
|
680
|
+
for (const seg of draft.composition.captions.segments) {
|
|
681
|
+
seg.words = seg.words.flatMap((w) => {
|
|
682
|
+
const r = cutTimedRange(w.startMs, w.endMs, tStart * 1000, tEnd * 1000);
|
|
683
|
+
return r ? [{ ...w, startMs: r.start, endMs: r.end ?? w.endMs }] : [];
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
});
|
|
688
|
+
},
|
|
689
|
+
// ── removeExcludedRange ──
|
|
690
|
+
//
|
|
691
|
+
// Inverse of addExcludedRange. Removes the excluded range at the given
|
|
692
|
+
// index, restores the clip's duration by the same amount, and ripples
|
|
693
|
+
// downstream same-track items right. When the resulting list is empty,
|
|
694
|
+
// drops the field entirely so the wire stays canonical.
|
|
695
|
+
removeExcludedRange: (clipId, rangeIdx) => {
|
|
696
|
+
set((draft) => {
|
|
697
|
+
const found = findClipById(draft.composition, clipId);
|
|
698
|
+
if (!found)
|
|
699
|
+
return;
|
|
700
|
+
const track = draft.composition.tracks[found.trackIndex];
|
|
701
|
+
if (track.kind !== 'video' && track.kind !== 'audio')
|
|
702
|
+
return;
|
|
703
|
+
const target = found.clip;
|
|
704
|
+
if (target.source.kind !== 'media')
|
|
705
|
+
return;
|
|
706
|
+
const ranges = target.source.excludedRanges;
|
|
707
|
+
if (!ranges || rangeIdx < 0 || rangeIdx >= ranges.length)
|
|
708
|
+
return;
|
|
709
|
+
const removed = ranges[rangeIdx];
|
|
710
|
+
const restored = removed.end - removed.start;
|
|
711
|
+
if (restored <= 0)
|
|
712
|
+
return;
|
|
713
|
+
const next = ranges.filter((_, i) => i !== rangeIdx);
|
|
714
|
+
if (next.length === 0) {
|
|
715
|
+
delete target.source.excludedRanges;
|
|
716
|
+
}
|
|
717
|
+
else {
|
|
718
|
+
target.source.excludedRanges = next;
|
|
719
|
+
}
|
|
720
|
+
target.duration = target.duration + restored;
|
|
721
|
+
for (let i = found.clipIndex + 1; i < track.contents.length; i++) {
|
|
722
|
+
track.contents[i].startTime = track.contents[i].startTime + restored;
|
|
723
|
+
}
|
|
724
|
+
});
|
|
725
|
+
},
|
|
726
|
+
// ── setCropIntents ──
|
|
727
|
+
//
|
|
728
|
+
// Author the camera channel (`reframe`) on a media clip. Each segment
|
|
729
|
+
// carries the canonical reframe params (focus, zoom, bias, ease) the
|
|
730
|
+
// derive math honors directly — no closed-enum framing names, no
|
|
731
|
+
// hardcoded scale constants.
|
|
732
|
+
//
|
|
733
|
+
// `null`/empty clears `reframe`; the clip then renders from the raw source.
|
|
734
|
+
//
|
|
735
|
+
// Used by the agent's `set_crop_intents` tool (name kept; the arg shape is
|
|
736
|
+
// reframe) and the desktop editor's framing timeline. Replaces the deleted
|
|
737
|
+
// subject-centric cropIntents (2026-06-14 cutover).
|
|
738
|
+
setCropIntents: (clipId, segments) => {
|
|
739
|
+
set((draft) => {
|
|
740
|
+
const found = findClipById(draft.composition, clipId);
|
|
741
|
+
if (!found)
|
|
742
|
+
return;
|
|
743
|
+
const target = found.clip;
|
|
744
|
+
if (target.source.kind !== 'media')
|
|
745
|
+
return;
|
|
746
|
+
if (segments === null || segments.length === 0) {
|
|
747
|
+
delete target.source.reframe;
|
|
748
|
+
}
|
|
749
|
+
else {
|
|
750
|
+
target.source.reframe = { segments };
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
},
|
|
754
|
+
// ── setEffects ──
|
|
755
|
+
//
|
|
756
|
+
// Author a clip's EFFECT channel (`TimelineClip.effects`) — the registered
|
|
757
|
+
// effect primitives (+ params) the renderer stacks onto that clip. WHOLESALE:
|
|
758
|
+
// the array REPLACES whatever was there, and `[]` CLEARS the channel (the
|
|
759
|
+
// same set/clear shape setCropIntents has). `effects` has been in the
|
|
760
|
+
// validator — and accepted by `clip.add` — all along, but until the
|
|
761
|
+
// `setEffects` op there was no way to change it on an EXISTING clip except a
|
|
762
|
+
// whole-clip `clip.update` patch, which the op vocabulary explicitly steers
|
|
763
|
+
// callers away from (a partial `source` in that patch clobbers the source).
|
|
764
|
+
//
|
|
765
|
+
// Named EXACTLY like the wire op it records (`setEffects`) — the factory and
|
|
766
|
+
// the op vocabulary are one vocabulary, so there is no method→op rename table
|
|
767
|
+
// for the conformance guard to carry.
|
|
768
|
+
//
|
|
769
|
+
// Cross-track by id, like `updateClip` — the clip's family is irrelevant to
|
|
770
|
+
// its effect stack. Same merge shape as `updateClip(id, { effects })`.
|
|
771
|
+
setEffects: (clipId, effects) => {
|
|
772
|
+
set((draft) => {
|
|
773
|
+
const found = findClipById(draft.composition, clipId);
|
|
774
|
+
if (!found)
|
|
775
|
+
return;
|
|
776
|
+
if (effects.length === 0) {
|
|
777
|
+
delete found.clip.effects;
|
|
778
|
+
}
|
|
779
|
+
else {
|
|
780
|
+
found.clip.effects = effects;
|
|
781
|
+
}
|
|
782
|
+
});
|
|
783
|
+
},
|
|
784
|
+
// ── setCaptionStyle ──
|
|
785
|
+
//
|
|
786
|
+
// Apply the agent's caption STYLE overrides (font, size, color, position,
|
|
787
|
+
// emphasis treatment, …) onto the top-level `composition.captions.style` —
|
|
788
|
+
// the exact field the renderer consumes (compositionRender.ts) and the
|
|
789
|
+
// Captions primitive reads. Merge (not replace) so each `set_captions` call
|
|
790
|
+
// overrides only the fields it names and leaves the rest (and the
|
|
791
|
+
// transcript-sliced `words`) intact. Undefined fields are dropped so an
|
|
792
|
+
// omitted field never clobbers an existing one. If captions don't exist yet
|
|
793
|
+
// (style set before the transcript slice lands), create the container with
|
|
794
|
+
// empty words — the compose/insert path fills the words.
|
|
795
|
+
setCaptionStyle: (style) => {
|
|
796
|
+
set((draft) => {
|
|
797
|
+
const clean = Object.fromEntries(Object.entries(style).filter(([, v]) => v !== undefined));
|
|
798
|
+
if (Object.keys(clean).length === 0)
|
|
799
|
+
return;
|
|
800
|
+
const existing = draft.composition.captions;
|
|
801
|
+
if (existing) {
|
|
802
|
+
existing.style = { ...(existing.style ?? {}), ...clean };
|
|
803
|
+
}
|
|
804
|
+
else {
|
|
805
|
+
// A style with no words is `authored`: the caller stated an intent
|
|
806
|
+
// about captions that do not exist yet. It cannot be `derived` —
|
|
807
|
+
// there is no clip to name as its source, and inventing one would
|
|
808
|
+
// create a projection of nothing that the next clip edit would
|
|
809
|
+
// "re-derive" into surprise captions.
|
|
810
|
+
draft.composition.captions = { source: "authored", segments: [], style: clean };
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
},
|
|
814
|
+
// ── setCaptions ──
|
|
815
|
+
//
|
|
816
|
+
// Replace the caption SEGMENTS wholesale — the words layer. Until this op,
|
|
817
|
+
// caption words were populated ONLY by the compose/from-suggestion
|
|
818
|
+
// transcript-slice lanes, so a client agent holding its own word timings
|
|
819
|
+
// (e.g. a generated VO take) had no way to author the engine caption layer
|
|
820
|
+
// (memoir v4, 2026-07-21). Segments REPLACE (not merge — word timing is one
|
|
821
|
+
// coherent document); `style`, when given, merges with setCaptionStyle
|
|
822
|
+
// semantics, and an omitted style keeps the existing one.
|
|
823
|
+
setCaptions: (segments, style,
|
|
824
|
+
/**
|
|
825
|
+
* WHERE THESE WORDS CAME FROM. Omitted ⇒ `authored`: a caller handed us
|
|
826
|
+
* literal words and owns them, so nothing rewrites them. Pass
|
|
827
|
+
* `{ clipId }` when the words are a PROJECTION of that clip's transcript
|
|
828
|
+
* — then every later edit to the clip re-derives them instead of leaving
|
|
829
|
+
* a stale snapshot behind (which is what shipped: words timed to 4.4s
|
|
830
|
+
* inside a 2.4s composition).
|
|
831
|
+
*/
|
|
832
|
+
derivedFrom) => {
|
|
833
|
+
set((draft) => {
|
|
834
|
+
const existing = draft.composition.captions;
|
|
835
|
+
const mergedStyle = style
|
|
836
|
+
? {
|
|
837
|
+
...(existing?.style ?? {}),
|
|
838
|
+
...Object.fromEntries(Object.entries(style).filter(([, v]) => v !== undefined)),
|
|
839
|
+
}
|
|
840
|
+
: existing?.style;
|
|
841
|
+
const styleField = mergedStyle && Object.keys(mergedStyle).length > 0 ? { style: mergedStyle } : {};
|
|
842
|
+
draft.composition.captions = derivedFrom
|
|
843
|
+
? { source: "derived", from: derivedFrom, segments, ...styleField }
|
|
844
|
+
: { source: "authored", segments, ...styleField };
|
|
845
|
+
});
|
|
846
|
+
},
|
|
847
|
+
// ── ripple ──
|
|
848
|
+
ripple: (time, amount) => {
|
|
849
|
+
set((draft) => {
|
|
850
|
+
for (const track of draft.composition.tracks) {
|
|
851
|
+
for (const item of track.contents) {
|
|
852
|
+
if (!('source' in item))
|
|
853
|
+
continue;
|
|
854
|
+
const c = item;
|
|
855
|
+
if (c.startTime >= time) {
|
|
856
|
+
c.startTime = Math.max(0, c.startTime + amount);
|
|
857
|
+
}
|
|
858
|
+
else if (c.startTime + c.duration > time && amount < 0) {
|
|
859
|
+
c.duration = Math.max(0.1, c.duration + amount);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
// Markers and caption words ride the shift too (M3) — shift each range
|
|
864
|
+
// starting at/after `time` by `amount`, in their own unit.
|
|
865
|
+
for (const m of draft.composition.markers ?? []) {
|
|
866
|
+
const r = shiftTimedRange(m.startTime, m.endTime, time, amount);
|
|
867
|
+
if (r) {
|
|
868
|
+
m.startTime = r.start;
|
|
869
|
+
if (r.end !== undefined)
|
|
870
|
+
m.endTime = r.end;
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
if (draft.composition.captions) {
|
|
874
|
+
for (const seg of draft.composition.captions.segments) {
|
|
875
|
+
for (const w of seg.words) {
|
|
876
|
+
const r = shiftTimedRange(w.startMs, w.endMs, time * 1000, amount * 1000);
|
|
877
|
+
if (r) {
|
|
878
|
+
w.startMs = r.start;
|
|
879
|
+
w.endMs = r.end ?? w.endMs;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
});
|
|
885
|
+
},
|
|
886
|
+
// ── Canvas / format ──
|
|
887
|
+
//
|
|
888
|
+
// Patches `composition.format` — `aspectRatio` is required (the field
|
|
889
|
+
// has no default), `fps`, `resolution`, and `platform` fall back to the
|
|
890
|
+
// existing values on the wire. Clip start/duration values are not retimed:
|
|
891
|
+
// a 30→60 fps switch keeps the same wall-clock seconds. Layout-sensitive
|
|
892
|
+
// overlays may need re-rendering by the caller after a switch. `platform`
|
|
893
|
+
// is output-determining (safe-zone placement) — carry it forward so an
|
|
894
|
+
// aspect-only change never silently erases it.
|
|
895
|
+
setFormat: (next) => {
|
|
896
|
+
set((draft) => {
|
|
897
|
+
const prev = draft.composition.format;
|
|
898
|
+
draft.composition.format = {
|
|
899
|
+
aspectRatio: next.aspectRatio,
|
|
900
|
+
...(next.fps !== undefined ? { fps: next.fps } : prev.fps !== undefined ? { fps: prev.fps } : {}),
|
|
901
|
+
...(next.resolution !== undefined
|
|
902
|
+
? { resolution: next.resolution }
|
|
903
|
+
: prev.resolution !== undefined
|
|
904
|
+
? { resolution: prev.resolution }
|
|
905
|
+
: {}),
|
|
906
|
+
...(next.platform !== undefined
|
|
907
|
+
? { platform: next.platform }
|
|
908
|
+
: prev.platform !== undefined
|
|
909
|
+
? { platform: prev.platform }
|
|
910
|
+
: {}),
|
|
911
|
+
};
|
|
912
|
+
});
|
|
913
|
+
},
|
|
914
|
+
// ── Track operations ──
|
|
915
|
+
//
|
|
916
|
+
// Capability parity: the cloud agent must be able to do everything the
|
|
917
|
+
// editor can (these were previously editor-only, in
|
|
918
|
+
// cueframe/src/store/compositionStore/compositionOps.ts). They are pure
|
|
919
|
+
// `set` mutations over `composition.tracks` + the selection fields already
|
|
920
|
+
// on `CompositionOpsState`, so they live in core unchanged. The agent's
|
|
921
|
+
// tool layer can now surface them; the editor keeps calling the same names.
|
|
922
|
+
/**
|
|
923
|
+
* Append a new track of `kind` to `composition.tracks`. If `id` is omitted
|
|
924
|
+
* a UUID-suffixed id is generated (matches `findOrCreateTrackByKind`).
|
|
925
|
+
*/
|
|
926
|
+
addTrack: (kind, name, id) => {
|
|
927
|
+
set((draft) => {
|
|
928
|
+
const track = {
|
|
929
|
+
id: id ?? `track-${kind}-${crypto.randomUUID().slice(0, 8)}`,
|
|
930
|
+
kind,
|
|
931
|
+
name,
|
|
932
|
+
contents: [],
|
|
933
|
+
};
|
|
934
|
+
draft.composition.tracks.push(track);
|
|
935
|
+
});
|
|
936
|
+
},
|
|
937
|
+
/** Remove a track and any clip selection that references its contents. */
|
|
938
|
+
removeTrack: (trackId) => {
|
|
939
|
+
set((draft) => {
|
|
940
|
+
const idx = draft.composition.tracks.findIndex((t) => t.id === trackId);
|
|
941
|
+
if (idx < 0)
|
|
942
|
+
return;
|
|
943
|
+
const removed = draft.composition.tracks[idx];
|
|
944
|
+
const removedClipIds = new Set(removed.contents
|
|
945
|
+
.filter((c) => 'source' in c)
|
|
946
|
+
.map((c) => c.id));
|
|
947
|
+
pruneSelectionInDraft(draft, removedClipIds);
|
|
948
|
+
if (draft.selectedOverlayId && removedClipIds.has(draft.selectedOverlayId)) {
|
|
949
|
+
draft.selectedOverlayId = null;
|
|
950
|
+
}
|
|
951
|
+
draft.composition.tracks.splice(idx, 1);
|
|
952
|
+
});
|
|
953
|
+
},
|
|
954
|
+
/** Patch a track's `name` / `enabled`. */
|
|
955
|
+
updateTrack: (trackId, updates) => {
|
|
956
|
+
set((draft) => {
|
|
957
|
+
const track = draft.composition.tracks.find((t) => t.id === trackId);
|
|
958
|
+
if (!track)
|
|
959
|
+
return;
|
|
960
|
+
if ('name' in updates)
|
|
961
|
+
track.name = updates.name;
|
|
962
|
+
if ('enabled' in updates)
|
|
963
|
+
track.enabled = updates.enabled;
|
|
964
|
+
// Unity is stored as ABSENT, not as 1 — so a composition nobody has
|
|
965
|
+
// mixed carries no mixer state at all and diffs stay quiet.
|
|
966
|
+
if ('volume' in updates) {
|
|
967
|
+
track.volume = updates.volume === 1 ? undefined : updates.volume;
|
|
968
|
+
}
|
|
969
|
+
});
|
|
970
|
+
},
|
|
971
|
+
/** Move a track from `fromIndex` to `toIndex` within `composition.tracks`. */
|
|
972
|
+
reorderTracks: (fromIndex, toIndex) => {
|
|
973
|
+
set((draft) => {
|
|
974
|
+
const len = draft.composition.tracks.length;
|
|
975
|
+
if (fromIndex < 0 || fromIndex >= len)
|
|
976
|
+
return;
|
|
977
|
+
const clamped = Math.max(0, Math.min(toIndex, len - 1));
|
|
978
|
+
if (clamped === fromIndex)
|
|
979
|
+
return;
|
|
980
|
+
const [moved] = draft.composition.tracks.splice(fromIndex, 1);
|
|
981
|
+
draft.composition.tracks.splice(clamped, 0, moved);
|
|
982
|
+
});
|
|
983
|
+
},
|
|
984
|
+
/**
|
|
985
|
+
* Move a clip to a different track, optionally updating its startTime.
|
|
986
|
+
*
|
|
987
|
+
* The op trusts callers to validate kind-compatibility and overlap; the
|
|
988
|
+
* Fabric drag handler is responsible for snapping back when invalid. No-op
|
|
989
|
+
* if the clip isn't found, the target track doesn't exist, or target ===
|
|
990
|
+
* source. Selection stays put (the clip id is unchanged).
|
|
991
|
+
*/
|
|
992
|
+
moveClipToTrack: (clipId, targetTrackId, newStartTime) => {
|
|
993
|
+
set((draft) => {
|
|
994
|
+
let sourceTrack;
|
|
995
|
+
let clipIdx = -1;
|
|
996
|
+
for (const t of draft.composition.tracks) {
|
|
997
|
+
const idx = t.contents.findIndex((c) => 'source' in c && c.id === clipId);
|
|
998
|
+
if (idx >= 0) {
|
|
999
|
+
sourceTrack = t;
|
|
1000
|
+
clipIdx = idx;
|
|
1001
|
+
break;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
if (!sourceTrack || clipIdx < 0)
|
|
1005
|
+
return;
|
|
1006
|
+
const target = draft.composition.tracks.find((t) => t.id === targetTrackId);
|
|
1007
|
+
if (!target)
|
|
1008
|
+
return;
|
|
1009
|
+
if (target.id === sourceTrack.id && newStartTime === undefined)
|
|
1010
|
+
return;
|
|
1011
|
+
const [moved] = sourceTrack.contents.splice(clipIdx, 1);
|
|
1012
|
+
const clip = moved;
|
|
1013
|
+
if (newStartTime !== undefined)
|
|
1014
|
+
clip.startTime = newStartTime;
|
|
1015
|
+
target.contents.push(clip);
|
|
1016
|
+
target.contents.sort((a, b) => a.startTime - b.startTime);
|
|
1017
|
+
});
|
|
1018
|
+
},
|
|
1019
|
+
/**
|
|
1020
|
+
* Duplicate a clip. The copy receives a new id and is appended to the same
|
|
1021
|
+
* track immediately after the original's `[startTime + duration]` (nudged
|
|
1022
|
+
* forward to avoid overlap with whatever follows).
|
|
1023
|
+
*/
|
|
1024
|
+
duplicateClip: (id) => {
|
|
1025
|
+
let newId;
|
|
1026
|
+
set((draft) => {
|
|
1027
|
+
for (const track of draft.composition.tracks) {
|
|
1028
|
+
const idx = track.contents.findIndex((c) => 'source' in c && c.id === id);
|
|
1029
|
+
if (idx < 0)
|
|
1030
|
+
continue;
|
|
1031
|
+
const original = track.contents[idx];
|
|
1032
|
+
const clipEnd = original.startTime + original.duration;
|
|
1033
|
+
// Find the earliest gap >= clipEnd on this track for placement; fallback = clipEnd.
|
|
1034
|
+
let placementStart = clipEnd;
|
|
1035
|
+
for (let j = idx + 1; j < track.contents.length; j++) {
|
|
1036
|
+
const next = track.contents[j];
|
|
1037
|
+
if (next.startTime >= placementStart + original.duration)
|
|
1038
|
+
break;
|
|
1039
|
+
placementStart = next.startTime + next.duration;
|
|
1040
|
+
}
|
|
1041
|
+
newId = `${original.id}-dup-${crypto.randomUUID().slice(0, 6)}`;
|
|
1042
|
+
const copy = { ...original, id: newId, startTime: placementStart };
|
|
1043
|
+
// A single-clip duplicate cannot preserve pairness — and inheriting
|
|
1044
|
+
// the group id is WORSE than losing it: the copy joins the ORIGINAL'S
|
|
1045
|
+
// link group, so moving the duplicate drags the original's partner
|
|
1046
|
+
// with it (review pass 2, 2026-08-24 — the same defect family paste
|
|
1047
|
+
// had). The duplicate arrives unlinked.
|
|
1048
|
+
delete copy.linkGroupId;
|
|
1049
|
+
track.contents.splice(idx + 1, 0, copy);
|
|
1050
|
+
break;
|
|
1051
|
+
}
|
|
1052
|
+
});
|
|
1053
|
+
return newId;
|
|
1054
|
+
},
|
|
1055
|
+
};
|
|
1056
|
+
}
|