@cueframe/kernel 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TextureLoader-UQOFUSAP.js +422 -0
- package/dist/VideoTexture-AQWSPIJG.js +62 -0
- package/dist/_members/account-model/index.d.ts +1 -0
- package/dist/_members/account-model/index.js +4 -0
- package/dist/_members/account-model/testing/conversationStoreContract.d.ts +97 -0
- package/dist/_members/account-model/testing/conversationStoreContract.js +168 -0
- package/dist/_members/account-model/testing/index.d.ts +7 -0
- package/dist/_members/account-model/testing/index.js +7 -0
- package/dist/_members/account-model/testing/restorePointStoreContract.d.ts +52 -0
- package/dist/_members/account-model/testing/restorePointStoreContract.js +69 -0
- package/dist/_members/account-model/types/index.d.ts +5 -0
- package/dist/_members/account-model/types/index.js +1 -0
- package/dist/_members/account-model/validators/contextFile.d.ts +36 -0
- package/dist/_members/account-model/validators/contextFile.js +18 -0
- package/dist/_members/account-model/validators/conversation.d.ts +153 -0
- package/dist/_members/account-model/validators/conversation.js +95 -0
- package/dist/_members/account-model/validators/dashboardInsight.d.ts +30 -0
- package/dist/_members/account-model/validators/dashboardInsight.js +16 -0
- package/dist/_members/account-model/validators/index.d.ts +7 -0
- package/dist/_members/account-model/validators/index.js +7 -0
- package/dist/_members/account-model/validators/sessionToken.d.ts +79 -0
- package/dist/_members/account-model/validators/sessionToken.js +49 -0
- package/dist/_members/account-model/validators/uploadToken.d.ts +33 -0
- package/dist/_members/account-model/validators/uploadToken.js +16 -0
- package/dist/_members/account-model/validators/userSettings.d.ts +22 -0
- package/dist/_members/account-model/validators/userSettings.js +12 -0
- package/dist/_members/account-model/validators/workingComposition.d.ts +34 -0
- package/dist/_members/account-model/validators/workingComposition.js +20 -0
- package/dist/_members/animate/animations/Create.d.ts +36 -0
- package/dist/_members/animate/animations/FadeIn.d.ts +36 -0
- package/dist/_members/animate/animations/GrowArrow.d.ts +36 -0
- package/dist/_members/animate/animations/GrowFromCenter.d.ts +25 -0
- package/dist/_members/animate/animations/Indicate.d.ts +29 -0
- package/dist/_members/animate/animations/MoveAlongPath.d.ts +30 -0
- package/dist/_members/animate/animations/Transform.d.ts +46 -0
- package/dist/_members/animate/animations/Wiggle.d.ts +31 -0
- package/dist/_members/animate/animations/Write.d.ts +35 -0
- package/dist/_members/animate/animations/index.d.ts +9 -0
- package/dist/_members/animate/composition/AnimationGroup.d.ts +32 -0
- package/dist/_members/animate/composition/LaggedStart.d.ts +33 -0
- package/dist/_members/animate/composition/Succession.d.ts +27 -0
- package/dist/_members/animate/composition/index.d.ts +3 -0
- package/dist/_members/animate/easing/index.d.ts +3 -0
- package/dist/_members/animate/easing/rush.d.ts +16 -0
- package/dist/_members/animate/easing/smooth.d.ts +8 -0
- package/dist/_members/animate/easing/smootherstep.d.ts +7 -0
- package/dist/_members/animate/index.d.ts +25 -0
- package/dist/_members/animate/mobjects/Arrow.d.ts +41 -0
- package/dist/_members/animate/mobjects/BrandBox.d.ts +43 -0
- package/dist/_members/animate/mobjects/DiGraph.d.ts +21 -0
- package/dist/_members/animate/mobjects/Graph.d.ts +72 -0
- package/dist/_members/animate/mobjects/index.d.ts +4 -0
- package/dist/_members/animate/three/ThreeCanvas.d.ts +36 -0
- package/dist/_members/animate/three/drei.d.ts +13 -0
- package/dist/_members/animate/three/index.d.ts +2 -0
- package/dist/_members/authoring/agent/buildTools.d.ts +54 -0
- package/dist/_members/authoring/agent/contextManagement.d.ts +73 -0
- package/dist/_members/authoring/agent/errors.d.ts +12 -0
- package/dist/_members/authoring/agent/index.d.ts +2 -0
- package/dist/_members/authoring/agent/memoryTool.d.ts +8 -0
- package/dist/_members/authoring/agent/promptCache.d.ts +34 -0
- package/dist/_members/authoring/agent.d.ts +59 -0
- package/dist/_members/authoring/capabilities.d.ts +306 -0
- package/dist/_members/authoring/composer/index.d.ts +2 -0
- package/dist/_members/authoring/composer/scopes.d.ts +26 -0
- package/dist/_members/authoring/context/brand.d.ts +37 -0
- package/dist/_members/authoring/context/brandTokens.d.ts +6 -0
- package/dist/_members/authoring/context/index.d.ts +8 -0
- package/dist/_members/authoring/context/timeline.d.ts +33 -0
- package/dist/_members/authoring/context/transcript.d.ts +24 -0
- package/dist/_members/authoring/context/types.d.ts +5 -0
- package/dist/_members/authoring/decomposer.d.ts +17 -0
- package/dist/_members/authoring/evaluate.d.ts +37 -0
- package/dist/_members/authoring/evaluator.d.ts +22 -0
- package/dist/_members/authoring/index.d.ts +25 -0
- package/dist/_members/authoring/models/modelFactory.d.ts +107 -0
- package/dist/_members/authoring/motion/applyMotionPreset.d.ts +31 -0
- package/dist/_members/authoring/motion/index.d.ts +6 -0
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +38 -0
- package/dist/_members/authoring/motion/shell.d.ts +30 -0
- package/dist/_members/authoring/pipelineTrace.d.ts +38 -0
- package/dist/_members/authoring/prompts/decomposerPrompt.d.ts +5 -0
- package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +18 -0
- package/dist/_members/authoring/prompts/evaluatorPrompt.d.ts +5 -0
- package/dist/_members/authoring/prompts/graphics.d.ts +14 -0
- package/dist/_members/authoring/prompts/index.d.ts +4 -0
- package/dist/_members/authoring/prompts/plannerPrompt.d.ts +48 -0
- package/dist/_members/authoring/providers/index.d.ts +1 -0
- package/dist/_members/authoring/providers/resourceApi.d.ts +32 -0
- package/dist/_members/authoring/resource-routing.d.ts +186 -0
- package/dist/_members/authoring/resources.d.ts +59 -0
- package/dist/_members/authoring/scope.d.ts +31 -0
- package/dist/_members/authoring/tools/brandTokens.d.ts +34 -0
- package/dist/_members/authoring/tools/composeRoleTools.d.ts +112 -0
- package/dist/_members/authoring/tools/index.d.ts +4 -0
- package/dist/_members/authoring/tools/toolSets.d.ts +54 -0
- package/dist/_members/authoring/transpileComponent.d.ts +40 -0
- package/dist/_members/authoring/transpileHelper.d.ts +26 -0
- package/dist/_members/authoring/types.d.ts +572 -0
- package/dist/_members/brand-derivation/constants.d.ts +27 -0
- package/dist/_members/brand-derivation/constants.js +20 -0
- package/dist/_members/brand-derivation/contrastSafe.d.ts +47 -0
- package/dist/_members/brand-derivation/contrastSafe.js +114 -0
- package/dist/_members/brand-derivation/index.d.ts +1 -0
- package/dist/_members/brand-derivation/index.js +1 -0
- package/dist/_members/compose/CompositionRenderer.d.ts +12 -0
- package/dist/_members/compose/catalog.d.ts +1 -0
- package/dist/_members/compose/index.d.ts +8 -0
- package/dist/_members/compose/primitiveRegistry.d.ts +90 -0
- package/dist/_members/compose/sceneToRenderInput.d.ts +51 -0
- package/dist/_members/compose/schema.d.ts +45 -0
- package/dist/_members/compose/tokenResolver.d.ts +28 -0
- package/dist/_members/composition/audio/audioMix.d.ts +67 -0
- package/dist/_members/composition/audio/audioMix.js +61 -0
- package/dist/_members/composition/audio/index.d.ts +5 -0
- package/dist/_members/composition/audio/index.js +5 -0
- package/dist/_members/composition/audio/mixStaging.d.ts +107 -0
- package/dist/_members/composition/audio/mixStaging.js +195 -0
- package/dist/_members/composition/audio/musicPack.d.ts +56 -0
- package/dist/_members/composition/audio/musicPack.generated.d.ts +9 -0
- package/dist/_members/composition/audio/musicPack.generated.js +136 -0
- package/dist/_members/composition/audio/musicPack.js +36 -0
- package/dist/_members/composition/audio/pack.d.ts +67 -0
- package/dist/_members/composition/audio/pack.generated.d.ts +9 -0
- package/dist/_members/composition/audio/pack.generated.js +603 -0
- package/dist/_members/composition/audio/pack.js +48 -0
- package/dist/_members/composition/audio/palette.d.ts +82 -0
- package/dist/_members/composition/audio/palette.js +134 -0
- package/dist/_members/composition/autozoom/index.d.ts +57 -0
- package/dist/_members/composition/autozoom/index.js +83 -0
- package/dist/_members/composition/brand-kit.d.ts +58 -0
- package/dist/_members/composition/brand-kit.js +45 -0
- package/dist/_members/composition/brief/contract.d.ts +132 -0
- package/dist/_members/composition/brief/contract.js +209 -0
- package/dist/_members/composition/color-grade.d.ts +17 -0
- package/dist/_members/composition/color-grade.js +80 -0
- package/dist/_members/composition/depth.d.ts +24 -0
- package/dist/_members/composition/depth.js +8 -0
- package/dist/_members/composition/fixtures/agentErrored.d.ts +25 -0
- package/dist/_members/composition/fixtures/index.d.ts +7 -0
- package/dist/_members/composition/fixtures/index.js +143 -0
- package/dist/_members/composition/fixtures/vaayaErrored.d.ts +25 -0
- package/dist/_members/composition/fixtures/vaayaErrored.js +203 -0
- package/dist/_members/composition/fonts.d.ts +68 -0
- package/dist/_members/composition/fonts.js +162 -0
- package/dist/_members/composition/graphics-plan/compile.d.ts +43 -0
- package/dist/_members/composition/graphics-plan/compile.js +221 -0
- package/dist/_members/composition/graphics-plan/index.d.ts +11 -0
- package/dist/_members/composition/graphics-plan/index.js +10 -0
- package/dist/_members/composition/graphics-plan/instantiateMotif.d.ts +51 -0
- package/dist/_members/composition/graphics-plan/instantiateMotif.js +44 -0
- package/dist/_members/composition/graphics-plan/motion.d.ts +19 -0
- package/dist/_members/composition/graphics-plan/motion.js +66 -0
- package/dist/_members/composition/graphics-plan/schemas.d.ts +1672 -0
- package/dist/_members/composition/graphics-plan/schemas.js +261 -0
- package/dist/_members/composition/graphics-plan/solve.d.ts +34 -0
- package/dist/_members/composition/graphics-plan/solve.js +145 -0
- package/dist/_members/composition/index.d.ts +7 -0
- package/dist/_members/composition/index.js +5 -0
- package/dist/_members/composition/invariants/clipPlacement.d.ts +65 -0
- package/dist/_members/composition/invariants/clipPlacement.js +69 -0
- package/dist/_members/composition/invariants/composition.d.ts +9 -0
- package/dist/_members/composition/invariants/composition.js +28 -0
- package/dist/_members/composition/invariants/errors.d.ts +11 -0
- package/dist/_members/composition/invariants/errors.js +10 -0
- package/dist/_members/composition/invariants/etag.d.ts +10 -0
- package/dist/_members/composition/invariants/etag.js +38 -0
- package/dist/_members/composition/invariants/ids.d.ts +9 -0
- package/dist/_members/composition/invariants/ids.js +33 -0
- package/dist/_members/composition/invariants/index.d.ts +9 -0
- package/dist/_members/composition/invariants/index.js +9 -0
- package/dist/_members/composition/invariants/keyframes.d.ts +23 -0
- package/dist/_members/composition/invariants/keyframes.js +45 -0
- package/dist/_members/composition/invariants/markers.d.ts +9 -0
- package/dist/_members/composition/invariants/markers.js +29 -0
- package/dist/_members/composition/invariants/time.d.ts +22 -0
- package/dist/_members/composition/invariants/time.js +20 -0
- package/dist/_members/composition/invariants/tracks.d.ts +58 -0
- package/dist/_members/composition/invariants/tracks.js +304 -0
- package/dist/_members/composition/ops/compositionOps.d.ts +129 -0
- package/dist/_members/composition/ops/compositionOps.js +1056 -0
- package/dist/_members/composition/ops/headlessStore.d.ts +40 -0
- package/dist/_members/composition/ops/headlessStore.js +94 -0
- package/dist/_members/composition/ops/index.d.ts +6 -0
- package/dist/_members/composition/ops/index.js +4 -0
- package/dist/_members/composition/ops/selectors.d.ts +81 -0
- package/dist/_members/composition/ops/selectors.js +118 -0
- package/dist/_members/composition/ops/timeline-word.d.ts +24 -0
- package/dist/_members/composition/ops/timeline-word.js +1 -0
- package/dist/_members/composition/ops/transcript.d.ts +44 -0
- package/dist/_members/composition/ops/transcript.js +77 -0
- package/dist/_members/composition/ops/types.d.ts +145 -0
- package/dist/_members/composition/ops/types.js +16 -0
- package/dist/_members/composition/primitive-catalog/catalogQuery.d.ts +82 -0
- package/dist/_members/composition/primitive-catalog/catalogQuery.js +150 -0
- package/dist/_members/composition/primitive-catalog/disabled.d.ts +3 -0
- package/dist/_members/composition/primitive-catalog/disabled.js +32 -0
- package/dist/_members/composition/primitive-catalog/generated/meta.d.ts +2 -0
- package/dist/_members/composition/primitive-catalog/generated/meta.js +15161 -0
- package/dist/_members/composition/primitive-catalog/index.d.ts +28 -0
- package/dist/_members/composition/primitive-catalog/index.js +46 -0
- package/dist/_members/composition/primitive-catalog/paramValidation.d.ts +76 -0
- package/dist/_members/composition/primitive-catalog/paramValidation.js +231 -0
- package/dist/_members/composition/primitive-catalog/projection.d.ts +99 -0
- package/dist/_members/composition/primitive-catalog/projection.js +164 -0
- package/dist/_members/composition/primitive-catalog/types.d.ts +123 -0
- package/dist/_members/composition/primitive-catalog/types.js +14 -0
- package/dist/_members/composition/projection/behind-placement.d.ts +64 -0
- package/dist/_members/composition/projection/behind-placement.js +62 -0
- package/dist/_members/composition/projection/brandKit.d.ts +308 -0
- package/dist/_members/composition/projection/brandKit.js +482 -0
- package/dist/_members/composition/projection/cardTokens.d.ts +70 -0
- package/dist/_members/composition/projection/cardTokens.js +209 -0
- package/dist/_members/composition/projection/composition-floor.d.ts +349 -0
- package/dist/_members/composition/projection/composition-floor.js +582 -0
- package/dist/_members/composition/projection/cropProjection.d.ts +140 -0
- package/dist/_members/composition/projection/cropProjection.js +257 -0
- package/dist/_members/composition/projection/index.d.ts +7 -0
- package/dist/_members/composition/projection/index.js +7 -0
- package/dist/_members/composition/projection/occlusion-budget.d.ts +67 -0
- package/dist/_members/composition/projection/occlusion-budget.js +104 -0
- package/dist/_members/composition/projection/safe-zones.d.ts +38 -0
- package/dist/_members/composition/projection/safe-zones.js +99 -0
- package/dist/_members/composition/reframe/aspectLoss.d.ts +49 -0
- package/dist/_members/composition/reframe/aspectLoss.js +115 -0
- package/dist/_members/composition/reframe/coverage.d.ts +48 -0
- package/dist/_members/composition/reframe/coverage.js +62 -0
- package/dist/_members/composition/reframe/derive.d.ts +37 -0
- package/dist/_members/composition/reframe/derive.js +73 -0
- package/dist/_members/composition/reframe/index.d.ts +658 -0
- package/dist/_members/composition/reframe/index.js +109 -0
- package/dist/_members/composition/reframe/kenBurns.d.ts +43 -0
- package/dist/_members/composition/reframe/kenBurns.js +64 -0
- package/dist/_members/composition/reframe/shotScale.d.ts +118 -0
- package/dist/_members/composition/reframe/shotScale.js +176 -0
- package/dist/_members/composition/reframe/trajectory.d.ts +99 -0
- package/dist/_members/composition/reframe/trajectory.js +124 -0
- package/dist/_members/composition/timeline/compound.d.ts +36 -0
- package/dist/_members/composition/timeline/compound.js +134 -0
- package/dist/_members/composition/timeline/index.d.ts +9 -0
- package/dist/_members/composition/timeline/index.js +9 -0
- package/dist/_members/composition/timeline/intent.d.ts +54 -0
- package/dist/_members/composition/timeline/intent.js +228 -0
- package/dist/_members/composition/timeline/keyframes.d.ts +50 -0
- package/dist/_members/composition/timeline/keyframes.js +121 -0
- package/dist/_members/composition/timeline/link.d.ts +36 -0
- package/dist/_members/composition/timeline/link.js +59 -0
- package/dist/_members/composition/timeline/occupancy.d.ts +72 -0
- package/dist/_members/composition/timeline/occupancy.js +36 -0
- package/dist/_members/composition/timeline/placement.d.ts +86 -0
- package/dist/_members/composition/timeline/placement.js +74 -0
- package/dist/_members/composition/timeline/plan.d.ts +109 -0
- package/dist/_members/composition/timeline/plan.js +31 -0
- package/dist/_members/composition/timeline/resolve.d.ts +55 -0
- package/dist/_members/composition/timeline/resolve.js +170 -0
- package/dist/_members/composition/timeline/trims.d.ts +54 -0
- package/dist/_members/composition/timeline/trims.js +278 -0
- package/dist/_members/composition/types/index.d.ts +8 -0
- package/dist/_members/composition/types/index.js +1 -0
- package/dist/_members/composition/validators/brandKit.d.ts +1472 -0
- package/dist/_members/composition/validators/brandKit.js +295 -0
- package/dist/_members/composition/validators/composePlan.d.ts +960 -0
- package/dist/_members/composition/validators/composePlan.js +113 -0
- package/dist/_members/composition/validators/composition.d.ts +6881 -0
- package/dist/_members/composition/validators/composition.js +703 -0
- package/dist/_members/composition/validators/font.d.ts +114 -0
- package/dist/_members/composition/validators/font.js +34 -0
- package/dist/_members/composition/validators/graphicKinds.d.ts +32 -0
- package/dist/_members/composition/validators/graphicKinds.js +30 -0
- package/dist/_members/composition/validators/index.d.ts +9 -0
- package/dist/_members/composition/validators/index.js +9 -0
- package/dist/_members/composition/validators/project.d.ts +62 -0
- package/dist/_members/composition/validators/project.js +29 -0
- package/dist/_members/composition/validators/registry.d.ts +161 -0
- package/dist/_members/composition/validators/registry.js +41 -0
- package/dist/_members/composition/validators/render.d.ts +8274 -0
- package/dist/_members/composition/validators/render.js +139 -0
- package/dist/_members/composition/validators/session.d.ts +117 -0
- package/dist/_members/composition/validators/session.js +37 -0
- package/dist/_members/composition/validators/webhook.d.ts +83 -0
- package/dist/_members/composition/validators/webhook.js +72 -0
- package/dist/_members/composition-ops/alphaLayers.d.ts +70 -0
- package/dist/_members/composition-ops/alphaLayers.js +141 -0
- package/dist/_members/composition-ops/index.d.ts +4940 -0
- package/dist/_members/composition-ops/index.js +637 -0
- package/dist/_members/composition-ops/materializeGrid.d.ts +56 -0
- package/dist/_members/composition-ops/materializeGrid.js +99 -0
- package/dist/_members/composition-ops/opRecorder.d.ts +77 -0
- package/dist/_members/composition-ops/opRecorder.js +196 -0
- package/dist/_members/composition-ops/recordingStore.d.ts +23 -0
- package/dist/_members/composition-ops/recordingStore.js +14 -0
- package/dist/_members/composition-ops/replaceRegion.d.ts +65 -0
- package/dist/_members/composition-ops/replaceRegion.js +102 -0
- package/dist/_members/composition-ops/testFixtures.d.ts +19 -0
- package/dist/_members/composition-ops/testFixtures.js +19 -0
- package/dist/_members/core/index.d.ts +3 -0
- package/dist/_members/core/index.js +5 -0
- package/dist/_members/core/render/bookends.d.ts +62 -0
- package/dist/_members/core/render/bookends.js +53 -0
- package/dist/_members/core/render/captions.d.ts +65 -0
- package/dist/_members/core/render/captions.js +127 -0
- package/dist/_members/core/render/compositionRender.d.ts +190 -0
- package/dist/_members/core/render/compositionRender.js +1249 -0
- package/dist/_members/core/render/deriveTrajectory.d.ts +188 -0
- package/dist/_members/core/render/deriveTrajectory.js +889 -0
- package/dist/_members/core/render/emphasis.d.ts +13 -0
- package/dist/_members/core/render/emphasis.js +16 -0
- package/dist/_members/core/render/eval/cropBox.d.ts +88 -0
- package/dist/_members/core/render/eval/cropBox.js +139 -0
- package/dist/_members/core/render/eval/inclusion.d.ts +50 -0
- package/dist/_members/core/render/eval/inclusion.js +96 -0
- package/dist/_members/core/render/eval/index.d.ts +93 -0
- package/dist/_members/core/render/eval/index.js +146 -0
- package/dist/_members/core/render/eval/metrics.d.ts +50 -0
- package/dist/_members/core/render/eval/metrics.js +94 -0
- package/dist/_members/core/render/exportSettings.d.ts +40 -0
- package/dist/_members/core/render/exportSettings.js +65 -0
- package/dist/_members/core/render/index.d.ts +14 -0
- package/dist/_members/core/render/index.js +20 -0
- package/dist/_members/core/render/mapFaceToPerson.d.ts +39 -0
- package/dist/_members/core/render/mapFaceToPerson.js +73 -0
- package/dist/_members/core/render/types.d.ts +304 -0
- package/dist/_members/core/render/types.js +8 -0
- package/dist/_members/core/render/vcam/cameraPath.d.ts +51 -0
- package/dist/_members/core/render/vcam/cameraPath.js +248 -0
- package/dist/_members/core/render/vcam/constants.d.ts +113 -0
- package/dist/_members/core/render/vcam/constants.js +115 -0
- package/dist/_members/core/render/vcam/errorCodes.d.ts +30 -0
- package/dist/_members/core/render/vcam/errorCodes.js +39 -0
- package/dist/_members/core/render/vcam/framing.d.ts +90 -0
- package/dist/_members/core/render/vcam/framing.js +136 -0
- package/dist/_members/core/render/vcam/requiredRegion.d.ts +85 -0
- package/dist/_members/core/render/vcam/requiredRegion.js +137 -0
- package/dist/_members/core/render/vcam/shots.d.ts +45 -0
- package/dist/_members/core/render/vcam/shots.js +53 -0
- package/dist/_members/core/render/vcam/subjectSet.d.ts +106 -0
- package/dist/_members/core/render/vcam/subjectSet.js +388 -0
- package/dist/_members/core/select/errorCodes.d.ts +27 -0
- package/dist/_members/core/select/errorCodes.js +38 -0
- package/dist/_members/core/select/index.d.ts +27 -0
- package/dist/_members/core/select/index.js +26 -0
- package/dist/_members/core/select/model.d.ts +178 -0
- package/dist/_members/core/select/model.js +18 -0
- package/dist/_members/core/select/select.d.ts +63 -0
- package/dist/_members/core/select/select.js +244 -0
- package/dist/_members/core/select/stabilize.d.ts +145 -0
- package/dist/_members/core/select/stabilize.js +242 -0
- package/dist/_members/core/types.d.ts +84 -0
- package/dist/_members/core/types.js +7 -0
- package/dist/_members/errors/index.d.ts +1 -0
- package/dist/_members/errors/index.js +1 -0
- package/dist/_members/errors/registry.d.ts +708 -0
- package/dist/_members/errors/registry.js +560 -0
- package/dist/_members/foundation/codes/index.d.ts +31 -0
- package/dist/_members/foundation/codes/index.js +31 -0
- package/dist/_members/foundation/index.d.ts +2 -0
- package/dist/_members/foundation/index.js +2 -0
- package/dist/_members/foundation/primitives/index.d.ts +9 -0
- package/dist/_members/foundation/primitives/index.js +5 -0
- package/dist/_members/mcp/adapter.d.ts +138 -0
- package/dist/_members/mcp/adapter.js +771 -0
- package/dist/_members/mcp/burnedNames.d.ts +23 -0
- package/dist/_members/mcp/burnedNames.js +73 -0
- package/dist/_members/mcp/core.d.ts +158 -0
- package/dist/_members/mcp/core.js +390 -0
- package/dist/_members/mcp/curation.d.ts +155 -0
- package/dist/_members/mcp/curation.js +792 -0
- package/dist/_members/mcp/executor.d.ts +60 -0
- package/dist/_members/mcp/executor.js +142 -0
- package/dist/_members/mcp/format.d.ts +7 -0
- package/dist/_members/mcp/format.js +9 -0
- package/dist/_members/mcp/generated/catalogPreviews.d.ts +2 -0
- package/dist/_members/mcp/generated/catalogPreviews.js +95 -0
- package/dist/_members/mcp/generated/harness.d.ts +1 -0
- package/dist/_members/mcp/generated/harness.js +81 -0
- package/dist/_members/mcp/generated/operations.d.ts +41 -0
- package/dist/_members/mcp/generated/operations.js +131 -0
- package/dist/_members/mcp/index.d.ts +3 -0
- package/dist/_members/mcp/index.js +50 -0
- package/dist/_members/mcp/internalLoopTools.d.ts +25 -0
- package/dist/_members/mcp/internalLoopTools.js +109 -0
- package/dist/_members/mcp/prompts.d.ts +22 -0
- package/dist/_members/mcp/prompts.js +45 -0
- package/dist/_members/mcp/resources.d.ts +16 -0
- package/dist/_members/mcp/resources.js +166 -0
- package/dist/_members/mcp/server.d.ts +92 -0
- package/dist/_members/mcp/server.js +340 -0
- package/dist/_members/mcp/wait.d.ts +37 -0
- package/dist/_members/mcp/wait.js +378 -0
- package/dist/_members/mcp/x402Meta.d.ts +50 -0
- package/dist/_members/mcp/x402Meta.js +66 -0
- package/dist/_members/media-model/api.d.ts +877 -0
- package/dist/_members/media-model/api.js +175 -0
- package/dist/_members/media-model/index.d.ts +1 -0
- package/dist/_members/media-model/index.js +1 -0
- package/dist/_members/media-model/media-kind.d.ts +36 -0
- package/dist/_members/media-model/media-kind.js +116 -0
- package/dist/_members/media-model/testing/index.d.ts +2 -0
- package/dist/_members/media-model/testing/index.js +1 -0
- package/dist/_members/media-model/testing/mediaStoreContract.d.ts +17 -0
- package/dist/_members/media-model/testing/mediaStoreContract.js +82 -0
- package/dist/_members/media-model/transcriptSearch.d.ts +54 -0
- package/dist/_members/media-model/transcriptSearch.js +70 -0
- package/dist/_members/media-model/transcriptSearchCases.json +79 -0
- package/dist/_members/nle-export/compact-timeline.d.ts +2 -0
- package/dist/_members/nle-export/compact-timeline.js +73 -0
- package/dist/_members/nle-export/compact-timeline.js.map +1 -0
- package/dist/_members/nle-export/composition-to-input.d.ts +2 -0
- package/dist/_members/nle-export/composition-to-input.js +147 -0
- package/dist/_members/nle-export/composition-to-input.js.map +1 -0
- package/dist/_members/nle-export/fcpxml.d.ts +15 -0
- package/dist/_members/nle-export/fcpxml.js +159 -0
- package/dist/_members/nle-export/fcpxml.js.map +1 -0
- package/dist/_members/nle-export/index.d.ts +11 -0
- package/dist/_members/nle-export/index.js +12 -0
- package/dist/_members/nle-export/index.js.map +1 -0
- package/dist/_members/nle-export/premiere.d.ts +2 -0
- package/dist/_members/nle-export/premiere.js +161 -0
- package/dist/_members/nle-export/premiere.js.map +1 -0
- package/dist/_members/nle-export/server/index.d.ts +1 -0
- package/dist/_members/nle-export/server/index.js +2 -0
- package/dist/_members/nle-export/server/index.js.map +1 -0
- package/dist/_members/nle-export/server/pack-zip.d.ts +6 -0
- package/dist/_members/nle-export/server/pack-zip.js +38 -0
- package/dist/_members/nle-export/server/pack-zip.js.map +1 -0
- package/dist/_members/nle-export/srt.d.ts +2 -0
- package/dist/_members/nle-export/srt.js +50 -0
- package/dist/_members/nle-export/srt.js.map +1 -0
- package/dist/_members/nle-export/types.d.ts +183 -0
- package/dist/_members/nle-export/types.js +9 -0
- package/dist/_members/nle-export/types.js.map +1 -0
- package/dist/_members/nle-export/xml/index.d.ts +10 -0
- package/dist/_members/nle-export/xml/index.js +11 -0
- package/dist/_members/nle-export/xml/index.js.map +1 -0
- package/dist/_members/nle-export/xml-utils.d.ts +21 -0
- package/dist/_members/nle-export/xml-utils.js +48 -0
- package/dist/_members/nle-export/xml-utils.js.map +1 -0
- package/dist/_members/perception/activeSpeaker.d.ts +108 -0
- package/dist/_members/perception/activeSpeaker.js +103 -0
- package/dist/_members/perception/audioQuality.d.ts +78 -0
- package/dist/_members/perception/audioQuality.js +76 -0
- package/dist/_members/perception/energyBeat.d.ts +95 -0
- package/dist/_members/perception/energyBeat.js +99 -0
- package/dist/_members/perception/identityMatch.d.ts +80 -0
- package/dist/_members/perception/identityMatch.js +91 -0
- package/dist/_members/perception/index.d.ts +90 -0
- package/dist/_members/perception/index.js +48 -0
- package/dist/_members/perception/visualQuality.d.ts +86 -0
- package/dist/_members/perception/visualQuality.js +95 -0
- package/dist/_members/plane/conformance.d.ts +75 -0
- package/dist/_members/plane/conformance.js +90 -0
- package/dist/_members/plane/contract.d.ts +55 -0
- package/dist/_members/plane/contract.js +49 -0
- package/dist/_members/plane/index.d.ts +16 -0
- package/dist/_members/plane/index.js +16 -0
- package/dist/_members/primitives/backgrounds/animated-bar-chart/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/animated-bar-chart/index.d.ts +28 -0
- package/dist/_members/primitives/backgrounds/animated-line-chart/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/animated-line-chart/index.d.ts +29 -0
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/config.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/dither-gradient-bg/index.d.ts +25 -0
- package/dist/_members/primitives/backgrounds/dynamic-grid/config.d.ts +24 -0
- package/dist/_members/primitives/backgrounds/dynamic-grid/index.d.ts +17 -0
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/config.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/ecosystem-constellation/index.d.ts +16 -0
- package/dist/_members/primitives/backgrounds/index.d.ts +13 -0
- package/dist/_members/primitives/backgrounds/index.js +32 -0
- package/dist/_members/primitives/backgrounds/index.js.map +1 -0
- package/dist/_members/primitives/backgrounds/infinite-marquee/config.d.ts +36 -0
- package/dist/_members/primitives/backgrounds/infinite-marquee/index.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/config.d.ts +21 -0
- package/dist/_members/primitives/backgrounds/mesh-gradient-bg/index.d.ts +16 -0
- package/dist/_members/primitives/backgrounds/perspective-marquee/config.d.ts +42 -0
- package/dist/_members/primitives/backgrounds/perspective-marquee/index.d.ts +23 -0
- package/dist/_members/primitives/backgrounds/silk-flow-bg/config.d.ts +36 -0
- package/dist/_members/primitives/backgrounds/silk-flow-bg/index.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/vector-field/config.d.ts +30 -0
- package/dist/_members/primitives/backgrounds/vector-field/index.d.ts +25 -0
- package/dist/_members/primitives/backgrounds/volumetric-rays/config.d.ts +33 -0
- package/dist/_members/primitives/backgrounds/volumetric-rays/index.d.ts +30 -0
- package/dist/_members/primitives/captions/Captions.d.ts +33 -0
- package/dist/_members/primitives/captions/index.d.ts +17 -0
- package/dist/_members/primitives/captions/index.js +398 -0
- package/dist/_members/primitives/captions/index.js.map +1 -0
- package/dist/_members/primitives/captions/paginate.d.ts +31 -0
- package/dist/_members/primitives/captions/placement.d.ts +35 -0
- package/dist/_members/primitives/chunk-2LVE4UIT.js +139 -0
- package/dist/_members/primitives/chunk-2LVE4UIT.js.map +1 -0
- package/dist/_members/primitives/chunk-3IQUH6KK.js +20 -0
- package/dist/_members/primitives/chunk-3IQUH6KK.js.map +1 -0
- package/dist/_members/primitives/chunk-3OMURV6Q.js +112 -0
- package/dist/_members/primitives/chunk-3OMURV6Q.js.map +1 -0
- package/dist/_members/primitives/chunk-4IS6TMEG.js +21 -0
- package/dist/_members/primitives/chunk-4IS6TMEG.js.map +1 -0
- package/dist/_members/primitives/chunk-5MWGAEGQ.js +1644 -0
- package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +1 -0
- package/dist/_members/primitives/chunk-7RRPFPQK.js +15 -0
- package/dist/_members/primitives/chunk-7RRPFPQK.js.map +1 -0
- package/dist/_members/primitives/chunk-DH5TRZK2.js +125 -0
- package/dist/_members/primitives/chunk-DH5TRZK2.js.map +1 -0
- package/dist/_members/primitives/chunk-E3KNUSFG.js +2337 -0
- package/dist/_members/primitives/chunk-E3KNUSFG.js.map +1 -0
- package/dist/_members/primitives/chunk-G2B3G4HK.js +47 -0
- package/dist/_members/primitives/chunk-G2B3G4HK.js.map +1 -0
- package/dist/_members/primitives/chunk-HFPFGZXT.js +1494 -0
- package/dist/_members/primitives/chunk-HFPFGZXT.js.map +1 -0
- package/dist/_members/primitives/chunk-HIWVFZVH.js +19 -0
- package/dist/_members/primitives/chunk-HIWVFZVH.js.map +1 -0
- package/dist/_members/primitives/chunk-IDAL6G3Y.js +134 -0
- package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +1 -0
- package/dist/_members/primitives/chunk-KNC6JP5F.js +34 -0
- package/dist/_members/primitives/chunk-KNC6JP5F.js.map +1 -0
- package/dist/_members/primitives/chunk-KYRDVZST.js +459 -0
- package/dist/_members/primitives/chunk-KYRDVZST.js.map +1 -0
- package/dist/_members/primitives/chunk-LWLHS2NS.js +3410 -0
- package/dist/_members/primitives/chunk-LWLHS2NS.js.map +1 -0
- package/dist/_members/primitives/chunk-QAQ3P7DR.js +8855 -0
- package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +1 -0
- package/dist/_members/primitives/chunk-ROV2ODWC.js +81 -0
- package/dist/_members/primitives/chunk-ROV2ODWC.js.map +1 -0
- package/dist/_members/primitives/chunk-TCRC2FH3.js +183 -0
- package/dist/_members/primitives/chunk-TCRC2FH3.js.map +1 -0
- package/dist/_members/primitives/chunk-US4YEDAA.js +96 -0
- package/dist/_members/primitives/chunk-US4YEDAA.js.map +1 -0
- package/dist/_members/primitives/chunk-UVKRO5ER.js +13 -0
- package/dist/_members/primitives/chunk-UVKRO5ER.js.map +1 -0
- package/dist/_members/primitives/chunk-W4EIIF2I.js +10 -0
- package/dist/_members/primitives/chunk-W4EIIF2I.js.map +1 -0
- package/dist/_members/primitives/chunk-WPGKIPCO.js +3563 -0
- package/dist/_members/primitives/chunk-WPGKIPCO.js.map +1 -0
- package/dist/_members/primitives/chunk-WZFLEGMD.js +1435 -0
- package/dist/_members/primitives/chunk-WZFLEGMD.js.map +1 -0
- package/dist/_members/primitives/chunk-XHU3WBEI.js +33 -0
- package/dist/_members/primitives/chunk-XHU3WBEI.js.map +1 -0
- package/dist/_members/primitives/chunk-YN7WTZZ7.js +46 -0
- package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +1 -0
- package/dist/_members/primitives/effects/blur/config.d.ts +24 -0
- package/dist/_members/primitives/effects/blur/index.d.ts +29 -0
- package/dist/_members/primitives/effects/color-grade/config.d.ts +30 -0
- package/dist/_members/primitives/effects/color-grade/index.d.ts +35 -0
- package/dist/_members/primitives/effects/grain/config.d.ts +21 -0
- package/dist/_members/primitives/effects/grain/index.d.ts +21 -0
- package/dist/_members/primitives/effects/index.d.ts +12 -0
- package/dist/_members/primitives/effects/index.js +30 -0
- package/dist/_members/primitives/effects/index.js.map +1 -0
- package/dist/_members/primitives/effects/parallax/config.d.ts +21 -0
- package/dist/_members/primitives/effects/parallax/index.d.ts +25 -0
- package/dist/_members/primitives/effects/particles/config.d.ts +33 -0
- package/dist/_members/primitives/effects/particles/index.d.ts +31 -0
- package/dist/_members/primitives/effects/pulsing-indicator/config.d.ts +24 -0
- package/dist/_members/primitives/effects/pulsing-indicator/index.d.ts +19 -0
- package/dist/_members/primitives/effects/spotlight-card/config.d.ts +42 -0
- package/dist/_members/primitives/effects/spotlight-card/index.d.ts +25 -0
- package/dist/_members/primitives/effects/spring-pop-in/config.d.ts +27 -0
- package/dist/_members/primitives/effects/spring-pop-in/index.d.ts +22 -0
- package/dist/_members/primitives/effects/success-confetti/config.d.ts +42 -0
- package/dist/_members/primitives/effects/success-confetti/index.d.ts +23 -0
- package/dist/_members/primitives/effects/vignette/config.d.ts +21 -0
- package/dist/_members/primitives/effects/vignette/index.d.ts +23 -0
- package/dist/_members/primitives/hero-text/HeroText.d.ts +29 -0
- package/dist/_members/primitives/hero-text/config.d.ts +46 -0
- package/dist/_members/primitives/hero-text/index.d.ts +18 -0
- package/dist/_members/primitives/hero-text/index.js +14 -0
- package/dist/_members/primitives/hero-text/index.js.map +1 -0
- package/dist/_members/primitives/index.d.ts +21 -0
- package/dist/_members/primitives/index.js +64 -0
- package/dist/_members/primitives/index.js.map +1 -0
- package/dist/_members/primitives/layouts/chat-to-preview-layout/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/chat-to-preview-layout/index.d.ts +19 -0
- package/dist/_members/primitives/layouts/index.d.ts +9 -0
- package/dist/_members/primitives/layouts/index.js +24 -0
- package/dist/_members/primitives/layouts/index.js.map +1 -0
- package/dist/_members/primitives/layouts/infinite-bento-pan/config.d.ts +18 -0
- package/dist/_members/primitives/layouts/infinite-bento-pan/index.d.ts +15 -0
- package/dist/_members/primitives/layouts/letterbox/config.d.ts +18 -0
- package/dist/_members/primitives/layouts/letterbox/index.d.ts +23 -0
- package/dist/_members/primitives/layouts/photo-grid/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/photo-grid/index.d.ts +25 -0
- package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +21 -0
- package/dist/_members/primitives/layouts/picture-in-picture/index.d.ts +32 -0
- package/dist/_members/primitives/layouts/split-screen/config.d.ts +15 -0
- package/dist/_members/primitives/layouts/split-screen/index.d.ts +22 -0
- package/dist/_members/primitives/layouts/staggered-bento-grid/config.d.ts +66 -0
- package/dist/_members/primitives/layouts/staggered-bento-grid/index.d.ts +24 -0
- package/dist/_members/primitives/lib/easings.d.ts +47 -0
- package/dist/_members/primitives/lib/easings.js +26 -0
- package/dist/_members/primitives/lib/easings.js.map +1 -0
- package/dist/_members/primitives/lib/index.d.ts +8 -0
- package/dist/_members/primitives/lib/index.js +74 -0
- package/dist/_members/primitives/lib/index.js.map +1 -0
- package/dist/_members/primitives/lib/palette.d.ts +55 -0
- package/dist/_members/primitives/lib/palette.js +72 -0
- package/dist/_members/primitives/lib/palette.js.map +1 -0
- package/dist/_members/primitives/lib/preview.d.ts +36 -0
- package/dist/_members/primitives/lib/preview.js +8 -0
- package/dist/_members/primitives/lib/preview.js.map +1 -0
- package/dist/_members/primitives/lib/schema.d.ts +53 -0
- package/dist/_members/primitives/lib/schema.js +12 -0
- package/dist/_members/primitives/lib/schema.js.map +1 -0
- package/dist/_members/primitives/lib/seeded-random.d.ts +33 -0
- package/dist/_members/primitives/lib/seeded-random.js +14 -0
- package/dist/_members/primitives/lib/seeded-random.js.map +1 -0
- package/dist/_members/primitives/lib/text/contrast.d.ts +27 -0
- package/dist/_members/primitives/lib/text/contrast.js +12 -0
- package/dist/_members/primitives/lib/text/contrast.js.map +1 -0
- package/dist/_members/primitives/lib/text/fill.d.ts +8 -0
- package/dist/_members/primitives/lib/text/fill.js +8 -0
- package/dist/_members/primitives/lib/text/fill.js.map +1 -0
- package/dist/_members/primitives/lib/text/fitText.d.ts +62 -0
- package/dist/_members/primitives/lib/text/fitText.js +10 -0
- package/dist/_members/primitives/lib/text/fitText.js.map +1 -0
- package/dist/_members/primitives/lib/text/marker.d.ts +15 -0
- package/dist/_members/primitives/lib/text/marker.js +8 -0
- package/dist/_members/primitives/lib/text/marker.js.map +1 -0
- package/dist/_members/primitives/lib/text/motion.d.ts +57 -0
- package/dist/_members/primitives/lib/text/motion.js +16 -0
- package/dist/_members/primitives/lib/text/motion.js.map +1 -0
- package/dist/_members/primitives/lib/text/recolor.d.ts +12 -0
- package/dist/_members/primitives/lib/text/recolor.js +8 -0
- package/dist/_members/primitives/lib/text/recolor.js.map +1 -0
- package/dist/_members/primitives/lib/text/spec.d.ts +82 -0
- package/dist/_members/primitives/lib/text/spec.js +1 -0
- package/dist/_members/primitives/lib/text/spec.js.map +1 -0
- package/dist/_members/primitives/lib/text/stage.d.ts +23 -0
- package/dist/_members/primitives/lib/text/stage.js +8 -0
- package/dist/_members/primitives/lib/text/stage.js.map +1 -0
- package/dist/_members/primitives/lib/text/typeface.d.ts +16 -0
- package/dist/_members/primitives/lib/text/typeface.js +8 -0
- package/dist/_members/primitives/lib/text/typeface.js.map +1 -0
- package/dist/_members/primitives/lib/tokens.d.ts +109 -0
- package/dist/_members/primitives/lib/tokens.js +24 -0
- package/dist/_members/primitives/lib/tokens.js.map +1 -0
- package/dist/_members/primitives/lib/types.d.ts +200 -0
- package/dist/_members/primitives/lib/types.js +1 -0
- package/dist/_members/primitives/lib/types.js.map +1 -0
- package/dist/_members/primitives/params-required.json +153 -0
- package/dist/_members/primitives/scenes/changelog-bite/config.d.ts +36 -0
- package/dist/_members/primitives/scenes/changelog-bite/index.d.ts +28 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +24 -0
- package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +16 -0
- package/dist/_members/primitives/scenes/index.d.ts +9 -0
- package/dist/_members/primitives/scenes/index.js +25 -0
- package/dist/_members/primitives/scenes/index.js.map +1 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/config.d.ts +15 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/index.d.ts +15 -0
- package/dist/_members/primitives/scenes/landing-code-showcase/timeline.d.ts +15 -0
- package/dist/_members/primitives/scenes/live-code-compilation/config.d.ts +15 -0
- package/dist/_members/primitives/scenes/live-code-compilation/index.d.ts +14 -0
- package/dist/_members/primitives/scenes/pricing-tier-focus/config.d.ts +21 -0
- package/dist/_members/primitives/scenes/pricing-tier-focus/index.d.ts +15 -0
- package/dist/_members/primitives/scenes/product-launch-trailer/config.d.ts +33 -0
- package/dist/_members/primitives/scenes/product-launch-trailer/index.d.ts +20 -0
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/config.d.ts +21 -0
- package/dist/_members/primitives/scenes/terminal-to-browser-deploy/index.d.ts +15 -0
- package/dist/_members/primitives/subject-foreground/SubjectForeground.d.ts +43 -0
- package/dist/_members/primitives/subject-foreground/index.d.ts +23 -0
- package/dist/_members/primitives/subject-foreground/index.js +30 -0
- package/dist/_members/primitives/subject-foreground/index.js.map +1 -0
- package/dist/_members/primitives/text/blur-reveal/config.d.ts +30 -0
- package/dist/_members/primitives/text/blur-reveal/index.d.ts +20 -0
- package/dist/_members/primitives/text/cinematic-title/config.d.ts +87 -0
- package/dist/_members/primitives/text/cinematic-title/index.d.ts +31 -0
- package/dist/_members/primitives/text/index.d.ts +23 -0
- package/dist/_members/primitives/text/index.js +57 -0
- package/dist/_members/primitives/text/index.js.map +1 -0
- package/dist/_members/primitives/text/inline-highlight/config.d.ts +36 -0
- package/dist/_members/primitives/text/inline-highlight/index.d.ts +24 -0
- package/dist/_members/primitives/text/karaoke/config.d.ts +108 -0
- package/dist/_members/primitives/text/karaoke/index.d.ts +32 -0
- package/dist/_members/primitives/text/kinetic-type/config.d.ts +60 -0
- package/dist/_members/primitives/text/kinetic-type/index.d.ts +29 -0
- package/dist/_members/primitives/text/lower-third/config.d.ts +84 -0
- package/dist/_members/primitives/text/lower-third/index.d.ts +30 -0
- package/dist/_members/primitives/text/marker-highlight/config.d.ts +39 -0
- package/dist/_members/primitives/text/marker-highlight/index.d.ts +24 -0
- package/dist/_members/primitives/text/masked-slide-reveal/config.d.ts +30 -0
- package/dist/_members/primitives/text/masked-slide-reveal/index.d.ts +19 -0
- package/dist/_members/primitives/text/matrix-decode/config.d.ts +33 -0
- package/dist/_members/primitives/text/matrix-decode/index.d.ts +21 -0
- package/dist/_members/primitives/text/quote-card/config.d.ts +21 -0
- package/dist/_members/primitives/text/quote-card/index.d.ts +23 -0
- package/dist/_members/primitives/text/rgb-glitch-text/config.d.ts +39 -0
- package/dist/_members/primitives/text/rgb-glitch-text/index.d.ts +27 -0
- package/dist/_members/primitives/text/shimmer-sweep/config.d.ts +30 -0
- package/dist/_members/primitives/text/shimmer-sweep/index.d.ts +21 -0
- package/dist/_members/primitives/text/slot-machine-roll/config.d.ts +30 -0
- package/dist/_members/primitives/text/slot-machine-roll/index.d.ts +19 -0
- package/dist/_members/primitives/text/staggered-fade-up/config.d.ts +39 -0
- package/dist/_members/primitives/text/staggered-fade-up/index.d.ts +26 -0
- package/dist/_members/primitives/text/stat-counter/config.d.ts +33 -0
- package/dist/_members/primitives/text/stat-counter/index.d.ts +31 -0
- package/dist/_members/primitives/text/strikethrough-replace/config.d.ts +33 -0
- package/dist/_members/primitives/text/strikethrough-replace/index.d.ts +21 -0
- package/dist/_members/primitives/text/text-effect/config.d.ts +24 -0
- package/dist/_members/primitives/text/text-effect/index.d.ts +29 -0
- package/dist/_members/primitives/text/text-fade-replace/config.d.ts +30 -0
- package/dist/_members/primitives/text/text-fade-replace/index.d.ts +19 -0
- package/dist/_members/primitives/text/token-stream/config.d.ts +21 -0
- package/dist/_members/primitives/text/token-stream/index.d.ts +25 -0
- package/dist/_members/primitives/text/tracking-in/config.d.ts +33 -0
- package/dist/_members/primitives/text/tracking-in/index.d.ts +21 -0
- package/dist/_members/primitives/text/typewriter/config.d.ts +36 -0
- package/dist/_members/primitives/text/typewriter/index.d.ts +26 -0
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/chromatic-aberration-wipe/index.d.ts +19 -0
- package/dist/_members/primitives/transitions/code-diff-wipe/config.d.ts +36 -0
- package/dist/_members/primitives/transitions/code-diff-wipe/index.d.ts +21 -0
- package/dist/_members/primitives/transitions/directional-wipe/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/directional-wipe/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/frosted-glass-wipe/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/frosted-glass-wipe/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/glitch-cut/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/glitch-cut/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/config.d.ts +21 -0
- package/dist/_members/primitives/transitions/grid-pixelate-wipe/index.d.ts +24 -0
- package/dist/_members/primitives/transitions/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/index.js +67 -0
- package/dist/_members/primitives/transitions/index.js.map +1 -0
- package/dist/_members/primitives/transitions/ink-wipe/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/ink-wipe/index.d.ts +13 -0
- package/dist/_members/primitives/transitions/kinetic-type-mask/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/kinetic-type-mask/index.d.ts +20 -0
- package/dist/_members/primitives/transitions/light-leak/config.d.ts +15 -0
- package/dist/_members/primitives/transitions/light-leak/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/luma-matte/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/luma-matte/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/morph/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/morph/index.d.ts +11 -0
- package/dist/_members/primitives/transitions/spatial-push/config.d.ts +12 -0
- package/dist/_members/primitives/transitions/spatial-push/index.d.ts +17 -0
- package/dist/_members/primitives/transitions/swipe-transition-wipe/config.d.ts +18 -0
- package/dist/_members/primitives/transitions/swipe-transition-wipe/index.d.ts +22 -0
- package/dist/_members/primitives/transitions/zoom-through/config.d.ts +39 -0
- package/dist/_members/primitives/transitions/zoom-through/index.d.ts +12 -0
- package/dist/_members/primitives/transitions/zoom-through-transition/config.d.ts +24 -0
- package/dist/_members/primitives/transitions/zoom-through-transition/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/config.d.ts +48 -0
- package/dist/_members/primitives/ui-blocks/ai-generate-overlay/index.d.ts +25 -0
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/ai-generation-canvas/index.d.ts +16 -0
- package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/badge-pop/index.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/before-after-slider/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/before-after-slider/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/benchmark-bars/config.d.ts +86 -0
- package/dist/_members/primitives/ui-blocks/benchmark-bars/index.d.ts +25 -0
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/bounding-box-selector/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/browser-flow/config.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/browser-flow/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/config.d.ts +36 -0
- package/dist/_members/primitives/ui-blocks/brush-stroke-simulator/index.d.ts +32 -0
- package/dist/_members/primitives/ui-blocks/chat-exchange/config.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/chat-exchange/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/code-accordion/config.d.ts +42 -0
- package/dist/_members/primitives/ui-blocks/code-accordion/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/context-meter/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/context-meter/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/cursor-flow/config.d.ts +84 -0
- package/dist/_members/primitives/ui-blocks/cursor-flow/index.d.ts +29 -0
- package/dist/_members/primitives/ui-blocks/dashboard-populate/config.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/dashboard-populate/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/config.d.ts +120 -0
- package/dist/_members/primitives/ui-blocks/data-flow-pipes/index.d.ts +34 -0
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +19 -0
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/drag-and-drop-flow/index.d.ts +17 -0
- package/dist/_members/primitives/ui-blocks/eval-scorecard/config.d.ts +48 -0
- package/dist/_members/primitives/ui-blocks/eval-scorecard/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/glass-code-block/config.d.ts +39 -0
- package/dist/_members/primitives/ui-blocks/glass-code-block/index.d.ts +22 -0
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/config.d.ts +141 -0
- package/dist/_members/primitives/ui-blocks/image-expand-to-fullscreen/index.d.ts +32 -0
- package/dist/_members/primitives/ui-blocks/index.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/index.js +76 -0
- package/dist/_members/primitives/ui-blocks/index.js.map +1 -0
- package/dist/_members/primitives/ui-blocks/metric-gauge/config.d.ts +46 -0
- package/dist/_members/primitives/ui-blocks/metric-gauge/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/morphing-modal/config.d.ts +141 -0
- package/dist/_members/primitives/ui-blocks/morphing-modal/index.d.ts +35 -0
- package/dist/_members/primitives/ui-blocks/pipeline-journey/config.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/pipeline-journey/index.d.ts +15 -0
- package/dist/_members/primitives/ui-blocks/progress-steps/config.d.ts +51 -0
- package/dist/_members/primitives/ui-blocks/progress-steps/index.d.ts +22 -0
- package/dist/_members/primitives/ui-blocks/reasoning-trace/config.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/reasoning-trace/index.d.ts +18 -0
- package/dist/_members/primitives/ui-blocks/simulated-cursor/config.d.ts +69 -0
- package/dist/_members/primitives/ui-blocks/simulated-cursor/index.d.ts +23 -0
- package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +63 -0
- package/dist/_members/primitives/ui-blocks/terminal-simulator/index.d.ts +39 -0
- package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/toast-notification/index.d.ts +21 -0
- package/dist/_members/primitives/ui-blocks/tool-call-stack/config.d.ts +54 -0
- package/dist/_members/primitives/ui-blocks/tool-call-stack/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/config.d.ts +33 -0
- package/dist/_members/primitives/ui-blocks/tool-menu-slide-in/index.d.ts +20 -0
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/config.d.ts +90 -0
- package/dist/_members/primitives/ui-blocks/visual-docs-snippet/index.d.ts +27 -0
- package/dist/_members/primitives/ui-blocks/voice-waveform/config.d.ts +24 -0
- package/dist/_members/primitives/ui-blocks/voice-waveform/index.d.ts +20 -0
- package/dist/_members/primitives/version-map.json +105 -0
- package/dist/_members/primitives/workspace.d.ts +51 -0
- package/dist/_members/primitives/workspace.js +60 -0
- package/dist/_members/primitives/workspace.js.map +1 -0
- package/dist/_members/render-harness/cardRender.d.ts +64 -0
- package/dist/_members/render-harness/cardRender.d.ts.map +1 -0
- package/dist/_members/render-harness/contractRender.d.ts +43 -0
- package/dist/_members/render-harness/contractRender.d.ts.map +1 -0
- package/dist/_members/render-harness/extractSegments.d.ts +53 -0
- package/dist/_members/render-harness/extractSegments.d.ts.map +1 -0
- package/dist/_members/render-harness/index.d.ts +30 -0
- package/dist/_members/render-harness/index.d.ts.map +1 -0
- package/dist/_members/render-harness/localRender.d.ts +167 -0
- package/dist/_members/render-harness/localRender.d.ts.map +1 -0
- package/dist/_members/render-harness/materializeSources.d.ts +29 -0
- package/dist/_members/render-harness/materializeSources.d.ts.map +1 -0
- package/dist/_members/render-harness/mediaServer.d.ts +22 -0
- package/dist/_members/render-harness/mediaServer.d.ts.map +1 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts +63 -0
- package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -0
- package/dist/_members/render-harness/resolveAssets.d.ts +33 -0
- package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -0
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts +23 -0
- package/dist/_members/render-harness/sandboxGlobalSpecs.d.ts.map +1 -0
- package/dist/account-model/testing.d.ts +1 -0
- package/dist/account-model/testing.js +145 -0
- package/dist/account-model/types.d.ts +1 -0
- package/dist/account-model/types.js +0 -0
- package/dist/account-model/validators.d.ts +1 -0
- package/dist/account-model/validators.js +26 -0
- package/dist/account-model.d.ts +1 -0
- package/dist/account-model.js +26 -0
- package/dist/animate.d.ts +1 -0
- package/dist/animate.js +79412 -0
- package/dist/authoring/build-tools.d.ts +1 -0
- package/dist/authoring/build-tools.js +29 -0
- package/dist/authoring/capabilities.d.ts +1 -0
- package/dist/authoring/capabilities.js +11 -0
- package/dist/authoring/composer.d.ts +1 -0
- package/dist/authoring/composer.js +53 -0
- package/dist/authoring/context.d.ts +1 -0
- package/dist/authoring/context.js +14 -0
- package/dist/authoring/models.d.ts +1 -0
- package/dist/authoring/models.js +14 -0
- package/dist/authoring/pipelineTrace.d.ts +1 -0
- package/dist/authoring/pipelineTrace.js +7 -0
- package/dist/authoring/prompts.d.ts +1 -0
- package/dist/authoring/prompts.js +29 -0
- package/dist/authoring/providers.d.ts +1 -0
- package/dist/authoring/providers.js +99 -0
- package/dist/authoring/resource-routing.d.ts +1 -0
- package/dist/authoring/resource-routing.js +206 -0
- package/dist/authoring/resources.d.ts +1 -0
- package/dist/authoring/resources.js +35 -0
- package/dist/authoring/tools.d.ts +1 -0
- package/dist/authoring/tools.js +29 -0
- package/dist/authoring/transpileComponent.d.ts +1 -0
- package/dist/authoring/transpileComponent.js +2248 -0
- package/dist/authoring/transpileHelper.d.ts +1 -0
- package/dist/authoring/transpileHelper.js +9 -0
- package/dist/authoring/types.d.ts +1 -0
- package/dist/authoring/types.js +0 -0
- package/dist/authoring.d.ts +1 -0
- package/dist/authoring.js +1295 -0
- package/dist/brand-derivation/constants.d.ts +1 -0
- package/dist/brand-derivation/constants.js +11 -0
- package/dist/brand-derivation.d.ts +1 -0
- package/dist/brand-derivation.js +23 -0
- package/dist/chunk-2ESYSVXG.js +48 -0
- package/dist/chunk-37NJ27UU.js +501 -0
- package/dist/chunk-52AHXNKM.js +435 -0
- package/dist/chunk-5I7VDCAC.js +15647 -0
- package/dist/chunk-6CMVBTTP.js +1933 -0
- package/dist/chunk-6EQXLEP6.js +194 -0
- package/dist/chunk-6QJ3V3VS.js +1444 -0
- package/dist/chunk-7DHP4ESU.js +138 -0
- package/dist/chunk-7GISRVON.js +14176 -0
- package/dist/chunk-7PA7FGLD.js +609 -0
- package/dist/chunk-ATAF24QG.js +735 -0
- package/dist/chunk-AWT3P5ZN.js +1609 -0
- package/dist/chunk-B4VMU2IJ.js +211 -0
- package/dist/chunk-BDMTUEEZ.js +19 -0
- package/dist/chunk-BRKJKB33.js +683 -0
- package/dist/chunk-CX2IIQ4R.js +111 -0
- package/dist/chunk-D2EG7J7X.js +31 -0
- package/dist/chunk-DENF4TPI.js +249 -0
- package/dist/chunk-DIBOJJMU.js +16838 -0
- package/dist/chunk-DLF4WVSE.js +9 -0
- package/dist/chunk-DSNG6WLU.js +82 -0
- package/dist/chunk-EA6MYCYW.js +135 -0
- package/dist/chunk-EAUSEGB7.js +420 -0
- package/dist/chunk-ELLSET2N.js +195 -0
- package/dist/chunk-EMGFZ3PR.js +14 -0
- package/dist/chunk-FUWJOVVK.js +3633 -0
- package/dist/chunk-G3PBH53P.js +85 -0
- package/dist/chunk-G75E7YA4.js +11883 -0
- package/dist/chunk-GBRNYH7W.js +72 -0
- package/dist/chunk-GH27OS5S.js +104 -0
- package/dist/chunk-GULDS3VE.js +41 -0
- package/dist/chunk-H5LMJKZU.js +0 -0
- package/dist/chunk-HI4UTTPS.js +954 -0
- package/dist/chunk-JCZQT7K3.js +3266 -0
- package/dist/chunk-JD77Y2WM.js +3423 -0
- package/dist/chunk-JF4JJAFP.js +10 -0
- package/dist/chunk-JMURQODM.js +438 -0
- package/dist/chunk-JOURGVOR.js +27 -0
- package/dist/chunk-JRQVPFLF.js +459 -0
- package/dist/chunk-KF5ETMKB.js +544 -0
- package/dist/chunk-KYRDKK2D.js +47 -0
- package/dist/chunk-LD5ZOUFT.js +55 -0
- package/dist/chunk-M3I5LMAB.js +426 -0
- package/dist/chunk-MC5DLSEV.js +202 -0
- package/dist/chunk-MCBUX5XV.js +70 -0
- package/dist/chunk-MFHXCHRI.js +33 -0
- package/dist/chunk-MMEJ3Y7E.js +327 -0
- package/dist/chunk-MVEE6HEC.js +8512 -0
- package/dist/chunk-N67PDTKQ.js +1419 -0
- package/dist/chunk-NDKERSXY.js +1296 -0
- package/dist/chunk-NV4I6GJV.js +1091 -0
- package/dist/chunk-OIRUO5P7.js +397 -0
- package/dist/chunk-P43IE4WB.js +181 -0
- package/dist/chunk-QGAWDLYX.js +92 -0
- package/dist/chunk-QH3YI3ND.js +100 -0
- package/dist/chunk-QLAQHR3L.js +254 -0
- package/dist/chunk-RHVLQNYF.js +20 -0
- package/dist/chunk-S3P5BFFL.js +2265 -0
- package/dist/chunk-SIGGQRY2.js +8483 -0
- package/dist/chunk-TULRCY6U.js +729 -0
- package/dist/chunk-TWQOKKAF.js +859 -0
- package/dist/chunk-U3JPILZS.js +15 -0
- package/dist/chunk-U4V4FZGE.js +20 -0
- package/dist/chunk-UEI3NLNK.js +127 -0
- package/dist/chunk-V43Y7IE4.js +3621 -0
- package/dist/chunk-VIVQHIGZ.js +4319 -0
- package/dist/chunk-W35ZMOXB.js +23 -0
- package/dist/chunk-WB2VFDQZ.js +58 -0
- package/dist/chunk-WREYUH2E.js +104 -0
- package/dist/chunk-WZTTZHNR.js +3339 -0
- package/dist/chunk-XELS2BGA.js +13 -0
- package/dist/chunk-XLIPPLG3.js +18 -0
- package/dist/chunk-YA3OR2KK.js +249 -0
- package/dist/chunk-ZE76SSRT.js +358 -0
- package/dist/chunk-ZFEXATWN.js +46 -0
- package/dist/chunk-ZSZABOE5.js +425 -0
- package/dist/compose/renderer.d.ts +1 -0
- package/dist/compose/renderer.js +173 -0
- package/dist/compose.d.ts +1 -0
- package/dist/compose.js +76 -0
- package/dist/composition/audio.d.ts +1 -0
- package/dist/composition/audio.js +63 -0
- package/dist/composition/autozoom.d.ts +1 -0
- package/dist/composition/autozoom.js +76 -0
- package/dist/composition/brand-kit.d.ts +1 -0
- package/dist/composition/brand-kit.js +34 -0
- package/dist/composition/brief.d.ts +1 -0
- package/dist/composition/brief.js +112 -0
- package/dist/composition/depth.d.ts +1 -0
- package/dist/composition/depth.js +12 -0
- package/dist/composition/fixtures.d.ts +1 -0
- package/dist/composition/fixtures.js +154 -0
- package/dist/composition/fonts.d.ts +1 -0
- package/dist/composition/fonts.js +74 -0
- package/dist/composition/graphics-plan.d.ts +1 -0
- package/dist/composition/graphics-plan.js +400 -0
- package/dist/composition/invariants.d.ts +1 -0
- package/dist/composition/invariants.js +49 -0
- package/dist/composition/ops.d.ts +1 -0
- package/dist/composition/ops.js +53 -0
- package/dist/composition/primitive-catalog.d.ts +1 -0
- package/dist/composition/primitive-catalog.js +60 -0
- package/dist/composition/projection.d.ts +1 -0
- package/dist/composition/projection.js +119 -0
- package/dist/composition/reframe/coverage.d.ts +1 -0
- package/dist/composition/reframe/coverage.js +20 -0
- package/dist/composition/reframe/kenBurns.d.ts +1 -0
- package/dist/composition/reframe/kenBurns.js +53 -0
- package/dist/composition/reframe/shotScale.d.ts +1 -0
- package/dist/composition/reframe/shotScale.js +25 -0
- package/dist/composition/reframe/trajectory.d.ts +1 -0
- package/dist/composition/reframe/trajectory.js +17 -0
- package/dist/composition/reframe.d.ts +1 -0
- package/dist/composition/reframe.js +39 -0
- package/dist/composition/timeline.d.ts +1 -0
- package/dist/composition/timeline.js +70 -0
- package/dist/composition/types.d.ts +1 -0
- package/dist/composition/types.js +0 -0
- package/dist/composition/validators/graphic-kinds.d.ts +1 -0
- package/dist/composition/validators/graphic-kinds.js +9 -0
- package/dist/composition/validators.d.ts +1 -0
- package/dist/composition/validators.js +180 -0
- package/dist/composition-ops.d.ts +1 -0
- package/dist/composition-ops.js +882 -0
- package/dist/composition.d.ts +1 -0
- package/dist/composition.js +433 -0
- package/dist/context-CEAKQ5T7.js +14 -0
- package/dist/core/render.d.ts +1 -0
- package/dist/core/render.js +105 -0
- package/dist/core/select.d.ts +1 -0
- package/dist/core/select.js +42 -0
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.js +0 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +38 -0
- package/dist/dist-LAJ2363K.js +545 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +17 -0
- package/dist/foundation/codes.d.ts +1 -0
- package/dist/foundation/codes.js +7 -0
- package/dist/foundation/primitives.d.ts +1 -0
- package/dist/foundation/primitives.js +13 -0
- package/dist/foundation.d.ts +1 -0
- package/dist/foundation.js +17 -0
- package/dist/hls-HD4C5G6W.js +33000 -0
- package/dist/magic-string.es-SDTMJBWP.js +1308 -0
- package/dist/mcp/adapter.d.ts +1 -0
- package/dist/mcp/adapter.js +670 -0
- package/dist/mcp/core.d.ts +1 -0
- package/dist/mcp/core.js +41 -0
- package/dist/mcp/curation.d.ts +1 -0
- package/dist/mcp/curation.js +23 -0
- package/dist/mcp/executor.d.ts +1 -0
- package/dist/mcp/executor.js +13 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +27 -0
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.js +138 -0
- package/dist/media-model/media-kind.d.ts +1 -0
- package/dist/media-model/media-kind.js +108 -0
- package/dist/media-model/testing.d.ts +1 -0
- package/dist/media-model/testing.js +16029 -0
- package/dist/media-model/transcriptSearch.d.ts +1 -0
- package/dist/media-model/transcriptSearch.js +32 -0
- package/dist/media-model.d.ts +1 -0
- package/dist/media-model.js +154 -0
- package/dist/nle-export/server.d.ts +1 -0
- package/dist/nle-export/server.js +25658 -0
- package/dist/nle-export/xml.d.ts +1 -0
- package/dist/nle-export/xml.js +23102 -0
- package/dist/nle-export.d.ts +1 -0
- package/dist/nle-export.js +313 -0
- package/dist/perception.d.ts +1 -0
- package/dist/perception.js +145 -0
- package/dist/plane/conformance.d.ts +1 -0
- package/dist/plane/conformance.js +13 -0
- package/dist/plane/contract.d.ts +1 -0
- package/dist/plane/contract.js +31 -0
- package/dist/plane.d.ts +1 -0
- package/dist/plane.js +13 -0
- package/dist/primitives/backgrounds.d.ts +1 -0
- package/dist/primitives/backgrounds.js +32 -0
- package/dist/primitives/captions.d.ts +1 -0
- package/dist/primitives/captions.js +629 -0
- package/dist/primitives/effects.d.ts +1 -0
- package/dist/primitives/effects.js +30 -0
- package/dist/primitives/hero-text.d.ts +1 -0
- package/dist/primitives/hero-text.js +14 -0
- package/dist/primitives/layouts.d.ts +1 -0
- package/dist/primitives/layouts.js +24 -0
- package/dist/primitives/lib/easings.d.ts +1 -0
- package/dist/primitives/lib/easings.js +25 -0
- package/dist/primitives/lib/index.d.ts +1 -0
- package/dist/primitives/lib/index.js +78 -0
- package/dist/primitives/lib/palette.d.ts +1 -0
- package/dist/primitives/lib/palette.js +71 -0
- package/dist/primitives/lib/preview.d.ts +1 -0
- package/dist/primitives/lib/preview.js +8 -0
- package/dist/primitives/lib/schema.d.ts +1 -0
- package/dist/primitives/lib/schema.js +12 -0
- package/dist/primitives/lib/seeded-random.d.ts +1 -0
- package/dist/primitives/lib/seeded-random.js +13 -0
- package/dist/primitives/lib/text/contrast.d.ts +1 -0
- package/dist/primitives/lib/text/contrast.js +11 -0
- package/dist/primitives/lib/text/fill.d.ts +1 -0
- package/dist/primitives/lib/text/fill.js +7 -0
- package/dist/primitives/lib/text/fitText.d.ts +1 -0
- package/dist/primitives/lib/text/fitText.js +10 -0
- package/dist/primitives/lib/text/marker.d.ts +1 -0
- package/dist/primitives/lib/text/marker.js +7 -0
- package/dist/primitives/lib/text/motion.d.ts +1 -0
- package/dist/primitives/lib/text/motion.js +15 -0
- package/dist/primitives/lib/text/recolor.d.ts +1 -0
- package/dist/primitives/lib/text/recolor.js +7 -0
- package/dist/primitives/lib/text/spec.d.ts +1 -0
- package/dist/primitives/lib/text/spec.js +0 -0
- package/dist/primitives/lib/text/stage.d.ts +1 -0
- package/dist/primitives/lib/text/stage.js +7 -0
- package/dist/primitives/lib/text/typeface.d.ts +1 -0
- package/dist/primitives/lib/text/typeface.js +7 -0
- package/dist/primitives/lib/tokens.d.ts +1 -0
- package/dist/primitives/lib/tokens.js +24 -0
- package/dist/primitives/lib/types.d.ts +1 -0
- package/dist/primitives/lib/types.js +0 -0
- package/dist/primitives/lib.d.ts +1 -0
- package/dist/primitives/lib.js +78 -0
- package/dist/primitives/params-required.json +153 -0
- package/dist/primitives/scenes.d.ts +1 -0
- package/dist/primitives/scenes.js +25 -0
- package/dist/primitives/subject-foreground.d.ts +1 -0
- package/dist/primitives/subject-foreground.js +28 -0
- package/dist/primitives/text.d.ts +1 -0
- package/dist/primitives/text.js +57 -0
- package/dist/primitives/transitions.d.ts +1 -0
- package/dist/primitives/transitions.js +66 -0
- package/dist/primitives/ui-blocks.d.ts +1 -0
- package/dist/primitives/ui-blocks.js +76 -0
- package/dist/primitives/version-map.json +105 -0
- package/dist/primitives/workspace.d.ts +1 -0
- package/dist/primitives/workspace.js +25 -0
- package/dist/primitives.d.ts +1 -0
- package/dist/primitives.js +65 -0
- package/dist/render-harness/sandboxGlobalSpecs.d.ts +1 -0
- package/dist/render-harness/sandboxGlobalSpecs.js +13 -0
- package/dist/render-harness.d.ts +1 -0
- package/dist/render-harness.js +1019 -0
- package/dist/token-RGFIT24D.js +69 -0
- package/dist/token-util-GPLSGYVO.js +5 -0
- package/dist/vision_bundle-5Y376MAR.js +4084 -0
- package/package.json +493 -0
|
@@ -0,0 +1,792 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curation SSOT — the hand-picked, agent-legible front-door over the generated
|
|
3
|
+
* operation manifest. This file owns WHICH operations are curated, their
|
|
4
|
+
* friendly names, agent guidance, success formatting, MCP annotations, and the
|
|
5
|
+
* per-resource CRUD coverage map. server.ts iterates CURATED_TOOLS; curation.test.ts
|
|
6
|
+
* gates it against the generated manifest. NO transport/server import lives here.
|
|
7
|
+
*/
|
|
8
|
+
import { fmtClock } from './format.js';
|
|
9
|
+
import { CATALOG_PREVIEWS } from './generated/catalogPreviews.js';
|
|
10
|
+
export function formatMediaList(json) {
|
|
11
|
+
const data = Array.isArray(json?.data) ? json.data : [];
|
|
12
|
+
if (data.length === 0)
|
|
13
|
+
return 'No media items found. Import a video first (import_media) or generate one (generate_media).';
|
|
14
|
+
const lines = data.map((m) => {
|
|
15
|
+
const dur = m?.duration != null ? ` (${fmtClock(m.duration)})` : '';
|
|
16
|
+
const phase = m?.processingStatus?.phase ?? m?.status ?? 'unknown';
|
|
17
|
+
return `- ${m.id} ${m.name}${dur} [${phase}]`;
|
|
18
|
+
});
|
|
19
|
+
return `${data.length} media item${data.length !== 1 ? 's' : ''}:\n\n${lines.join('\n')}`;
|
|
20
|
+
}
|
|
21
|
+
export function formatComponentList(json) {
|
|
22
|
+
const data = Array.isArray(json?.data) ? json.data : [];
|
|
23
|
+
if (data.length === 0) {
|
|
24
|
+
return 'No components match. Drop a filter, or browse unfiltered (list_catalog with no args returns the whole built-in catalog).';
|
|
25
|
+
}
|
|
26
|
+
const lines = data.map((e) => {
|
|
27
|
+
const facets = [e.category, e.kind, e.tier].filter(Boolean).join(' · ');
|
|
28
|
+
const uc = Array.isArray(e.useCase) && e.useCase.length ? ` useCase:${e.useCase.join('/')}` : '';
|
|
29
|
+
const place = e.placement ? ` → place as {kind:'${e.placement.clipSourceKind}', ${e.placement.refField}:'${e.id}'}` : '';
|
|
30
|
+
const baked = Array.isArray(e.fixedCopy) && e.fixedCopy.length ? ` [bakes fixed copy]` : '';
|
|
31
|
+
return `- ${e.id} ${e.name} (${facets})${uc}${baked}${place}`;
|
|
32
|
+
});
|
|
33
|
+
const more = json?.pagination?.hasMore ? '\n\n(more — pass `after` to page)' : '';
|
|
34
|
+
return `${data.length} component${data.length !== 1 ? 's' : ''} (recommended-tier first when filtered):\n\n${lines.join('\n')}${more}`;
|
|
35
|
+
}
|
|
36
|
+
export function formatResourceCandidates(json) {
|
|
37
|
+
// BATCH shape: one section per query. Rendered here rather than as N tool
|
|
38
|
+
// results so the agent pays ONE round-trip's context for the whole set.
|
|
39
|
+
if (Array.isArray(json?.results)) {
|
|
40
|
+
const total = json.results.reduce((n, r) => n + (Array.isArray(r?.candidates) ? r.candidates.length : 0), 0);
|
|
41
|
+
const sections = json.results.map((r) => {
|
|
42
|
+
const head = `── "${r?.query}"`;
|
|
43
|
+
if (r?.error)
|
|
44
|
+
return `${head}\n ✗ ${r.error}`;
|
|
45
|
+
return `${head}\n${formatResourceCandidates(r)}`;
|
|
46
|
+
});
|
|
47
|
+
return `${json.results.length} queries, ${total} candidate(s) total:\n\n${sections.join('\n\n')}`;
|
|
48
|
+
}
|
|
49
|
+
const items = Array.isArray(json?.candidates) ? json.candidates : [];
|
|
50
|
+
const provider = json?.provider ?? 'unknown';
|
|
51
|
+
const kind = json?.kind ?? '';
|
|
52
|
+
if (items.length === 0) {
|
|
53
|
+
return `No ${kind} stock results from ${provider}. Try a different query, kind, or provider.`;
|
|
54
|
+
}
|
|
55
|
+
const lines = items.map((cand) => {
|
|
56
|
+
const dims = cand.width && cand.height ? ` ${cand.width}×${cand.height}` : '';
|
|
57
|
+
const dur = cand.duration != null ? ` ${fmtClock(cand.duration)}` : '';
|
|
58
|
+
const lic = cand.license ? ` [${cand.license}]` : '';
|
|
59
|
+
const by = cand.author ? ` by ${cand.author}` : '';
|
|
60
|
+
return `- ${cand.candidateId}\n ${cand.kind}${dims}${dur}${by}${lic} preview: ${cand.previewUrl}`;
|
|
61
|
+
});
|
|
62
|
+
// One candidate = no choice, so no thumbnail was attached (see the `attach`
|
|
63
|
+
// gate). Say so, or the agent cannot tell "you may not look" from "nothing to
|
|
64
|
+
// look at" — and the whole point is that looking stays one arg away.
|
|
65
|
+
const seeMore = items.length === 1
|
|
66
|
+
? '\n\n(no preview attached for a single result — re-run with limit ≥2 to SEE candidates side by side)'
|
|
67
|
+
: '';
|
|
68
|
+
return `${items.length} ${kind} candidate${items.length !== 1 ? 's' : ''} from ${provider} (import one with import_resource({ projectId, candidateId })):\n\n${lines.join('\n')}${seeMore}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Char budget for returning a composition VERBATIM. Past this, `formatComposition`
|
|
72
|
+
* degrades to a structural summary rather than emitting a body the MCP host will
|
|
73
|
+
* refuse outright: a 128-clip composition serialized to 69,788 chars and the host
|
|
74
|
+
* rejected the whole result ("exceeds maximum"), so the agent could not read back
|
|
75
|
+
* the composition it had just written and fell back to shelling out to python3 to
|
|
76
|
+
* read a file it had authored itself. Comfortably under the ~25k-token host cap
|
|
77
|
+
* while leaving normal compositions untouched.
|
|
78
|
+
*/
|
|
79
|
+
const COMPOSITION_VERBATIM_BUDGET = 24_000;
|
|
80
|
+
/** One line per clip: what it is, when it is, and what it points at. */
|
|
81
|
+
function describeClip(c) {
|
|
82
|
+
const id = c?.id ?? '?';
|
|
83
|
+
const start = typeof c?.startTime === 'number' ? c.startTime : 0;
|
|
84
|
+
const dur = typeof c?.duration === 'number' ? c.duration : 0;
|
|
85
|
+
const when = `${start.toFixed(2)}→${(start + dur).toFixed(2)}s`;
|
|
86
|
+
const s = c?.source;
|
|
87
|
+
if (!s)
|
|
88
|
+
return `- ${id} [gap] ${when}`;
|
|
89
|
+
const family = c?.kind ?? s.kind ?? '?';
|
|
90
|
+
const extra = [];
|
|
91
|
+
if (c.region)
|
|
92
|
+
extra.push('region');
|
|
93
|
+
if (c.fit)
|
|
94
|
+
extra.push(`fit:${c.fit}`);
|
|
95
|
+
if (c.transitionIn?.type)
|
|
96
|
+
extra.push(`in:${c.transitionIn.type}`);
|
|
97
|
+
let what = s.kind;
|
|
98
|
+
if (s.kind === 'media') {
|
|
99
|
+
what = `media ${s.mediaId}`;
|
|
100
|
+
const segs = s.reframe?.segments?.length;
|
|
101
|
+
if (segs)
|
|
102
|
+
extra.push(`reframe:${segs}seg`);
|
|
103
|
+
if (s.kenBurns)
|
|
104
|
+
extra.push('kenBurns');
|
|
105
|
+
if (s.audioRole)
|
|
106
|
+
extra.push(`role:${s.audioRole}`);
|
|
107
|
+
if (s.muted)
|
|
108
|
+
extra.push('muted');
|
|
109
|
+
}
|
|
110
|
+
else if (s.kind === 'card') {
|
|
111
|
+
// The html is the whole reason a composition blows the budget — elide the
|
|
112
|
+
// body, keep the facts an agent needs to decide whether to re-read it.
|
|
113
|
+
const tokens = Object.keys(s.tokens ?? {});
|
|
114
|
+
what = `card html:${(s.html?.length ?? 0)}ch${tokens.length ? ` tokens:{${tokens.join(',')}}` : ''}`;
|
|
115
|
+
}
|
|
116
|
+
else if (s.kind === 'component' || s.kind === 'alpha-layer') {
|
|
117
|
+
what = `${s.kind} ${s.componentId ?? '?'}`;
|
|
118
|
+
}
|
|
119
|
+
else if (s.kind === 'overlay') {
|
|
120
|
+
what = `overlay ${s.primitiveId ?? s.overlayId ?? '?'}`;
|
|
121
|
+
}
|
|
122
|
+
else if (s.kind === 'effect') {
|
|
123
|
+
what = `effect ${s.effectId ?? s.type ?? '?'}`;
|
|
124
|
+
}
|
|
125
|
+
return `- ${id} [${family}] ${when} ${what}${extra.length ? ` (${extra.join(', ')})` : ''}`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Render a composition for reading. Verbatim JSON while it fits — that is the
|
|
129
|
+
* documented contract (it is what you hand to validate_composition) — and a
|
|
130
|
+
* STRUCTURAL SUMMARY when the full body would exceed what the host will accept.
|
|
131
|
+
* Every clip is still listed; only the unbounded blobs (card html, caption
|
|
132
|
+
* words) are elided, and the header says so explicitly. Degrading loudly beats
|
|
133
|
+
* returning nothing, and beats a silent truncation that reads like the whole
|
|
134
|
+
* composition.
|
|
135
|
+
*/
|
|
136
|
+
export function formatComposition(json) {
|
|
137
|
+
const full = JSON.stringify(json, null, 2);
|
|
138
|
+
if (full.length <= COMPOSITION_VERBATIM_BUDGET)
|
|
139
|
+
return full;
|
|
140
|
+
const tracks = Array.isArray(json?.tracks) ? json.tracks : [];
|
|
141
|
+
const clips = tracks.flatMap((t) => (Array.isArray(t?.contents) ? t.contents : []));
|
|
142
|
+
const f = json?.format ?? {};
|
|
143
|
+
const lines = [
|
|
144
|
+
`Composition SUMMARIZED — the full JSON is ${full.length.toLocaleString()} chars, past what ` +
|
|
145
|
+
`an MCP result can carry. Structure below is complete (every track and clip is listed); ` +
|
|
146
|
+
`card html bodies and caption words are elided as lengths/counts. For a verbatim copy, ` +
|
|
147
|
+
`GET /v1/projects/{id}/composition over REST.`,
|
|
148
|
+
'',
|
|
149
|
+
`format: ${f.aspectRatio ?? '?'} ${f.fps ?? '?'}fps ${f.resolution ?? ''}`.trim(),
|
|
150
|
+
`tracks: ${tracks.length} clips: ${clips.length}`,
|
|
151
|
+
];
|
|
152
|
+
if (json?.captions) {
|
|
153
|
+
const segs = json.captions.segments?.length ?? 0;
|
|
154
|
+
const words = json.captions.words?.length ?? 0;
|
|
155
|
+
lines.push(`captions: ${segs} segment(s), ${words} word(s) [text elided]`);
|
|
156
|
+
}
|
|
157
|
+
if (Array.isArray(json?.markers) && json.markers.length) {
|
|
158
|
+
lines.push(`markers: ${json.markers.map((m) => m?.kind ?? '?').join(', ')}`);
|
|
159
|
+
}
|
|
160
|
+
for (const t of tracks) {
|
|
161
|
+
const contents = Array.isArray(t?.contents) ? t.contents : [];
|
|
162
|
+
lines.push('', `${t?.kind ?? '?'} track ${t?.id ?? '?'} — ${contents.length} clip(s):`);
|
|
163
|
+
for (const c of contents)
|
|
164
|
+
lines.push(describeClip(c));
|
|
165
|
+
}
|
|
166
|
+
return lines.join('\n');
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The `warnings[]` advisory channel, rendered for the reader. One idiom across
|
|
170
|
+
* every verb that carries it (create_render, apply_composition) so an agent
|
|
171
|
+
* learns to look for `⚠` exactly once.
|
|
172
|
+
*/
|
|
173
|
+
export function formatWarnings(json) {
|
|
174
|
+
const warns = Array.isArray(json?.warnings) ? json.warnings : [];
|
|
175
|
+
return warns.length > 0 ? `\n\n⚠ ${warns.join('\n⚠ ')}` : '';
|
|
176
|
+
}
|
|
177
|
+
export const CURATED_TOOLS = [
|
|
178
|
+
{
|
|
179
|
+
name: 'compose',
|
|
180
|
+
operationId: 'compose',
|
|
181
|
+
pathArgs: { projectId: 'id' },
|
|
182
|
+
description: 'Start the async Director compose workflow: it authors an ensemble of full composition candidates, verifies each, and saves the winner to the project. Body must set EXACTLY ONE source (mutually exclusive): `briefId` — author FROM a persisted Brief (the PLANNED path: create_brief first; every Brief field is honored or the compose is refused loudly naming the field); `fromComposition: true` — author from the project\'s CURRENT composition (the GENERAL path: seed it with apply_composition first — your media clips are the intent, and any graphics you authored are CARRIED VERBATIM as locked clips the Director authors around, never re-authors or drops); or `suggestionId` — author from an AI clip suggestion (the CLIPPING path, paired with suggest_briefs). Returns { composeJobId, workflowId, status, streamUrl }. Then call wait_job(kind="compose", id=composeJobId, projectId=...) to block until the winner is selected.',
|
|
183
|
+
okFormat: (j, a) => `Compose workflow started.\n\ncomposeJobId: ${j.composeJobId}\nworkflowId: ${j.workflowId}\nstatus: ${j.status}${j.streamUrl ? `\nstreamUrl: ${j.streamUrl}` : ''}\n\nCall wait_job(kind="compose", id="${j.composeJobId}", projectId="${a.projectId}") to block until the Director picks a winner.`,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'apply_composition',
|
|
187
|
+
operationId: 'applyComposition',
|
|
188
|
+
pathArgs: { projectId: 'id' },
|
|
189
|
+
description: 'Atomically apply an array of CompositionOps to a project composition. All ops succeed or none do (transactional). Pass `if_match` for optimistic-concurrency control (409 stale_etag on mismatch) and `dry_run: true` to validate the batch without persisting. Use this to seed a composition (add media clips) or make targeted edits (set a crop intent, reorder clips, set the format). CAPTIONS: attach content with {type:"captions.fromTranscript", mediaId, window?} — the server slices the cached word-timed transcript, rebases times, and sentence-splits into segments (no pasting words; 422 media_no_transcript if the media has no speech); style it with {type:"setCaptionStyle", style}; or set explicit words with {type:"setCaptions", segments, style?} (e.g. translations or your own VO timings). Brand is NOT set here — it lives on the project (create_project / PATCH /projects/:id with brandKitId). CARDS: a {kind:"card", html, tokens} clip projects each `tokens` KEY `x` to the CSS custom property `--cf-x`, so the html must read it as `var(--cf-x)` — write `tokens:{"plate":"#0af"}` + `background:var(--cf-plate)`. Do NOT put dashes in the key: `"--plate"` becomes `--cf---plate` and your `var(--plate)` then resolves to NOTHING, which CSS silently degrades to a transparent background and black text. Responses carry `warnings[]` when a card reads a var nothing defines.',
|
|
190
|
+
// A dry_run returns HTTP 200 { valid, errors } — branch on it so a FAILED
|
|
191
|
+
// validation is never reported as "applied" (the route returns 200 either way).
|
|
192
|
+
okFormat: (j, a) => {
|
|
193
|
+
// `warnings[]` rides BOTH shapes — a dry-run that validates clean can
|
|
194
|
+
// still be about to render a broken card, and that is the cheapest
|
|
195
|
+
// possible moment to say so.
|
|
196
|
+
const warns = formatWarnings(j);
|
|
197
|
+
if (j && typeof j.valid === 'boolean') {
|
|
198
|
+
const r = j;
|
|
199
|
+
return r.valid
|
|
200
|
+
? `Dry-run OK — composition is valid (nothing persisted).${warns}`
|
|
201
|
+
: `Dry-run FAILED — ${(r.errors ?? []).length} error(s), nothing persisted:\n${JSON.stringify(r.errors ?? [], null, 2)}${warns}`;
|
|
202
|
+
}
|
|
203
|
+
// The project clause is CONDITIONAL because `buildCuratedToolSet(ex,
|
|
204
|
+
// {session})` strips `projectId` from the schema and injects it into the
|
|
205
|
+
// path — so on every session-built lane (the Director's author + graphics
|
|
206
|
+
// designer, and the local bench) `a.projectId` is undefined and this line
|
|
207
|
+
// told the agent it had just edited "project undefined". Naming a project
|
|
208
|
+
// the model never supplied is the only thing this clause can get wrong;
|
|
209
|
+
// omitting it costs nothing, because on that lane there is exactly one
|
|
210
|
+
// composition being edited. The sessionless surfaces (raw MCP server,
|
|
211
|
+
// expert layer) are byte-identical.
|
|
212
|
+
return `Ops applied${a.projectId ? ` to project ${a.projectId}` : ''}.${warns}`;
|
|
213
|
+
},
|
|
214
|
+
// Teach the TARGETED patch: one clip, only the fields that change. The
|
|
215
|
+
// measured anti-pattern is re-emitting a whole card source per tweak
|
|
216
|
+
// (44-92s turns); a patch of position/opacity/params is seconds.
|
|
217
|
+
inputExamples: [
|
|
218
|
+
{
|
|
219
|
+
input: {
|
|
220
|
+
body: {
|
|
221
|
+
ops: [
|
|
222
|
+
{
|
|
223
|
+
type: 'clip.update',
|
|
224
|
+
clipId: 'g1',
|
|
225
|
+
patch: { position: { x: 0.5, y: 0.82 }, opacity: 0.95 },
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
],
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: 'validate_composition',
|
|
235
|
+
operationId: 'validateComposition',
|
|
236
|
+
description: 'Dry-run a full Composition object against the SAME pure, DB-free authoring guards saveComposition enforces, WITHOUT persisting it (no project needed). Checks: wire shape (Zod), primitive membership (unknown_primitive / custom_missing_sourcecode), required-param shape (invalid_primitive_params), clip↔track family (clip_source_track_mismatch), and reframe coverage (reframe_coverage_gap). Always returns ONE shape — 200 { valid, errors, quote } — for BOTH malformed wire shapes and deep-invariant failures (so branch on `valid`, not on HTTP status); errors[] lists every problem at once as a sanitized envelope { code, stage, category, retryable, message, fix } you can fix before composing/rendering. The `quote` triple states the render price to finish from a valid composition — relay it to your human BEFORE create_render. `valid:true` means save-safe EXCEPT for the two genuinely DB-bound checks that can only run at save/render: trim-bounds (needs the media duration) and image/asset-on-a-video-track (needs the media kind). Pass the Composition as `body`.',
|
|
237
|
+
annotations: { readOnlyHint: true },
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: 'create_render',
|
|
241
|
+
operationId: 'createRender',
|
|
242
|
+
pathArgs: { projectId: 'id' },
|
|
243
|
+
description: "Queue an MP4 render of a project's composition. Returns { id (renderId), status, warnings? } — `warnings[]` carries non-fatal advisories (omitted when none). The render themes from the project's brand kit (bind one via create_project / PATCH /projects/:id with brandKitId; without one the output is unbranded). Then call wait_job(kind=\"render\", id=renderId, projectId=...) to block until the file is ready and get the download URL, or register a webhook (create_webhook on render.completed — status rides the payload).",
|
|
244
|
+
okFormat: (j, a) => `Render queued.\n\nrenderId: ${j.id}\nprojectId: ${a.projectId}\nstatus: ${j.status}${formatWarnings(j)}\n\nCall wait_job(kind="render", id="${j.id}", projectId="${a.projectId}") to block until it completes and get the download URL.`,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: 'preview_frame',
|
|
248
|
+
operationId: 'previewFrame',
|
|
249
|
+
pathArgs: { projectId: 'id' },
|
|
250
|
+
description: "Render presigned PNG still(s) of the composition at the given timestamps — the live preview for layout/copy judgment. STATELESS: nothing to open, warm, or close; concurrent previews don't contend. Defaults to the PERSISTED state: absent `body.composition` ⇒ the project's ACTIVE composition — exactly what create_render will encode; pass `body.compositionId` to target a specific persisted composition (stale/foreign id ⇒ 404, never a silent fallback). The response's `previewed` field names what was rendered ({source: 'persisted'|'inline'|'scratch', compositionId?, etag?}) — trust a preview as render-truth ONLY when source is 'persisted'. `body.timestamps` = seconds to sample. A still cannot show motion — judge motion with preview_clip (a window of the composition) or preview_component (one graphic).",
|
|
251
|
+
// The most-called visual tool, and it returned a JSON blob of presigned
|
|
252
|
+
// links: the agent was told to judge layout and copy it could not see.
|
|
253
|
+
preview: {
|
|
254
|
+
urls: (j) => (Array.isArray(j?.stills) ? j.stills : []).map((st) => st?.url),
|
|
255
|
+
kind: 'image',
|
|
256
|
+
cap: 12,
|
|
257
|
+
},
|
|
258
|
+
// WITHOUT THIS, THE PIXELS SHIP TWICE — ONCE AS TEXT.
|
|
259
|
+
//
|
|
260
|
+
// The generic path falls back to `res.text` when a spec has no okFormat, so
|
|
261
|
+
// the model saw the WHOLE response JSON, `stills[].url` included, ALONGSIDE
|
|
262
|
+
// the image blocks. On the cloud lane that is a presigned link per still —
|
|
263
|
+
// wasteful. On the desktop lane (LocalExecutor serves this route out of the
|
|
264
|
+
// webview and has no R2, so it answers with `data:` URLs carrying the bytes
|
|
265
|
+
// inline) it is the ENTIRE IMAGE duplicated as base64 TEXT: 12 stills ≈
|
|
266
|
+
// hundreds of thousands of junk tokens, and the text copy is the one the
|
|
267
|
+
// model cannot see.
|
|
268
|
+
//
|
|
269
|
+
// So: a `data:` url is DROPPED (the bytes are already arriving as a media
|
|
270
|
+
// block — the text copy is pure waste). A real http(s) url is KEPT, because
|
|
271
|
+
// there it is 200 characters and an MCP host can open it.
|
|
272
|
+
okFormat: (j, a) => {
|
|
273
|
+
const stills = Array.isArray(j?.stills) ? j.stills : [];
|
|
274
|
+
const p = j?.previewed ?? {};
|
|
275
|
+
const head = `Previewed ${stills.length} still(s) of project ${a.projectId}.\n` +
|
|
276
|
+
`source: ${p.source ?? 'unknown'}` +
|
|
277
|
+
`${p.compositionId ? ` · compositionId: ${p.compositionId}` : ''}` +
|
|
278
|
+
`${p.etag ? ` · etag: ${p.etag}` : ''}` +
|
|
279
|
+
`${p.source !== 'persisted' ? ' — NOT render-truth (only source "persisted" is what create_render will encode)' : ''}`;
|
|
280
|
+
const lines = stills.map((st, i) => {
|
|
281
|
+
// `beatSec` is what the route ACTUALLY emits — it returns
|
|
282
|
+
// sightedAction.seeComposition's `SightedEvidence[]`
|
|
283
|
+
// ({beatSec, r2Key, url, bytesOut}) verbatim. `t`/`timestamp` are
|
|
284
|
+
// accepted too (an older hand-written fixture used `t`), so a rename on
|
|
285
|
+
// either lane degrades to a positional label rather than a lie.
|
|
286
|
+
const secs = typeof st?.beatSec === 'number'
|
|
287
|
+
? st.beatSec
|
|
288
|
+
: typeof st?.t === 'number'
|
|
289
|
+
? st.t
|
|
290
|
+
: typeof st?.timestamp === 'number'
|
|
291
|
+
? st.timestamp
|
|
292
|
+
: null;
|
|
293
|
+
const t = secs === null ? `#${i}` : `${secs.toFixed(2)}s`;
|
|
294
|
+
const url = typeof st?.url === 'string' && !st.url.startsWith('data:') ? ` ${st.url}` : '';
|
|
295
|
+
return ` ${t}${url}`;
|
|
296
|
+
});
|
|
297
|
+
return `${head}\n${lines.join('\n')}\n\nThe frames ride with this result as images — judge the layout from the pixels, not from this text.`;
|
|
298
|
+
},
|
|
299
|
+
annotations: { readOnlyHint: true },
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
name: 'preview_component',
|
|
303
|
+
operationId: 'previewComponent',
|
|
304
|
+
pathArgs: { projectId: 'id' },
|
|
305
|
+
description: 'Queue a MOTION-clip render of ONE org-installed component — ASYNC: returns a jobId immediately; then wait_job(kind="preview", id=jobId) for a presigned short clip (VP9-alpha webm, ~3s — the SAME alpha bake the production render composites, so what you preview is what ships). Motion is the point of components; a still is one frame and lies about animation (A8). The author→preview→fix loop for a graphic. SESSIONLESS: the warm box is a server detail (a cold first call returns 409 box_warming — retry in a few seconds). `body.componentId` selects the component; pass `body.params` to render it with props. Failures land on the job terminal with typed codes: component_does_not_compile / component_runtime_error carry the sanitized author-fixable message — read it, fix the tsxSource via create_component, and re-preview. Idempotent per (componentId, params, dims).',
|
|
306
|
+
okFormat: (j) => `Preview job queued.\n\njobId: ${j.jobId}\nstatus: ${j.status}\n\nCall wait_job(kind="preview", id="${j.jobId}") for the presigned motion clip (re-call it if it returns still-running).`,
|
|
307
|
+
annotations: { idempotentHint: true },
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
name: 'preview_clip',
|
|
311
|
+
operationId: 'previewClip',
|
|
312
|
+
pathArgs: { projectId: 'id' },
|
|
313
|
+
description: "Render a scoped, cheap MOTION preview — ONLY body.fromSec→body.toSec of the composition (max 60s) at preview quality (capped resolution, lighter encode) through the real render pipeline. THE way to judge motion — a cut, a transition, a component's animation — at full fidelity BEFORE paying for a full render (a still cannot show motion; a full render costs the export). ASYNC: returns a render job; wait_job(kind=\"render\", id=renderId) or a render.completed webhook for the URL. Meters the capture feature, never an exports credit.",
|
|
314
|
+
okFormat: (j) => `Preview render queued.\n\nrenderId: ${j.renderId ?? j.id}\nstatus: ${j.status}\n\nwait_job(kind="render", id="${j.renderId ?? j.id}", projectId=...) for the watchable preview URL.`,
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
name: 'score_composition',
|
|
318
|
+
operationId: 'scoreComposition',
|
|
319
|
+
pathArgs: { projectId: 'id' },
|
|
320
|
+
description: 'Queue the server-side judge — the standalone sighted check. ASYNC: returns a jobId (the judge takes minutes: it samples eval beats, renders them in a server-managed warm box, and grades editorial/spatial/brand/caption). Then wait_job(kind="verify", id=jobId) for per-criterion scores 0–10, a weighted composite, a worst-first critique, AND a checkpointId — the verdicts mint a durable kind:\'score\' Checkpoint, the same evidence noun the Director\'s gates produce (get_checkpoint re-reads it later). SESSIONLESS: a cold first call returns 409 box_warming — retry in a few seconds. `body.composition` optional (absent ⇒ the ACTIVE composition). Fix the lowest criterion via apply_composition and re-score. Score answers "how good IS this" (grounded numbers); consult answers "what SHOULD I change" (advice + a fix candidate). Idempotent per composition state; the compose_verify meter fires on the job\'s success terminal.',
|
|
321
|
+
okFormat: (j) => `Score job queued.\n\njobId: ${j.jobId}\nstatus: ${j.status}\n\nCall wait_job(kind="verify", id="${j.jobId}") to block until the scores + checkpointId are ready (re-call it if it returns still-running).`,
|
|
322
|
+
annotations: { idempotentHint: true },
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
name: 'consult',
|
|
326
|
+
operationId: 'consult',
|
|
327
|
+
pathArgs: { projectId: 'id' },
|
|
328
|
+
description: "Ask the Director for editing advice on the project's CURRENT composition — it NEVER writes your composition (you stay the decider). Async: returns a consultJobId; then wait_job(kind=\"consult\", id=consultJobId, projectId=...) surfaces the advisory envelope (assessment / proposals / principles / plan). `body.mode`: 'advise' = the planner agent (fast, ~30s-2min) returns a `plan` (framing/cuts/captions/graphics intents) as GUIDANCE you re-author from — no grounded scores, nothing to adopt; 'amend' (default) = the full author→judge→refine loop (minutes) returns a graded `assessment` + a fix candidate you ADOPT via select_candidate with its candidateIndex. ('explore' is coming soon → use amend.) `body.intent` = your goal in plain English; optional `body.focus` (editorial|spatial|brand|caption); `body.ifMatch` binds to your current etag. Use advise for a fast directional nudge, amend for a grounded, adoptable fix.",
|
|
329
|
+
okFormat: (j) => `Consult job ${j.consultJobId} queued (${j.status}). wait_job(kind="consult", id="${j.consultJobId}", projectId=...) for the advisory envelope (advise → a plan to re-author from; amend → a graded fix to adopt via select_candidate).`,
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
name: 'resume',
|
|
333
|
+
operationId: 'resumeCheckpoint',
|
|
334
|
+
pathArgs: { checkpointId: 'id' },
|
|
335
|
+
description: "Answer the checkpoint packet wait_job reported as awaiting_input (its {checkpointId} — read the packet FIRST with get_checkpoint and relay the stills + money triple to your human). ONE `body.decision` per gate: 'approve' (proceed; comments allowed — they record as taste without gating), 'revise' (the director revises per your `body.comments` [{anchor: {beatId}|{timecodeMs}, verdict: 'approve'|'revise'|'lock', note}] and/or `body.edits`, then RE-PRESENTS this same gate as a new packet — in-job, no new charge; the brief quote states the included revision cycles, beyond them revise is refused 402), or 'abandon' (end the run — the only terminal refusal). 'lock' freezes an element contractually: the director touching it surfaces as a lock_violation verdict on the next packet. On approve/revise the Director rehydrates its warm box and continues; then wait_job again.",
|
|
336
|
+
okFormat: () => `Decision recorded. wait_job(kind="compose", …) to continue — a revise re-presents this gate as a NEW packet (version+1); an approve proceeds to the next gate or the winner.`,
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: 'create_brief',
|
|
340
|
+
operationId: 'createBrief',
|
|
341
|
+
description: "Persist the video's INTENT as a Brief — the Director's rich input contract (spec: the storyboard skill's output lands here). Fields: goal (required), audience, platform, format, durationSec, tone, cta, locale (output language — all on-screen copy + captions), hook, caption, beats[] (each with an editorial intent and optional MOMENT PINNING {mediaId, startSec, endSec} — honored to-the-frame or refused), mustIncludes, captions {styleId, emphasisPhrases} (the big-serif emphasis treatment), motionStyle, seededGraphics (your authored overlay/component/card clips, carried VERBATIM as locked clips — never re-authored), exclusions (hard negatives: graphic kinds the Director must NEVER author + 'no-transitions'), gates {holdAt, autoApprove}. Then compose it: compose with {briefId}. The response carries the QUOTE (compose + estimated render) — relay it to your human BEFORE composing.",
|
|
342
|
+
okFormat: (j) => `Brief ${j.id} created. Quote: compose $${j.quote?.composeUsd} + ~$${j.quote?.renderUsdPerExport}/render (est. journey $${j.quote?.estimatedJourneyUsd}) — relay before composing. Compose it: compose(projectId, body: { briefId: "${j.id}" }).`,
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'get_brief',
|
|
346
|
+
operationId: 'getBrief',
|
|
347
|
+
pathArgs: { briefId: 'id' },
|
|
348
|
+
description: 'Read a brief by id — the persisted intent plus its current quote (compose + estimated render).',
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
name: 'list_briefs',
|
|
352
|
+
operationId: 'listBriefs',
|
|
353
|
+
description: 'List briefs. DEFAULT shows human-authored briefs only; kind:"clip" shows the machine-minted clip briefs (suggest_briefs output), kind:"all" shows everything. Each carries its quote.',
|
|
354
|
+
queryArgs: {
|
|
355
|
+
projectId: 'Scope to one project.',
|
|
356
|
+
kind: "'authored' (default) | 'clip' | 'all'.",
|
|
357
|
+
},
|
|
358
|
+
annotations: { readOnlyHint: true },
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
name: 'get_checkpoint',
|
|
362
|
+
operationId: 'getCheckpoint',
|
|
363
|
+
pathArgs: { checkpointId: 'id' },
|
|
364
|
+
description: "Read a checkpoint packet — the durable approval unit a held compose pauses at (wait_job reports awaiting_input with {checkpointId, stage, version}). Carries the stage artifact, presigned storyboard stills (REVIEW THE EVIDENCE, not raw JSON), critic verdicts, the money triple {thisStepUsd, jobSpendSoFarUsd, estimatedJourneyTotalUsd} to relay to your human, and the recorded decision once resolved. When the Brief's gates set reviewMode:'hosted' the packet also carries reviewUrl — a browser review page where your human decides directly (relay THAT link instead of raw stills; you learn the decision via checkpoint webhooks / wait_job). Answer an awaiting packet with resume(checkpointId, ...).",
|
|
365
|
+
// The packet grades stills the agent was never shown: it got a score and a
|
|
366
|
+
// text critique and was told to 'fix the lowest criterion' sight-unseen.
|
|
367
|
+
preview: {
|
|
368
|
+
urls: (j) => (Array.isArray(j?.stillUrls) ? j.stillUrls : []),
|
|
369
|
+
kind: 'image',
|
|
370
|
+
cap: 12,
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
name: 'list_checkpoints',
|
|
375
|
+
operationId: 'listCheckpoints',
|
|
376
|
+
description: "List checkpoint packets newest-first (filter with composeJobId for one run's v1→vN gate history, or projectId). The version stack with per-version status + decisions IS the review history — nothing is deleted.",
|
|
377
|
+
queryArgs: {
|
|
378
|
+
composeJobId: "One compose run's gate history (v1→vN).",
|
|
379
|
+
projectId: 'Scope to one project.',
|
|
380
|
+
},
|
|
381
|
+
annotations: { readOnlyHint: true },
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
name: 'update_brief',
|
|
385
|
+
operationId: 'updateBrief',
|
|
386
|
+
pathArgs: { briefId: 'id' },
|
|
387
|
+
description: "Edit a brief (partial). REFUSED with 409 while an ACTIVE compose job references it — finish, resume, or abandon the job first (the Director never has its input edited mid-run). Edits apply to the NEXT compose.",
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
name: 'delete_brief',
|
|
391
|
+
operationId: 'deleteBrief',
|
|
392
|
+
pathArgs: { briefId: 'id' },
|
|
393
|
+
description: 'Delete a brief. Compose jobs already run from it are unaffected (they snapshot).',
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
// A12 cutover note: 'adopt_candidate' is BURNED (tombstoned); the
|
|
397
|
+
// capability survives as select_candidate because consult(amend) proposals
|
|
398
|
+
// carry only a candidateIndex — without a curated select the amend mode is
|
|
399
|
+
// a dead-end (the exact defect plan-1 fixed). The full fold into the
|
|
400
|
+
// checkpoint review model (consult minting a score packet you resume) is
|
|
401
|
+
// plan-5 scope.
|
|
402
|
+
name: 'select_candidate',
|
|
403
|
+
operationId: 'selectComposeCandidate',
|
|
404
|
+
pathArgs: { projectId: 'id', composeJobId: 'composeJobId' },
|
|
405
|
+
description: "Select one candidate from a finished compose/consult ensemble as the project's saved composition (whole-candidate replace). Body REQUIRES both fields: { candidateIndex, selectStrategy: \"agent-authoritative\" } — candidateIndex from wait_job(kind=\"consult\") proposals (mode=amend) or the compose winner report; selectStrategy is required and API keys must use 'agent-authoritative' (editor-merge/editor-replace need an editor-session token and 403 on an API key). After selecting, render with create_render.",
|
|
406
|
+
okFormat: () => 'Candidate selected — it is now the saved composition. Render it with create_render.',
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
name: 'create_component',
|
|
410
|
+
operationId: 'createComponent',
|
|
411
|
+
description: 'Create and store a custom graphic component (a reusable overlay/title/lower-third etc.) for the tenant. Returns the ComponentResponse (id + metadata) you can then reference from a composition. No project arg — components are tenant-scoped.',
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
name: 'list_catalog',
|
|
415
|
+
operationId: 'listCatalog',
|
|
416
|
+
description: "DISCOVER WHAT TO BUILD WITH — list the component catalog: the FULL built-in primitive catalog (text, effects, transitions, layouts, backgrounds, and scenes: lower-third, cinematic-title, color-grade, product-launch-trailer, …) PLUS your org-installed components. Use it for UTILITY furniture (captions, grades, transitions, backgrounds, scenes) and as REFERENCE CODE (get_component_source) — for BRAND or text graphics, default to authoring your OWN `kind:'card'` clip (your HTML + tokens, poster-grade typography) shelled with `applyMotionPreset`; a catalog text primitive is the quick generic fallback, not the identity path. Narrow with filters: `category` (text|effects|transitions|layouts|backgrounds|ui-blocks|scenes), `kind` (component|transition|scene), `tier` (recommended|standard|niche), `useCase` (intro|outro|full-scene|title-over-footage|transition|background|grade|emphasis|explainer|social-cut), `mood`, or free-text `q`/`intent` (e.g. intent='intro'). When any filter is set, results are recommended-tier-first. With NO `limit` the whole filtered catalog returns in one page. Each entry carries a `placement` hint = exactly how to author it via apply_composition ({kind:'overlay'|'effect', primitiveId} for built-ins; {kind:'component', componentId} for installed), `tier`/`useCase` to pick by, and `fixedCopy` (on-screen strings it BAKES that no param changes — fork via get_component_source to edit). Read cueframe://component/{id} for the full prop schema.",
|
|
417
|
+
okFormat: (j) => formatComponentList(j),
|
|
418
|
+
annotations: { readOnlyHint: true },
|
|
419
|
+
// 103 visual primitives described in PROSE — an agent picked silk-flow-bg
|
|
420
|
+
// over vector-field from a sentence. The renders and the CDN have existed
|
|
421
|
+
// for a while; this is the join. Best-effort by design: org-installed
|
|
422
|
+
// components have no published preview, and a miss yields no thumbnail.
|
|
423
|
+
preview: {
|
|
424
|
+
urls: (j) => (Array.isArray(j?.data) ? j.data : []).map((e) => CATALOG_PREVIEWS[e?.id]),
|
|
425
|
+
kind: 'image',
|
|
426
|
+
cap: 12,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
name: 'get_component_source',
|
|
431
|
+
operationId: 'getComponentSource',
|
|
432
|
+
pathArgs: { componentId: 'id' },
|
|
433
|
+
description: 'Read a component\'s editable TSX source. Pass a BUILT-IN primitive id (e.g. "cinematic-title", "lower-third", "kinetic-type") to get it as a SINGLE self-contained module — the server-native FORK path: edit the returned tsxSource, then create_component it back to own a customized copy. Also returns an org-installed component\'s own authored source. Returns { id, name, tsxSource, origin, ejectedFrom, propSchema, … }; 404 if the id is neither a known primitive nor an installed component carrying source.',
|
|
434
|
+
okFormat: (j) => `Component source for ${j.id} (${j.name})${j.origin ? ` — origin: ${j.origin}` : ''}${j.ejectedFrom ? `, ejectedFrom: ${j.ejectedFrom}` : ''}.\nEdit this tsxSource and create_component it back to own a fork.\n\n${j.tsxSource}`,
|
|
435
|
+
annotations: { readOnlyHint: true },
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: 'get_media_context',
|
|
439
|
+
operationId: 'getMediaContext',
|
|
440
|
+
pathArgs: { mediaItemId: 'id' },
|
|
441
|
+
description: 'Fetch the authoring context for a media item: detected faces (subject boxes per frame) and the transcript. Use this before composing/applying so your crop intents, captions, and timing line up with what is actually in the footage.',
|
|
442
|
+
annotations: { readOnlyHint: true },
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
name: 'list_media',
|
|
446
|
+
operationId: 'listMedia',
|
|
447
|
+
description: 'List the media in your CueFrame library. Filter a real library with kind (video|audio|image|gif|asset|source|stock), source (upload|generated|import-url|stock), or tag — so you find YOUR footage, not e2e debris. Returns media item IDs and metadata; use an ID with get_media_context, suggest_briefs, or as a composition source.',
|
|
448
|
+
queryArgs: {
|
|
449
|
+
kind: 'video | audio | image | gif | asset | source | stock.',
|
|
450
|
+
source: 'upload | generated | import-url | stock.',
|
|
451
|
+
tag: 'Exact tag match.',
|
|
452
|
+
},
|
|
453
|
+
okFormat: (j) => formatMediaList(j),
|
|
454
|
+
annotations: { readOnlyHint: true },
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
name: 'create_project',
|
|
458
|
+
operationId: 'createProject',
|
|
459
|
+
description: 'Create a new project — the unit you compose and render into. compose / apply_composition / create_render / the preview family all require a projectId; this mints one. Pass name (required) plus optionally a format (aspectRatio/fps/resolution) and brandKitId. brandKitId binds a brand kit to the PROJECT (pass the kitId from create_brand_kit): colors/fonts/motion theme every render of this project automatically (omit it and the output is unbranded). Bind or change it later via PATCH /projects/:id. Returns the ProjectResponse (id + metadata).',
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
name: 'new_composition',
|
|
463
|
+
operationId: 'newComposition',
|
|
464
|
+
pathArgs: { projectId: 'id' },
|
|
465
|
+
description: 'Create a NEW composition (a new video) inside a project — a project is a workspace that holds many videos. Returns { compositionId, format, etag }. Pass an optional name and format (aspectRatio/fps/resolution); format defaults to the project\'s compositionFormat. The first composition becomes the project\'s active default. To author it, seed with apply_composition then compose({ fromComposition: true }) — your authored graphics ride as locked clips, carried verbatim; to render a specific one, pass its compositionId to create_render. (For a reframed sibling in another aspect, use derive_composition.)',
|
|
466
|
+
okFormat: (j, a) => `New video created in project ${a.projectId}.\n\ncompositionId: ${j.compositionId}\nformat: ${JSON.stringify(j.format)}\netag: ${j.etag}`,
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: 'get_composition',
|
|
470
|
+
operationId: 'getComposition',
|
|
471
|
+
pathArgs: { projectId: 'id' },
|
|
472
|
+
description: "READ BACK the project's active composition as JSON — the edit itself: tracks, clips, " +
|
|
473
|
+
'card HTML, reframe segments, captions, markers, format. This is what create_render ' +
|
|
474
|
+
'encodes, so it is also what you hand to validate_composition (which needs a full inline ' +
|
|
475
|
+
'composition body), what you diff after an edit, and what you archive/share so someone ' +
|
|
476
|
+
'else can re-render the SAME video. Read-only and free. Authoring stays op-based ' +
|
|
477
|
+
'(apply_composition) — do not round-trip this object back as a write. A composition too ' +
|
|
478
|
+
'large to fit one MCP result degrades to a STRUCTURAL SUMMARY (every track and clip still ' +
|
|
479
|
+
'listed; card html and caption words elided as lengths) with a header saying so — read it ' +
|
|
480
|
+
'over REST if you need the verbatim body.',
|
|
481
|
+
okFormat: (j) => formatComposition(j),
|
|
482
|
+
annotations: { readOnlyHint: true },
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
name: 'list_compositions',
|
|
486
|
+
operationId: 'listCompositions',
|
|
487
|
+
pathArgs: { projectId: 'id' },
|
|
488
|
+
description: 'List every composition (video) in a project, with its format and which one is active. Use a returned compositionId with create_render(compositionId=...) to render a specific video, or apply_composition to edit it.',
|
|
489
|
+
annotations: { readOnlyHint: true },
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
name: 'delete_composition',
|
|
493
|
+
operationId: 'deleteComposition',
|
|
494
|
+
pathArgs: { projectId: 'id', compositionId: 'compositionId' },
|
|
495
|
+
description: "Delete a composition (and its version history) from a project. REFUSES the ACTIVE composition (409) — make another one active first, or delete the project. Use list_compositions to see which is active.",
|
|
496
|
+
annotations: { destructiveHint: true },
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
name: 'list_projects',
|
|
500
|
+
operationId: 'listProjects',
|
|
501
|
+
description: 'List your projects — re-orient in an existing workspace instead of minting duplicates (steady-state entry, A9). Each row carries the id every other tool needs.',
|
|
502
|
+
annotations: { readOnlyHint: true },
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
name: 'derive_composition',
|
|
506
|
+
operationId: 'deriveComposition',
|
|
507
|
+
pathArgs: { projectId: 'id' },
|
|
508
|
+
description: 'Derive a reframed SIBLING composition for a different aspect ratio (the agent-native Auto-Reframe / Magic-Resize). Pass projectId + body { fromCompositionId, targetFormat: { aspectRatio, fps?, resolution? } }. CueFrame copies the source composition\'s authored intent and content-aware-reframes every clip for the new aspect (point/face/active-speaker focus), then saves a new independent composition in the same project. Returns { compositionId } — render it with create_render, or refine it with apply_composition. Use this to make 9:16 + 1:1 + 4:5 cuts from one 16:9 edit. (To only change resolution within the SAME aspect, pass create_render.format instead — that is a scale-only export override, not a new composition.)',
|
|
509
|
+
okFormat: (j, a) => `Derived a reframed sibling composition.\n\ncompositionId: ${j.compositionId}\nprojectId: ${a.projectId}\n\nRender it with create_render(projectId="${a.projectId}", body={ compositionId: "${j.compositionId}" }) or refine it with apply_composition.`,
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
name: 'import_media',
|
|
513
|
+
operationId: 'importMedia',
|
|
514
|
+
description: 'Import a media item into your library from a public URL — the agent-friendly ingest path (single call, no upload protocol). Pass url (https) + filename (+ optional contentType). Returns { id, status:"importing" }. Processing is async: poll list_media for processingStatus, or register a webhook (create_webhook on media.completed — status: complete|failed rides the payload). Use the returned id with get_media_context, suggest_briefs, or as a composition source.',
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
name: 'generate_media',
|
|
518
|
+
operationId: 'generateMedia',
|
|
519
|
+
description: 'Generate a media item from a prompt (generator: text-to-video | text-to-image | image-to-video | auto). Returns { id, status:"generating", estimateUsd? }; returns 402 if the estimate exceeds the per-call ceiling. Async — poll list_media or use a webhook (media.completed — status rides the payload). Use the returned id like any other media item.',
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
name: 'create_upload',
|
|
523
|
+
operationId: 'createMediaUpload',
|
|
524
|
+
description: 'Ingest a LOCAL file — bytes you hold, when there is no public URL to hand import_media (prefer import_media whenever the bytes already sit at an https URL). TWO steps: (1) this tool reserves a media row and returns { id, uploadUrl, expiresAt } — a short-lived presigned PUT URL. PUT the raw file bytes straight to uploadUrl over HTTPS with your declared Content-Type (the bytes go direct to R2, never through MCP; ≤ ~5 GB per PUT). (2) call finalize_upload({ mediaItemId: id }) to start processing. Body: filename, contentType (allowed enum), size (bytes). Thereafter it is async exactly like import_media: poll list_media for processingStatus, or register a webhook (create_webhook on media.completed). Use the returned id with get_media_context, suggest_briefs, or as a composition source.',
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
name: 'finalize_upload',
|
|
528
|
+
operationId: 'finalizeMedia',
|
|
529
|
+
pathArgs: { mediaItemId: 'id' },
|
|
530
|
+
description: 'Finalize a direct upload once you have PUT the bytes to the uploadUrl from create_upload. Confirms the bytes landed and starts ingest: image/asset become ready immediately (status "complete"); audio/video enter processing (status "processing"). Returns { id, status, processingPhase }. 400 if no bytes were uploaded (PUT first) or the item is not awaiting finalize; 404 if the id is not yours. Then poll list_media / get_media_context, or use a media.completed webhook.',
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
name: 'search_resources',
|
|
534
|
+
operationId: 'searchResources',
|
|
535
|
+
description: 'Search licensed STOCK media to compose with — video/photo (Pexels + Pixabay fallback), sfx (Freesound, CC0-only), gif (Klipy). Pass query for ONE search, or queries[] (≤10) to run them all in a SINGLE call — strongly prefer the batch when you know several things you need (a 64-search session spent 5m10s on serial round-trips). A batch returns results[], one per query in order, each with its own candidates; a query that fails carries an error and never discards the others. Optional kind [default video], provider pin, limit ≤50 apply to every query in the batch. Returns ranked candidates, each with an opaque candidateId + attribution (author, assetUrl) + license, and a preview URL in the text. FREE + rate-limited + 7-day cached — reach for this before generate_media when real footage beats synthesis. TO SEE the candidates rather than read about them, pass limit ≥2: thumbnails/audio are attached only when you asked for options to compare, because a preview of a single forced choice is pure cost. Import a chosen candidate into a project with import_resource. Candidates expire after 7 days (re-search to refresh a candidateId).',
|
|
536
|
+
okFormat: (j) => formatResourceCandidates(j),
|
|
537
|
+
// Stock was picked from resolution, duration and author name — eight
|
|
538
|
+
// near-identical clips in one session. Thumbnails end that. But ONLY when
|
|
539
|
+
// there is something to pick BETWEEN: see `attach` on CuratedTool.preview.
|
|
540
|
+
preview: {
|
|
541
|
+
urls: (j) => (Array.isArray(j?.results)
|
|
542
|
+
? j.results.flatMap((r) => (Array.isArray(r?.candidates) ? r.candidates : []))
|
|
543
|
+
: Array.isArray(j?.candidates)
|
|
544
|
+
? j.candidates
|
|
545
|
+
: []).map((c) => c?.previewUrl),
|
|
546
|
+
kind: (j) => ((j?.kind ?? j?.results?.[0]?.kind) === 'sfx' ? 'audio' : 'image'),
|
|
547
|
+
cap: 12,
|
|
548
|
+
// A batch is by definition a comparison, so its previews are earned. A
|
|
549
|
+
// single-query search returning one candidate still gets none.
|
|
550
|
+
attach: (j) => Array.isArray(j?.results)
|
|
551
|
+
? true
|
|
552
|
+
: (Array.isArray(j?.candidates) ? j.candidates.length : 0) > 1,
|
|
553
|
+
},
|
|
554
|
+
annotations: { readOnlyHint: true },
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
name: 'search_fonts',
|
|
558
|
+
operationId: 'searchFonts',
|
|
559
|
+
description: 'Search web font families by name/style — returns family names to use in composition/component params. Pass query (+ optional perPage ≤50). Read-only + free; surfaces the Google Fonts catalog (family + category + variants + css2 stylesheet URL). IMPORTANT: this searches the GOOGLE catalog, not what the render can actually draw. Only the faces vendored into the render page are guaranteed to rasterize; naming any other family gets you the generic fallback (Liberation Sans) with no error. create_render returns a `font_not_available` warning naming the guaranteed set — treat that set, not this catalog, as the list you may choose from. An empty result set here means no match, or the upstream catalog was unavailable.',
|
|
560
|
+
okFormat: (j) => `${(j.results || []).length} fonts: ${(j.results || []).map((r) => r.family).slice(0, 10).join(', ')}`,
|
|
561
|
+
annotations: { readOnlyHint: true },
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
name: 'import_resource',
|
|
565
|
+
operationId: 'importResource',
|
|
566
|
+
description: 'Import a stock candidate (candidateId from search_resources) into a project as an ORG-OWNED media item — provider/externalId/license provenance preserved, bytes deduped across orgs. Pass projectId + candidateId. Returns { id, status:"importing"|"ready" }; processing is async — poll list_media / get_media_context, then use the returned id as a composition source. Gated on the resource_import plan feature (402 billing_required if your plan lacks it). 422 candidate_mismatch if the candidate expired — re-run search_resources.',
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
name: 'suggest_briefs',
|
|
570
|
+
operationId: 'suggestBriefs',
|
|
571
|
+
pathArgs: { mediaItemId: 'id' },
|
|
572
|
+
description: 'Run AI clip-suggestion analysis on a long-form media item — the CLIPPING path (find the best short-form moments). Returns { workflowId, status }; then wait_job(kind="suggestions", id=mediaItemId) — its terminal lists each suggestion WITH its briefId. When the media belongs to a PROJECT, each finalized suggestion is promoted to a kind-\'clip\' BRIEF (its window pinned as a beat) — list_briefs {kind:"clip"} shows them and compose({ briefId }) runs the flagship path from one. Project-less media: pass the suggestion id to compose({ suggestionId }) directly. Clipping is a vertical, NOT the general path.',
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
name: 'create_webhook',
|
|
576
|
+
operationId: 'createWebhook',
|
|
577
|
+
description: 'Register a webhook so long-running jobs notify you instead of blocking on wait_job — the right pattern for fan-out/async agents. Pass url + events — ONE terminal event per job kind with status INSIDE the payload (render.completed, compose.completed, media.completed, suggest.completed) plus checkpoint.ready (a held compose paused for review). DELIVERY: a POST { event, timestamp, projectId?, data } with Standard-Webhooks headers (webhook-id, webhook-timestamp, webhook-signature: v1,<base64>); the secret (whsec_<base64>) is returned ONCE — verify the RAW body with new Webhook(secret).verify(rawBody, headers). ACTIVATION is synchronous: CueFrame POSTs a signed webhook.verify challenge and your endpoint must reply 2xx echoing data.token — otherwise it returns status:"pending" and receives NO events (recover with verify_webhook, no delete/recreate). Read the cueframe://webhook-events resource (or GET /webhooks/events) for the full contract + every event\'s data shape BEFORE building your receiver.',
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
name: 'verify_webhook',
|
|
581
|
+
operationId: 'verifyWebhook',
|
|
582
|
+
pathArgs: { webhookId: 'id' },
|
|
583
|
+
description: 'Re-run ownership verification on a PENDING webhook — one whose endpoint did not echo the challenge at create time (check its verification.reason: token_not_echoed / non_2xx_<code> / unreachable / ssrf_blocked). After you fix the receiver to reply 2xx echoing data.token, call this to re-send the signed webhook.verify challenge and flip it active IN PLACE (id + secret preserved — no delete/recreate). Returns { id, status:"active"|"pending", verification? }. An already-active webhook returns active unchanged.',
|
|
584
|
+
annotations: { idempotentHint: true },
|
|
585
|
+
},
|
|
586
|
+
{
|
|
587
|
+
name: 'get_profile',
|
|
588
|
+
operationId: 'getProfile',
|
|
589
|
+
description: "The org's legible taste in ONE read: brand kits, registered critics (the machine-checkable standard both the Director's gates and score_composition enforce), their reference media (presigned thumbnails), and the recent checkpoint-decision log. Read this BEFORE composing for an org you haven't worked with — it is the house style.",
|
|
590
|
+
annotations: { readOnlyHint: true },
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
name: 'list_critics',
|
|
594
|
+
operationId: 'listCritics',
|
|
595
|
+
description: 'List registered critics: criticId, label, tier (rules|rubric|evaluator), phase, floor, referenceMediaIds. Rubric text / rules / evaluator URLs are write-only — never echoed. Manage with register_critic (upsert) / delete_critic.',
|
|
596
|
+
annotations: { readOnlyHint: true },
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
name: 'delete_critic',
|
|
600
|
+
operationId: 'deleteCritic',
|
|
601
|
+
pathArgs: { criticId: 'criticId' },
|
|
602
|
+
description: 'Delete a registered critic by its criticId. It stops running in the Director gates and score_composition immediately.',
|
|
603
|
+
annotations: { destructiveHint: true, idempotentHint: true },
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: 'register_critic',
|
|
607
|
+
operationId: 'createCritic',
|
|
608
|
+
description: "Register a custom eval into the compose critic panel — the critic contract is { rubric (or rules/evaluator), referenceMediaIds?, floor }. Three tiers: rules (declarative constraints — keep-out regions, required elements, max overlays, brand colors), rubric (a text criterion scored by the judge as an extra column), or evaluator (your HTTPS webhook — CueFrame POSTs the composition+stills+facts, you return { score, critique }). referenceMediaIds (≤6 org media ids) attach YOUR reference frames as the standard — the judge scores candidates for consistency with them, so \"indistinguishable from mine\" is a machine check. Lane scope: rules + rubric critics run in BOTH lanes (the Director's gates AND standalone score_composition); evaluator webhooks run in the Director lane only. Use phase 'static' (the default) — 'temporal' (final-render evaluation) is accepted but not yet wired, so a temporal critic produces no verdicts today. A low client score drives a refine like a built-in criterion. You see your eval output + our scores, never our rubric. Re-registering the same criticId upserts (list_critics / delete_critic manage the set). Evaluator tier returns a signing secret ONCE.",
|
|
609
|
+
annotations: { idempotentHint: true },
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
name: 'update_project', operationId: 'patchProject', pathArgs: { projectId: 'id' },
|
|
613
|
+
description: 'Update a project\'s mutable fields (e.g. name, format, brandKitId). Pass projectId + the changed fields as `body`. Setting brandKitId binds/changes the project brand kit so every render of this project themes from it. Returns the updated ProjectResponse.',
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
name: 'delete_project', operationId: 'deleteProject', pathArgs: { projectId: 'id' },
|
|
617
|
+
description: 'Permanently delete a project you created (cleanup). Removes its composition and render history. Irreversible — only call on a project you own and no longer need.',
|
|
618
|
+
okText: (a) => `Project ${a.projectId} deleted.`,
|
|
619
|
+
annotations: { destructiveHint: true },
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
name: 'delete_media', operationId: 'deleteMedia', pathArgs: { mediaItemId: 'id' },
|
|
623
|
+
description: 'Permanently delete a media item from your library (cleanup). Irreversible. Compositions referencing it will fail to render — only delete media no composition still needs.',
|
|
624
|
+
okText: (a) => `Media ${a.mediaItemId} deleted.`,
|
|
625
|
+
annotations: { destructiveHint: true },
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
name: 'update_component', operationId: 'updateComponent', pathArgs: { componentId: 'id' },
|
|
629
|
+
description: 'Update an authored component\'s tsxSource/metadata IN PLACE (same id) — the correct verb for the author→preview→fix loop (preview_component returns the compiler error; fix the source here and re-preview, instead of creating a new component each iteration). Pass componentId + the changed fields as `body`.',
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
name: 'update_webhook', operationId: 'patchWebhook', pathArgs: { webhookId: 'id' },
|
|
633
|
+
description: 'Update a webhook subscription (its url or event list). Pass webhookId + changed fields as `body`. The signing secret is NOT rotated here.',
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
name: 'delete_webhook', operationId: 'deleteWebhook', pathArgs: { webhookId: 'id' },
|
|
637
|
+
description: 'Delete a webhook subscription (stop receiving its deliveries). Irreversible — the signing secret is invalidated.',
|
|
638
|
+
okText: (a) => `Webhook ${a.webhookId} deleted.`,
|
|
639
|
+
annotations: { destructiveHint: true },
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
name: 'cancel_render', operationId: 'cancelRender', pathArgs: { projectId: 'id', renderId: 'renderId' },
|
|
643
|
+
description: 'Cancel an in-flight render (stop a runaway/queued job). Needs projectId + renderId (from create_render). No-op if already terminal.',
|
|
644
|
+
okText: (a) => `Render ${a.renderId} cancelled.`,
|
|
645
|
+
annotations: { idempotentHint: true },
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
name: 'cancel_compose', operationId: 'cancelCompose', pathArgs: { projectId: 'id', composeJobId: 'composeJobId' },
|
|
649
|
+
description: 'Cancel an in-flight compose job (stop a runaway/mis-priced ensemble). Needs projectId + composeJobId (from compose). The director cancel is confirmed before the row flips; any linked charge is released. No-op-reject (422) if already terminal.',
|
|
650
|
+
okText: (a) => `Compose job ${a.composeJobId} cancelled.`,
|
|
651
|
+
annotations: { idempotentHint: true },
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
name: 'cancel_job', operationId: 'cancelJob', pathArgs: { jobId: 'jobId' },
|
|
655
|
+
description: 'Cancel a running async job (verify / preview / brand-kit-extract) returned by an enqueue call — abort a mis-priced job instead of waiting out its TTL. For box-backed jobs the warm box is reaped best-effort; cancel never meters. No-op-reject (422) if already terminal.',
|
|
656
|
+
okText: (a) => `Job ${a.jobId} cancelled.`,
|
|
657
|
+
annotations: { idempotentHint: true },
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: 'cancel_export', operationId: 'cancelExport', pathArgs: { projectId: 'id', exportId: 'exportId' },
|
|
661
|
+
description: 'Cancel an in-flight NLE export (fcpxml/premiere). Needs projectId + exportId (from the export enqueue). No-op-reject (422) if already terminal.',
|
|
662
|
+
okText: (a) => `Export ${a.exportId} cancelled.`,
|
|
663
|
+
annotations: { idempotentHint: true },
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: 'retry_render', operationId: 'retryRender', pathArgs: { projectId: 'id', renderId: 'renderId' },
|
|
667
|
+
description: 'Re-render an existing render job\'s FROZEN composition snapshot — it inherits that job\'s exact composition/intent/priority and queues a fresh renderJob; it does NOT re-read the project\'s current composition. So it only helps a TRANSIENT failure (the failed render\'s `retryable:true` / `category:"transient"` — a flaky pipeline/infra fault): re-attempting the same snapshot may succeed. For a DETERMINISTIC failure (`retryable:false` / `category:"authoring"` — a bad param, an unresolvable media/brand ref), retry_render reproduces the SAME failure: FIX the composition first via apply_composition, then create_render (a retry alone is futile). Check `retryable` on getRender / wait_job to pick the path. Returns the new render; then wait_job(kind="render", id=<new id>).',
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: 'get_account', operationId: 'getAccount',
|
|
671
|
+
description: 'ORIENT FIRST — show THIS key\'s account before you spend a metered call: the org it is bound to, the current plan, a per-feature entitlements map, and per-call cost ceilings. READ `balance`, NOT `included`. CueFrame is credit-funded: rendering (entitlements.exports), generation (generate), preview stills (compose_capture), the judge (compose_verify) and the Director (compose) have NO separate per-plan allowance — they all spend one shared wallet, named in `fundedBy` (`credits`; generation spends `premium_credits`). Each `balance` restates that ONE wallet in that feature\'s own unit at `creditCost` credits per unit, so they are alternative ways to spend the same money, not four budgets. A positive balance means proceed — `create_render`, `compose`, `generate_media` and `create_brand_kit` all succeed on a funded wallet and only 402 `billing_required` once it is spent, so do NOT tell the user a capability is missing, and do not send them to checkout, while balance > 0. `included:false` means the plan genuinely lacks the feature. Every new org starts with a free credit grant, so an account with an empty usage history can still render, generate, preview and score. costCeilings.generateMediaUsdPerCall is the generate_media per-call USD cap. No args — identity is resolved from your key (never echoed from input).',
|
|
672
|
+
annotations: { readOnlyHint: true },
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
name: 'list_plans', operationId: 'getBillingPlans',
|
|
676
|
+
description: 'List the plan catalog (tiers, intervals, product ids, prices) BEFORE a checkout, so create_checkout requests a real {plan, interval} instead of guessing an id. No args — reads the platform catalog.',
|
|
677
|
+
annotations: { readOnlyHint: true },
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
name: 'get_usage', operationId: 'getUsage',
|
|
681
|
+
description: "The A2 usage ledger: every metered billing event newest-first with attribution — featureId, amount, the project/job that produced it, and the event's LIST price in USD (a plan allowance may zero it on the invoice). Answer \"what did project X cost this period?\" with a query instead of summing your own quotes. Filter by projectId, jobId, and/or a [from, to) epoch-ms window. Requires the billing:read scope.",
|
|
682
|
+
queryArgs: {
|
|
683
|
+
projectId: 'Scope to one project.',
|
|
684
|
+
jobId: 'One job/render/compose/media id.',
|
|
685
|
+
from: 'Period start, epoch-ms (inclusive).',
|
|
686
|
+
to: 'Period end, epoch-ms (exclusive).',
|
|
687
|
+
},
|
|
688
|
+
annotations: { readOnlyHint: true },
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
name: 'create_checkout', operationId: 'createCheckout',
|
|
692
|
+
description: 'Top up the CURRENT org\'s credit wallet. Body { plan: "credit_pack_10"|"credit_pack_30"|"credit_pack_100" } → returns { url }: a hosted Stripe checkout page to open in a browser and confirm payment. There are no subscription tiers — a pack is a one-off top-up, and it is also the only thing that raises the generation (premium_credits) allowance. Always a URL — an existing saved card is NEVER charged silently; the human confirms on Stripe. The org is resolved from your key, never the body. Requires the billing:write scope. Only send a user here when get_account shows the relevant `balance` at or near zero. Discover the packs with list_plans.',
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
name: 'create_brand_kit', operationId: 'createBrandKit',
|
|
696
|
+
description: 'Create or UPSERT a brand kit (re-POSTing the same kitId updates it in place — this is also the brand-kit UPDATE path). Sets fonts/colors/logo. This is brand step 0 of the workflow: author the kit, then bind it to a PROJECT so colors/fonts/motion theme the output AUTOMATICALLY — pass its kitId as brandKitId to create_project, or attach it to an existing project via PATCH /projects/:id. Without a bound kit, create_render produces UNBRANDED output. Tenant-scoped (no project arg).',
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
name: 'extract_brand_kit', operationId: 'extractBrandKit',
|
|
700
|
+
description: 'Queue brand-token extraction from a website URL — ASYNC: returns a jobId immediately; then wait_job(kind="brand_kit_extract", id=jobId) for the tokens (colors/fonts/title/description, fetched + regex-parsed from the site\'s HTML/CSS — NOT a screenshot/vision pass). It does NOT persist — review the tokens, then call create_brand_kit to save a kit. A blocked (private/SSRF), non-2xx, non-HTML, or slow (>20s) URL degrades to EMPTY token arrays (a succeeded job) rather than erroring — JS-rendered SPAs typically extract empty; author the kit manually from the compiled CSS in that case.',
|
|
701
|
+
okFormat: (j) => `Brand-extract job queued.\n\njobId: ${j.jobId}\nstatus: ${j.status}\n\nCall wait_job(kind="brand_kit_extract", id="${j.jobId}") for the tokens (re-call it if it returns still-running).`,
|
|
702
|
+
annotations: { idempotentHint: true },
|
|
703
|
+
},
|
|
704
|
+
];
|
|
705
|
+
/**
|
|
706
|
+
* THE editor allowlist — the ONE tool vocabulary an editing agent speaks,
|
|
707
|
+
* whichever side of the Executor seam it runs on (the Convex editor agent over
|
|
708
|
+
* the platform executor; the desktop agent over the local one). Passed as
|
|
709
|
+
* `buildCuratedToolSet(executor, { allowedNames: INTERNAL_EDITOR_TOOLS })`, so
|
|
710
|
+
* every name here MUST resolve in `[...INTERNAL_LOOP_TOOLS, ...CURATED_TOOLS]` —
|
|
711
|
+
* the builder SILENTLY SKIPS an unknown name (adapter.ts), which is how a
|
|
712
|
+
* renamed tool becomes a quietly missing capability. curation.test.ts gates the
|
|
713
|
+
* subset relation; services/convex/agent/editor/index.ts re-checks at module
|
|
714
|
+
* load so the failure is loud at boot, not at the turn that needed the tool.
|
|
715
|
+
*
|
|
716
|
+
* INTERNAL, as in "not the hosted MCP server's list": three of these
|
|
717
|
+
* (`get_context`, `search_library`, `analyze_transcript`) live in
|
|
718
|
+
* INTERNAL_LOOP_TOOLS precisely so they stay OFF that server, and `wait_job` is
|
|
719
|
+
* registered there by its own procedure. Membership here is NOT publication.
|
|
720
|
+
*/
|
|
721
|
+
export const INTERNAL_EDITOR_TOOLS = [
|
|
722
|
+
// Read — orient, then look. get_context is the one-call opener.
|
|
723
|
+
'get_context', 'get_composition', 'get_media_context', 'search_library',
|
|
724
|
+
'search_resources', 'list_catalog', 'get_profile', 'get_component_source',
|
|
725
|
+
'preview_frame', 'score_composition', 'validate_composition', 'analyze_transcript',
|
|
726
|
+
// Mutate — the L1 op union is the ONLY way an edit happens.
|
|
727
|
+
'apply_composition', 'new_composition', 'derive_composition',
|
|
728
|
+
// Assets
|
|
729
|
+
'import_media', 'import_resource', 'create_component', 'generate_media', 'search_fonts',
|
|
730
|
+
// Jobs + account
|
|
731
|
+
'create_render', 'wait_job', 'get_usage', 'get_account',
|
|
732
|
+
];
|
|
733
|
+
/**
|
|
734
|
+
* Resources whose CRUD is INTENTIONALLY incomplete because the backend op does
|
|
735
|
+
* not exist yet. The coverage gate treats `${resource}.${verb}` keys here as a
|
|
736
|
+
* documented absence — but `known backend gaps are real` in curation.test.ts
|
|
737
|
+
* also asserts no generated op exists for them, so a gap CANNOT silently linger
|
|
738
|
+
* after a backend route ships: the day the op appears, curate it and DELETE the
|
|
739
|
+
* key. These are follow-up specs, not permanent design.
|
|
740
|
+
*/
|
|
741
|
+
export const KNOWN_BACKEND_GAPS = new Set([
|
|
742
|
+
'components.delete', // no deleteComponent op — needs route + referential-integrity design (follow-up spec)
|
|
743
|
+
'brand-kits.delete', // no deleteBrandKit op — needs route + "pinned by project" check (follow-up spec)
|
|
744
|
+
'media.update', // no patchMedia op — metadata edit; necessity TBD (follow-up spec)
|
|
745
|
+
]);
|
|
746
|
+
/**
|
|
747
|
+
* Per-resource CRUD coverage map — completeness as an invariant. The coverage
|
|
748
|
+
* tests in curation.test.ts gate this: every referenced tool must be a real
|
|
749
|
+
* CURATED_TOOLS name, and every absent verb must be either curated, justified
|
|
750
|
+
* in `notes`, or a KNOWN_BACKEND_GAPS entry. It fails loud the day a curated
|
|
751
|
+
* tool references a renamed op or a new resource verb lands unjustified.
|
|
752
|
+
*/
|
|
753
|
+
export const CRUD_COVERAGE = [
|
|
754
|
+
{ resource: 'projects', create: ['create_project'], update: 'update_project', delete: 'delete_project',
|
|
755
|
+
read: null, notes: { read: 'read via cueframe://project resource' } },
|
|
756
|
+
{ resource: 'compositions', create: ['new_composition', 'derive_composition'], read: ['list_compositions', 'get_composition'],
|
|
757
|
+
update: null, delete: 'delete_composition',
|
|
758
|
+
notes: { update: 'edit via apply_composition / putComposition (ops surface, not a CRUD verb)' } },
|
|
759
|
+
{ resource: 'media', create: ['create_upload', 'import_media', 'generate_media'], read: ['list_media', 'get_media_context'],
|
|
760
|
+
update: null, delete: 'delete_media',
|
|
761
|
+
notes: { update: 'no patchMedia op yet (KNOWN_BACKEND_GAPS)', create: 'create_upload reserves + presigns a PUT; finalize_upload completes the direct-PUT flow' } },
|
|
762
|
+
{ resource: 'components', create: ['create_component'], update: 'update_component', delete: null,
|
|
763
|
+
read: ['list_catalog', 'get_component_source'],
|
|
764
|
+
notes: { read: 'catalog (built-ins + installed, filterable) via list_catalog + cueframe://component resource; source via get_component_source (forkable primitives + installed source)', delete: 'no deleteComponent op yet (KNOWN_BACKEND_GAPS)' } },
|
|
765
|
+
{ resource: 'brand-kits', create: ['create_brand_kit'], update: 'create_brand_kit', delete: null,
|
|
766
|
+
read: null, notes: { read: 'read via cueframe://brand-kit resource', update: 'create_brand_kit is an upsert', delete: 'no deleteBrandKit op yet (KNOWN_BACKEND_GAPS)' } },
|
|
767
|
+
{ resource: 'briefs', create: ['create_brief'], read: ['get_brief', 'list_briefs'],
|
|
768
|
+
update: 'update_brief', delete: 'delete_brief' },
|
|
769
|
+
{ resource: 'checkpoints', create: null, read: ['get_checkpoint', 'list_checkpoints'],
|
|
770
|
+
update: null, delete: null, notes: {
|
|
771
|
+
create: 'minted server-side at held compose gates (and by verify) — no public create',
|
|
772
|
+
update: 'answer via resume (the A1 decision grammar); rows are never deleted',
|
|
773
|
+
delete: 'history is immortal — the retention sweep GCs stills only'
|
|
774
|
+
} },
|
|
775
|
+
{ resource: 'webhooks', create: ['create_webhook'], update: 'update_webhook', delete: 'delete_webhook',
|
|
776
|
+
read: null, notes: {
|
|
777
|
+
read: 'delivery/signing/verification contract via cueframe://webhook-events resource (+ GET /webhooks/events); list/get a specific endpoint via the raw expert layer',
|
|
778
|
+
update: 'update_webhook (url/events); verify_webhook re-runs the ownership challenge on a pending endpoint in place'
|
|
779
|
+
} },
|
|
780
|
+
{ resource: 'critics', create: ['register_critic'], update: 'register_critic',
|
|
781
|
+
read: ['list_critics', 'get_profile'], delete: 'delete_critic',
|
|
782
|
+
notes: { update: 'register_critic is an upsert (re-register the same criticId)' } },
|
|
783
|
+
{ resource: 'renders', create: ['create_render'], read: null, update: null, delete: null,
|
|
784
|
+
notes: { read: 'read via cueframe://render resource + wait_job', update: 'lifecycle via cancel_render/retry_render (not a CRUD update)', delete: 'renders are immutable history; no delete by design' } },
|
|
785
|
+
{ resource: 'resources', create: ['import_resource'], read: ['search_resources'], update: null, delete: null,
|
|
786
|
+
notes: { update: 'stock candidates are immutable upstream provider results — nothing to update',
|
|
787
|
+
delete: 'an imported resource becomes a mediaItems row; delete it via delete_media' } },
|
|
788
|
+
{ resource: 'fonts', read: ['search_fonts'], create: null, update: null, delete: null,
|
|
789
|
+
notes: { create: 'fonts are a read-only external catalog (Google Fonts) — a family is referenced by name, not created',
|
|
790
|
+
update: 'external catalog — immutable upstream',
|
|
791
|
+
delete: 'external catalog — nothing to delete (referencing a family is free)' } },
|
|
792
|
+
];
|