@cueframe/kernel 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_members/account-model/testing/conversationStoreContract.d.ts +0 -59
- package/dist/_members/account-model/testing/index.d.ts +0 -5
- package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +0 -24
- package/dist/_members/account-model/validators/contextFile.d.ts +0 -6
- package/dist/_members/account-model/validators/conversation.d.ts +0 -96
- package/dist/_members/account-model/validators/dashboardInsight.d.ts +0 -6
- package/dist/_members/account-model/validators/sessionToken.d.ts +0 -29
- package/dist/_members/account-model/validators/uploadToken.d.ts +0 -4
- package/dist/_members/account-model/validators/userSettings.d.ts +0 -4
- package/dist/_members/account-model/validators/workingComposition.d.ts +0 -7
- package/dist/_members/animate/animations/Create.d.ts +0 -19
- package/dist/_members/animate/animations/FadeIn.d.ts +0 -17
- package/dist/_members/animate/animations/GrowArrow.d.ts +0 -19
- package/dist/_members/animate/animations/GrowFromCenter.d.ts +0 -12
- package/dist/_members/animate/animations/Indicate.d.ts +0 -17
- package/dist/_members/animate/animations/MoveAlongPath.d.ts +0 -18
- package/dist/_members/animate/animations/Transform.d.ts +0 -28
- package/dist/_members/animate/animations/Wiggle.d.ts +0 -18
- package/dist/_members/animate/animations/Write.d.ts +0 -20
- package/dist/_members/animate/composition/AnimationGroup.d.ts +0 -21
- package/dist/_members/animate/composition/LaggedStart.d.ts +0 -22
- package/dist/_members/animate/composition/Succession.d.ts +0 -17
- package/dist/_members/animate/easing/rush.d.ts +0 -14
- package/dist/_members/animate/easing/smooth.d.ts +0 -7
- package/dist/_members/animate/easing/smootherstep.d.ts +0 -6
- package/dist/_members/animate/index.d.ts +0 -2
- package/dist/_members/animate/mobjects/Arrow.d.ts +0 -25
- package/dist/_members/animate/mobjects/BrandBox.d.ts +0 -25
- package/dist/_members/animate/mobjects/DiGraph.d.ts +0 -18
- package/dist/_members/animate/mobjects/Graph.d.ts +0 -38
- package/dist/_members/animate/three/ThreeCanvas.d.ts +0 -23
- package/dist/_members/animate/three/drei.d.ts +0 -7
- package/dist/_members/authoring/agent/buildTools.d.ts +0 -37
- package/dist/_members/authoring/agent/contextManagement.d.ts +0 -65
- package/dist/_members/authoring/agent/errors.d.ts +0 -9
- package/dist/_members/authoring/agent/memoryTool.d.ts +0 -2
- package/dist/_members/authoring/agent/promptCache.d.ts +0 -31
- package/dist/_members/authoring/agent.d.ts +0 -34
- package/dist/_members/authoring/capabilities.d.ts +0 -145
- package/dist/_members/authoring/composer/scopes.d.ts +0 -19
- package/dist/_members/authoring/context/brand.d.ts +0 -4
- package/dist/_members/authoring/context/brandTokens.d.ts +0 -4
- package/dist/_members/authoring/context/index.d.ts +0 -1
- package/dist/_members/authoring/context/timeline.d.ts +0 -15
- package/dist/_members/authoring/context/transcript.d.ts +0 -11
- package/dist/_members/authoring/context/types.d.ts +0 -4
- package/dist/_members/authoring/decomposer.d.ts +0 -12
- package/dist/_members/authoring/evaluate.d.ts +0 -26
- package/dist/_members/authoring/evaluator.d.ts +0 -16
- package/dist/_members/authoring/index.d.ts +1 -1
- package/dist/_members/authoring/models/modelFactory.d.ts +0 -77
- package/dist/_members/authoring/motion/applyMotionPreset.d.ts +0 -12
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +0 -7
- package/dist/_members/authoring/motion/shell.d.ts +0 -20
- package/dist/_members/authoring/pipelineTrace.d.ts +0 -19
- package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +0 -4
- package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -16
- package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +0 -4
- package/dist/_members/authoring/prompts/graphics.d.ts +0 -5
- package/dist/_members/authoring/prompts/index.d.ts +0 -1
- package/dist/_members/authoring/prompts/plannerPrompt.d.ts +0 -30
- package/dist/_members/authoring/providers/resourceApi.d.ts +1 -20
- package/dist/_members/authoring/resource-routing.d.ts +0 -121
- package/dist/_members/authoring/resources.d.ts +0 -34
- package/dist/_members/authoring/scope.d.ts +0 -24
- package/dist/_members/authoring/tools/brandTokens.d.ts +0 -22
- package/dist/_members/authoring/tools/composeRoleTools.d.ts +0 -79
- package/dist/_members/authoring/tools/index.d.ts +0 -1
- package/dist/_members/authoring/tools/toolSets.d.ts +0 -50
- package/dist/_members/authoring/transpileComponent.d.ts +0 -34
- package/dist/_members/authoring/transpileHelper.d.ts +0 -18
- package/dist/_members/authoring/types.d.ts +0 -149
- package/dist/_members/brand-derivation/constants.d.ts +0 -17
- package/dist/_members/brand-derivation/contrastSafe.d.ts +0 -23
- package/dist/_members/cloud-import/CloudImportService.d.ts +0 -15
- package/dist/_members/cloud-import/ImportProvider.d.ts +0 -45
- package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -9
- package/dist/_members/cloud-import/cloudConfig.d.ts +0 -15
- package/dist/_members/compose/CompositionRenderer.d.ts +0 -6
- package/dist/_members/compose/primitiveRegistry.d.ts +0 -64
- package/dist/_members/compose/sceneToRenderInput.d.ts +0 -26
- package/dist/_members/compose/schema.d.ts +0 -15
- package/dist/_members/compose/tokenResolver.d.ts +0 -11
- package/dist/_members/composition/audio/audioMix.d.ts +0 -34
- package/dist/_members/composition/audio/mixStaging.d.ts +0 -81
- package/dist/_members/composition/audio/musicPack.d.ts +0 -35
- package/dist/_members/composition/audio/musicPack.generated.d.ts +0 -6
- package/dist/_members/composition/audio/pack.d.ts +0 -43
- package/dist/_members/composition/audio/pack.generated.d.ts +0 -6
- package/dist/_members/composition/audio/palette.d.ts +0 -36
- package/dist/_members/composition/autozoom/index.d.ts +0 -32
- package/dist/_members/composition/brand-kit.d.ts +0 -8
- package/dist/_members/composition/brief/contract.d.ts +0 -90
- package/dist/_members/composition/color-grade.d.ts +0 -11
- package/dist/_members/composition/depth.d.ts +0 -19
- package/dist/_members/composition/fixtures/agentErrored.d.ts +0 -23
- package/dist/_members/composition/fonts.d.ts +0 -62
- package/dist/_members/composition/graphics-plan/compile.d.ts +0 -29
- package/dist/_members/composition/graphics-plan/index.d.ts +0 -5
- package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +0 -17
- package/dist/_members/composition/graphics-plan/motion.d.ts +0 -17
- package/dist/_members/composition/graphics-plan/schemas.d.ts +0 -171
- package/dist/_members/composition/graphics-plan/solve.d.ts +0 -19
- package/dist/_members/composition/invariants/clipPlacement.d.ts +0 -59
- package/dist/_members/composition/invariants/composition.d.ts +0 -5
- package/dist/_members/composition/invariants/etag.d.ts +0 -7
- package/dist/_members/composition/invariants/ids.d.ts +0 -6
- package/dist/_members/composition/invariants/keyframes.d.ts +0 -19
- package/dist/_members/composition/invariants/markers.d.ts +0 -6
- package/dist/_members/composition/invariants/time.d.ts +0 -8
- package/dist/_members/composition/invariants/tracks.d.ts +0 -48
- package/dist/_members/composition/ops/compositionOps.d.ts +4 -71
- package/dist/_members/composition/ops/compositionOps.shared.d.ts +30 -0
- package/dist/_members/composition/ops/headlessStore.d.ts +0 -24
- package/dist/_members/composition/ops/selectors.d.ts +0 -66
- package/dist/_members/composition/ops/timeline-word.d.ts +0 -5
- package/dist/_members/composition/ops/transcript.d.ts +0 -27
- package/dist/_members/composition/ops/types.d.ts +0 -51
- package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +0 -32
- package/dist/_members/composition/primitive-catalog/disabled.d.ts +0 -1
- package/dist/_members/composition/primitive-catalog/index.d.ts +0 -11
- package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +0 -50
- package/dist/_members/composition/primitive-catalog/projection.d.ts +0 -39
- package/dist/_members/composition/primitive-catalog/types.d.ts +0 -78
- package/dist/_members/composition/projection/behind-placement.d.ts +0 -40
- package/dist/_members/composition/projection/behind-readiness.d.ts +14 -89
- package/dist/_members/composition/projection/brandKit.d.ts +0 -142
- package/dist/_members/composition/projection/cardTokens.d.ts +0 -65
- package/dist/_members/composition/projection/composition-floor.d.ts +0 -179
- package/dist/_members/composition/projection/cropProjection.d.ts +0 -75
- package/dist/_members/composition/projection/occlusion-budget.d.ts +0 -37
- package/dist/_members/composition/projection/reframe-readiness.d.ts +4 -111
- package/dist/_members/composition/projection/safe-zones.d.ts +0 -29
- package/dist/_members/composition/reframe/aspectLoss.d.ts +12 -35
- package/dist/_members/composition/reframe/coverage.d.ts +0 -40
- package/dist/_members/composition/reframe/derive.d.ts +0 -21
- package/dist/_members/composition/reframe/index.d.ts +0 -60
- package/dist/_members/composition/reframe/kenBurns.d.ts +0 -37
- package/dist/_members/composition/reframe/shotScale.d.ts +0 -75
- package/dist/_members/composition/reframe/trajectory.d.ts +0 -65
- package/dist/_members/composition/timeline/compound.d.ts +0 -31
- package/dist/_members/composition/timeline/intent.d.ts +0 -29
- package/dist/_members/composition/timeline/keyframes.d.ts +0 -43
- package/dist/_members/composition/timeline/link.d.ts +0 -27
- package/dist/_members/composition/timeline/occupancy.d.ts +1 -42
- package/dist/_members/composition/timeline/placement.d.ts +5 -52
- package/dist/_members/composition/timeline/plan.d.ts +5 -53
- package/dist/_members/composition/timeline/resolve.d.ts +0 -36
- package/dist/_members/composition/timeline/trims.d.ts +0 -49
- package/dist/_members/composition/validators/brandKit.d.ts +0 -29
- package/dist/_members/composition/validators/composePlan.d.ts +0 -39
- package/dist/_members/composition/validators/composition.d.ts +30 -513
- package/dist/_members/composition/validators/graphicKinds.d.ts +0 -28
- package/dist/_members/composition/validators/render.d.ts +23 -23
- package/dist/_members/composition-ops/alphaLayers.d.ts +0 -56
- package/dist/_members/composition-ops/index.d.ts +27 -148
- package/dist/_members/composition-ops/materializeGrid.d.ts +0 -28
- package/dist/_members/composition-ops/opRecorder.d.ts +0 -34
- package/dist/_members/composition-ops/recordingStore.d.ts +0 -16
- package/dist/_members/composition-ops/replaceRegion.d.ts +0 -48
- package/dist/_members/composition-ops/testFixtures.d.ts +0 -14
- package/dist/_members/convex-api/api.generated.d.ts +1444 -0
- package/dist/_members/convex-api/dataModel.d.ts +1 -1
- package/dist/_members/core/index.d.ts +1 -1
- package/dist/_members/core/render/bookends.d.ts +0 -44
- package/dist/_members/core/render/captions.d.ts +0 -42
- package/dist/_members/core/render/compositionRender.d.ts +1 -180
- package/dist/_members/core/render/deriveTrajectory.d.ts +0 -140
- package/dist/_members/core/render/emphasis.d.ts +0 -6
- package/dist/_members/core/render/eval/cropBox.d.ts +0 -69
- package/dist/_members/core/render/eval/inclusion.d.ts +0 -39
- package/dist/_members/core/render/eval/index.d.ts +0 -58
- package/dist/_members/core/render/eval/metrics.d.ts +0 -36
- package/dist/_members/core/render/exportSettings.d.ts +4 -12
- package/dist/_members/core/render/index.d.ts +1 -1
- package/dist/_members/core/render/mapFaceToPerson.d.ts +0 -27
- package/dist/_members/core/render/types.d.ts +1 -184
- package/dist/_members/core/render/variantKeys.d.ts +1 -0
- package/dist/_members/core/render/vcam/cameraPath.d.ts +0 -44
- package/dist/_members/core/render/vcam/constants.d.ts +0 -93
- package/dist/_members/core/render/vcam/errorCodes.d.ts +0 -28
- package/dist/_members/core/render/vcam/framing.d.ts +0 -76
- package/dist/_members/core/render/vcam/requiredRegion.d.ts +0 -71
- package/dist/_members/core/render/vcam/shots.d.ts +0 -40
- package/dist/_members/core/render/vcam/subjectSet.d.ts +0 -85
- package/dist/_members/core/select/errorCodes.d.ts +0 -25
- package/dist/_members/core/select/index.d.ts +0 -20
- package/dist/_members/core/select/model.d.ts +0 -79
- package/dist/_members/core/select/select.d.ts +0 -49
- package/dist/_members/core/select/stabilize.d.ts +0 -102
- package/dist/_members/core/types.d.ts +0 -1
- package/dist/_members/director/ai-sdk/chunks.d.ts +14 -0
- package/dist/_members/director/ai-sdk/context.d.ts +6 -0
- package/dist/_members/director/ai-sdk/generationTool.d.ts +8 -0
- package/dist/_members/director/ai-sdk/index.d.ts +4 -0
- package/dist/_members/director/ai-sdk/messages.d.ts +292 -0
- package/dist/_members/director/domain/chat.d.ts +357 -0
- package/dist/_members/director/domain/generation.d.ts +1 -0
- package/dist/_members/director/domain/index.d.ts +3 -0
- package/dist/_members/director/domain/ports.d.ts +32 -0
- package/dist/_members/director/index.d.ts +2 -0
- package/dist/_members/director/testing/contract.d.ts +52 -0
- package/dist/_members/director/testing/index.d.ts +1 -0
- package/dist/_members/errors/registry.d.ts +103 -33
- package/dist/_members/foundation/codes/index.d.ts +0 -21
- package/dist/_members/mcp/adapter.d.ts +1 -84
- package/dist/_members/mcp/burnedNames.d.ts +0 -16
- package/dist/_members/mcp/core.d.ts +2 -82
- package/dist/_members/mcp/curation.d.ts +0 -112
- package/dist/_members/mcp/executor.d.ts +0 -49
- package/dist/_members/mcp/format.d.ts +0 -6
- package/dist/_members/mcp/generated/catalogPreviews.d.ts +0 -1
- package/dist/_members/mcp/generated/harness.d.ts +1 -1
- package/dist/_members/mcp/generated/operations.d.ts +1 -12
- package/dist/_members/mcp/internalLoopTools.d.ts +0 -23
- package/dist/_members/mcp/prompts.d.ts +0 -16
- package/dist/_members/mcp/resources.d.ts +0 -13
- package/dist/_members/mcp/server.d.ts +0 -61
- package/dist/_members/mcp/wait.d.ts +1 -23
- package/dist/_members/mcp/x402Meta.d.ts +0 -44
- package/dist/_members/media-model/generation.d.ts +314 -0
- package/dist/_members/media-model/index.d.ts +1 -0
- package/dist/_members/media-model/media-kind.d.ts +0 -27
- package/dist/_members/media-model/transcriptSearch.d.ts +0 -42
- package/dist/_members/nle-export/fcpxml.d.ts +0 -13
- package/dist/_members/nle-export/index.d.ts +0 -6
- package/dist/_members/nle-export/types.d.ts +0 -26
- package/dist/_members/nle-export/xml/index.d.ts +0 -8
- package/dist/_members/nle-export/xml-utils.d.ts +0 -12
- package/dist/_members/perception/activeSpeaker.d.ts +0 -94
- package/dist/_members/perception/audioQuality.d.ts +0 -64
- package/dist/_members/perception/energyBeat.d.ts +0 -81
- package/dist/_members/perception/identityMatch.d.ts +0 -66
- package/dist/_members/perception/index.d.ts +0 -52
- package/dist/_members/perception/visualQuality.d.ts +0 -73
- package/dist/_members/plane/conformance.d.ts +0 -59
- package/dist/_members/plane/contract.d.ts +0 -29
- package/dist/_members/plane/index.d.ts +0 -15
- package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +0 -13
- package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +0 -14
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +0 -14
- package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +0 -8
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +0 -8
- package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +0 -8
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +0 -8
- package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +0 -8
- package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +0 -17
- package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +0 -14
- package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +0 -18
- package/dist/_members/primitives/captions/Captions.d.ts +0 -24
- package/dist/_members/primitives/captions/index.d.ts +0 -15
- package/dist/_members/primitives/captions/paginate.d.ts +0 -21
- package/dist/_members/primitives/captions/placement.d.ts +0 -30
- package/dist/_members/primitives/effects/blur/index.d.ts +0 -16
- package/dist/_members/primitives/effects/color-grade/index.d.ts +0 -20
- package/dist/_members/primitives/effects/grain/index.d.ts +0 -12
- package/dist/_members/primitives/effects/parallax/index.d.ts +0 -13
- package/dist/_members/primitives/effects/particles/index.d.ts +0 -16
- package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +0 -10
- package/dist/_members/primitives/effects/spotlight-card/index.d.ts +0 -8
- package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +0 -10
- package/dist/_members/primitives/effects/success-confetti/index.d.ts +0 -8
- package/dist/_members/primitives/effects/vignette/index.d.ts +0 -12
- package/dist/_members/primitives/hero-text/HeroText.d.ts +0 -17
- package/dist/_members/primitives/hero-text/config.d.ts +0 -10
- package/dist/_members/primitives/hero-text/index.d.ts +0 -14
- package/dist/_members/primitives/index.d.ts +0 -8
- package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +0 -8
- package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +0 -8
- package/dist/_members/primitives/layouts/letterbox/index.d.ts +0 -15
- package/dist/_members/primitives/layouts/photo-grid/index.d.ts +0 -17
- package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +0 -21
- package/dist/_members/primitives/layouts/split-screen/index.d.ts +0 -15
- package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +0 -8
- package/dist/_members/primitives/lib/easings.d.ts +0 -27
- package/dist/_members/primitives/lib/palette.d.ts +0 -22
- package/dist/_members/primitives/lib/preview.d.ts +0 -22
- package/dist/_members/primitives/lib/schema.d.ts +0 -36
- package/dist/_members/primitives/lib/seeded-random.d.ts +0 -23
- package/dist/_members/primitives/lib/text/contrast.d.ts +0 -17
- package/dist/_members/primitives/lib/text/fill.d.ts +0 -5
- package/dist/_members/primitives/lib/text/fitText.d.ts +0 -37
- package/dist/_members/primitives/lib/text/marker.d.ts +0 -10
- package/dist/_members/primitives/lib/text/motion.d.ts +0 -46
- package/dist/_members/primitives/lib/text/recolor.d.ts +0 -11
- package/dist/_members/primitives/lib/text/spec.d.ts +0 -39
- package/dist/_members/primitives/lib/text/stage.d.ts +0 -17
- package/dist/_members/primitives/lib/text/typeface.d.ts +0 -11
- package/dist/_members/primitives/lib/tokens.d.ts +0 -87
- package/dist/_members/primitives/lib/types.d.ts +0 -141
- package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +0 -12
- package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +0 -8
- package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +0 -8
- package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +0 -8
- package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +0 -8
- package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +0 -8
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +0 -8
- package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +0 -38
- package/dist/_members/primitives/subject-foreground/index.d.ts +0 -21
- package/dist/_members/primitives/text/blur-reveal/index.d.ts +0 -9
- package/dist/_members/primitives/text/cinematic-title/index.d.ts +0 -14
- package/dist/_members/primitives/text/inline-highlight/index.d.ts +0 -11
- package/dist/_members/primitives/text/karaoke/index.d.ts +0 -13
- package/dist/_members/primitives/text/kinetic-type/index.d.ts +0 -15
- package/dist/_members/primitives/text/lower-third/index.d.ts +0 -14
- package/dist/_members/primitives/text/marker-highlight/index.d.ts +0 -10
- package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +0 -8
- package/dist/_members/primitives/text/matrix-decode/index.d.ts +0 -9
- package/dist/_members/primitives/text/quote-card/index.d.ts +0 -9
- package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +0 -13
- package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +0 -10
- package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +0 -8
- package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +0 -12
- package/dist/_members/primitives/text/stat-counter/index.d.ts +0 -13
- package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +0 -9
- package/dist/_members/primitives/text/text-effect/index.d.ts +0 -17
- package/dist/_members/primitives/text/text-fade-replace/index.d.ts +0 -8
- package/dist/_members/primitives/text/token-stream/index.d.ts +0 -11
- package/dist/_members/primitives/text/tracking-in/index.d.ts +0 -8
- package/dist/_members/primitives/text/typewriter/index.d.ts +0 -12
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +0 -11
- package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +0 -8
- package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +0 -10
- package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +0 -10
- package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +0 -3
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +0 -14
- package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +0 -3
- package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +0 -12
- package/dist/_members/primitives/transitions/light-leak/index.d.ts +0 -3
- package/dist/_members/primitives/transitions/luma-matte/index.d.ts +0 -2
- package/dist/_members/primitives/transitions/morph/index.d.ts +0 -2
- package/dist/_members/primitives/transitions/spatial-push/index.d.ts +0 -10
- package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +0 -13
- package/dist/_members/primitives/transitions/zoom-through/index.d.ts +0 -2
- package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +0 -9
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +0 -18
- package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +0 -10
- package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +0 -9
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +0 -11
- package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +0 -12
- package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +0 -10
- package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +0 -19
- package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +0 -8
- package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +0 -11
- package/dist/_members/primitives/workspace.d.ts +0 -29
- package/dist/_members/render-harness/browserOptions.d.ts +11 -0
- package/dist/_members/render-harness/browserOptions.d.ts.map +1 -0
- package/dist/_members/render-harness/cardRender.d.ts +0 -40
- package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
- package/dist/_members/render-harness/contractRender.d.ts +0 -16
- package/dist/_members/render-harness/contractRender.d.ts.map +1 -1
- package/dist/_members/render-harness/extractSegments.d.ts +0 -37
- package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
- package/dist/_members/render-harness/index.d.ts +0 -12
- package/dist/_members/render-harness/index.d.ts.map +1 -1
- package/dist/_members/render-harness/localRender.d.ts +1 -110
- package/dist/_members/render-harness/localRender.d.ts.map +1 -1
- package/dist/_members/render-harness/materializeSources.d.ts +0 -22
- package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
- package/dist/_members/render-harness/mediaServer.d.ts +0 -16
- package/dist/_members/render-harness/mediaServer.d.ts.map +1 -1
- package/dist/_members/render-harness/remotion-runtime.d.ts +53 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts +0 -45
- package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
- package/dist/_members/render-harness/resolveAssets.d.ts +0 -24
- package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +0 -14
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -1
- package/dist/account-model/validators.js +1 -1
- package/dist/account-model.js +1 -1
- package/dist/animate.js +0 -15
- package/dist/authoring/build-tools.js +8 -8
- package/dist/authoring/composer.js +0 -20
- package/dist/authoring/context.js +6 -6
- package/dist/authoring/pipelineTrace.js +1 -1
- package/dist/authoring/prompts.js +1 -5
- package/dist/authoring/resource-routing.js +1 -1
- package/dist/authoring/resources.js +1 -1
- package/dist/authoring/tools.js +7 -7
- package/dist/authoring.js +14 -84
- package/dist/{chunk-TWQOKKAF.js → chunk-23HFEKV7.js} +0 -6
- package/dist/{chunk-EA6MYCYW.js → chunk-2B5VJZHL.js} +14 -25
- package/dist/chunk-73DQTUWY.js +131 -0
- package/dist/chunk-AW57IWNW.js +272 -0
- package/dist/chunk-BADZHXLR.js +0 -0
- package/dist/{chunk-GA23TRNR.js → chunk-BKHGL4MB.js} +5 -13
- package/dist/{chunk-PDYO3DOJ.js → chunk-BZZTVOGG.js} +6 -55
- package/dist/{chunk-7FO3ZJ43.js → chunk-DCVJWGIA.js} +1 -9
- package/dist/{chunk-HI4UTTPS.js → chunk-DJW3UGBH.js} +41 -72
- package/dist/{chunk-SIGGQRY2.js → chunk-DL7WYISQ.js} +5291 -4419
- package/dist/{chunk-AQBREB5O.js → chunk-DWLNPNC4.js} +1 -4
- package/dist/{chunk-SW336CJP.js → chunk-DYZE7JZA.js} +3 -26
- package/dist/{chunk-HCCBDJLW.js → chunk-EP2Y6M2J.js} +0 -4
- package/dist/{chunk-ZE76SSRT.js → chunk-FMODQD5P.js} +0 -6
- package/dist/chunk-FTVZF4GO.js +0 -0
- package/dist/{chunk-PMY24FUD.js → chunk-G5BFI32U.js} +1 -1
- package/dist/{chunk-LD5ZOUFT.js → chunk-GF52TW4I.js} +0 -4
- package/dist/{chunk-JJ6XD7NG.js → chunk-GIA2SVVB.js} +70 -2
- package/dist/{chunk-ABL557OT.js → chunk-GMD33ZD7.js} +1 -8
- package/dist/{chunk-AP6ZIVAV.js → chunk-HBVAZXYO.js} +17 -17
- package/dist/{chunk-UY4SWJVE.js → chunk-HFC3MKXA.js} +0 -63
- package/dist/{chunk-ZWMV6DD2.js → chunk-ICSZF37W.js} +10 -162
- package/dist/chunk-IEXAKOEX.js +113 -0
- package/dist/{chunk-RF7U3SCL.js → chunk-KFECIHED.js} +29 -26
- package/dist/{chunk-DK2ODBNT.js → chunk-NQSMEUJ6.js} +16 -98
- package/dist/{chunk-YX2GSJK7.js → chunk-RP4SXXLJ.js} +1 -1
- package/dist/{chunk-P727GZVO.js → chunk-SAMQUUO5.js} +3 -5
- package/dist/{chunk-MMEJ3Y7E.js → chunk-SDCEJAO2.js} +97 -23
- package/dist/{chunk-TOJEXFXL.js → chunk-TFGKUWHY.js} +1 -88
- package/dist/chunk-TMB5AY6Q.js +146 -0
- package/dist/chunk-TO4BFNLJ.js +93 -0
- package/dist/{chunk-UHGSZZDI.js → chunk-TPA6PYN2.js} +1 -11
- package/dist/{chunk-MBCXCJOE.js → chunk-TXSFYUZH.js} +1 -1
- package/dist/{chunk-OLFOPQCA.js → chunk-UQSOS726.js} +4 -18
- package/dist/{chunk-GBRNYH7W.js → chunk-V24L35GM.js} +0 -11
- package/dist/{chunk-JMURQODM.js → chunk-VZ7TYX6Z.js} +0 -1
- package/dist/{chunk-W35ZMOXB.js → chunk-WPZKOVYF.js} +0 -5
- package/dist/chunk-WZH57M53.js +494 -0
- package/dist/{chunk-AYVJXDLB.js → chunk-XHGZ2E77.js} +0 -2
- package/dist/{chunk-7DHP4ESU.js → chunk-YLDMAZZE.js} +0 -10
- package/dist/{chunk-FYZVH3MC.js → chunk-YQ7FFW3G.js} +0 -11
- package/dist/{chunk-HY3RIEZW.js → chunk-ZPRBGW4Y.js} +1 -1
- package/dist/cloud-import/multipart.js +1 -1
- package/dist/cloud-import.js +9 -16
- package/dist/compose/renderer.js +18 -18
- package/dist/compose.js +21 -21
- package/dist/composition/audio.js +1 -1
- package/dist/composition/brand-kit.js +0 -5
- package/dist/composition/graphics-plan.js +4 -4
- package/dist/composition/ops.js +5 -5
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +11 -3
- package/dist/composition/reframe/kenBurns.js +0 -4
- package/dist/composition/reframe.js +4 -2
- package/dist/composition/timeline.js +1 -1
- package/dist/composition/validators/graphic-kinds.js +1 -1
- package/dist/composition/validators.js +4 -4
- package/dist/composition-ops.js +16 -135
- package/dist/composition.js +15 -7
- package/dist/context-JLLU3MYD.js +14 -0
- package/dist/core/render.js +9 -7
- package/dist/core/select.js +2 -6
- package/dist/core.js +5 -7
- package/dist/director/ai-sdk.d.ts +1 -0
- package/dist/director/ai-sdk.js +33 -0
- package/dist/director/domain.d.ts +1 -0
- package/dist/director/domain.js +62 -0
- package/dist/director/testing.d.ts +1 -0
- package/dist/director/testing.js +22 -0
- package/dist/director.d.ts +1 -0
- package/dist/director.js +86 -0
- package/dist/errors.js +1 -1
- package/dist/foundation.js +1 -0
- package/dist/mcp/adapter.js +45 -75
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +1 -1
- package/dist/mcp/server.js +4 -4
- package/dist/mcp.js +4 -4
- package/dist/media-model/generation.d.ts +1 -0
- package/dist/media-model/generation.js +40 -0
- package/dist/media-model/testing.js +6 -6
- package/dist/media-model.js +38 -6
- package/dist/nle-export.js +21 -21
- package/dist/plane/contract.js +0 -3
- package/dist/primitives/backgrounds.js +2 -2
- package/dist/primitives/captions.js +0 -5
- package/dist/primitives/effects.js +2 -2
- package/dist/primitives/hero-text.js +2 -2
- package/dist/primitives/layouts.js +2 -2
- package/dist/primitives/lib/index.js +17 -17
- package/dist/primitives/lib/text/fitText.js +1 -1
- package/dist/primitives/lib/tokens.js +1 -1
- package/dist/primitives/lib.js +17 -17
- package/dist/primitives/scenes.js +2 -2
- package/dist/primitives/text.js +2 -2
- package/dist/primitives/ui-blocks.js +4 -4
- package/dist/primitives.js +21 -21
- package/dist/render-harness/sandboxGlobalSpecs.js +1 -1
- package/dist/render-harness.js +24 -41
- package/package.json +38 -21
- package/dist/chunk-6EQXLEP6.js +0 -194
- package/dist/chunk-OCFDUCF4.js +0 -504
- package/dist/chunk-PODIYN2K.js +0 -742
- package/dist/context-YWUZDG5X.js +0 -14
|
@@ -3,15 +3,13 @@ import {
|
|
|
3
3
|
} from "./chunk-KYRDKK2D.js";
|
|
4
4
|
import {
|
|
5
5
|
Composition
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WZH57M53.js";
|
|
7
7
|
|
|
8
|
-
// ../composition/src/ops/compositionOps.ts
|
|
8
|
+
// ../composition/src/ops/compositionOps.shared.ts
|
|
9
9
|
function findOrCreateTrackByKind(composition, kind) {
|
|
10
10
|
const existing = composition.tracks.find((t) => t.kind === kind);
|
|
11
11
|
if (existing) return existing;
|
|
12
12
|
const track = {
|
|
13
|
-
// UUID suffix avoids id collisions when a track of `kind` is created,
|
|
14
|
-
// deleted, then re-created at the same `tracks.length` index.
|
|
15
13
|
id: `track-${kind}-${crypto.randomUUID().slice(0, 8)}`,
|
|
16
14
|
kind,
|
|
17
15
|
contents: []
|
|
@@ -71,8 +69,11 @@ function cutTimedRange(start, end, cutStart, cutEnd) {
|
|
|
71
69
|
}
|
|
72
70
|
function shiftTimedRange(start, end, from, amount) {
|
|
73
71
|
if (start < from) return null;
|
|
74
|
-
const
|
|
75
|
-
return {
|
|
72
|
+
const shiftedStart = Math.max(0, start + amount);
|
|
73
|
+
return {
|
|
74
|
+
start: shiftedStart,
|
|
75
|
+
end: end !== void 0 ? Math.max(shiftedStart, end + amount) : void 0
|
|
76
|
+
};
|
|
76
77
|
}
|
|
77
78
|
function selectionPatch(composition, entities) {
|
|
78
79
|
const clipIds = entities.filter((e) => e.kind === "clip").map((e) => e.clipId);
|
|
@@ -91,16 +92,17 @@ function selectionPatch(composition, entities) {
|
|
|
91
92
|
}
|
|
92
93
|
function pruneSelectionInDraft(draft, removedClipIds) {
|
|
93
94
|
const kept = draft.selection.filter(
|
|
94
|
-
(
|
|
95
|
+
(entity) => !("clipId" in entity) || !removedClipIds.has(entity.clipId)
|
|
95
96
|
);
|
|
96
97
|
const patch = selectionPatch(draft.composition, kept);
|
|
97
98
|
draft.selection = patch.selection;
|
|
98
99
|
draft.selectedClipId = patch.selectedClipId;
|
|
99
100
|
draft.selectedOverlayId = patch.selectedOverlayId;
|
|
100
101
|
}
|
|
102
|
+
|
|
103
|
+
// ../composition/src/ops/compositionOps.ts
|
|
101
104
|
function createCompositionOps(get, set) {
|
|
102
105
|
return {
|
|
103
|
-
// ── Clip operations ──
|
|
104
106
|
addClip: (clip, options) => {
|
|
105
107
|
set((draft) => {
|
|
106
108
|
if (options?.newTrack) {
|
|
@@ -116,18 +118,6 @@ function createCompositionOps(get, set) {
|
|
|
116
118
|
}
|
|
117
119
|
});
|
|
118
120
|
},
|
|
119
|
-
/**
|
|
120
|
-
* Family-routed clip add — the single primitive behind the consolidated
|
|
121
|
-
* `clip.add` op (@cueframe/composition-ops). Routes a clip onto a track of
|
|
122
|
-
* the resolved FAMILY: either an existing track pinned by `trackId`, or a
|
|
123
|
-
* track of `kind` (created if absent, optionally with a pinned `newTrackId`
|
|
124
|
-
* for byte-faithful op-replay). Replaces the three family-specific adders
|
|
125
|
-
* (addClip/addOverlay/addAudioClip) at the OP layer — those stay for the
|
|
126
|
-
* editor's direct calls.
|
|
127
|
-
*
|
|
128
|
-
* Fails LOUD if `trackId` names a missing track, or a track of a DIFFERENT
|
|
129
|
-
* family (a clip must land on its own family — never silently mis-route).
|
|
130
|
-
*/
|
|
131
121
|
addClipToTrack: (clip, target) => {
|
|
132
122
|
set((draft) => {
|
|
133
123
|
if ("trackId" in target) {
|
|
@@ -181,7 +171,6 @@ function createCompositionOps(get, set) {
|
|
|
181
171
|
}
|
|
182
172
|
});
|
|
183
173
|
},
|
|
184
|
-
/** Remove every clip whose `source.mediaId === mediaId`. */
|
|
185
174
|
removeClipsByMediaId: (mediaId) => {
|
|
186
175
|
set((draft) => {
|
|
187
176
|
const removed = /* @__PURE__ */ new Set();
|
|
@@ -217,7 +206,6 @@ function createCompositionOps(get, set) {
|
|
|
217
206
|
);
|
|
218
207
|
}
|
|
219
208
|
},
|
|
220
|
-
/** Replace the whole selection. The multi-select entry point. */
|
|
221
209
|
setSelection: (entities) => {
|
|
222
210
|
const composition = get().composition;
|
|
223
211
|
const live = entities.filter(
|
|
@@ -225,7 +213,6 @@ function createCompositionOps(get, set) {
|
|
|
225
213
|
);
|
|
226
214
|
set(selectionPatch(composition, expandToLinkGroup(composition, live)));
|
|
227
215
|
},
|
|
228
|
-
/** Every clip on the timeline, in track then start order. */
|
|
229
216
|
selectAllClips: () => {
|
|
230
217
|
const composition = get().composition;
|
|
231
218
|
const entities = [];
|
|
@@ -290,18 +277,6 @@ function createCompositionOps(get, set) {
|
|
|
290
277
|
});
|
|
291
278
|
return { rippled: rateChange ? rateChange.delta !== 0 : false };
|
|
292
279
|
},
|
|
293
|
-
// ── Overlay operations (TimelineClips on kind:'overlay' tracks) ──
|
|
294
|
-
// GUARD AT THE WRITE. An overlay source without a `primitiveId` is not a clip — it is a
|
|
295
|
-
// hole that renders as `unknown overlay primitive 'undefined'`, and the RENDERER was the
|
|
296
|
-
// first thing to notice it (2026-07-13: every capture_frames of a live compose died on
|
|
297
|
-
// this, the author went blind, and it landed zero graphics on a 90s customer pitch).
|
|
298
|
-
//
|
|
299
|
-
// `primitiveId: z.string().min(1)` is ALREADY required by the composition validator — but
|
|
300
|
-
// the in-loop capture path renders the in-memory store and never validates it, so the
|
|
301
|
-
// schema never ran. Refuse at the write instead, where the caller is still on the stack and
|
|
302
|
-
// the message can name it. (Same reasoning as compositionRender's `custom`-with-no-
|
|
303
|
-
// sourceCode guard, which patched one instance of this at the render boundary; this closes
|
|
304
|
-
// the class.)
|
|
305
280
|
addOverlay: (clip) => {
|
|
306
281
|
if (clip.source.kind === "overlay" && !clip.source.primitiveId) {
|
|
307
282
|
throw new Error(
|
|
@@ -358,10 +333,6 @@ function createCompositionOps(get, set) {
|
|
|
358
333
|
});
|
|
359
334
|
set(selectionPatch(composition, kept));
|
|
360
335
|
},
|
|
361
|
-
/**
|
|
362
|
-
* (see addOverlay's guard) Replace all overlays — clears existing overlay tracks, creates
|
|
363
|
-
* one with provided clips.
|
|
364
|
-
*/
|
|
365
336
|
loadOverlays: (clips) => {
|
|
366
337
|
set((draft) => {
|
|
367
338
|
draft.composition.tracks = draft.composition.tracks.filter((t) => t.kind !== "overlay");
|
|
@@ -375,7 +346,6 @@ function createCompositionOps(get, set) {
|
|
|
375
346
|
draft.selectedOverlayId = null;
|
|
376
347
|
});
|
|
377
348
|
},
|
|
378
|
-
// ── Audio operations (TimelineClips on kind:'audio' tracks) ──
|
|
379
349
|
addAudioClip: (clip) => {
|
|
380
350
|
set((draft) => {
|
|
381
351
|
const track = findOrCreateTrackByKind(draft.composition, "audio");
|
|
@@ -408,7 +378,6 @@ function createCompositionOps(get, set) {
|
|
|
408
378
|
}
|
|
409
379
|
});
|
|
410
380
|
},
|
|
411
|
-
// ── Marker operations ──
|
|
412
381
|
addMarker: (marker) => {
|
|
413
382
|
set((draft) => {
|
|
414
383
|
if (!draft.composition.markers) draft.composition.markers = [];
|
|
@@ -428,7 +397,6 @@ function createCompositionOps(get, set) {
|
|
|
428
397
|
if (m) Object.assign(m, updates);
|
|
429
398
|
});
|
|
430
399
|
},
|
|
431
|
-
// ── cutAndRipple (replaces v1 deletedRanges) ──
|
|
432
400
|
cutAndRipple: (start, end) => {
|
|
433
401
|
if (!Number.isFinite(start) || !Number.isFinite(end) || start >= end) return;
|
|
434
402
|
const span = end - start;
|
|
@@ -491,18 +459,6 @@ function createCompositionOps(get, set) {
|
|
|
491
459
|
}
|
|
492
460
|
});
|
|
493
461
|
},
|
|
494
|
-
// ── addExcludedRange ──
|
|
495
|
-
//
|
|
496
|
-
// Marks a range of source media on a media-source clip as excluded.
|
|
497
|
-
// Atomically: clamps to the clip's `trim` window, merges/coalesces with
|
|
498
|
-
// existing `excludedRanges` (touching ranges merge), shrinks
|
|
499
|
-
// `clip.duration` by the net delta added to Σ excluded, and ripples
|
|
500
|
-
// downstream same-track items left by that delta.
|
|
501
|
-
//
|
|
502
|
-
// Wire-shape invariant: (trim.end − trim.start) − Σexcludedrange = duration.
|
|
503
|
-
// The `trimEnd` fallback below restores trim.end from
|
|
504
|
-
// `duration + Σexcluded` when `trim` is absent — the same invariant
|
|
505
|
-
// rearranged.
|
|
506
462
|
addExcludedRange: (clipId, sourceStart, sourceEnd, reason) => {
|
|
507
463
|
if (!Number.isFinite(sourceStart) || !Number.isFinite(sourceEnd)) return;
|
|
508
464
|
if (!(sourceEnd > sourceStart)) return;
|
|
@@ -584,12 +540,6 @@ function createCompositionOps(get, set) {
|
|
|
584
540
|
}
|
|
585
541
|
});
|
|
586
542
|
},
|
|
587
|
-
// ── removeExcludedRange ──
|
|
588
|
-
//
|
|
589
|
-
// Inverse of addExcludedRange. Removes the excluded range at the given
|
|
590
|
-
// index, restores the clip's duration by the same amount, and ripples
|
|
591
|
-
// downstream same-track items right. When the resulting list is empty,
|
|
592
|
-
// drops the field entirely so the wire stays canonical.
|
|
593
543
|
removeExcludedRange: (clipId, rangeIdx) => {
|
|
594
544
|
set((draft) => {
|
|
595
545
|
const found = findClipById(draft.composition, clipId);
|
|
@@ -615,18 +565,6 @@ function createCompositionOps(get, set) {
|
|
|
615
565
|
}
|
|
616
566
|
});
|
|
617
567
|
},
|
|
618
|
-
// ── setCropIntents ──
|
|
619
|
-
//
|
|
620
|
-
// Author the camera channel (`reframe`) on a media clip. Each segment
|
|
621
|
-
// carries the canonical reframe params (focus, zoom, bias, ease) the
|
|
622
|
-
// derive math honors directly — no closed-enum framing names, no
|
|
623
|
-
// hardcoded scale constants.
|
|
624
|
-
//
|
|
625
|
-
// `null`/empty clears `reframe`; the clip then renders from the raw source.
|
|
626
|
-
//
|
|
627
|
-
// Used by the agent's `set_crop_intents` tool (name kept; the arg shape is
|
|
628
|
-
// reframe) and the desktop editor's framing timeline. Replaces the deleted
|
|
629
|
-
// subject-centric cropIntents (2026-06-14 cutover).
|
|
630
568
|
setCropIntents: (clipId, segments) => {
|
|
631
569
|
set((draft) => {
|
|
632
570
|
const found = findClipById(draft.composition, clipId);
|
|
@@ -640,23 +578,6 @@ function createCompositionOps(get, set) {
|
|
|
640
578
|
}
|
|
641
579
|
});
|
|
642
580
|
},
|
|
643
|
-
// ── setEffects ──
|
|
644
|
-
//
|
|
645
|
-
// Author a clip's EFFECT channel (`TimelineClip.effects`) — the registered
|
|
646
|
-
// effect primitives (+ params) the renderer stacks onto that clip. WHOLESALE:
|
|
647
|
-
// the array REPLACES whatever was there, and `[]` CLEARS the channel (the
|
|
648
|
-
// same set/clear shape setCropIntents has). `effects` has been in the
|
|
649
|
-
// validator — and accepted by `clip.add` — all along, but until the
|
|
650
|
-
// `setEffects` op there was no way to change it on an EXISTING clip except a
|
|
651
|
-
// whole-clip `clip.update` patch, which the op vocabulary explicitly steers
|
|
652
|
-
// callers away from (a partial `source` in that patch clobbers the source).
|
|
653
|
-
//
|
|
654
|
-
// Named EXACTLY like the wire op it records (`setEffects`) — the factory and
|
|
655
|
-
// the op vocabulary are one vocabulary, so there is no method→op rename table
|
|
656
|
-
// for the conformance guard to carry.
|
|
657
|
-
//
|
|
658
|
-
// Cross-track by id, like `updateClip` — the clip's family is irrelevant to
|
|
659
|
-
// its effect stack. Same merge shape as `updateClip(id, { effects })`.
|
|
660
581
|
setEffects: (clipId, effects) => {
|
|
661
582
|
set((draft) => {
|
|
662
583
|
const found = findClipById(draft.composition, clipId);
|
|
@@ -668,17 +589,6 @@ function createCompositionOps(get, set) {
|
|
|
668
589
|
}
|
|
669
590
|
});
|
|
670
591
|
},
|
|
671
|
-
// ── setCaptionStyle ──
|
|
672
|
-
//
|
|
673
|
-
// Apply the agent's caption STYLE overrides (font, size, color, position,
|
|
674
|
-
// emphasis treatment, …) onto the top-level `composition.captions.style` —
|
|
675
|
-
// the exact field the renderer consumes (compositionRender.ts) and the
|
|
676
|
-
// Captions primitive reads. Merge (not replace) so each `set_captions` call
|
|
677
|
-
// overrides only the fields it names and leaves the rest (and the
|
|
678
|
-
// transcript-sliced `words`) intact. Undefined fields are dropped so an
|
|
679
|
-
// omitted field never clobbers an existing one. If captions don't exist yet
|
|
680
|
-
// (style set before the transcript slice lands), create the container with
|
|
681
|
-
// empty words — the compose/insert path fills the words.
|
|
682
592
|
setCaptionStyle: (style) => {
|
|
683
593
|
set((draft) => {
|
|
684
594
|
const clean = Object.fromEntries(
|
|
@@ -693,18 +603,6 @@ function createCompositionOps(get, set) {
|
|
|
693
603
|
}
|
|
694
604
|
});
|
|
695
605
|
},
|
|
696
|
-
// ── setCaptionDepth ──
|
|
697
|
-
//
|
|
698
|
-
// Put the caption layer UNDER the speaker's silhouette, or back in front.
|
|
699
|
-
// One choice for the whole layer, not per segment, because it decides
|
|
700
|
-
// whether the SOURCE needs a matte — the $0.12/source-minute rung, and a
|
|
701
|
-
// caption layer usually spans the whole video. See `CaptionDepth` in the
|
|
702
|
-
// schema for why the 2026-06-11 front-only rule was reversed.
|
|
703
|
-
//
|
|
704
|
-
// Unlike `setCaptionStyle`, this does NOT create a caption container out of
|
|
705
|
-
// nothing. Depth on a layer with no words is a request to matte footage
|
|
706
|
-
// nobody is reading over — expensive and invisible — so a caller who has
|
|
707
|
-
// not authored captions yet gets a no-op rather than a bill.
|
|
708
606
|
setCaptionDepth: (zPlane) => {
|
|
709
607
|
set((draft) => {
|
|
710
608
|
const existing = draft.composition.captions;
|
|
@@ -716,15 +614,6 @@ function createCompositionOps(get, set) {
|
|
|
716
614
|
}
|
|
717
615
|
});
|
|
718
616
|
},
|
|
719
|
-
// ── setCaptions ──
|
|
720
|
-
//
|
|
721
|
-
// Replace the caption SEGMENTS wholesale — the words layer. Until this op,
|
|
722
|
-
// caption words were populated ONLY by the compose/from-suggestion
|
|
723
|
-
// transcript-slice lanes, so a client agent holding its own word timings
|
|
724
|
-
// (e.g. a generated VO take) had no way to author the engine caption layer
|
|
725
|
-
// (memoir v4, 2026-07-21). Segments REPLACE (not merge — word timing is one
|
|
726
|
-
// coherent document); `style`, when given, merges with setCaptionStyle
|
|
727
|
-
// semantics, and an omitted style keeps the existing one.
|
|
728
617
|
setCaptions: (segments, style, derivedFrom) => {
|
|
729
618
|
set((draft) => {
|
|
730
619
|
const existing = draft.composition.captions;
|
|
@@ -736,7 +625,6 @@ function createCompositionOps(get, set) {
|
|
|
736
625
|
draft.composition.captions = derivedFrom ? { source: "derived", from: derivedFrom, segments, ...styleField } : { source: "authored", segments, ...styleField };
|
|
737
626
|
});
|
|
738
627
|
},
|
|
739
|
-
// ── ripple ──
|
|
740
628
|
ripple: (time, amount) => {
|
|
741
629
|
set((draft) => {
|
|
742
630
|
for (const track of draft.composition.tracks) {
|
|
@@ -770,15 +658,6 @@ function createCompositionOps(get, set) {
|
|
|
770
658
|
}
|
|
771
659
|
});
|
|
772
660
|
},
|
|
773
|
-
// ── Canvas / format ──
|
|
774
|
-
//
|
|
775
|
-
// Patches `composition.format` — `aspectRatio` is required (the field
|
|
776
|
-
// has no default), `fps`, `resolution`, and `platform` fall back to the
|
|
777
|
-
// existing values on the wire. Clip start/duration values are not retimed:
|
|
778
|
-
// a 30→60 fps switch keeps the same wall-clock seconds. Layout-sensitive
|
|
779
|
-
// overlays may need re-rendering by the caller after a switch. `platform`
|
|
780
|
-
// is output-determining (safe-zone placement) — carry it forward so an
|
|
781
|
-
// aspect-only change never silently erases it.
|
|
782
661
|
setFormat: (next) => {
|
|
783
662
|
set((draft) => {
|
|
784
663
|
const prev = draft.composition.format;
|
|
@@ -790,18 +669,6 @@ function createCompositionOps(get, set) {
|
|
|
790
669
|
};
|
|
791
670
|
});
|
|
792
671
|
},
|
|
793
|
-
// ── Track operations ──
|
|
794
|
-
//
|
|
795
|
-
// Capability parity: the cloud agent must be able to do everything the
|
|
796
|
-
// editor can (these were previously editor-only, in
|
|
797
|
-
// apps/studio/src/store/compositionStore/compositionOps.ts). They are pure
|
|
798
|
-
// `set` mutations over `composition.tracks` + the selection fields already
|
|
799
|
-
// on `CompositionOpsState`, so they live in core unchanged. The agent's
|
|
800
|
-
// tool layer can now surface them; the editor keeps calling the same names.
|
|
801
|
-
/**
|
|
802
|
-
* Append a new track of `kind` to `composition.tracks`. If `id` is omitted
|
|
803
|
-
* a UUID-suffixed id is generated (matches `findOrCreateTrackByKind`).
|
|
804
|
-
*/
|
|
805
672
|
addTrack: (kind, name, id) => {
|
|
806
673
|
set((draft) => {
|
|
807
674
|
const track = {
|
|
@@ -813,7 +680,6 @@ function createCompositionOps(get, set) {
|
|
|
813
680
|
draft.composition.tracks.push(track);
|
|
814
681
|
});
|
|
815
682
|
},
|
|
816
|
-
/** Remove a track and any clip selection that references its contents. */
|
|
817
683
|
removeTrack: (trackId) => {
|
|
818
684
|
set((draft) => {
|
|
819
685
|
const idx = draft.composition.tracks.findIndex((t) => t.id === trackId);
|
|
@@ -829,7 +695,6 @@ function createCompositionOps(get, set) {
|
|
|
829
695
|
draft.composition.tracks.splice(idx, 1);
|
|
830
696
|
});
|
|
831
697
|
},
|
|
832
|
-
/** Patch a track's `name` / `enabled`. */
|
|
833
698
|
updateTrack: (trackId, updates) => {
|
|
834
699
|
set((draft) => {
|
|
835
700
|
const track = draft.composition.tracks.find((t) => t.id === trackId);
|
|
@@ -841,7 +706,6 @@ function createCompositionOps(get, set) {
|
|
|
841
706
|
}
|
|
842
707
|
});
|
|
843
708
|
},
|
|
844
|
-
/** Move a track from `fromIndex` to `toIndex` within `composition.tracks`. */
|
|
845
709
|
reorderTracks: (fromIndex, toIndex) => {
|
|
846
710
|
set((draft) => {
|
|
847
711
|
const len = draft.composition.tracks.length;
|
|
@@ -852,14 +716,6 @@ function createCompositionOps(get, set) {
|
|
|
852
716
|
draft.composition.tracks.splice(clamped, 0, moved);
|
|
853
717
|
});
|
|
854
718
|
},
|
|
855
|
-
/**
|
|
856
|
-
* Move a clip to a different track, optionally updating its startTime.
|
|
857
|
-
*
|
|
858
|
-
* The op trusts callers to validate kind-compatibility and overlap; the
|
|
859
|
-
* Fabric drag handler is responsible for snapping back when invalid. No-op
|
|
860
|
-
* if the clip isn't found, the target track doesn't exist, or target ===
|
|
861
|
-
* source. Selection stays put (the clip id is unchanged).
|
|
862
|
-
*/
|
|
863
719
|
moveClipToTrack: (clipId, targetTrackId, newStartTime) => {
|
|
864
720
|
set((draft) => {
|
|
865
721
|
let sourceTrack;
|
|
@@ -883,11 +739,6 @@ function createCompositionOps(get, set) {
|
|
|
883
739
|
target.contents.sort((a, b) => a.startTime - b.startTime);
|
|
884
740
|
});
|
|
885
741
|
},
|
|
886
|
-
/**
|
|
887
|
-
* Duplicate a clip. The copy receives a new id and is appended to the same
|
|
888
|
-
* track immediately after the original's `[startTime + duration]` (nudged
|
|
889
|
-
* forward to avoid overlap with whatever follows).
|
|
890
|
-
*/
|
|
891
742
|
duplicateClip: (id) => {
|
|
892
743
|
let newId;
|
|
893
744
|
set((draft) => {
|
|
@@ -1063,9 +914,6 @@ function mergeTimelineTranscripts(clips, transcripts) {
|
|
|
1063
914
|
timelineStart: clip.startTime + (segment.startTime - trimStart) / rate,
|
|
1064
915
|
timelineEnd: clip.startTime + (clampedEnd - trimStart) / rate,
|
|
1065
916
|
clipId: clip.id,
|
|
1066
|
-
// The v1 TimelineWord field is named `poolItemId`; v2 calls it
|
|
1067
|
-
// `mediaId`. Same semantic — retain v1 name on the wire so the
|
|
1068
|
-
// agent context (which reads `word.poolItemId`) keeps working.
|
|
1069
917
|
poolItemId: mediaId,
|
|
1070
918
|
sourceStart: segment.startTime,
|
|
1071
919
|
sourceEnd: clampedEnd,
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EntityId,
|
|
3
|
+
ISODateTime,
|
|
4
|
+
NonEmptyString
|
|
5
|
+
} from "./chunk-XELS2BGA.js";
|
|
6
|
+
|
|
7
|
+
// ../data-models/account-model/src/validators/userSettings.ts
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
var UserSettings = z.object({
|
|
10
|
+
id: EntityId("userSettings"),
|
|
11
|
+
userId: NonEmptyString,
|
|
12
|
+
enableUnderstanding: z.boolean().optional(),
|
|
13
|
+
activeBrandKitId: EntityId("brandKits").optional()
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// ../data-models/account-model/src/validators/conversation.ts
|
|
17
|
+
import { z as z2 } from "zod";
|
|
18
|
+
var ConversationProject = z2.object({
|
|
19
|
+
id: NonEmptyString,
|
|
20
|
+
home: z2.enum(["local", "cloud"])
|
|
21
|
+
});
|
|
22
|
+
var Conversation = z2.object({
|
|
23
|
+
id: EntityId("conversations"),
|
|
24
|
+
clientId: NonEmptyString,
|
|
25
|
+
userId: NonEmptyString,
|
|
26
|
+
title: NonEmptyString,
|
|
27
|
+
project: ConversationProject.optional(),
|
|
28
|
+
createdAt: ISODateTime,
|
|
29
|
+
updatedAt: ISODateTime,
|
|
30
|
+
messages: z2.string()
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// ../data-models/account-model/src/validators/uploadToken.ts
|
|
34
|
+
import { z as z3 } from "zod";
|
|
35
|
+
var UploadTokenScope = z3.enum(["tus", "companion"]);
|
|
36
|
+
var UploadToken = z3.object({
|
|
37
|
+
id: EntityId("uploadTokens"),
|
|
38
|
+
token: NonEmptyString,
|
|
39
|
+
userId: NonEmptyString,
|
|
40
|
+
projectId: EntityId("projects").optional(),
|
|
41
|
+
orgId: NonEmptyString.optional(),
|
|
42
|
+
scope: UploadTokenScope.optional(),
|
|
43
|
+
expiresAt: ISODateTime
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// ../data-models/account-model/src/validators/contextFile.ts
|
|
47
|
+
import { z as z4 } from "zod";
|
|
48
|
+
var ContextFile = z4.object({
|
|
49
|
+
id: EntityId("contextFiles"),
|
|
50
|
+
orgId: NonEmptyString,
|
|
51
|
+
userId: NonEmptyString,
|
|
52
|
+
filename: NonEmptyString,
|
|
53
|
+
content: z4.string(),
|
|
54
|
+
generatedFrom: z4.array(NonEmptyString),
|
|
55
|
+
version: z4.number().int().nonnegative(),
|
|
56
|
+
updatedAt: ISODateTime
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// ../data-models/account-model/src/validators/dashboardInsight.ts
|
|
60
|
+
import { z as z5 } from "zod";
|
|
61
|
+
var DashboardInsight = z5.object({
|
|
62
|
+
id: EntityId("dashboardInsights"),
|
|
63
|
+
orgId: NonEmptyString,
|
|
64
|
+
sourceHash: NonEmptyString,
|
|
65
|
+
heroInsight: NonEmptyString,
|
|
66
|
+
contentSuggestions: z5.array(NonEmptyString),
|
|
67
|
+
generatedAt: ISODateTime
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// ../data-models/account-model/src/validators/sessionToken.ts
|
|
71
|
+
import { z as z6 } from "zod";
|
|
72
|
+
var SessionTokenScope = z6.enum(["session-read"]);
|
|
73
|
+
var SessionToken = z6.object({
|
|
74
|
+
id: EntityId("sessionTokens"),
|
|
75
|
+
token: NonEmptyString,
|
|
76
|
+
sessionId: NonEmptyString,
|
|
77
|
+
projectId: EntityId("projects"),
|
|
78
|
+
orgId: NonEmptyString,
|
|
79
|
+
scope: SessionTokenScope,
|
|
80
|
+
expiresAt: ISODateTime,
|
|
81
|
+
sandboxId: NonEmptyString.optional(),
|
|
82
|
+
readyAt: z6.number().optional(),
|
|
83
|
+
scheduledCloseId: NonEmptyString.optional(),
|
|
84
|
+
scratchCompositionId: EntityId("compositions").optional(),
|
|
85
|
+
managed: z6.boolean().optional(),
|
|
86
|
+
leaseJobId: NonEmptyString.optional(),
|
|
87
|
+
leaseExpiresAt: z6.number().optional()
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// ../data-models/account-model/src/validators/workingComposition.ts
|
|
91
|
+
import { z as z7 } from "zod";
|
|
92
|
+
var WorkingComposition = z7.object({
|
|
93
|
+
id: EntityId("workingCompositions"),
|
|
94
|
+
sessionId: NonEmptyString,
|
|
95
|
+
projectId: EntityId("projects"),
|
|
96
|
+
orgId: NonEmptyString,
|
|
97
|
+
composition: z7.unknown(),
|
|
98
|
+
version: z7.number(),
|
|
99
|
+
updatedAt: z7.number()
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
export {
|
|
103
|
+
UserSettings,
|
|
104
|
+
ConversationProject,
|
|
105
|
+
Conversation,
|
|
106
|
+
UploadTokenScope,
|
|
107
|
+
UploadToken,
|
|
108
|
+
ContextFile,
|
|
109
|
+
DashboardInsight,
|
|
110
|
+
SessionTokenScope,
|
|
111
|
+
SessionToken,
|
|
112
|
+
WorkingComposition
|
|
113
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
waitForJob
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SDCEJAO2.js";
|
|
4
4
|
import {
|
|
5
5
|
GENERATED_OPERATIONS,
|
|
6
6
|
apiErrorFrom,
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
sniffImageMediaType,
|
|
18
18
|
text,
|
|
19
19
|
withMedia
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-DL7WYISQ.js";
|
|
21
21
|
import {
|
|
22
22
|
CURATED_TOOLS
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DJW3UGBH.js";
|
|
24
24
|
|
|
25
25
|
// ../mcp/src/prompts.ts
|
|
26
26
|
var skillListCache = null;
|
|
@@ -91,17 +91,17 @@ CLIPPING (find the best short-form moments in a long video): \`suggest_briefs\`
|
|
|
91
91
|
|
|
92
92
|
Every expensive step has a cheap, inspectable check \u2014 prefer reading a value over rendering and eyeballing:
|
|
93
93
|
- Framing & timing are data: \`get_media_context\` BEFORE you compose.
|
|
94
|
-
- Evidence beats guessing: \`preview_frame\` (whole-composition stills), \`preview_component\` (ONE graphic
|
|
94
|
+
- Evidence beats guessing: \`preview_frame\` (whole-composition stills), \`preview_component\` (ONE authored graphic: \`executionMode:"live"\` returns a PNG image; \`executionMode:"baked"\` returns a transparent VP9 motion clip \u2014 exactly the lane production composites), \`preview_clip\` (a fromSec\u2192toSec window as a watchable MP4, max 60s, capture-priced \u2014 judge a cut or transition at full fidelity WITHOUT paying for a full render). These are STATELESS: nothing to open, warm, or close; concurrent previews do not contend. \`preview_frame\` defaults to the PERSISTED composition and echoes \`previewed.{source, compositionId, etag}\` \u2014 what you saw is what create_render encodes.
|
|
95
95
|
- Quality is a number: \`score_composition\` returns scores + critique + a checkpointId; the compose result carries the winner's composite. **score vs consult**: score answers "how good IS this" (grounded numbers); \`consult\` answers "what SHOULD I change" (advice + an adoptable fix via \`select_candidate\`).
|
|
96
96
|
|
|
97
97
|
## Async model
|
|
98
98
|
|
|
99
99
|
Every long job is either polled or pushed \u2014 never guessed:
|
|
100
|
-
- \`wait_job\` kinds: \`render\`, \`compose\`, \`suggestions\`, \`verify\` (score jobs), \`preview\` (component
|
|
100
|
+
- \`wait_job\` kinds: \`media\` (imports/generation), \`render\`, \`compose\`, \`suggestions\`, \`verify\` (score jobs), \`preview_frame\` (composition stills), \`preview\` (component image-or-motion previews), \`brand_kit_extract\`, \`consult\`. It blocks up to its window and returns a CONTINUATION when still running \u2014 re-call it.
|
|
101
101
|
- Webhooks (\`create_webhook\`): ONE terminal event per kind with status INSIDE the payload \u2014 \`render.completed\`, \`compose.completed\`, \`media.completed\`, \`suggest.completed\` \u2014 plus \`checkpoint.ready\` (a held compose paused for review). Read \`cueframe://webhook-events\` for the full contract before building a receiver.
|
|
102
102
|
- Presigned URLs (stills, clips, render outputs) expire \u2014 render outputs last ~7 days (refresh via the render's refresh-url op); preview stills/clips ~1 hour. Re-read for a fresh link instead of caching one.
|
|
103
103
|
|
|
104
|
-
CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns
|
|
104
|
+
CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns a PNG image for \`executionMode:"live"\` or a VP9 motion URL for \`executionMode:"baked"\`; a compile failure lands on the job's FAILED terminal carrying the sanitized compiler error) \u2192 fix via \`update_component\` \u2192 preview again. Place baked components via \`apply_composition\` as an \`alpha-layer\` clip \u2014 the shared renderer never runs authored source code (it composites the transparent baked video).
|
|
105
105
|
|
|
106
106
|
Cleanup: \`delete_project\` / \`delete_media\` / \`delete_webhook\` / \`delete_composition\`. \`list_projects\` re-orients you in an existing workspace; \`list_media\` (filter by \`source\`/\`tag\`) lists the library.
|
|
107
107
|
|
|
@@ -436,12 +436,16 @@ function registerCuratedTools(server, ex, opts) {
|
|
|
436
436
|
for (const friendly of Object.keys(spec.pathArgs ?? {})) {
|
|
437
437
|
inputSchema[friendly] = z.string().describe(`${friendly} (path).`);
|
|
438
438
|
}
|
|
439
|
+
for (const [queryArg, description] of Object.entries(spec.queryArgs ?? {})) {
|
|
440
|
+
inputSchema[queryArg] = z.string().optional().describe(description);
|
|
441
|
+
}
|
|
439
442
|
const bodySchema = bodySchemaFor(op);
|
|
440
443
|
if (bodySchema) inputSchema.body = bodySchema;
|
|
441
444
|
const annotations = { ...op.annotations, ...spec.annotations };
|
|
442
445
|
server.registerTool(spec.name, { title: spec.title ?? titleCase(spec.name), description: spec.description, inputSchema, annotations }, async (args, extra) => timed(opts?.onEvent, spec.name, async (report) => {
|
|
443
446
|
const a = args;
|
|
444
447
|
try {
|
|
448
|
+
const query = Object.keys(spec.queryArgs ?? {}).filter((name) => a[name] !== void 0 && a[name] !== null && a[name] !== "").map((name) => `${encodeURIComponent(name)}=${encodeURIComponent(String(a[name]))}`).join("&");
|
|
445
449
|
return await dispatchOp(ex, op, (p) => a[reverse[p]], a.body, extra, spec.name, async (res) => {
|
|
446
450
|
if (spec.okText) return text(spec.okText(a));
|
|
447
451
|
const json = res.text ? safeParse(res.text) : void 0;
|
|
@@ -454,17 +458,17 @@ function registerCuratedTools(server, ex, opts) {
|
|
|
454
458
|
if (data.length) return withMedia(payload, data.map((d) => ({ data: d, kind })));
|
|
455
459
|
}
|
|
456
460
|
return text(payload);
|
|
457
|
-
});
|
|
461
|
+
}, query || void 0);
|
|
458
462
|
} catch (err) {
|
|
459
463
|
return errText(`${spec.name} failed: ${fmtErr(err)}`);
|
|
460
464
|
}
|
|
461
465
|
}));
|
|
462
466
|
}
|
|
463
467
|
registerWaitJob(server, ex, opts?.waitCapMs, opts?.onEvent);
|
|
464
|
-
registerPreviewCard(server, ex, opts?.onEvent);
|
|
468
|
+
registerPreviewCard(server, ex, opts?.waitCapMs, opts?.onEvent);
|
|
465
469
|
}
|
|
466
|
-
function registerPreviewCard(server, ex, onEvent) {
|
|
467
|
-
const op = opById("
|
|
470
|
+
function registerPreviewCard(server, ex, waitCapMs, onEvent) {
|
|
471
|
+
const op = opById("previewFrameJob");
|
|
468
472
|
server.registerTool(
|
|
469
473
|
"preview_card",
|
|
470
474
|
{
|
|
@@ -476,9 +480,6 @@ function registerPreviewCard(server, ex, onEvent) {
|
|
|
476
480
|
tokens: z.record(z.string()).optional().describe("Token substitutions the html references (e.g. brand colours, fonts). Same shape as the clip source `tokens`."),
|
|
477
481
|
aspectRatio: z.enum(["16:9", "9:16", "1:1", "4:5"]).optional().describe("Frame to size the card into. Default 9:16 \u2014 a card that fits 16:9 often overflows vertical.")
|
|
478
482
|
},
|
|
479
|
-
// Renders inline and persists nothing — the read-only stance curation.ts
|
|
480
|
-
// already takes for preview_frame. Stated in full: an omitted hint is not
|
|
481
|
-
// neutral (destructiveHint/openWorldHint default TRUE in the schema).
|
|
482
483
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
483
484
|
},
|
|
484
485
|
async (args, extra) => timed(onEvent, "preview_card", async (report) => {
|
|
@@ -511,12 +512,19 @@ function registerPreviewCard(server, ex, onEvent) {
|
|
|
511
512
|
"preview_card",
|
|
512
513
|
async (res) => {
|
|
513
514
|
const json = res.text ? safeParse(res.text) : void 0;
|
|
514
|
-
const
|
|
515
|
-
|
|
516
|
-
|
|
515
|
+
const jobId = json?.jobId;
|
|
516
|
+
if (typeof jobId !== "string" || !jobId) {
|
|
517
|
+
return errText("preview_card enqueue returned no jobId");
|
|
518
|
+
}
|
|
519
|
+
const waitMs = Math.min(waitCapMs ?? 3e4, 3e4);
|
|
520
|
+
const done = await waitForJob(ex, "preview_frame", jobId, void 0, Date.now() + waitMs);
|
|
521
|
+
if (!done.ok) return errText(done.text);
|
|
522
|
+
if (done.stillRunning) return text(`${done.text}
|
|
523
|
+
jobId: ${jobId}`);
|
|
524
|
+
const urls = done.mediaUrls ?? [];
|
|
517
525
|
const data = await fetchPreviews(urls, 2);
|
|
518
526
|
report({ preview: { urls: urls.filter(Boolean).length, fetched: data.length } });
|
|
519
|
-
const payload =
|
|
527
|
+
const payload = done.text || `previewed card (${a.aspectRatio ?? "9:16"})`;
|
|
520
528
|
return data.length ? withMedia(payload, data.map((d) => ({ data: d, kind: "image" }))) : text(payload);
|
|
521
529
|
}
|
|
522
530
|
);
|
|
@@ -531,13 +539,11 @@ function registerWaitJob(server, ex, waitCapMs, onEvent) {
|
|
|
531
539
|
"wait_job",
|
|
532
540
|
{
|
|
533
541
|
title: "Wait for Job",
|
|
534
|
-
// Polls status; changes nothing. Idempotent by construction — the whole
|
|
535
|
-
// continuation contract is "call again with the same arguments".
|
|
536
542
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
537
|
-
description: "Wait for a long-running job and return the resolved result \u2014 a BOUNDED long-poll. Polls
|
|
543
|
+
description: "Wait for a long-running job and return the resolved result \u2014 a BOUNDED long-poll. Polls job status (media import/generation / render / compose / consult / clip-suggestions / verify / preview-frame) and blocks up to the transport window (30s on the hosted transport); if still running, it returns a continuation \u2014 call wait_job again with the same arguments (the job keeps executing server-side). Call this after import_media / generate_media / finalize_upload / import_resource / compose / create_render / consult / suggest_briefs / score_composition / preview_frame / preview_component. For event-driven fan-out, create_webhook delivers the terminal instead.",
|
|
538
544
|
inputSchema: {
|
|
539
|
-
kind: z.enum(["render", "suggestions", "compose", "verify", "preview", "brand_kit_extract", "consult"]).describe("What to wait on:
|
|
540
|
-
id: z.string().describe('kind="render": renderId. kind="compose": composeJobId. kind="consult":
|
|
545
|
+
kind: z.enum(["media", "render", "suggestions", "compose", "verify", "preview_frame", "preview", "brand_kit_extract", "consult"]).describe("What to wait on: media ingest/generation, render, compose, consult, clip-suggestion analysis, or a generic async job (verify / preview_frame / preview / brand-kit extract \u2014 use the enqueue receipt kind)."),
|
|
546
|
+
id: z.string().describe('kind="media": mediaItemId returned by import/generate/finalize/import_resource. kind="render": renderId. kind="compose": composeJobId. kind="consult": consultJobId. kind="suggestions": mediaItemId. Generic kinds use the jobId from the enqueue receipt.'),
|
|
541
547
|
projectId: z.string().optional().describe('Required when kind="render", "compose", or "consult".'),
|
|
542
548
|
timeoutMs: z.number().int().min(1e3).max(30 * 60 * 1e3).optional().describe("Maximum wait in ms (default 30 min for render/compose, 5 min for suggestions).")
|
|
543
549
|
}
|
|
@@ -547,7 +553,7 @@ function registerWaitJob(server, ex, waitCapMs, onEvent) {
|
|
|
547
553
|
if ((kind === "render" || kind === "compose" || kind === "consult") && !args.projectId) {
|
|
548
554
|
return errText(`wait_job(kind="${kind}") requires a projectId.`);
|
|
549
555
|
}
|
|
550
|
-
const defaultCap = kind === "suggestions" ? 5 * 60 * 1e3 : 30 * 60 * 1e3;
|
|
556
|
+
const defaultCap = kind === "suggestions" || kind === "media" ? 5 * 60 * 1e3 : 30 * 60 * 1e3;
|
|
551
557
|
const requested = args.timeoutMs ?? defaultCap;
|
|
552
558
|
const deadline = Date.now() + (waitCapMs ? Math.min(requested, waitCapMs) : requested);
|
|
553
559
|
const res = await waitForJob(ex, kind, args.id, args.projectId, deadline);
|
|
@@ -583,9 +589,6 @@ function registerBurnedTombstones(server, onEvent) {
|
|
|
583
589
|
{
|
|
584
590
|
title: `${titleCase(b.name)} (retired)`,
|
|
585
591
|
description: `RETIRED (2026-07 verb cutover) \u2014 use ${b.replacement}. ${b.reason}`,
|
|
586
|
-
// A tombstone only ever throws. Announcing it as read-only and
|
|
587
|
-
// closed-world keeps a stale agent from being made to confirm a
|
|
588
|
-
// "destructive" call that does nothing (schema defaults both to true).
|
|
589
592
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
590
593
|
},
|
|
591
594
|
async () => timed(onEvent, b.name, async () => errText(burnedNameError(b)))
|