@cueframe/kernel 0.1.1 → 0.1.2
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/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/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.d.ts +0 -3
- package/dist/_members/convex-api/dataModel.d.ts +0 -2
- 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 +0 -32
- 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 +1 -81
- 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/operations.d.ts +0 -23
- 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 +0 -22
- 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/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 -1
- package/dist/authoring/resource-routing.js +1 -1
- package/dist/authoring/resources.js +1 -1
- package/dist/authoring/tools.js +7 -7
- package/dist/authoring.js +14 -80
- 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-HI4UTTPS.js → chunk-AO744WIK.js} +1 -43
- 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-AP6ZIVAV.js → chunk-CAJQ7H5A.js} +17 -17
- package/dist/{chunk-7FO3ZJ43.js → chunk-DCVJWGIA.js} +1 -9
- 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-ABL557OT.js → chunk-GMD33ZD7.js} +1 -8
- package/dist/{chunk-ZWMV6DD2.js → chunk-ICSZF37W.js} +10 -162
- package/dist/chunk-IEXAKOEX.js +113 -0
- package/dist/{chunk-UY4SWJVE.js → chunk-K2IUBCND.js} +0 -12
- package/dist/chunk-LJ5W4ZBU.js +146 -0
- package/dist/chunk-LLUW26BS.js +255 -0
- package/dist/{chunk-JJ6XD7NG.js → chunk-PIURX6IZ.js} +70 -2
- package/dist/{chunk-MMEJ3Y7E.js → chunk-QETYXKQQ.js} +1 -10
- package/dist/{chunk-YX2GSJK7.js → chunk-RP4SXXLJ.js} +1 -1
- package/dist/{chunk-P727GZVO.js → chunk-SAMQUUO5.js} +3 -5
- package/dist/{chunk-RF7U3SCL.js → chunk-TD347SSX.js} +3 -11
- package/dist/{chunk-TOJEXFXL.js → chunk-TFGKUWHY.js} +1 -88
- package/dist/{chunk-UHGSZZDI.js → chunk-TPA6PYN2.js} +1 -11
- package/dist/{chunk-OLFOPQCA.js → chunk-UQSOS726.js} +4 -18
- package/dist/{chunk-GBRNYH7W.js → chunk-V24L35GM.js} +0 -11
- package/dist/{chunk-MBCXCJOE.js → chunk-VFMW3JUY.js} +1 -1
- package/dist/{chunk-DK2ODBNT.js → chunk-VHF66LCQ.js} +16 -98
- package/dist/{chunk-JMURQODM.js → chunk-VZ7TYX6Z.js} +0 -1
- package/dist/{chunk-SIGGQRY2.js → chunk-W3SIWT7J.js} +5030 -4412
- 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-HY3RIEZW.js → chunk-XQ72DZKJ.js} +1 -1
- package/dist/{chunk-7DHP4ESU.js → chunk-YLDMAZZE.js} +0 -10
- package/dist/{chunk-FYZVH3MC.js → chunk-YQ7FFW3G.js} +0 -11
- package/dist/chunk-ZPLJ24OV.js +93 -0
- 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 +4 -64
- 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.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 +37 -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
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* deriveTrajectory — PURE TypeScript STAGE-B crop-trajectory math (the cheap
|
|
3
|
-
* "apply a crop intent" half), derived over a cached source-level `subjectTrack`.
|
|
4
|
-
*
|
|
5
|
-
* This is the SINGLE crop derivation for EVERY render surface — the agent's
|
|
6
|
-
* in-loop capture, the verifier eval, AND the customer ship render — by
|
|
7
|
-
* construction: each surface calls THIS function over the SAME cached track +
|
|
8
|
-
* the SAME authored reframe, so the trajectory is identical bytes with no
|
|
9
|
-
* pre-baked variant cache to drift. Render-time-resolution (2026-06-14): the
|
|
10
|
-
* trajectory is DERIVED INLINE at render, never looked up as a baked variant,
|
|
11
|
-
* which deleted the trajectory variant cache + its `variant_not_baked` bug class.
|
|
12
|
-
*
|
|
13
|
-
* Lives in @cueframe/execution/core (`@cueframe/core/render`) — it depends only
|
|
14
|
-
* on TYPES from @cueframe/perception (`SubjectTrack`/`Face`/`FaceBox`) and
|
|
15
|
-
* @cueframe/composition (`ReframeSegment` + the eased-ramp helpers), both legal
|
|
16
|
-
* execution-framework dependencies (execution MAY depend on perception +
|
|
17
|
-
* composition). The Modal `reframe_bake` re-detection path is retired — there is
|
|
18
|
-
* one derivation, so there is no TS↔Python drift to guard against.
|
|
19
|
-
*
|
|
20
|
-
* Output shape is the canonical `TrajectoryData` from
|
|
21
|
-
* @cueframe/composition/reframe/trajectory — the SSOT that both this producer and
|
|
22
|
-
* the renderer (CropFromTrajectory.tsx) import; neither declares a local mirror.
|
|
23
|
-
*
|
|
24
|
-
* See brain/Projects/CueFrame/specs/2026-06-14-render-time-resolution-design.md.
|
|
25
|
-
*/
|
|
26
1
|
import type { Face, FaceBox, SubjectTrack } from '../../perception/index.js';
|
|
27
2
|
export type { Face, FaceBox, SubjectTrack } from '../../perception/index.js';
|
|
28
3
|
import type { ReframeSegment } from '../../composition/reframe/index.js';
|
|
@@ -31,15 +6,7 @@ export { buildEasedZooms, buildPannedCenters, easeOutCubic } from '../../composi
|
|
|
31
6
|
import type { TrajectorySubject, TrajectoryData } from '../../composition/reframe/trajectory.js';
|
|
32
7
|
export type { TrajectorySubject, TrajectorySegment, TrajectoryData } from '../../composition/reframe/trajectory.js';
|
|
33
8
|
import { type ShotFit } from './vcam/framing.js';
|
|
34
|
-
/**
|
|
35
|
-
* Normalized area of a face detection — used to rank faces largest-first
|
|
36
|
-
* (largest ≈ closest to camera = `face-0` by convention). Mirrors
|
|
37
|
-
* reframe_bake.py `_face_area` (width/height path; negatives clamp to 0).
|
|
38
|
-
*/
|
|
39
9
|
export declare function faceArea(face: Face): number;
|
|
40
|
-
/** The crop subject pick the agent authors on a segment (mirror of the wire
|
|
41
|
-
* `cropIntents[].subject`). `active-speaker` is resolved upstream (per
|
|
42
|
-
* keyframe) into a concrete `face` before this is consulted. */
|
|
43
10
|
export type Subject = {
|
|
44
11
|
kind: 'face';
|
|
45
12
|
faceId: string;
|
|
@@ -54,131 +21,24 @@ export type Subject = {
|
|
|
54
21
|
x: number;
|
|
55
22
|
y: number;
|
|
56
23
|
};
|
|
57
|
-
/**
|
|
58
|
-
* Filter the detector's face list by the segment's subject pick:
|
|
59
|
-
* - `all-faces` → all faces (cropper fits the union bbox).
|
|
60
|
-
* - `frame-center` → [] (cropper centers on the source geometric center).
|
|
61
|
-
* - `face` faceId=`face-N` → the face with that STABLE tracker id this frame.
|
|
62
|
-
* The roster the agent authors against carries the tracker's stable ids, so
|
|
63
|
-
* `face-2` means "that tracked person," NOT "the 3rd-largest face this frame."
|
|
64
|
-
* Absent this frame → [] (caller emits no center; EMA forward-fills) rather
|
|
65
|
-
* than silently snapping to a DIFFERENT person — the old area-rank +
|
|
66
|
-
* out-of-range→largest behavior is exactly what made the crop ping-pong
|
|
67
|
-
* between speakers (brain Issue crop-subject-resolved-by-area-rank).
|
|
68
|
-
* - The EMPTY-string faceId is a sentinel (the active-speaker degrade, see
|
|
69
|
-
* deriveSegment) meaning "no specific subject this frame → largest face."
|
|
70
|
-
* Throws on an unknown kind.
|
|
71
|
-
*
|
|
72
|
-
* NB: the retired Python `reframe_bake._resolve_subject_faces` did area-rank;
|
|
73
|
-
* that path is dead (TS is the only live derivation), so there is no drift.
|
|
74
|
-
*/
|
|
75
24
|
export declare function resolveSubjectFaces(faces: Face[], subject: Subject): Face[];
|
|
76
|
-
/** A normalized crop center `[cx, cy]` in [0,1] vs source dims. */
|
|
77
25
|
export type Center = [number, number];
|
|
78
|
-
/**
|
|
79
|
-
* The target crop center from face dets + subject pick. Mirrors
|
|
80
|
-
* reframe_bake.py `_selected_face_center`: `frame-center` (and no usable
|
|
81
|
-
* selection) → null (caller centers on source); otherwise the area-weighted
|
|
82
|
-
* centroid of the selected faces (degenerates to a single face's center).
|
|
83
|
-
*/
|
|
84
26
|
export declare function selectedFaceCenter(faces: Face[], subject: Subject): Center | null;
|
|
85
|
-
/** Normalized distance beyond which adjacent centers are treated as a shot
|
|
86
|
-
* change (hard cut / new angle) and smoothing snaps instead of blending —
|
|
87
|
-
* mirror of reframe_bake.py `JUMP_THRESHOLD`. */
|
|
88
27
|
export declare const JUMP_THRESHOLD = 0.15;
|
|
89
|
-
/** Minimum fraction of a segment's frames in which an authored `face` subject
|
|
90
|
-
* must actually be tracked. Below this, deriveTrajectory FAILS LOUD instead of
|
|
91
|
-
* silently centering the crop — the authored identity isn't really in the clip
|
|
92
|
-
* (tracker ID fragmentation). A genuine subject is present for the large
|
|
93
|
-
* majority of frames it's framed over; 40% is a generous floor. */
|
|
94
28
|
export declare const MIN_SUBJECT_RESOLUTION = 0.4;
|
|
95
29
|
export declare function isJump(a: Center, b: Center): boolean;
|
|
96
|
-
/**
|
|
97
|
-
* Shot-aware EMA on per-frame centers. Forward-fill nulls with the last-known
|
|
98
|
-
* position, then a forward + backward EMA pass, where BOTH passes snap (no
|
|
99
|
-
* blend) ONLY across a detector-reported shot cut (`cutFrames`).
|
|
100
|
-
*
|
|
101
|
-
* Phase 1 (vcam): the `isJump`/`JUMP_THRESHOLD` inference is GONE as a cut
|
|
102
|
-
* signal. A center jump is NEVER inferred to be a cut — that inference was the
|
|
103
|
-
* false-cut snap (a ByteTrack detection-lag jiggle read as a new shot →
|
|
104
|
-
* teleport). Cuts come ONLY from `shotBoundaries`. `isJump`/`JUMP_THRESHOLD`
|
|
105
|
-
* remain exported (legacy consumers) but no longer drive smoothing here.
|
|
106
|
-
*
|
|
107
|
-
* Phase 3 (vcam): the `all-faces` CAMERA-CENTER smoothing is now the deadzone-
|
|
108
|
-
* inclusion + Hamming-window stage in `cameraPath` (the camera TRACKS a moving
|
|
109
|
-
* group). `emaSmooth` stays for the SEPARABLE non-center use — the per-subject
|
|
110
|
-
* `face_box_series` the floor reads (`perSubjectSeries`) — and for the
|
|
111
|
-
* UNCHANGED face/active-speaker/frame-center center path (byte-identical to the
|
|
112
|
-
* pre-Phase-3 behavior, the mode-isolation invariant). It is NOT used for the
|
|
113
|
-
* all-faces centers any more.
|
|
114
|
-
*/
|
|
115
30
|
export declare function emaSmooth(centers: (Center | null)[], alpha?: number, cutFrames?: ReadonlySet<number>): Center[];
|
|
116
|
-
/** Clamp to [0,1] — mirror of reframe_bake.py `_clip01`. */
|
|
117
31
|
export declare function clip01(v: number): number;
|
|
118
|
-
/** Bottom-band fraction the render keeps clear for captions per aspect.
|
|
119
|
-
* CAPTION_BAND_RESERVE is the SSOT in @cueframe/composition (imported above). */
|
|
120
32
|
export declare function captionBandReserve(aspect: string): number;
|
|
121
|
-
/** Output aspect as width/height (e.g. '9:16' → 0.5625). FAILS LOUD on a
|
|
122
|
-
* malformed aspect — a silent 9/16 default frames every non-vertical render
|
|
123
|
-
* vertically (no-fallbacks rule). Callers pass `composition.format.aspectRatio`,
|
|
124
|
-
* which the Composition validator constrains to a known enum, so a throw here
|
|
125
|
-
* is a genuine drift/bug, never a user-reachable path. */
|
|
126
33
|
export declare function aspectWhRatio(aspect: string): number;
|
|
127
|
-
/**
|
|
128
|
-
* The crop window size (source-normalized) for a given `zoom_scale` + output
|
|
129
|
-
* aspect — the bake half of the renderer's `computeCropTransform`: the largest
|
|
130
|
-
* output-aspect rect that fits the source, scaled by the zoom (clamped to
|
|
131
|
-
* [0.4,1.0] like `bakedZoom`). Shared so the cameraPath deadzone (output-crop
|
|
132
|
-
* units) can convert to the source-normalized geometry the regions live in.
|
|
133
|
-
*/
|
|
134
34
|
export declare function cropWindowSizeFor(srcW: number, srcH: number, zoomScale: number, aspect: string): {
|
|
135
35
|
w: number;
|
|
136
36
|
h: number;
|
|
137
37
|
};
|
|
138
|
-
/** Return the value at the largest key ≤ `key` (fallback to the smallest key
|
|
139
|
-
* when none precedes; null when empty) — mirror of `_nearest_kp_value`.
|
|
140
|
-
* per-keyframe-speaker is a Map<frameOffset, faceId>. */
|
|
141
38
|
export declare function nearestKpValue(d: Map<number, string>, key: number): string | null;
|
|
142
|
-
/** Contiguous [startFrame, endFrame) ranges where `faceId` is the active
|
|
143
|
-
* speaker; adjacent same-speaker spans merge — mirror of `_active_windows_for`.
|
|
144
|
-
* Each keyframe pick holds until the next keyframe (last → frameCount). */
|
|
145
39
|
export declare function activeWindowsFor(faceId: string, perKeyframeSpeaker: Map<number, string>, frameCount: number): Array<[number, number]>;
|
|
146
|
-
/**
|
|
147
|
-
* Build smoothed per-subject normalized face-box series + active windows from
|
|
148
|
-
* the tracker's per-frame `{faceId: [x1,y1,x2,y2]}` (pixel) output. Mirror of
|
|
149
|
-
* reframe_bake.py `_per_subject_series`: stable subject order = first
|
|
150
|
-
* appearance; centers + sizes EMA-smoothed (alpha 0.35) with the same shot-aware
|
|
151
|
-
* reset as the crop centers; frames with no tracked face stay null.
|
|
152
|
-
*/
|
|
153
40
|
export declare function perSubjectSeries(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, perKeyframeSpeaker: Map<number, string>, frameCount: number, cutFrames?: ReadonlySet<number>): TrajectorySubject[];
|
|
154
|
-
/** §22.1 target face-height fraction of the OUTPUT per editorial shot scale
|
|
155
|
-
* (mirror of reframe_bake.py `_SHOT_SCALE_TARGET`). */
|
|
156
|
-
/**
|
|
157
|
-
* §22.1 (Phase 4): calibrate ZOOM to the DETECTED face for an editorial shot
|
|
158
|
-
* scale. zoom = median(face_h_px)/fit_h / target, clamped [ZOOM_MIN, ZOOM_MAX].
|
|
159
|
-
* shotScale seeds ZOOM ONLY — verticalBias (headroom) is the agent's AUTHORED
|
|
160
|
-
* value, passed through verbatim; it is NEVER overridden here (the floor-vision
|
|
161
|
-
* fix). When the authored fields are omitted: zoom defaults to 1.0 (frame as-is)
|
|
162
|
-
* and headroom to 0 (dead-center, never auto-applied). Falls back to the authored
|
|
163
|
-
* zoom/bias when shotScale is unset or no face was detected.
|
|
164
|
-
*
|
|
165
|
-
* The target table + the clamp live in @cueframe/composition/reframe/shotScale —
|
|
166
|
-
* the SAME module the plan-time punch-in guard reads, so a shotScale the guard
|
|
167
|
-
* admitted and the zoom this bakes can never disagree. Do NOT re-declare them here.
|
|
168
|
-
*
|
|
169
|
-
* NOTE this honors whatever shotScale reaches it. Whether the punch-in was EARNED
|
|
170
|
-
* (is there room around the face? pixels to magnify?) is decided at the plan, by
|
|
171
|
-
* `punchInWarrant` in that same module. A shotScale arriving here that the warrant
|
|
172
|
-
* would refuse is a bug in the guard, not something to re-check.
|
|
173
|
-
*/
|
|
174
41
|
export declare function calibrateShotScale(shotScale: string | undefined | null, subjects: TrajectorySubject[], srcW: number, srcH: number, aspect: string, fallbackZoom: number | undefined, fallbackVbias: number | undefined, authoredSubject?: Subject): [number, number];
|
|
175
|
-
/**
|
|
176
|
-
* Derive ONE segment's per-frame crop centers + per-subject series from a
|
|
177
|
-
* segment-local slice of the cached track. Mirror of the STAGE B half of
|
|
178
|
-
* reframe_bake.py `_bake_segment` (steps 4–7): per-frame subject filter
|
|
179
|
-
* (active-speaker uses the nearest keyframe pick; otherwise largest/face-N) →
|
|
180
|
-
* shot-aware EMA (alpha 0.35) → holes land at [0.5,0.5] → per-subject series.
|
|
181
|
-
*/
|
|
182
42
|
export declare function deriveSegment(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, perKeyframeSpeaker: Map<number, string>, subject: Subject, cutFrames?: ReadonlySet<number>, fps?: number, aspect?: string, zoomScale?: number): {
|
|
183
43
|
centers: Center[];
|
|
184
44
|
subjects: TrajectorySubject[];
|
|
@@ -3,11 +3,5 @@ export interface EmphasisWord {
|
|
|
3
3
|
sourceStart: number;
|
|
4
4
|
sourceEnd: number;
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
7
|
-
* Build a Set keyed by "poolItemId:sourceStart" for O(1) emphasis lookups.
|
|
8
|
-
* sourceStart is rounded to 3 decimal places to handle floating-point drift
|
|
9
|
-
* between transcript sources and stored emphasis data.
|
|
10
|
-
*/
|
|
11
6
|
export declare function buildEmphasisSet(emphasisWords: EmphasisWord[]): Set<string>;
|
|
12
|
-
/** Check if a word (by poolItemId + sourceStart) is in the emphasis set. */
|
|
13
7
|
export declare function isEmphasized(set: Set<string>, poolItemId: string, sourceStart: number): boolean;
|
|
@@ -1,87 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reframe eval — the COMPOSED crop box per output frame.
|
|
3
|
-
*
|
|
4
|
-
* The eval target is the crop box the camera ACTUALLY lands on, in
|
|
5
|
-
* output-crop-normalized space — NOT the raw `centers`/`zoom_scale` of the
|
|
6
|
-
* trajectory JSON. Per the virtual-camera spec ("the composed (post-floor) crop
|
|
7
|
-
* is the eval target … zoom is two-layer"), the jitter / center-crop metrics
|
|
8
|
-
* sample the box `computeCropTransform` produces, so they measure what ships.
|
|
9
|
-
*
|
|
10
|
-
* Phase 0 samples the BASE camera path (the trajectory) — the floor yield is a
|
|
11
|
-
* separate, caption-driven layer with its own golden (Phase 4). The geometry
|
|
12
|
-
* below is the bake half of `computeCropTransform`
|
|
13
|
-
* (packages/execution/render-entry/src/CropFromTrajectory.tsx): crop-window size from
|
|
14
|
-
* `zoom_scale`, center from the per-frame `centers`, coverage-clamped so the
|
|
15
|
-
* window never runs past the source edge. We replicate it here (rather than
|
|
16
|
-
* import the renderer — execution must not depend on the Remotion bundle) and a
|
|
17
|
-
* test pins this replica against the renderer's published clamp behavior.
|
|
18
|
-
*
|
|
19
|
-
* Coordinate system: the crop box is expressed in SOURCE-NORMALIZED units —
|
|
20
|
-
* `cx,cy` ∈ [0,1] (window center vs source dims) and `w,h` ∈ [0,1] (window size
|
|
21
|
-
* as a fraction of the source). Frame-to-frame motion of THIS box is the camera
|
|
22
|
-
* motion; normalizing the per-component delta by the box's own size converts it
|
|
23
|
-
* to output-crop-normalized units (a half-window pan is the same number at any
|
|
24
|
-
* zoom — the zoom-invariant "held feel" the spec requires).
|
|
25
|
-
*/
|
|
26
1
|
import type { TrajectoryData, TrajectorySegment } from '../../../composition/reframe/trajectory.js';
|
|
27
|
-
/** The composed crop window for one output frame, source-normalized. */
|
|
28
2
|
export interface CropBox {
|
|
29
|
-
/** Window center x ∈ [0,1] vs source width (after the coverage clamp). */
|
|
30
3
|
cx: number;
|
|
31
|
-
/** Window center y ∈ [0,1] vs source height (after the coverage clamp). */
|
|
32
4
|
cy: number;
|
|
33
|
-
/** Window width as a fraction of the source width ∈ (0,1]. */
|
|
34
5
|
w: number;
|
|
35
|
-
/** Window height as a fraction of the source height ∈ (0,1]. */
|
|
36
6
|
h: number;
|
|
37
7
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Crop-window dimensions (source-normalized) for a given `zoom_scale` + output
|
|
40
|
-
* aspect — the bake half of `computeCropTransform`. The largest output-aspect
|
|
41
|
-
* rect that fits the source, scaled by the clamped zoom. No `faceScale` (the
|
|
42
|
-
* floor's caption-band yield) is applied here — Phase 0 samples the base path.
|
|
43
|
-
*/
|
|
44
8
|
export declare function cropWindowSize(srcW: number, srcH: number, zoomScale: number, aspect: string): {
|
|
45
9
|
w: number;
|
|
46
10
|
h: number;
|
|
47
11
|
};
|
|
48
|
-
/** The composed crop box for one frame of one segment. */
|
|
49
12
|
export declare function cropBoxForFrame(seg: TrajectorySegment, frameInSeg: number, srcW: number, srcH: number, aspect: string): CropBox;
|
|
50
|
-
/**
|
|
51
|
-
* Flatten a `TrajectoryData` to the per-output-frame composed crop-box series
|
|
52
|
-
* over all its segments, in order. This is the series the jitter metric walks.
|
|
53
|
-
*/
|
|
54
13
|
export declare function cropBoxSeries(traj: TrajectoryData): CropBox[];
|
|
55
|
-
/**
|
|
56
|
-
* The STATIC center-crop baseline a content-aware reframe MUST beat on
|
|
57
|
-
* smoothness: the same per-segment `zoom_scale` (so the only variable is WHERE
|
|
58
|
-
* the camera points), but the center pinned to source-center every frame
|
|
59
|
-
* (coverage-clamped, which for a centered window is a no-op). A static crop has
|
|
60
|
-
* zero pan jitter by construction — its only frame-to-frame motion is the
|
|
61
|
-
* per-shot `zoom_scale` steps the algorithm itself authors. The reframe is
|
|
62
|
-
* "adding jitter for nothing" if it cannot beat THIS.
|
|
63
|
-
*/
|
|
64
14
|
export declare function centerCropBoxSeries(traj: TrajectoryData): CropBox[];
|
|
65
|
-
/**
|
|
66
|
-
* The RAW subject-centroid path baseline (the research bar): the per-frame
|
|
67
|
-
* `centers` the algorithm computed, BEFORE any smoothing/deadzone, composed into
|
|
68
|
-
* a crop box at the same per-segment zoom. A reframe must be SMOOTHER than the
|
|
69
|
-
* path it is smoothing. Phase 0 cannot reconstruct the pre-EMA centroid from the
|
|
70
|
-
* shipped trajectory (it only carries the smoothed `centers`), so this is a
|
|
71
|
-
* scaffold that returns the shipped centers; Phase 3 wires the true raw path via
|
|
72
|
-
* `eval/inclusion` + `eval/index` (keeping `emaSmooth` importable, per the
|
|
73
|
-
* spec's characterization gate).
|
|
74
|
-
*/
|
|
75
15
|
export declare function rawCentroidBoxSeries(traj: TrajectoryData): CropBox[];
|
|
76
|
-
/**
|
|
77
|
-
* Compose an arbitrary per-frame `centers` series (e.g. the raw tracking
|
|
78
|
-
* centroid, or the same centroid through the OLD `emaSmooth`) into a crop-box
|
|
79
|
-
* series at a fixed per-frame crop window — the Phase-3 "smoother than EMA"
|
|
80
|
-
* characterization baseline. `cropFor(frame)` gives the source-normalized window
|
|
81
|
-
* for that output frame (the same the shipping path uses), so the ONLY variable
|
|
82
|
-
* between ours and the baseline is the smoother. Centers are coverage-clamped
|
|
83
|
-
* exactly as the renderer clamps them.
|
|
84
|
-
*/
|
|
85
16
|
export declare function cropBoxSeriesFromCenters(centers: Array<[number, number]>, cropFor: (frame: number) => {
|
|
86
17
|
w: number;
|
|
87
18
|
h: number;
|
|
@@ -1,50 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reframe eval — the INCLUSION metric (Phase 3 gate) + the shot-aware teleport
|
|
3
|
-
* and old-vs-new smoothness baselines.
|
|
4
|
-
*
|
|
5
|
-
* The Phase-2 gate (jitter ≤ center-crop) is the WRONG bar for a MOVING subject:
|
|
6
|
-
* a static center crop has jitter 0, but the subject walks out of frame. The
|
|
7
|
-
* camera that TRACKS the subject HAS motion (jitter > 0) and is CORRECT. So the
|
|
8
|
-
* Phase-3 gate is INCLUSION: the per-frame RequiredRegion (the padded subject/
|
|
9
|
-
* group box the crop must contain) must stay ⊆ the crop window. Our reframe must
|
|
10
|
-
* reach inclusionRate ≈ 1.0 on a moving subject (the camera tracks), and a
|
|
11
|
-
* static center-crop's inclusionRate must be materially LOWER (the subject walks
|
|
12
|
-
* out). See the virtual-camera spec, "Virtual-camera stability" + the Phase-3
|
|
13
|
-
* gate note.
|
|
14
|
-
*
|
|
15
|
-
* Pure, deterministic, no I/O. Replays the SAME `selectSubjectSet` +
|
|
16
|
-
* `regionsFromBoxes` the shipping all-faces derive uses, so the regions are
|
|
17
|
-
* EXACTLY the boxes the camera was obliged to contain.
|
|
18
|
-
*/
|
|
19
1
|
import type { SubjectTrack } from '../deriveTrajectory.js';
|
|
20
2
|
import type { CropBox } from './cropBox.js';
|
|
21
3
|
import { type RequiredRegion } from '../vcam/requiredRegion.js';
|
|
22
|
-
/** True iff the padded RequiredRegion is fully inside the crop box (the crop
|
|
23
|
-
* window contains the region — the subject stays in frame). */
|
|
24
4
|
export declare function regionInCrop(region: RequiredRegion, crop: CropBox): boolean;
|
|
25
|
-
/**
|
|
26
|
-
* The per-frame RequiredRegions an `all-faces` camera was obliged to contain,
|
|
27
|
-
* over the WHOLE track window (one all-faces segment). Recomputes the shipping
|
|
28
|
-
* selection so the regions match the derive exactly. Null where no framed member
|
|
29
|
-
* is present (occlusion / gap) — those frames are EXCLUDED from inclusionRate
|
|
30
|
-
* (there's no subject to keep in frame).
|
|
31
|
-
*/
|
|
32
5
|
export declare function requiredRegionsForTrack(track: SubjectTrack): Array<RequiredRegion | null>;
|
|
33
|
-
/** The all-faces `inclusionRate` for a crop-box series vs the per-frame
|
|
34
|
-
* RequiredRegions: the fraction of REGION-BEARING frames whose region is fully
|
|
35
|
-
* inside the crop. `1.0` ⇒ the subject never walks out of frame. Frames with no
|
|
36
|
-
* region (no subject present) are not counted. */
|
|
37
6
|
export declare function inclusionRate(regions: Array<RequiredRegion | null>, crops: CropBox[]): {
|
|
38
7
|
rate: number;
|
|
39
8
|
framesWithRegion: number;
|
|
40
9
|
contained: number;
|
|
41
10
|
};
|
|
42
|
-
/**
|
|
43
|
-
* The largest per-frame center step measured WITHIN trajectory segments (one per
|
|
44
|
-
* sub-shot), in output-crop-normalized units. Steps ACROSS a segment boundary
|
|
45
|
-
* (a detector shot cut) are EXCLUDED — a camera snap at a real cut is intended
|
|
46
|
-
* (the only reset), so it is not a "teleport". An intra-shot maxStep above the
|
|
47
|
-
* bar is the chase/teleport the gate guards against. `segLens` are the per-
|
|
48
|
-
* segment frame counts (so the walk knows where the cut-snaps are).
|
|
49
|
-
*/
|
|
50
11
|
export declare function intraShotMaxStep(crops: CropBox[], segLens: number[]): number;
|
|
@@ -1,93 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reframe eval harness — the public surface for the metrics + the fixture-driven
|
|
3
|
-
* report. Pure TS, no Modal, no R2: every metric replays a cached `SubjectTrack`
|
|
4
|
-
* fixture through the REAL `deriveTrajectory` and measures the composed crop box.
|
|
5
|
-
* See the virtual-camera spec's "Eval / metrics / test harness (built FIRST)".
|
|
6
|
-
*
|
|
7
|
-
* Phase 0 shipped jitter + center-crop. Phase 3 adds the INCLUSION gate (the
|
|
8
|
-
* camera tracks a moving subject ⇒ region ⊆ crop) + the shot-aware teleport
|
|
9
|
-
* metric + the "smoother than the old EMA path" characterization, because pure
|
|
10
|
-
* jitter-beats-center-crop is the WRONG bar once the camera legitimately moves to
|
|
11
|
-
* track (a static center-crop has jitter 0 but loses a walking subject).
|
|
12
|
-
*/
|
|
13
1
|
import type { SubjectTrack, ReframeSegment } from '../deriveTrajectory.js';
|
|
14
2
|
import { type JitterBreakdown } from './metrics.js';
|
|
15
3
|
export type { CropBox } from './cropBox.js';
|
|
16
4
|
export { cropBoxSeries, centerCropBoxSeries, rawCentroidBoxSeries, cropBoxSeriesFromCenters, cropWindowSize, cropBoxForFrame, } from './cropBox.js';
|
|
17
5
|
export { jitter, iou, mIoU, type JitterBreakdown } from './metrics.js';
|
|
18
6
|
export { requiredRegionsForTrack, inclusionRate, intraShotMaxStep, regionInCrop, } from './inclusion.js';
|
|
19
|
-
/** One fixture's reframe-eval report — the numbers a CI gate / RED baseline reads. */
|
|
20
7
|
export interface ReframeEvalReport {
|
|
21
|
-
/** Composed-crop-box jitter of the algorithm under test. */
|
|
22
8
|
jitter: JitterBreakdown;
|
|
23
|
-
/** Composed-crop-box jitter of the static center crop (same per-shot zoom). */
|
|
24
9
|
centerCropJitter: JitterBreakdown;
|
|
25
|
-
/** Composed-crop-box jitter of the raw subject-centroid path (research bar). */
|
|
26
10
|
rawCentroidJitter: JitterBreakdown;
|
|
27
|
-
/** True iff the algorithm beats the static center crop on smoothness (the bar). */
|
|
28
11
|
beatsCenterCrop: boolean;
|
|
29
|
-
/** Frames in the composed series (one per output frame across all segments). */
|
|
30
12
|
frames: number;
|
|
31
13
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Run the base eval over a fixture track + authored reframe segments. Derives the
|
|
34
|
-
* trajectory through the SHIPPING `deriveTrajectory`, composes the crop boxes,
|
|
35
|
-
* and reports jitter vs the center-crop + raw-centroid baselines.
|
|
36
|
-
*/
|
|
37
14
|
export declare function evalReframe(track: SubjectTrack, segments: ReframeSegment[], aspect: string, bakeVersion: string): ReframeEvalReport;
|
|
38
|
-
/** The Phase-3 tracking report — the gate for a MOVING subject (inclusion, not
|
|
39
|
-
* jitter-beats-center-crop). All over a single full-window `all-faces` segment. */
|
|
40
15
|
export interface ReframeTrackingReport {
|
|
41
|
-
/** Inclusion rate of OUR camera path (region ⊆ crop) — ≈1.0 ⇒ subject tracked. */
|
|
42
16
|
inclusionRate: number;
|
|
43
|
-
/** Inclusion rate of a STATIC center crop (same per-shot zoom) — lower ⇒ subject
|
|
44
|
-
* walks out of a static crop, which our tracking camera fixes. */
|
|
45
17
|
centerCropInclusionRate: number;
|
|
46
|
-
/** Frames that had a RequiredRegion (a subject to keep in frame). */
|
|
47
18
|
framesWithRegion: number;
|
|
48
|
-
/** Composed-crop jitter of OUR camera path. */
|
|
49
19
|
jitter: JitterBreakdown;
|
|
50
|
-
/** Composed-crop jitter of the SAME per-frame tracking centroid through the OLD
|
|
51
|
-
* `emaSmooth` (the characterization baseline — ours must be ≤ this). */
|
|
52
20
|
emaPathJitter: JitterBreakdown;
|
|
53
|
-
/** Composed-crop jitter of the RAW (unsmoothed) per-frame tracking centroid. */
|
|
54
21
|
rawPathJitter: JitterBreakdown;
|
|
55
|
-
/** Largest per-frame center step WITHIN a shot (cut-snaps excluded) — teleport
|
|
56
|
-
* guard. Motion exists (tracking), but no intra-shot jump. */
|
|
57
22
|
intraShotMaxStep: number;
|
|
58
23
|
frames: number;
|
|
59
24
|
}
|
|
60
|
-
/**
|
|
61
|
-
* The Phase-3 tracking eval for an `all-faces` segment over the whole window.
|
|
62
|
-
* Recomputes the per-frame RequiredRegions (the SAME `selectSubjectSet` the
|
|
63
|
-
* derive uses) and measures whether the camera keeps the subject in frame
|
|
64
|
-
* (inclusion), how it compares to the old EMA path (smoothness), and that it
|
|
65
|
-
* never teleports within a shot. The fixed crop window per frame is the
|
|
66
|
-
* segment's authored zoom + aspect (all-faces has no eased per-frame zoom).
|
|
67
|
-
*/
|
|
68
25
|
export declare function evalTracking(track: SubjectTrack, aspect: string, bakeVersion: string): ReframeTrackingReport;
|
|
69
|
-
/** One mode's OLD-vs-NEW report for a `face` / `active-speaker` segment. */
|
|
70
26
|
export interface SingleSubjectEvalReport {
|
|
71
|
-
/** NEW (core geometric-deadzone) composed-crop jitter. */
|
|
72
27
|
jitter: JitterBreakdown;
|
|
73
|
-
/** OLD (emaSmooth 0.35 over the bare centroid) composed-crop jitter. */
|
|
74
28
|
emaJitter: JitterBreakdown;
|
|
75
|
-
/** NEW inclusion vs the chosen subject's per-frame padded BOX region. */
|
|
76
29
|
inclusionRate: number;
|
|
77
|
-
/** OLD inclusion vs the SAME region (so the two paths are judged on one bar). */
|
|
78
30
|
emaInclusionRate: number;
|
|
79
|
-
/** NEW intra-shot max center step (cut-snaps excluded) — the teleport guard. */
|
|
80
31
|
intraShotMaxStep: number;
|
|
81
|
-
/** OLD intra-shot max center step. */
|
|
82
32
|
emaIntraShotMaxStep: number;
|
|
83
|
-
/** Frames the chosen subject was resolved (had a box) — the inclusion denominator. */
|
|
84
33
|
framesWithRegion: number;
|
|
85
34
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Characterize the P4 `face` / `active-speaker` migration on a real fixture: the
|
|
88
|
-
* NEW core geometric-deadzone path (run via the SHIPPING `deriveTrajectory`) vs
|
|
89
|
-
* the OLD `emaSmooth` path (reconstructed here over the SAME per-frame chosen-
|
|
90
|
-
* subject centroid the old code used), measured against ONE inclusion region (the
|
|
91
|
-
* chosen subject's per-frame padded BOX). All over a single full-window segment.
|
|
92
|
-
*/
|
|
93
35
|
export declare function evalSingleSubject(track: SubjectTrack, mode: 'face' | 'active-speaker', aspect: string, bakeVersion: string, faceId?: string): SingleSubjectEvalReport;
|
|
@@ -1,48 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reframe eval metrics — pure, label-free, deterministic.
|
|
3
|
-
*
|
|
4
|
-
* Tier 1 (HARD CI BLOCKERS, no human labels): `jitter` + the center-crop
|
|
5
|
-
* comparison. These are what gate the build per the virtual-camera spec —
|
|
6
|
-
* "jitter-beats-center-crop is the only ship-blocker".
|
|
7
|
-
*
|
|
8
|
-
* Tier 2 (REPORTED, not blocking): `mIoU` — scaffolded + reported, NOT a gate,
|
|
9
|
-
* because per-frame human ground-truth boxes don't exist yet (RESOLVED #3).
|
|
10
|
-
*
|
|
11
|
-
* `jitter` = mean over frames of the absolute frame-to-frame difference of the
|
|
12
|
-
* composed crop box (center x/y AND size), in output-crop-normalized units. The
|
|
13
|
-
* per-component delta is normalized by the box's own size, so the metric is
|
|
14
|
-
* zoom-invariant: a half-window pan reads the same number at any zoom (the spec's
|
|
15
|
-
* "held feel is zoom-invariant" requirement). Lower is smoother. A static crop
|
|
16
|
-
* has zero pan jitter; the only motion it carries is the per-shot `zoom_scale`
|
|
17
|
-
* steps, which both paths share — so `jitter(ours) ≤ jitter(centerCrop)` isolates
|
|
18
|
-
* "where the camera points" as the sole variable.
|
|
19
|
-
*/
|
|
20
1
|
import type { CropBox } from './cropBox.js';
|
|
21
|
-
/** Per-channel jitter breakdown (so a regression points at center vs zoom). */
|
|
22
2
|
export interface JitterBreakdown {
|
|
23
|
-
/** Mean |Δ| of the window center, normalized by window size (output-crop units). */
|
|
24
3
|
center: number;
|
|
25
|
-
/** Mean |Δ| of the window size (zoom channel), normalized by mean window size. */
|
|
26
4
|
zoom: number;
|
|
27
|
-
/** Combined center + zoom mean absolute step — the headline jitter scalar. */
|
|
28
5
|
total: number;
|
|
29
|
-
/** The single largest per-frame center step (output-crop units) — teleport guard. */
|
|
30
6
|
maxCenterStep: number;
|
|
31
7
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Jitter of a composed crop-box series. Empty / single-frame series → all zeros
|
|
34
|
-
* (no motion to measure). The center delta is divided by the per-frame window
|
|
35
|
-
* size so it is expressed in fractions of the crop window (output-crop space);
|
|
36
|
-
* the zoom delta is divided by the mean window size for the same normalization.
|
|
37
|
-
*/
|
|
38
8
|
export declare function jitter(boxes: CropBox[]): JitterBreakdown;
|
|
39
|
-
/** Intersection-over-union of two source-normalized crop boxes. */
|
|
40
9
|
export declare function iou(a: CropBox, b: CropBox): number;
|
|
41
|
-
/**
|
|
42
|
-
* mIoU + IoU@0.5 vs a per-frame ground-truth crop-box series (Tier 2, REPORTED
|
|
43
|
-
* only). Scaffolded now so the harness emits a number the moment labels exist;
|
|
44
|
-
* NOT a CI gate (no hand-labeled fixtures yet — RESOLVED #3). Lengths must match.
|
|
45
|
-
*/
|
|
46
10
|
export declare function mIoU(ours: CropBox[], groundTruth: CropBox[]): {
|
|
47
11
|
mIoU: number;
|
|
48
12
|
iouAt50: number;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Export settings types and constants shared between desktop and cloud render paths.
|
|
3
|
-
* Extracted from apps/studio/src/store/exportStore.ts — pure functions, no store deps.
|
|
4
|
-
*/
|
|
5
1
|
import type { CaptionStyle } from './types.js';
|
|
6
2
|
export type ExportQuality = 'maximum' | 'social' | 'web' | 'potato' | 'source';
|
|
7
3
|
export type ExportFormat = 'source' | '16:9' | '9:16' | '4:5' | '1:1';
|
|
@@ -28,13 +24,9 @@ export declare const RESOLUTION_PRESETS: Record<Exclude<ExportResolution, 'sourc
|
|
|
28
24
|
label: string;
|
|
29
25
|
height: number;
|
|
30
26
|
}>;
|
|
31
|
-
/** Convert a BPP value to an approximate CRF (H.264). */
|
|
32
27
|
export declare function bppToCrf(bpp: number): number;
|
|
33
|
-
|
|
34
|
-
export declare function
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
crf: number | undefined;
|
|
38
|
-
};
|
|
39
|
-
/** Ensure a dimension is even (required by most codecs). */
|
|
28
|
+
export declare function qualityToCrf(quality: ExportQuality): number | undefined;
|
|
29
|
+
export declare function resolutionToOutputSize(width: number, height: number, resolution: ExportResolution): {
|
|
30
|
+
outputWidth: number;
|
|
31
|
+
} | undefined;
|
|
40
32
|
export declare function ensureEven(n: number): number;
|
|
@@ -7,7 +7,7 @@ export { extractCaptionWordsFromDoc, sliceTranscriptWords, splitIntoSentences }
|
|
|
7
7
|
export { compositionToRenderInput, referencedMediaIds, componentRefsByClipId, assembleRenderInput, validateComposition, compositionFormatDimensions, playableSpans, } from './compositionRender.js';
|
|
8
8
|
export { bookendFrames, resolveBookendTimeline, CARD_BOOKEND_DEFAULT_MS, VIDEO_BOOKEND_DEFAULT_MS, } from './bookends.js';
|
|
9
9
|
export type { BookendTimeline } from './bookends.js';
|
|
10
|
-
export { DEFAULT_FPS, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_RENDER_SETTINGS, FORMAT_PRESETS, RESOLUTION_PRESETS, bppToCrf,
|
|
10
|
+
export { DEFAULT_FPS, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_RENDER_SETTINGS, FORMAT_PRESETS, RESOLUTION_PRESETS, bppToCrf, ensureEven, qualityToCrf, resolutionToOutputSize, } from './exportSettings.js';
|
|
11
11
|
export type { ExportFormat, ExportQuality, ExportResolution, FormatPreset, RenderSettings, } from './exportSettings.js';
|
|
12
12
|
export { faceArea, resolveSubjectFaces, selectedFaceCenter, isJump, emaSmooth, clip01, captionBandReserve, aspectWhRatio, nearestKpValue, activeWindowsFor, perSubjectSeries, calibrateShotScale, deriveSegment, deriveTrajectory, buildEasedZooms, buildPannedCenters, easeOutCubic, JUMP_THRESHOLD, MIN_SUBJECT_RESOLUTION, } from './deriveTrajectory.js';
|
|
13
13
|
export type { Subject, Center, TrajectorySubject, TrajectorySegment, TrajectoryData, Face, FaceBox, SubjectTrack, ReframeSegment, } from './deriveTrajectory.js';
|
|
@@ -1,39 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Face→person identity mapping for the perception ESCALATION path.
|
|
3
|
-
*
|
|
4
|
-
* The plan authors subjects against the FACE roster (`face-N`, YuNet/SCRFD).
|
|
5
|
-
* When the face tracker carries that identity in too few frames
|
|
6
|
-
* (`subject_not_tracked` — e.g. the subject looks away for most of a long
|
|
7
|
-
* segment), the compose escalates to the PERSON detector (YOLO11x + BoT-SORT),
|
|
8
|
-
* whose track names identities `person-N`. This maps the authored face id onto
|
|
9
|
-
* the person id whose body boxes CONTAIN that face, scored over exactly the
|
|
10
|
-
* frames where the face DID resolve — the face evidence is sparse but real, and
|
|
11
|
-
* a face box sits inside its own person's box in every such frame.
|
|
12
|
-
*
|
|
13
|
-
* Pure math, no I/O. Tracks may have different frame counts (defensive):
|
|
14
|
-
* frames align by relative position in the shared detection window.
|
|
15
|
-
*/
|
|
16
1
|
type Box = [number, number, number, number];
|
|
17
2
|
interface TrackLike {
|
|
18
3
|
perFrameTracked: Array<Record<string, Box>>;
|
|
19
4
|
}
|
|
20
5
|
export interface FaceToPersonMapping {
|
|
21
6
|
personId: string;
|
|
22
|
-
/** Frames where the face resolved AND the winning person contained it. */
|
|
23
7
|
matchedFrames: number;
|
|
24
|
-
/** Frames where the face resolved at all (the scoring denominator). */
|
|
25
8
|
faceFrames: number;
|
|
26
|
-
/** Winner's total containment score / runner-up's (Infinity when unopposed). */
|
|
27
9
|
margin: number;
|
|
28
10
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Map one authored face id to the person-track id that carries it, or null when
|
|
31
|
-
* the evidence is missing/ambiguous (caller fails loud — never a guess).
|
|
32
|
-
*
|
|
33
|
-
* Decision rule: sum per-frame containment per person id over the frames where
|
|
34
|
-
* the face resolves; the winner needs (a) support in ≥30% of those frames at
|
|
35
|
-
* ≥60% containment, and (b) a 1.5× margin over the runner-up (two people
|
|
36
|
-
* side-by-side must not coin-flip).
|
|
37
|
-
*/
|
|
38
11
|
export declare function mapFaceIdToPersonId(faceTrack: TrackLike, personTrack: TrackLike, faceId: string): FaceToPersonMapping | null;
|
|
39
12
|
export {};
|