@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,85 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* vcam/requiredRegion.ts — every focus mode's per-frame target, lowered into a
|
|
3
|
-
* `RequiredRegion`: the SOURCE-NORMALIZED box the crop window MUST contain.
|
|
4
|
-
*
|
|
5
|
-
* Phase 3 of the virtual-camera redesign (brain spec
|
|
6
|
-
* 2026-06-21-virtual-camera-reframe-design.md, "Every focus mode lowers to a
|
|
7
|
-
* RequiredRegion" + "Virtual-camera stability"). A RequiredRegion is the padded
|
|
8
|
-
* subject/group extent (subject box + headroom pad). `cameraPath` then enforces
|
|
9
|
-
* the INCLUSION INVARIANT: the crop always contains the RequiredRegion ⇒ the
|
|
10
|
-
* subject can never walk out of frame.
|
|
11
|
-
*
|
|
12
|
-
* This is a REPRESENTATION, not a behavior change for the modes that already
|
|
13
|
-
* work: `face` lowers its single per-frame subject box; `point` a zero-size rect
|
|
14
|
-
* at the authored location; `frame-center` the center rect. Only `all-faces`
|
|
15
|
-
* gains tracking — its region is the per-frame framed-group union box from
|
|
16
|
-
* `subjectSet` (hysteresis-filtered), so the camera follows a moving group.
|
|
17
|
-
*
|
|
18
|
-
* Pure, deterministic, no I/O. All boxes are source-normalized `[x1,y1,x2,y2]`
|
|
19
|
-
* ∈ [0,1]; `REGION_PAD` is a fraction of the source dimension (the geometry is
|
|
20
|
-
* source-normalized — the deadzone in `cameraPath` is the output-crop-normalized
|
|
21
|
-
* hold band, a separate stage).
|
|
22
|
-
*/
|
|
23
1
|
import type { Center, NormBox } from './subjectSet.js';
|
|
24
|
-
/** The padded box the crop must contain, as a center+size — the unit the
|
|
25
|
-
* camera-path solver consumes. Source-normalized: `cx,cy` ∈ [0,1], `w,h` the
|
|
26
|
-
* fraction of the source the region spans (already padded). */
|
|
27
2
|
export interface RequiredRegion {
|
|
28
3
|
cx: number;
|
|
29
4
|
cy: number;
|
|
30
|
-
/** Padded region width as a fraction of source width. */
|
|
31
5
|
w: number;
|
|
32
|
-
/** Padded region height as a fraction of source height. */
|
|
33
6
|
h: number;
|
|
34
7
|
}
|
|
35
|
-
/** Pad a source-normalized box on every side by `pad` (clamped to [0,1]) and
|
|
36
|
-
* express it as a `RequiredRegion` (center + padded size). A zero-area box (a
|
|
37
|
-
* `point` target) yields a zero-size padded region at the point. */
|
|
38
8
|
export declare function padBox(box: NormBox, pad?: number): RequiredRegion;
|
|
39
|
-
/** A zero-size RequiredRegion at a single point (the `point` mode target, or any
|
|
40
|
-
* centroid-only target with no extent). Padded so a point still carries a small
|
|
41
|
-
* margin the crop must contain. */
|
|
42
9
|
export declare function pointRegion(c: Center, pad?: number): RequiredRegion;
|
|
43
|
-
/** The frame-center RequiredRegion — a zero-size region at source center. The
|
|
44
|
-
* crop centering on it is a no-op (the window is already centerable), so this
|
|
45
|
-
* preserves `frame-center`'s `[0.5,0.5]` behavior exactly. */
|
|
46
10
|
export declare function centerRegion(): RequiredRegion;
|
|
47
|
-
/**
|
|
48
|
-
* Lower a per-frame series of source-normalized union boxes (e.g. `all-faces`'s
|
|
49
|
-
* per-frame framed-group box from `subjectSet.perFrameBoxes`) into per-frame
|
|
50
|
-
* RequiredRegions. A null box (no framed member present — occlusion / gap) →
|
|
51
|
-
* null region; `cameraPath` forward-fills the last in-shot region across the
|
|
52
|
-
* gap (so the camera holds, not snaps to center, during a brief occlusion).
|
|
53
|
-
*/
|
|
54
11
|
export declare function regionsFromBoxes(boxes: Array<NormBox | null>, pad?: number): Array<RequiredRegion | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Lower a per-frame series of centroid-only targets (the `face` /
|
|
57
|
-
* `active-speaker` per-frame center) into zero-size RequiredRegions. These modes
|
|
58
|
-
* carry a single subject point, not a measured box, in the crop-center path —
|
|
59
|
-
* lowering to a padded point keeps their framing (the camera points at the
|
|
60
|
-
* subject) while giving `cameraPath` a region to include. A null center (subject
|
|
61
|
-
* absent this frame) → null region (forward-filled by `cameraPath`).
|
|
62
|
-
*/
|
|
63
12
|
export declare function regionsFromCenters(centers: Array<Center | null>, pad?: number): Array<RequiredRegion | null>;
|
|
64
|
-
/**
|
|
65
|
-
* Outlier-robust median filter on a region series within a SHOT (radius `r`
|
|
66
|
-
* frames). Single-frame detector/ReID spikes — a crowd ReID flicker that
|
|
67
|
-
* teleports the box across the frame for one frame, then snaps back — would
|
|
68
|
-
* otherwise yank the camera (the chase, re-skinned). A short median on
|
|
69
|
-
* cx/cy/w/h rejects them while tracking a clean multi-frame walk (an order
|
|
70
|
-
* statistic, lag-free on a monotone pan). The window is clamped to the shot
|
|
71
|
-
* (never reads past a cut). Null entries are skipped in the window (a present
|
|
72
|
-
* spike isn't outvoted by absent frames). Identity for r < 1.
|
|
73
|
-
*/
|
|
74
13
|
export declare function medianFilterRegions(regions: Array<RequiredRegion | null>, r: number, shotStart: number, shotEnd: number): Array<RequiredRegion | null>;
|
|
75
|
-
/**
|
|
76
|
-
* Build the canonical per-frame RequiredRegions for an `all-faces` segment from
|
|
77
|
-
* the per-frame framed-group union boxes (`subjectSet.perFrameBoxes`): pad each
|
|
78
|
-
* box, then outlier-reject single-frame spikes per shot. This is THE region the
|
|
79
|
-
* camera is obliged to contain AND the region the eval measures inclusion
|
|
80
|
-
* against — one source of truth, so the gate is honest (the camera is judged on
|
|
81
|
-
* the same temporally-coherent region it frames). `interiorCuts` are the segment-
|
|
82
|
-
* local shot boundaries (median windows never cross a cut). `fps` sizes the
|
|
83
|
-
* median radius. Null boxes (occlusion) stay null (forward-filled by cameraPath).
|
|
84
|
-
*/
|
|
85
14
|
export declare function buildRequiredRegions(boxes: Array<NormBox | null>, fps: number, interiorCuts: Iterable<number>, pad?: number): Array<RequiredRegion | null>;
|
|
@@ -1,45 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* vcam/shots.ts — shot segmentation, the SOLE cut source.
|
|
3
|
-
*
|
|
4
|
-
* Phase 1 of the virtual-camera redesign (brain spec
|
|
5
|
-
* 2026-06-21-virtual-camera-reframe-design.md, "Shot/segment handling"):
|
|
6
|
-
* cuts come ONLY from the detector's `track.shotBoundaries` (HSV hard cuts),
|
|
7
|
-
* NEVER inferred from a face-center jump. The deleted `isJump`-as-cut inference
|
|
8
|
-
* is the false-cut snap (the 1.6-frame-widths/sec teleport) — structurally
|
|
9
|
-
* impossible once the only reset is a real detector boundary.
|
|
10
|
-
*
|
|
11
|
-
* Two scopes the selection math must NOT conflate:
|
|
12
|
-
* - **Identity scope = the authored segment** (cross-shot). A tracker id is
|
|
13
|
-
* stable within a shot; the same person is followed across cuts. The
|
|
14
|
-
* `MIN_SUBJECT_RESOLUTION` resolution gate lives at segment granularity.
|
|
15
|
-
* - **Camera re-lock scope = the shot.** The per-shot LOCKED subject set
|
|
16
|
-
* (quality gate) is computed per shot; deadzone / window / zoom-fit reset
|
|
17
|
-
* at a shot boundary (the latter two land in Phase 3/5).
|
|
18
|
-
*
|
|
19
|
-
* Pure, deterministic, no I/O. Inputs are already segment-local frame indices
|
|
20
|
-
* (the caller rebased the window-local `shotBoundaries` into segment offsets).
|
|
21
|
-
*/
|
|
22
|
-
/** A half-open shot range `[start, end)` in segment-local frame indices. */
|
|
23
1
|
export interface ShotRange {
|
|
24
|
-
/** First frame of the shot (segment-local, inclusive). */
|
|
25
2
|
start: number;
|
|
26
|
-
/** One past the last frame of the shot (segment-local, exclusive). */
|
|
27
3
|
end: number;
|
|
28
4
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Split `[0, segLen)` into shot ranges at the interior cut frames.
|
|
31
|
-
*
|
|
32
|
-
* `interiorCuts` are segment-local frame indices where a NEW shot begins — the
|
|
33
|
-
* SAME set `deriveTrajectory` already derives (`segCuts`: window-local
|
|
34
|
-
* `shotBoundaries` strictly inside the segment, rebased to segment offsets). A
|
|
35
|
-
* cut at frame `c` ends the prior shot at `c` and starts the next at `c`.
|
|
36
|
-
*
|
|
37
|
-
* Legacy tracks with no `shotBoundaries` → no interior cuts → ONE shot covering
|
|
38
|
-
* the whole segment (the safe hold). `shot_boundaries_missing` is NOT thrown —
|
|
39
|
-
* a one-shot segment is a legal, documented outcome, never a degrade.
|
|
40
|
-
*
|
|
41
|
-
* Out-of-range / duplicate / unsorted cuts are tolerated: cuts are sorted,
|
|
42
|
-
* deduped, and clamped to `(0, segLen)`; zero-length spans are dropped. A
|
|
43
|
-
* segment of length 0 yields no shots.
|
|
44
|
-
*/
|
|
45
5
|
export declare function segmentShots(interiorCuts: Iterable<number>, segLen: number): ShotRange[];
|
|
@@ -1,106 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* vcam/subjectSet.ts — the CHASE KILLER (Phase 2).
|
|
3
|
-
*
|
|
4
|
-
* The `all-faces` failure is the per-frame area-weighted centroid of EVERY
|
|
5
|
-
* detected face: any transient face (a crowd extra, a ByteTrack fragment, a
|
|
6
|
-
* background head) yanks the centroid, so the camera ping-pongs (the "chase").
|
|
7
|
-
* This module selects a STABLE subject set and frames the GROUP smoothly,
|
|
8
|
-
* beating a static center crop on jitter — the headline behavioral fix.
|
|
9
|
-
*
|
|
10
|
-
* Mode-isolated: this is consulted ONLY for the `all-faces` path in
|
|
11
|
-
* `deriveSegment`. `face` / `point` / `frame-center` / `active-speaker` keep
|
|
12
|
-
* their existing selection verbatim.
|
|
13
|
-
*
|
|
14
|
-
* Pipeline (brain spec 2026-06-21-virtual-camera-reframe-design.md, "Subject-of
|
|
15
|
-
* -interest selection"):
|
|
16
|
-
* 1. Per-shot LOCKED subject set (quality gate) — size-aware drop, NOT a flat
|
|
17
|
-
* persistence gate, so a dominant late entrant is kept and a transient
|
|
18
|
-
* small face is dropped.
|
|
19
|
-
* 2. Identity scope = the authored SEGMENT: union the per-shot locked sets →
|
|
20
|
-
* the segment candidate pool; rank by segment-wide dominance; take top-K.
|
|
21
|
-
* 3. Per-frame set-MEMBERSHIP hysteresis over the pool (add/drop debounce) so
|
|
22
|
-
* a member flickering at the gate boundary doesn't toggle the framing.
|
|
23
|
-
* 4. Emit, PER FRAME, the area-weighted centroid + union bbox over the framed
|
|
24
|
-
* members PRESENT this frame. The centroid is the raw crop target; the box
|
|
25
|
-
* is the RequiredRegion source. Transient entries/exits can't yank the
|
|
26
|
-
* camera (they're gated out of the framed set), but the framed group's own
|
|
27
|
-
* motion IS followed — Phase 3's deadzone + Hamming window in `cameraPath`
|
|
28
|
-
* turn this per-frame target into a held-then-glide path, so a walking
|
|
29
|
-
* subject stays in frame (the camera tracks) without chasing micro-jitter.
|
|
30
|
-
* (Phase 2 held this target static, which kept a moving subject framed only
|
|
31
|
-
* while it stayed near the centroid; Phase 3 lets the hold glide to re-
|
|
32
|
-
* contain the subject when it walks.)
|
|
33
|
-
*
|
|
34
|
-
* The per-subject `face_box_series` the floor reads is produced UNCHANGED by
|
|
35
|
-
* `perSubjectSeries` — this module only chooses WHERE the camera points.
|
|
36
|
-
*/
|
|
37
1
|
import type { FaceBox } from '../../../perception/index.js';
|
|
38
|
-
/** A normalized crop center `[cx, cy]` in [0,1] vs source dims. */
|
|
39
2
|
export type Center = [number, number];
|
|
40
|
-
/** A source-normalized axis-aligned box `[x1, y1, x2, y2]` ∈ [0,1]. */
|
|
41
3
|
export type NormBox = [number, number, number, number];
|
|
42
|
-
/** The selection result for one segment's `all-faces` path. */
|
|
43
4
|
export interface SubjectSetResult {
|
|
44
|
-
/** Per-frame crop target (the basis for `centers`). For `all-faces` this is
|
|
45
|
-
* the per-frame framed-group centroid — the basis Phase 3's cameraPath
|
|
46
|
-
* smooths into a tracking glide. (Phase 2 held it static; Phase 3 lets the
|
|
47
|
-
* camera follow a walking subject because this now varies per frame.) */
|
|
48
5
|
centers: Center[];
|
|
49
|
-
/** Per-frame UNION bbox of the framed members PRESENT this frame (after the
|
|
50
|
-
* membership hysteresis), source-normalized `[x1,y1,x2,y2]`, or null when no
|
|
51
|
-
* framed member is present (occlusion / between-shot gap). This is the
|
|
52
|
-
* RequiredRegion source: Phase 3 lowers it to the padded box the crop must
|
|
53
|
-
* contain so the subject can never walk out of frame. */
|
|
54
6
|
perFrameBoxes: Array<NormBox | null>;
|
|
55
|
-
/** The tracker ids chosen as the framed set (top-K by dominance). For
|
|
56
|
-
* diagnostics / the per-subject floor series (which is produced separately
|
|
57
|
-
* but lists the SAME framed ids). Empty when no face survives the gate. */
|
|
58
7
|
framedIds: string[];
|
|
59
|
-
/** How many frames the framed set was present in (≥1 member) — feeds the
|
|
60
|
-
* segment-level resolution accounting (so `all-faces` on a faceless clip
|
|
61
|
-
* center-holds, the documented outcome, rather than throwing). */
|
|
62
8
|
resolvedFrames: number;
|
|
63
9
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Select the stable subject set for an `all-faces` segment and emit the per-
|
|
66
|
-
* frame crop target. Pure over the segment-local slice.
|
|
67
|
-
*
|
|
68
|
-
* Empty locked set (no face survives the gate — a faceless / crowd-only clip) →
|
|
69
|
-
* center-hold (`[0.5,0.5]` every frame), a DEFINED outcome, never a throw
|
|
70
|
-
* (per spec fail-loud invariants).
|
|
71
|
-
*/
|
|
72
10
|
export declare function selectSubjectSet(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, fps: number, perKeyframeSpeaker: Map<number, string>, interiorCuts: Iterable<number>): SubjectSetResult;
|
|
73
|
-
/** How the single chosen subject is resolved per frame. `authoredFaceId` is the
|
|
74
|
-
* agent's `face` pick (a `face-N` id); `null` means active-speaker (resolve via
|
|
75
|
-
* the per-keyframe speaker, then degrade to the largest face). */
|
|
76
11
|
export type SingleSubjectPick = {
|
|
77
12
|
kind: 'face';
|
|
78
13
|
authoredFaceId: string;
|
|
79
14
|
} | {
|
|
80
15
|
kind: 'active-speaker';
|
|
81
16
|
};
|
|
82
|
-
/** The per-frame chosen-subject box series for a `topK=1` segment (face /
|
|
83
|
-
* active-speaker). The box is the chosen subject's source-normalized extent
|
|
84
|
-
* `[x1,y1,x2,y2]`, or null when the chosen subject is absent this frame
|
|
85
|
-
* (occlusion / between-shot gap) — `cameraPath` forward-fills the last in-shot
|
|
86
|
-
* region across a brief gap and center-holds a shot with no subject at all. */
|
|
87
17
|
export interface SingleSubjectResult {
|
|
88
|
-
/** Per-frame chosen-subject box (source-normalized) or null when absent. */
|
|
89
18
|
perFrameBoxes: Array<NormBox | null>;
|
|
90
|
-
/** How many frames the chosen subject was actually resolved (a non-null box) —
|
|
91
|
-
* feeds the `MIN_SUBJECT_RESOLUTION` fail-loud gate for an authored `face`. */
|
|
92
19
|
resolvedFrames: number;
|
|
93
20
|
}
|
|
94
|
-
/**
|
|
95
|
-
* The `topK=1` subjects adapter for `face` / `active-speaker`. Per frame, resolve
|
|
96
|
-
* the single chosen subject and emit its source-normalized box. Pure over the
|
|
97
|
-
* segment-local slice.
|
|
98
|
-
*
|
|
99
|
-
* - `face` (authored id): the box of that STABLE tracker id this frame; absent →
|
|
100
|
-
* null (no silent snap to a different person — the roster rule). The empty /
|
|
101
|
-
* non-`face-` sentinel id resolves to the largest face (legacy callers).
|
|
102
|
-
* - `active-speaker`: the box of the per-keyframe speaker pick when tracked this
|
|
103
|
-
* frame; otherwise the largest face this frame (the ASD degrade, mirror of
|
|
104
|
-
* `deriveSegment`'s active-speaker path).
|
|
105
|
-
*/
|
|
106
21
|
export declare function selectSingleSubjectBoxes(perFrameTracked: Array<Record<string, FaceBox>>, srcW: number, srcH: number, perKeyframeSpeaker: Map<number, string>, pick: SingleSubjectPick, nearestSpeaker: (frame: number) => string | null): SingleSubjectResult;
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* select/errorCodes.ts — the Selector error vocabulary, as VALUES.
|
|
3
|
-
*
|
|
4
|
-
* Every code the Selector core / adapters / lowerings can throw (now or in a
|
|
5
|
-
* later phase) is listed here as a literal value, and the registry-membership CI
|
|
6
|
-
* test (`__tests__/selectorErrorRegistry.test.ts`) imports THIS list and asserts
|
|
7
|
-
* each exists in `@cueframe/errors`'s `ERROR_CODES`. Importing the codes as VALUES
|
|
8
|
-
* (not grepping literals) means a template/variable code can't slip past — an
|
|
9
|
-
* unregistered code would make the CFERR decode fall back to `internal_error` and
|
|
10
|
-
* 500 (the `clip_source_track_mismatch` landmine).
|
|
11
|
-
*
|
|
12
|
-
* Phase 1 (this phase) registers all of these even though only the CORE codes
|
|
13
|
-
* (`selector_signal_absent`, `selector_override_conflict`) are thrown today; the
|
|
14
|
-
* adapter/lowering codes (`selector_timebase_undefined`, `selector_group_unsynced`,
|
|
15
|
-
* `selector_segment_out_of_media`) are thrown by the Phase-2 switch adapters and
|
|
16
|
-
* are registered now so they can never 500 when that phase lands. Phase 3
|
|
17
|
-
* (active-speaker) adds `selector_speaking_double_count` — the structural double-
|
|
18
|
-
* count guard (§11-L5): weighting both `activeSpeaker` and `speaking` fails loud.
|
|
19
|
-
* Phase 6 (cross-source identity) adds `selector_identity_detector_version_mismatch`
|
|
20
|
-
* — a `lockPersonId` match over a STALE-detector-version embedding fails loud (the
|
|
21
|
-
* 3-stamp lesson: a person-lock cosine over embeddings from a different
|
|
22
|
-
* `DETECTOR_VERSION` than the reference is meaningless; refuse rather than guess).
|
|
23
|
-
*/
|
|
24
|
-
/** The error codes the Selector layer is allowed to throw. Each MUST be a row in
|
|
25
|
-
* `@cueframe/errors` `ERROR_CODES` (asserted in CI). */
|
|
26
1
|
export declare const SELECTOR_ERROR_CODES: readonly ["selector_signal_absent", "selector_override_conflict", "selector_timebase_undefined", "selector_group_unsynced", "selector_segment_out_of_media", "selector_speaking_double_count", "selector_identity_detector_version_mismatch"];
|
|
27
2
|
export type SelectorErrorCode = (typeof SELECTOR_ERROR_CODES)[number];
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @cueframe/core/select — the durable Selector core (selector-abstraction spec).
|
|
3
|
-
*
|
|
4
|
-
* The candidate-agnostic data model + the ~40-line `select()` scoring contract +
|
|
5
|
-
* the per-kind `stabilize` seam. Reframe is its first instance (the subjects
|
|
6
|
-
* adapter lives in `render/vcam/subjectSet.ts`, which calls `scoreAndRank` +
|
|
7
|
-
* `stabilizeSelectionHysteresis` and lowers via the sealed `cameraPath`).
|
|
8
|
-
*
|
|
9
|
-
* Switch (Phase 2) is the second instance — same core, new candidate adapter +
|
|
10
|
-
* the incumbent-challenger/presence-gate stabilizers + the cut/overlay lowering.
|
|
11
|
-
*/
|
|
12
1
|
export type { SignalKey, Signal, CandidateSignals, Candidate, CandidateTimebase, CoreCandidate, WhenClause, EligibilityClause, SelectorRule, OverrideSpan, SelectorPolicy, Chosen, CandidateScore, PacingNote, SelectorSegment, Advisory, } from './model.js';
|
|
13
2
|
export { HOLD } from './model.js';
|
|
14
3
|
export { select, scoreAndRank, type SelectOptions } from './select.js';
|
|
15
4
|
export { stabilizeSelectionHysteresis, stabilizeIncumbentChallenger, stabilizePresenceGate, cameraPath, type StabilizerKind, type SelectionHysteresisParams, type SelectionHysteresisResult, type IncumbentChallengerParams, type IncumbentChallengerResult, type SuppressedSwitch, type PresenceGateParams, type PresenceWindow, type CropWindow, } from './stabilize.js';
|
|
16
5
|
export { SELECTOR_ERROR_CODES, type SelectorErrorCode } from './errorCodes.js';
|
|
17
|
-
/** The default prominence weights — vcam's `DOMINANCE_WEIGHTS`, re-exported as the
|
|
18
|
-
* canonical "dominant-subject" `policy.weights` for the SCORE combinator. The
|
|
19
|
-
* switch instance's video-on-prominence path uses these directly (spec §9.1 P2 —
|
|
20
|
-
* "video-switch on prominence = vcam dominance, exists"); reframe uses the same
|
|
21
|
-
* constant. Re-exporting it here keeps the scoring default in the select surface.
|
|
22
|
-
* (This import is in index.ts, NOT select.ts — the rot-guard scans select.ts.) */
|
|
23
6
|
export { DOMINANCE_WEIGHTS } from '../render/vcam/constants.js';
|
|
24
|
-
/** The Selector engine version (spec §8). DISTINCT from BAKE_VERSION (the crop
|
|
25
|
-
* lowering stamp) and the per-signal stamps. Bump when the scoring/stabilizer
|
|
26
|
-
* math changes in a way that changes the Advisory for fixed inputs. */
|
|
27
7
|
export declare const SELECTOR_VERSION = "selector-core-v1-2026.06.21";
|
|
@@ -1,57 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* select/model.ts — the candidate-agnostic data model for the Selector core.
|
|
3
|
-
*
|
|
4
|
-
* Four nouns (selector-abstraction spec §1): Candidate, Signal, SelectorPolicy,
|
|
5
|
-
* Advisory. The CORE (`select.ts`) scores over these and reads ONLY `candidateId`,
|
|
6
|
-
* `Signal.value/confidence`, and `policy` — NEVER `Candidate.kind`,
|
|
7
|
-
* `Candidate.timebase`, or any geometry (the §8 rot-guard, enforced by a test AND
|
|
8
|
-
* by `select()` receiving a projected `CoreCandidate`, not the full `Candidate`).
|
|
9
|
-
*
|
|
10
|
-
* Plain TS (no zod): the core package has no zod dependency and the vcam math it
|
|
11
|
-
* generalizes is plain TS. The spec's zod schemas describe the SHAPE; the fail-
|
|
12
|
-
* loud invariants live in `select.ts` as explicit guards (no silent fallbacks —
|
|
13
|
-
* `feedback_never_add_fallbacks`).
|
|
14
|
-
*/
|
|
15
|
-
/** The canonical sparse signal keys (selector-abstraction spec §1.2). Adding a
|
|
16
|
-
* signal = add a key + a provider + a weight; the CORE never changes. Reframe
|
|
17
|
-
* populates the geometric/instantaneous set; switch populates a DISJOINT set
|
|
18
|
-
* (L3 — shared container + combinator, not a shared vocabulary). There is NO
|
|
19
|
-
* `prominence` key: prominence is the SCORE, not a signal (§2/L5). */
|
|
20
1
|
export type SignalKey = 'size' | 'centrality' | 'persistence' | 'speaking' | 'activeSpeaker' | 'audioEnergy' | 'audioQuality' | 'topicRelevance' | 'scriptCue' | 'reaction' | 'visualQuality' | 'screenActivity' | 'energyBeat';
|
|
21
|
-
/** A per-candidate, per-moment ABSOLUTE calibrated scalar from a pluggable
|
|
22
|
-
* provider (spec §1.2). Sparse — an unmeasured signal is ABSENT (the key is
|
|
23
|
-
* missing), never zero. `value` is source-INDEPENDENT, NEVER softmax-across-
|
|
24
|
-
* candidates (G9). */
|
|
25
2
|
export interface Signal {
|
|
26
|
-
/** ABSOLUTE, calibrated, source-independent ∈ [0,1]. */
|
|
27
3
|
value: number;
|
|
28
|
-
/** Pre-calibration raw, for legibility + recalibration audits. */
|
|
29
4
|
rawScore?: number;
|
|
30
|
-
/** ∈ [0,1]; default 1. Scales the weighted contribution. */
|
|
31
5
|
confidence?: number;
|
|
32
|
-
/** Reasons-only ("speaking 0.91, 2 faces"); EXCLUDED from every hash. */
|
|
33
6
|
evidence?: string;
|
|
34
7
|
}
|
|
35
|
-
/** The sparse signal envelope for one candidate at one moment. Only relevant
|
|
36
|
-
* providers populate a key; an absent key means NOT MEASURED. */
|
|
37
8
|
export type CandidateSignals = Partial<Record<SignalKey, Signal>>;
|
|
38
|
-
/** A selectable entity over time (spec §1.1). `kind`/`timebase`/`mediaId` are
|
|
39
|
-
* read ONLY by adapters (candidate-building, continuity, lowering), NEVER by the
|
|
40
|
-
* core. `candidateId` is STABLE + OPAQUE; an unknown id is rejected downstream,
|
|
41
|
-
* never remapped. */
|
|
42
9
|
export interface Candidate {
|
|
43
10
|
candidateId: string;
|
|
44
|
-
/** Read ONLY by adapters, NEVER by the core (the rot-guard invariant). */
|
|
45
11
|
kind: 'subject' | 'source' | 'broll';
|
|
46
|
-
/** Time mapping onto the SHARED grid. The adapter resolves every timebase onto
|
|
47
|
-
* the grid BEFORE the core scores, so the core treats time as already-aligned
|
|
48
|
-
* and never reads `timebase.mode` (L4). */
|
|
49
12
|
timebase: CandidateTimebase;
|
|
50
|
-
/** Agent-declared semantic tag ("wide"/"screen"/"webcam"/"library"). */
|
|
51
13
|
role?: string;
|
|
52
|
-
/** source/broll resolve to a MediaClipSource at author time. */
|
|
53
14
|
mediaId?: string;
|
|
54
|
-
/** Agent-legible; EXCLUDED from every hash. */
|
|
55
15
|
label?: string;
|
|
56
16
|
}
|
|
57
17
|
export type CandidateTimebase = {
|
|
@@ -64,20 +24,10 @@ export type CandidateTimebase = {
|
|
|
64
24
|
sourceInSec: number;
|
|
65
25
|
sourceOutSec: number;
|
|
66
26
|
};
|
|
67
|
-
/** The projection the CORE actually receives — `select()` is typed against THIS,
|
|
68
|
-
* not the full `Candidate`, so it STRUCTURALLY cannot read `kind`/`timebase`/
|
|
69
|
-
* geometry (the rot-guard is a type, not a hope; spec §8). The adapter does the
|
|
70
|
-
* projection. */
|
|
71
27
|
export interface CoreCandidate {
|
|
72
|
-
/** OPAQUE stable id — the ONLY candidate field the core may read. */
|
|
73
28
|
id: string;
|
|
74
|
-
/** Per-moment sparse signals over the timeline grid. `signals[t]` is the
|
|
75
|
-
* envelope at grid tick `t`. */
|
|
76
29
|
signals: CandidateSignals[];
|
|
77
30
|
}
|
|
78
|
-
/** A declarative clause over a candidate's signals/role at a moment (eligibility
|
|
79
|
-
* + rules). An eligibility gate is AND-of-clauses; a candidate failing it is not
|
|
80
|
-
* scorable that moment (spec §1.3). */
|
|
81
31
|
export interface WhenClause {
|
|
82
32
|
signal?: SignalKey;
|
|
83
33
|
gte?: number;
|
|
@@ -96,73 +46,45 @@ export interface SelectorRule {
|
|
|
96
46
|
boost?: number;
|
|
97
47
|
force?: boolean;
|
|
98
48
|
};
|
|
99
|
-
/** EXCLUDED from hash. */
|
|
100
49
|
intent?: string;
|
|
101
50
|
}
|
|
102
|
-
/** A hard span pin (override ladder tier 0). */
|
|
103
51
|
export interface OverrideSpan {
|
|
104
52
|
startSec: number;
|
|
105
53
|
endSec: number;
|
|
106
54
|
candidateId: string;
|
|
107
55
|
}
|
|
108
|
-
/** The director's taste + stabilizer knobs (spec §1.3). `weights` is
|
|
109
|
-
* `DOMINANCE_WEIGHTS` made agent-supplied; `topK` selects a membership set
|
|
110
|
-
* (>1 = reframe set, 1 = switch pick). */
|
|
111
56
|
export interface SelectorPolicy {
|
|
112
|
-
/** sparse; THE taste knob. Σ weights·signal. */
|
|
113
57
|
weights: Partial<Record<SignalKey, number>>;
|
|
114
|
-
/** absolute per-signal floor → `__hold__` below it. */
|
|
115
58
|
floor?: Partial<Record<SignalKey, number>>;
|
|
116
|
-
/** multi-signal AND/OR gate (NOT a per-signal floor — §2 passesGate). */
|
|
117
59
|
eligibility?: EligibilityClause[];
|
|
118
|
-
/** declarative "prefer X when Y". */
|
|
119
60
|
rules?: SelectorRule[];
|
|
120
|
-
/** 1 = pick one; >1 = membership set (reframe top-K). */
|
|
121
61
|
topK: number;
|
|
122
|
-
/** the OVERRIDE LADDER — ONE ordered eval (spec §1.4 step 1). */
|
|
123
62
|
overrides?: OverrideSpan[];
|
|
124
|
-
/** HONEST: pin a CAMERA/candidate (NOT a person). */
|
|
125
63
|
lockSourceId?: string;
|
|
126
|
-
/** null until cross-source identity ships. */
|
|
127
64
|
lockPersonId?: string | null;
|
|
128
|
-
/** free-text; EXCLUDED from hash. */
|
|
129
65
|
intent?: string;
|
|
130
66
|
}
|
|
131
|
-
/** The held/abstain sentinel — first-class, not a magic empty (spec §1.4 step 3).
|
|
132
|
-
* Lowers per kind: sources → stay on incumbent/primary, no cut; subjects →
|
|
133
|
-
* center-hold the crop. */
|
|
134
67
|
export declare const HOLD: "__hold__";
|
|
135
68
|
export type Chosen = string | typeof HOLD;
|
|
136
69
|
export interface CandidateScore {
|
|
137
70
|
candidateId: string;
|
|
138
71
|
score: number;
|
|
139
|
-
/** signalKey → weighted contribution (legibility — the agent reweights from
|
|
140
|
-
* evidence). */
|
|
141
72
|
contributions: Partial<Record<SignalKey, number>>;
|
|
142
73
|
}
|
|
143
|
-
/** Which ladder tier / mechanism produced the choice (legibility). */
|
|
144
74
|
export type PacingNote = 'argmax' | 'min-hold' | 'cooldown' | 'hysteresis' | 'gate-snap' | 'rule' | 'override' | 'lock' | 'hold';
|
|
145
75
|
export interface SelectorSegment {
|
|
146
76
|
startSec: number;
|
|
147
77
|
endSec: number;
|
|
148
|
-
/** candidateId | abstain. */
|
|
149
78
|
chosen: Chosen;
|
|
150
|
-
/** topK>1 membership set (reframe; the lowering unions it). */
|
|
151
79
|
alsoChosen: string[];
|
|
152
|
-
/** sorted desc by score. */
|
|
153
80
|
perCandidateScores: CandidateScore[];
|
|
154
81
|
reasons: string[];
|
|
155
82
|
pacingNote?: PacingNote;
|
|
156
83
|
}
|
|
157
|
-
/** The DERIVED, read-only advisory (spec §1.4). Keyed to envelope+policy, NEVER
|
|
158
|
-
* to the authored composition; never auto-applied. */
|
|
159
84
|
export interface Advisory {
|
|
160
85
|
advisoryVersion: 1;
|
|
161
86
|
selectorVersion: string;
|
|
162
|
-
/** non-overlapping, tile the timeline. */
|
|
163
87
|
segments: SelectorSegment[];
|
|
164
|
-
/** discrete-instance surfacing only (continuous instances leave empty +
|
|
165
|
-
* populate holdSpans). Phase 2 (switch). */
|
|
166
88
|
suppressedSwitches: Array<{
|
|
167
89
|
atSec: number;
|
|
168
90
|
wouldHaveBeenCandidateId: string;
|
|
@@ -170,7 +92,6 @@ export interface Advisory {
|
|
|
170
92
|
blockedBy: string;
|
|
171
93
|
releaseAtSec: number;
|
|
172
94
|
}>;
|
|
173
|
-
/** continuous-instance deadzone holds (reframe). */
|
|
174
95
|
holdSpans: Array<{
|
|
175
96
|
startSec: number;
|
|
176
97
|
endSec: number;
|
|
@@ -1,59 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* select/select.ts — THE durable Selector core (~40 lines of selection logic).
|
|
3
|
-
*
|
|
4
|
-
* `select(candidates, policy, opts) → Advisory`: a candidate-agnostic
|
|
5
|
-
* `score → stabilize-selection → advise` contract (selector-abstraction spec
|
|
6
|
-
* §1.4). It is the generalization of vcam's `dominance()` ranking (§2): a
|
|
7
|
-
* weighted-sum combinator + an eligibility-gate predicate + topK membership + a
|
|
8
|
-
* first-class `__hold__`/abstain + the override ladder + reasons surfacing.
|
|
9
|
-
*
|
|
10
|
-
* THE ROT-GUARD (spec §8, the most important invariant): this module reads ONLY
|
|
11
|
-
* `CoreCandidate.id`, `CandidateSignals[*].value/confidence`, and `policy` — it
|
|
12
|
-
* NEVER references `Candidate.kind`, `Candidate.timebase`, or any geometry. It is
|
|
13
|
-
* typed against `CoreCandidate` (id + signals), NOT the full `Candidate`, so the
|
|
14
|
-
* adapter MUST do the projection and the core STRUCTURALLY cannot branch on kind.
|
|
15
|
-
* A structural test (`__tests__/rotGuard.test.ts`) asserts this module imports no
|
|
16
|
-
* geometry/kind types and references none of those fields.
|
|
17
|
-
*
|
|
18
|
-
* The selection STABILIZER (continuity over time) is NOT here — it is a per-kind
|
|
19
|
-
* seam (`stabilize.ts`): `select()` produces the per-moment scored advisory; the
|
|
20
|
-
* stabilizer (selection-hysteresis | geometric-deadzone | …) is dispatched per
|
|
21
|
-
* kind by the adapter. This split is L1 of the spec, stated honestly.
|
|
22
|
-
*
|
|
23
|
-
* Pure, deterministic. No I/O, no Date.now, no Map-order reads in the math.
|
|
24
|
-
*/
|
|
25
1
|
import type { CoreCandidate, SelectorPolicy, SignalKey, CandidateScore, SelectorSegment } from './model.js';
|
|
26
2
|
export interface SelectOptions {
|
|
27
|
-
/** Grid tick length in seconds — each tick `t` becomes one [t·dt,(t+1)·dt)
|
|
28
|
-
* micro-segment before the stabilizer coalesces. */
|
|
29
3
|
dtSec: number;
|
|
30
|
-
/** Number of grid ticks (the timeline length). */
|
|
31
4
|
ticks: number;
|
|
32
5
|
selectorVersion: string;
|
|
33
6
|
}
|
|
34
|
-
/**
|
|
35
|
-
* The core selection over an already-aligned grid. Produces a per-TICK scored
|
|
36
|
-
* advisory (one `SelectorSegment` per tick, tiling the timeline). The per-kind
|
|
37
|
-
* stabilizer (`stabilize.ts`) then coalesces ticks under hysteresis/deadzone and
|
|
38
|
-
* surfaces holds — this function is the SCORE half only.
|
|
39
|
-
*
|
|
40
|
-
* Override ladder (spec §1.4 step 1, ONE ordered evaluation):
|
|
41
|
-
* tier 0 overrides[] (hard span pin) > tier 1 lock* > tier 2 force rule >
|
|
42
|
-
* tier 3 weighted score + eligibility + floor/__hold__.
|
|
43
|
-
* A SAME-TIER conflict (two overlapping overrides, or two firing force rules at
|
|
44
|
-
* one tick) FAILS LOUD (`selector_override_conflict` — the Gap.strict() lesson).
|
|
45
|
-
*/
|
|
46
7
|
export declare function select(candidates: CoreCandidate[], policy: SelectorPolicy, opts: SelectOptions): SelectorSegment[];
|
|
47
|
-
/**
|
|
48
|
-
* The shared scoring COMBINATOR as a pure ONE-SHOT ranking primitive — the
|
|
49
|
-
* durable `Σ weights·signal` win (spec §2). Both the per-tick `select()` (switch)
|
|
50
|
-
* and the reframe's segment-wide pool ranking call this, so there is ONE scoring
|
|
51
|
-
* implementation. `weightKeys` is the CALLER's iteration order: the reframe
|
|
52
|
-
* subjects adapter passes `{size,centrality,persistence,speaking}` in vcam's
|
|
53
|
-
* `DOMINANCE_WEIGHTS` order, so the float sum is byte-identical to `dominance()`.
|
|
54
|
-
*
|
|
55
|
-
* Reads ONLY `id` + `signals.value/confidence` + `weights` — the rot-guard holds.
|
|
56
|
-
*/
|
|
57
8
|
export declare function scoreAndRank(candidates: Array<{
|
|
58
9
|
id: string;
|
|
59
10
|
signals: Partial<Record<SignalKey, {
|