@cueframe/kernel 0.0.1 → 0.1.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/LICENSE +661 -0
- package/dist/_members/account-model/testing/conversationStoreContract.d.ts +1 -1
- package/dist/_members/authoring/providers/resourceApi.d.ts +1 -1
- package/dist/_members/authoring/transpileComponent.d.ts +1 -1
- package/dist/_members/cloud-import/CloudImportService.d.ts +35 -0
- package/dist/_members/cloud-import/ImportProvider.d.ts +73 -0
- package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +27 -0
- package/dist/_members/cloud-import/cloudConfig.d.ts +23 -0
- package/dist/_members/cloud-import/index.d.ts +9 -0
- package/dist/_members/cloud-import/multipartUpload.d.ts +12 -0
- package/dist/_members/composition/ops/compositionOps.d.ts +2 -1
- package/dist/_members/composition/ops/types.d.ts +1 -1
- package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
- package/dist/_members/composition/projection/index.d.ts +2 -0
- package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
- package/dist/_members/composition/timeline/placement.d.ts +1 -1
- package/dist/_members/composition/validators/composition.d.ts +43 -26
- package/dist/_members/composition/validators/render.d.ts +32 -0
- package/dist/_members/composition-ops/index.d.ts +1 -1
- package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
- package/dist/_members/convex-api/api.d.ts +5 -0
- package/dist/_members/convex-api/dataModel.d.ts +6 -0
- package/dist/_members/core/render/compositionRender.d.ts +17 -1
- package/dist/_members/core/render/exportSettings.d.ts +1 -1
- package/dist/_members/core/render/types.d.ts +31 -0
- package/dist/_members/mcp/curation.d.ts +1 -1
- package/dist/_members/plane/conformance.d.ts +1 -1
- package/dist/_members/render-harness/localRender.d.ts +1 -1
- package/dist/animate.js +828 -79187
- package/dist/authoring/build-tools.js +8 -11
- package/dist/authoring/context.js +5 -5
- package/dist/authoring/models.js +1 -2
- package/dist/authoring/prompts.js +1 -1
- package/dist/authoring/tools.js +7 -7
- package/dist/authoring/transpileComponent.js +3 -2220
- package/dist/authoring.js +30 -30
- package/dist/brand-derivation.js +1 -1
- package/dist/chunk-6IU2UQI5.js +107 -0
- package/dist/{chunk-5I7VDCAC.js → chunk-7FO3ZJ43.js} +4 -1
- package/dist/{chunk-N67PDTKQ.js → chunk-ABL557OT.js} +1 -1
- package/dist/{chunk-MC5DLSEV.js → chunk-AP6ZIVAV.js} +15 -15
- package/dist/{chunk-QLAQHR3L.js → chunk-AQBREB5O.js} +1 -1
- package/dist/{chunk-DSNG6WLU.js → chunk-AYVJXDLB.js} +1 -4
- package/dist/{chunk-6CMVBTTP.js → chunk-DK2ODBNT.js} +19 -9
- package/dist/chunk-DSMLHYJ4.js +82 -0
- package/dist/{chunk-BRKJKB33.js → chunk-FYZVH3MC.js} +1 -1
- package/dist/{chunk-MVEE6HEC.js → chunk-GA23TRNR.js} +5 -7
- package/dist/chunk-HCCBDJLW.js +68 -0
- package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
- package/dist/{chunk-OIRUO5P7.js → chunk-JJ6XD7NG.js} +152 -2
- package/dist/{_members/primitives/chunk-IDAL6G3Y.js → chunk-JQMPHKLU.js} +19 -27
- package/dist/{chunk-G3PBH53P.js → chunk-MBCXCJOE.js} +1 -1
- package/dist/{chunk-UEI3NLNK.js → chunk-MHOQTPOB.js} +1 -4
- package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
- package/dist/{chunk-WZTTZHNR.js → chunk-OLFOPQCA.js} +12 -9
- package/dist/{chunk-P43IE4WB.js → chunk-P727GZVO.js} +2 -4
- package/dist/{chunk-52AHXNKM.js → chunk-PDYO3DOJ.js} +5 -5
- package/dist/{chunk-S3P5BFFL.js → chunk-PMY24FUD.js} +2 -4
- package/dist/{chunk-ATAF24QG.js → chunk-PODIYN2K.js} +10 -3
- package/dist/chunk-RF7U3SCL.js +606 -0
- package/dist/{chunk-JD77Y2WM.js → chunk-SW336CJP.js} +1 -4
- package/dist/{chunk-TULRCY6U.js → chunk-TOJEXFXL.js} +1 -1
- package/dist/{chunk-ELLSET2N.js → chunk-UHGSZZDI.js} +3 -6
- package/dist/{chunk-M3I5LMAB.js → chunk-UY4SWJVE.js} +1 -1
- package/dist/{chunk-6QJ3V3VS.js → chunk-YX2GSJK7.js} +1 -1
- package/dist/chunk-ZT7MHRQU.js +104 -0
- package/dist/{chunk-NV4I6GJV.js → chunk-ZWMV6DD2.js} +27 -4
- package/dist/cloud-import/multipart.d.ts +1 -0
- package/dist/cloud-import/multipart.js +8 -0
- package/dist/cloud-import.d.ts +1 -0
- package/dist/cloud-import.js +234 -0
- package/dist/compose/renderer.js +19 -22
- package/dist/compose.js +19 -22
- package/dist/composition/graphics-plan.js +3 -3
- package/dist/composition/ops.js +4 -4
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +21 -5
- package/dist/composition/validators.js +6 -4
- package/dist/composition-ops.js +15 -13
- package/dist/composition.js +26 -8
- package/dist/{context-CEAKQ5T7.js → context-YWUZDG5X.js} +5 -5
- package/dist/convex-api/dataModel.d.ts +1 -0
- package/dist/convex-api/dataModel.js +0 -0
- package/dist/convex-api.d.ts +1 -0
- package/dist/convex-api.js +8 -0
- package/dist/core/render.js +3 -3
- package/dist/core/select.js +2 -2
- package/dist/core.js +3 -3
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +2 -5
- package/dist/mcp/server.js +1 -2
- package/dist/mcp.js +2 -95
- package/dist/media-model/media-kind.js +9 -98
- package/dist/media-model/testing.js +1071 -718
- package/dist/nle-export/server.js +328 -130
- package/dist/nle-export/xml.js +5 -22799
- package/dist/nle-export.js +20 -22
- package/dist/primitives/backgrounds.js +2 -3
- package/dist/primitives/captions.js +4 -243
- package/dist/primitives/effects.js +2 -3
- package/dist/primitives/hero-text.js +2 -3
- package/dist/primitives/layouts.js +2 -3
- package/dist/primitives/lib/index.js +8 -10
- package/dist/primitives/lib/preview.js +1 -2
- package/dist/primitives/lib/schema.js +1 -2
- package/dist/primitives/lib/text/fitText.js +1 -2
- package/dist/primitives/lib.js +8 -10
- package/dist/primitives/scenes.js +1 -2
- package/dist/primitives/text.js +2 -3
- package/dist/primitives/ui-blocks.js +4 -5
- package/dist/primitives.js +19 -21
- package/package.json +125 -16
- package/dist/TextureLoader-UQOFUSAP.js +0 -422
- package/dist/VideoTexture-AQWSPIJG.js +0 -62
- package/dist/_members/account-model/index.js +0 -4
- package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
- package/dist/_members/account-model/testing/index.js +0 -7
- package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
- package/dist/_members/account-model/types/index.js +0 -1
- package/dist/_members/account-model/validators/contextFile.js +0 -18
- package/dist/_members/account-model/validators/conversation.js +0 -95
- package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
- package/dist/_members/account-model/validators/index.js +0 -7
- package/dist/_members/account-model/validators/sessionToken.js +0 -49
- package/dist/_members/account-model/validators/uploadToken.js +0 -16
- package/dist/_members/account-model/validators/userSettings.js +0 -12
- package/dist/_members/account-model/validators/workingComposition.js +0 -20
- package/dist/_members/brand-derivation/constants.js +0 -20
- package/dist/_members/brand-derivation/contrastSafe.js +0 -114
- package/dist/_members/brand-derivation/index.js +0 -1
- package/dist/_members/composition/audio/audioMix.js +0 -61
- package/dist/_members/composition/audio/index.js +0 -5
- package/dist/_members/composition/audio/mixStaging.js +0 -195
- package/dist/_members/composition/audio/musicPack.generated.js +0 -136
- package/dist/_members/composition/audio/musicPack.js +0 -36
- package/dist/_members/composition/audio/pack.generated.js +0 -603
- package/dist/_members/composition/audio/pack.js +0 -48
- package/dist/_members/composition/audio/palette.js +0 -134
- package/dist/_members/composition/autozoom/index.js +0 -83
- package/dist/_members/composition/brand-kit.js +0 -45
- package/dist/_members/composition/brief/contract.js +0 -209
- package/dist/_members/composition/color-grade.js +0 -80
- package/dist/_members/composition/depth.js +0 -8
- package/dist/_members/composition/fixtures/index.js +0 -143
- package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
- package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
- package/dist/_members/composition/fonts.js +0 -162
- package/dist/_members/composition/graphics-plan/compile.js +0 -221
- package/dist/_members/composition/graphics-plan/index.js +0 -10
- package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
- package/dist/_members/composition/graphics-plan/motion.js +0 -66
- package/dist/_members/composition/graphics-plan/schemas.js +0 -261
- package/dist/_members/composition/graphics-plan/solve.js +0 -145
- package/dist/_members/composition/index.js +0 -5
- package/dist/_members/composition/invariants/clipPlacement.js +0 -69
- package/dist/_members/composition/invariants/composition.js +0 -28
- package/dist/_members/composition/invariants/errors.js +0 -10
- package/dist/_members/composition/invariants/etag.js +0 -38
- package/dist/_members/composition/invariants/ids.js +0 -33
- package/dist/_members/composition/invariants/index.js +0 -9
- package/dist/_members/composition/invariants/keyframes.js +0 -45
- package/dist/_members/composition/invariants/markers.js +0 -29
- package/dist/_members/composition/invariants/time.js +0 -20
- package/dist/_members/composition/invariants/tracks.js +0 -304
- package/dist/_members/composition/ops/compositionOps.js +0 -1056
- package/dist/_members/composition/ops/headlessStore.js +0 -94
- package/dist/_members/composition/ops/index.js +0 -4
- package/dist/_members/composition/ops/selectors.js +0 -118
- package/dist/_members/composition/ops/timeline-word.js +0 -1
- package/dist/_members/composition/ops/transcript.js +0 -77
- package/dist/_members/composition/ops/types.js +0 -16
- package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
- package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
- package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
- package/dist/_members/composition/primitive-catalog/index.js +0 -46
- package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
- package/dist/_members/composition/primitive-catalog/projection.js +0 -164
- package/dist/_members/composition/primitive-catalog/types.js +0 -14
- package/dist/_members/composition/projection/behind-placement.js +0 -62
- package/dist/_members/composition/projection/brandKit.js +0 -482
- package/dist/_members/composition/projection/cardTokens.js +0 -209
- package/dist/_members/composition/projection/composition-floor.js +0 -582
- package/dist/_members/composition/projection/cropProjection.js +0 -257
- package/dist/_members/composition/projection/index.js +0 -7
- package/dist/_members/composition/projection/occlusion-budget.js +0 -104
- package/dist/_members/composition/projection/safe-zones.js +0 -99
- package/dist/_members/composition/reframe/aspectLoss.js +0 -115
- package/dist/_members/composition/reframe/coverage.js +0 -62
- package/dist/_members/composition/reframe/derive.js +0 -73
- package/dist/_members/composition/reframe/index.js +0 -109
- package/dist/_members/composition/reframe/kenBurns.js +0 -64
- package/dist/_members/composition/reframe/shotScale.js +0 -176
- package/dist/_members/composition/reframe/trajectory.js +0 -124
- package/dist/_members/composition/timeline/compound.js +0 -134
- package/dist/_members/composition/timeline/index.js +0 -9
- package/dist/_members/composition/timeline/intent.js +0 -228
- package/dist/_members/composition/timeline/keyframes.js +0 -121
- package/dist/_members/composition/timeline/link.js +0 -59
- package/dist/_members/composition/timeline/occupancy.js +0 -36
- package/dist/_members/composition/timeline/placement.js +0 -74
- package/dist/_members/composition/timeline/plan.js +0 -31
- package/dist/_members/composition/timeline/resolve.js +0 -170
- package/dist/_members/composition/timeline/trims.js +0 -278
- package/dist/_members/composition/types/index.js +0 -1
- package/dist/_members/composition/validators/brandKit.js +0 -295
- package/dist/_members/composition/validators/composePlan.js +0 -113
- package/dist/_members/composition/validators/composition.js +0 -703
- package/dist/_members/composition/validators/font.js +0 -34
- package/dist/_members/composition/validators/graphicKinds.js +0 -30
- package/dist/_members/composition/validators/index.js +0 -9
- package/dist/_members/composition/validators/project.js +0 -29
- package/dist/_members/composition/validators/registry.js +0 -41
- package/dist/_members/composition/validators/render.js +0 -139
- package/dist/_members/composition/validators/session.js +0 -37
- package/dist/_members/composition/validators/webhook.js +0 -72
- package/dist/_members/composition-ops/alphaLayers.js +0 -141
- package/dist/_members/composition-ops/index.js +0 -637
- package/dist/_members/composition-ops/materializeGrid.js +0 -99
- package/dist/_members/composition-ops/opRecorder.js +0 -196
- package/dist/_members/composition-ops/recordingStore.js +0 -14
- package/dist/_members/composition-ops/replaceRegion.js +0 -102
- package/dist/_members/composition-ops/testFixtures.js +0 -19
- package/dist/_members/core/index.js +0 -5
- package/dist/_members/core/render/bookends.js +0 -53
- package/dist/_members/core/render/captions.js +0 -127
- package/dist/_members/core/render/compositionRender.js +0 -1249
- package/dist/_members/core/render/deriveTrajectory.js +0 -889
- package/dist/_members/core/render/emphasis.js +0 -16
- package/dist/_members/core/render/eval/cropBox.js +0 -139
- package/dist/_members/core/render/eval/inclusion.js +0 -96
- package/dist/_members/core/render/eval/index.js +0 -146
- package/dist/_members/core/render/eval/metrics.js +0 -94
- package/dist/_members/core/render/exportSettings.js +0 -65
- package/dist/_members/core/render/index.js +0 -20
- package/dist/_members/core/render/mapFaceToPerson.js +0 -73
- package/dist/_members/core/render/types.js +0 -8
- package/dist/_members/core/render/vcam/cameraPath.js +0 -248
- package/dist/_members/core/render/vcam/constants.js +0 -115
- package/dist/_members/core/render/vcam/errorCodes.js +0 -39
- package/dist/_members/core/render/vcam/framing.js +0 -136
- package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
- package/dist/_members/core/render/vcam/shots.js +0 -53
- package/dist/_members/core/render/vcam/subjectSet.js +0 -388
- package/dist/_members/core/select/errorCodes.js +0 -38
- package/dist/_members/core/select/index.js +0 -26
- package/dist/_members/core/select/model.js +0 -18
- package/dist/_members/core/select/select.js +0 -244
- package/dist/_members/core/select/stabilize.js +0 -242
- package/dist/_members/core/types.js +0 -7
- package/dist/_members/errors/index.js +0 -1
- package/dist/_members/errors/registry.js +0 -560
- package/dist/_members/foundation/codes/index.js +0 -31
- package/dist/_members/foundation/index.js +0 -2
- package/dist/_members/foundation/primitives/index.js +0 -5
- package/dist/_members/mcp/adapter.js +0 -771
- package/dist/_members/mcp/burnedNames.js +0 -73
- package/dist/_members/mcp/core.js +0 -390
- package/dist/_members/mcp/curation.js +0 -792
- package/dist/_members/mcp/executor.js +0 -142
- package/dist/_members/mcp/format.js +0 -9
- package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
- package/dist/_members/mcp/generated/harness.js +0 -81
- package/dist/_members/mcp/generated/operations.js +0 -131
- package/dist/_members/mcp/index.js +0 -50
- package/dist/_members/mcp/internalLoopTools.js +0 -109
- package/dist/_members/mcp/prompts.js +0 -45
- package/dist/_members/mcp/resources.js +0 -166
- package/dist/_members/mcp/server.js +0 -340
- package/dist/_members/mcp/wait.js +0 -378
- package/dist/_members/mcp/x402Meta.js +0 -66
- package/dist/_members/media-model/api.js +0 -175
- package/dist/_members/media-model/index.js +0 -1
- package/dist/_members/media-model/media-kind.js +0 -116
- package/dist/_members/media-model/testing/index.js +0 -1
- package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
- package/dist/_members/media-model/transcriptSearch.js +0 -70
- package/dist/_members/media-model/transcriptSearchCases.json +0 -79
- package/dist/_members/nle-export/compact-timeline.js +0 -73
- package/dist/_members/nle-export/compact-timeline.js.map +0 -1
- package/dist/_members/nle-export/composition-to-input.js +0 -147
- package/dist/_members/nle-export/composition-to-input.js.map +0 -1
- package/dist/_members/nle-export/fcpxml.js +0 -159
- package/dist/_members/nle-export/fcpxml.js.map +0 -1
- package/dist/_members/nle-export/index.js +0 -12
- package/dist/_members/nle-export/index.js.map +0 -1
- package/dist/_members/nle-export/premiere.js +0 -161
- package/dist/_members/nle-export/premiere.js.map +0 -1
- package/dist/_members/nle-export/server/index.js +0 -2
- package/dist/_members/nle-export/server/index.js.map +0 -1
- package/dist/_members/nle-export/server/pack-zip.js +0 -38
- package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
- package/dist/_members/nle-export/srt.js +0 -50
- package/dist/_members/nle-export/srt.js.map +0 -1
- package/dist/_members/nle-export/types.js +0 -9
- package/dist/_members/nle-export/types.js.map +0 -1
- package/dist/_members/nle-export/xml/index.js +0 -11
- package/dist/_members/nle-export/xml/index.js.map +0 -1
- package/dist/_members/nle-export/xml-utils.js +0 -48
- package/dist/_members/nle-export/xml-utils.js.map +0 -1
- package/dist/_members/perception/activeSpeaker.js +0 -103
- package/dist/_members/perception/audioQuality.js +0 -76
- package/dist/_members/perception/energyBeat.js +0 -99
- package/dist/_members/perception/identityMatch.js +0 -91
- package/dist/_members/perception/index.js +0 -48
- package/dist/_members/perception/visualQuality.js +0 -95
- package/dist/_members/plane/conformance.js +0 -90
- package/dist/_members/plane/contract.js +0 -49
- package/dist/_members/plane/index.js +0 -16
- package/dist/_members/primitives/backgrounds/index.js +0 -32
- package/dist/_members/primitives/backgrounds/index.js.map +0 -1
- package/dist/_members/primitives/captions/index.js +0 -398
- package/dist/_members/primitives/captions/index.js.map +0 -1
- package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
- package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
- package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
- package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
- package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
- package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
- package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
- package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
- package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
- package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
- package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
- package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
- package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
- package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
- package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
- package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
- package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
- package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
- package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
- package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
- package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
- package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
- package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
- package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
- package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
- package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
- package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
- package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
- package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
- package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
- package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
- package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
- package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
- package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
- package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
- package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
- package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
- package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
- package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
- package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
- package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
- package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
- package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
- package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
- package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
- package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
- package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
- package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
- package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
- package/dist/_members/primitives/effects/index.js +0 -30
- package/dist/_members/primitives/effects/index.js.map +0 -1
- package/dist/_members/primitives/hero-text/index.js +0 -14
- package/dist/_members/primitives/hero-text/index.js.map +0 -1
- package/dist/_members/primitives/index.js +0 -64
- package/dist/_members/primitives/index.js.map +0 -1
- package/dist/_members/primitives/layouts/index.js +0 -24
- package/dist/_members/primitives/layouts/index.js.map +0 -1
- package/dist/_members/primitives/lib/easings.js +0 -26
- package/dist/_members/primitives/lib/easings.js.map +0 -1
- package/dist/_members/primitives/lib/index.js +0 -74
- package/dist/_members/primitives/lib/index.js.map +0 -1
- package/dist/_members/primitives/lib/palette.js +0 -72
- package/dist/_members/primitives/lib/palette.js.map +0 -1
- package/dist/_members/primitives/lib/preview.js +0 -8
- package/dist/_members/primitives/lib/preview.js.map +0 -1
- package/dist/_members/primitives/lib/schema.js +0 -12
- package/dist/_members/primitives/lib/schema.js.map +0 -1
- package/dist/_members/primitives/lib/seeded-random.js +0 -14
- package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
- package/dist/_members/primitives/lib/text/contrast.js +0 -12
- package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
- package/dist/_members/primitives/lib/text/fill.js +0 -8
- package/dist/_members/primitives/lib/text/fill.js.map +0 -1
- package/dist/_members/primitives/lib/text/fitText.js +0 -10
- package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
- package/dist/_members/primitives/lib/text/marker.js +0 -8
- package/dist/_members/primitives/lib/text/marker.js.map +0 -1
- package/dist/_members/primitives/lib/text/motion.js +0 -16
- package/dist/_members/primitives/lib/text/motion.js.map +0 -1
- package/dist/_members/primitives/lib/text/recolor.js +0 -8
- package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
- package/dist/_members/primitives/lib/text/spec.js +0 -1
- package/dist/_members/primitives/lib/text/spec.js.map +0 -1
- package/dist/_members/primitives/lib/text/stage.js +0 -8
- package/dist/_members/primitives/lib/text/stage.js.map +0 -1
- package/dist/_members/primitives/lib/text/typeface.js +0 -8
- package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
- package/dist/_members/primitives/lib/tokens.js +0 -24
- package/dist/_members/primitives/lib/tokens.js.map +0 -1
- package/dist/_members/primitives/lib/types.js +0 -1
- package/dist/_members/primitives/lib/types.js.map +0 -1
- package/dist/_members/primitives/params-required.json +0 -153
- package/dist/_members/primitives/scenes/index.js +0 -25
- package/dist/_members/primitives/scenes/index.js.map +0 -1
- package/dist/_members/primitives/subject-foreground/index.js +0 -30
- package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
- package/dist/_members/primitives/text/index.js +0 -57
- package/dist/_members/primitives/text/index.js.map +0 -1
- package/dist/_members/primitives/transitions/index.js +0 -67
- package/dist/_members/primitives/transitions/index.js.map +0 -1
- package/dist/_members/primitives/ui-blocks/index.js +0 -76
- package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
- package/dist/_members/primitives/version-map.json +0 -105
- package/dist/_members/primitives/workspace.js +0 -60
- package/dist/_members/primitives/workspace.js.map +0 -1
- package/dist/chunk-7GISRVON.js +0 -14176
- package/dist/chunk-DIBOJJMU.js +0 -16838
- package/dist/chunk-EAUSEGB7.js +0 -420
- package/dist/chunk-FUWJOVVK.js +0 -3633
- package/dist/chunk-G75E7YA4.js +0 -11883
- package/dist/chunk-JCZQT7K3.js +0 -3266
- package/dist/chunk-KF5ETMKB.js +0 -544
- package/dist/chunk-NDKERSXY.js +0 -1296
- package/dist/chunk-V43Y7IE4.js +0 -3621
- package/dist/chunk-VIVQHIGZ.js +0 -4319
- package/dist/chunk-YA3OR2KK.js +0 -249
- package/dist/hls-HD4C5G6W.js +0 -33000
- package/dist/token-RGFIT24D.js +0 -69
- package/dist/token-util-GPLSGYVO.js +0 -5
- package/dist/vision_bundle-5Y376MAR.js +0 -4084
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
export const minimalComposition = {
|
|
2
|
-
v: 1,
|
|
3
|
-
format: { aspectRatio: "9:16", fps: 30, resolution: "fhd" },
|
|
4
|
-
tracks: [
|
|
5
|
-
{
|
|
6
|
-
id: "V1",
|
|
7
|
-
kind: "video",
|
|
8
|
-
contents: [
|
|
9
|
-
{
|
|
10
|
-
id: "clip-1",
|
|
11
|
-
startTime: 0,
|
|
12
|
-
duration: 10,
|
|
13
|
-
source: {
|
|
14
|
-
kind: "media",
|
|
15
|
-
mediaId: "kx0000000000000000000000",
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
};
|
|
22
|
-
export const overlappingClips = {
|
|
23
|
-
v: 1,
|
|
24
|
-
format: { aspectRatio: "16:9", fps: 30 },
|
|
25
|
-
tracks: [
|
|
26
|
-
{
|
|
27
|
-
id: "V1",
|
|
28
|
-
kind: "video",
|
|
29
|
-
contents: [
|
|
30
|
-
{
|
|
31
|
-
id: "clip-1",
|
|
32
|
-
startTime: 0,
|
|
33
|
-
duration: 10,
|
|
34
|
-
source: {
|
|
35
|
-
kind: "media",
|
|
36
|
-
mediaId: "kx0000000000000000000000",
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: "clip-2",
|
|
41
|
-
startTime: 5,
|
|
42
|
-
duration: 10,
|
|
43
|
-
source: {
|
|
44
|
-
kind: "media",
|
|
45
|
-
mediaId: "kx1111111111111111111111",
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
};
|
|
52
|
-
export const transitionWithoutPredecessor = {
|
|
53
|
-
v: 1,
|
|
54
|
-
format: { aspectRatio: "9:16", fps: 30 },
|
|
55
|
-
tracks: [
|
|
56
|
-
{
|
|
57
|
-
id: "V1",
|
|
58
|
-
kind: "video",
|
|
59
|
-
contents: [
|
|
60
|
-
{
|
|
61
|
-
id: "clip-1",
|
|
62
|
-
startTime: 0,
|
|
63
|
-
duration: 10,
|
|
64
|
-
source: {
|
|
65
|
-
kind: "media",
|
|
66
|
-
mediaId: "kx0000000000000000000000",
|
|
67
|
-
},
|
|
68
|
-
transitionIn: { type: "fade", duration: 1 },
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
};
|
|
74
|
-
export const overlappingSceneMarkers = {
|
|
75
|
-
v: 1,
|
|
76
|
-
format: { aspectRatio: "9:16", fps: 30 },
|
|
77
|
-
tracks: [
|
|
78
|
-
{
|
|
79
|
-
id: "V1",
|
|
80
|
-
kind: "video",
|
|
81
|
-
contents: [
|
|
82
|
-
{
|
|
83
|
-
id: "clip-1",
|
|
84
|
-
startTime: 0,
|
|
85
|
-
duration: 30,
|
|
86
|
-
source: {
|
|
87
|
-
kind: "media",
|
|
88
|
-
mediaId: "kx0000000000000000000000",
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
markers: [
|
|
95
|
-
{ id: "s1", kind: "scene", startTime: 0, endTime: 15, name: "intro" },
|
|
96
|
-
{ id: "s2", kind: "scene", startTime: 10, endTime: 25, name: "middle" },
|
|
97
|
-
],
|
|
98
|
-
};
|
|
99
|
-
export const idCollision = {
|
|
100
|
-
v: 1,
|
|
101
|
-
format: { aspectRatio: "9:16", fps: 30 },
|
|
102
|
-
tracks: [
|
|
103
|
-
{
|
|
104
|
-
id: "V1",
|
|
105
|
-
kind: "video",
|
|
106
|
-
contents: [
|
|
107
|
-
{
|
|
108
|
-
id: "shared-id",
|
|
109
|
-
startTime: 0,
|
|
110
|
-
duration: 5,
|
|
111
|
-
source: {
|
|
112
|
-
kind: "media",
|
|
113
|
-
mediaId: "kx0000000000000000000000",
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
],
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
markers: [{ id: "shared-id", kind: "note", startTime: 2 }],
|
|
120
|
-
};
|
|
121
|
-
export const clipWithExcludedRanges = {
|
|
122
|
-
v: 1,
|
|
123
|
-
format: { aspectRatio: "9:16", fps: 30 },
|
|
124
|
-
tracks: [
|
|
125
|
-
{
|
|
126
|
-
id: "V1",
|
|
127
|
-
kind: "video",
|
|
128
|
-
contents: [
|
|
129
|
-
{
|
|
130
|
-
id: "clip-1",
|
|
131
|
-
startTime: 0,
|
|
132
|
-
duration: 4,
|
|
133
|
-
source: {
|
|
134
|
-
kind: "media",
|
|
135
|
-
mediaId: "kx0000000000000000000000",
|
|
136
|
-
trim: { start: 0, end: 5 },
|
|
137
|
-
excludedRanges: [{ start: 1, end: 2, reason: "filler" }],
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compositions authored by the Vaaya gateway agent on 2026-06-17 that were
|
|
3
|
-
* REJECTED by `PUT /v1/projects/:id/composition` (and would be by the
|
|
4
|
-
* `POST /v1/composition/validate` dry-run verb) with the canonical
|
|
5
|
-
* `Composition` validator.
|
|
6
|
-
*
|
|
7
|
-
* The API surfaced only `{"code":"validation_error","message":"","details":{}}`
|
|
8
|
-
* — an EMPTY error — because `zodJson` (services/convex/api/openapi/validate.ts)
|
|
9
|
-
* runs the Standard-Schema issues through `fromError(new ZodError(issues)).toString()`
|
|
10
|
-
* which collapses to "". The per-field reasons exist server-side but never reach
|
|
11
|
-
* the wire, so the agent could not self-correct.
|
|
12
|
-
*
|
|
13
|
-
* These fixtures are the raw wire payloads, captured verbatim. They are typed as
|
|
14
|
-
* `unknown` (NOT `Composition`) because they are invalid by design — feed them to
|
|
15
|
-
* `Composition.safeParse` to read the real `issues[]` the API swallowed, and to
|
|
16
|
-
* pin the behaviour both before and after the empty-message fix.
|
|
17
|
-
*/
|
|
18
|
-
/** First attempt — three separate portrait clips, each with its own reframe segment. */
|
|
19
|
-
export declare const vaayaErroredCompositionV1: unknown;
|
|
20
|
-
/**
|
|
21
|
-
* Second attempt — Vaaya's own "fixed" version after we reported the failure:
|
|
22
|
-
* merged the three portrait clips into one 27s clip carrying all three reframe
|
|
23
|
-
* segments, renamed the tracks. Still rejected with the same empty error.
|
|
24
|
-
*/
|
|
25
|
-
export declare const vaayaErroredCompositionV2: unknown;
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compositions authored by the Vaaya gateway agent on 2026-06-17 that were
|
|
3
|
-
* REJECTED by `PUT /v1/projects/:id/composition` (and would be by the
|
|
4
|
-
* `POST /v1/composition/validate` dry-run verb) with the canonical
|
|
5
|
-
* `Composition` validator.
|
|
6
|
-
*
|
|
7
|
-
* The API surfaced only `{"code":"validation_error","message":"","details":{}}`
|
|
8
|
-
* — an EMPTY error — because `zodJson` (services/convex/api/openapi/validate.ts)
|
|
9
|
-
* runs the Standard-Schema issues through `fromError(new ZodError(issues)).toString()`
|
|
10
|
-
* which collapses to "". The per-field reasons exist server-side but never reach
|
|
11
|
-
* the wire, so the agent could not self-correct.
|
|
12
|
-
*
|
|
13
|
-
* These fixtures are the raw wire payloads, captured verbatim. They are typed as
|
|
14
|
-
* `unknown` (NOT `Composition`) because they are invalid by design — feed them to
|
|
15
|
-
* `Composition.safeParse` to read the real `issues[]` the API swallowed, and to
|
|
16
|
-
* pin the behaviour both before and after the empty-message fix.
|
|
17
|
-
*/
|
|
18
|
-
/** First attempt — three separate portrait clips, each with its own reframe segment. */
|
|
19
|
-
export const vaayaErroredCompositionV1 = {
|
|
20
|
-
v: 1,
|
|
21
|
-
format: { aspectRatio: "16:9", fps: 30, resolution: "fhd" },
|
|
22
|
-
tracks: [
|
|
23
|
-
{
|
|
24
|
-
id: "vid",
|
|
25
|
-
kind: "video",
|
|
26
|
-
contents: [
|
|
27
|
-
{
|
|
28
|
-
id: "title_clip",
|
|
29
|
-
startTime: 0,
|
|
30
|
-
duration: 4,
|
|
31
|
-
source: {
|
|
32
|
-
kind: "media",
|
|
33
|
-
mediaId: "jh76np6j93brgbm96f6maa0tw988x6v0",
|
|
34
|
-
trim: { start: 0, end: 4 },
|
|
35
|
-
kenBurns: "in",
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
id: "portrait_seg1",
|
|
40
|
-
startTime: 4,
|
|
41
|
-
duration: 8,
|
|
42
|
-
source: {
|
|
43
|
-
kind: "media",
|
|
44
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
45
|
-
trim: { start: 0, end: 8 },
|
|
46
|
-
reframe: {
|
|
47
|
-
segments: [
|
|
48
|
-
{ startSec: 4, endSec: 12, focus: { mode: "frame-center" }, zoom: 0.85, ease: { in: 0.8, out: 0.8 } },
|
|
49
|
-
],
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
id: "portrait_seg2",
|
|
55
|
-
startTime: 12,
|
|
56
|
-
duration: 7,
|
|
57
|
-
source: {
|
|
58
|
-
kind: "media",
|
|
59
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
60
|
-
trim: { start: 8, end: 15 },
|
|
61
|
-
reframe: {
|
|
62
|
-
segments: [
|
|
63
|
-
{ startSec: 12, endSec: 19, focus: { mode: "frame-center" }, zoom: 0.75, ease: { in: 0.6, out: 0.6 } },
|
|
64
|
-
],
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
id: "portrait_seg3",
|
|
70
|
-
startTime: 19,
|
|
71
|
-
duration: 8,
|
|
72
|
-
source: {
|
|
73
|
-
kind: "media",
|
|
74
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
75
|
-
trim: { start: 15, end: 23 },
|
|
76
|
-
reframe: {
|
|
77
|
-
segments: [
|
|
78
|
-
{ startSec: 19, endSec: 27, focus: { mode: "frame-center" }, zoom: 0.65, ease: { in: 0.6, out: 0.6 } },
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
id: "usecases_hold",
|
|
85
|
-
startTime: 27,
|
|
86
|
-
duration: 4,
|
|
87
|
-
source: {
|
|
88
|
-
kind: "media",
|
|
89
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
90
|
-
trim: { start: 23, end: 27 },
|
|
91
|
-
kenBurns: "in",
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
id: "outro_title",
|
|
96
|
-
startTime: 31,
|
|
97
|
-
duration: 3.5,
|
|
98
|
-
source: { kind: "media", mediaId: "jh76np6j93brgbm96f6maa0tw988x6v0", trim: { start: 0, end: 3.5 } },
|
|
99
|
-
},
|
|
100
|
-
],
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: "narr",
|
|
104
|
-
kind: "audio",
|
|
105
|
-
contents: [
|
|
106
|
-
{ id: "vo", startTime: 0, duration: 33.9, source: { kind: "media", mediaId: "jh72h9exp2zbv0kr5p214gq87h88xe2p", volume: 1 } },
|
|
107
|
-
],
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
id: "music",
|
|
111
|
-
kind: "audio",
|
|
112
|
-
contents: [
|
|
113
|
-
{
|
|
114
|
-
id: "bed",
|
|
115
|
-
startTime: 0,
|
|
116
|
-
duration: 34.5,
|
|
117
|
-
source: { kind: "media", mediaId: "jh74ahb6petnh4wrmhmpmcv0cd88w227", volume: 0.12, loop: true, fadeOutMs: 800 },
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
};
|
|
123
|
-
/**
|
|
124
|
-
* Second attempt — Vaaya's own "fixed" version after we reported the failure:
|
|
125
|
-
* merged the three portrait clips into one 27s clip carrying all three reframe
|
|
126
|
-
* segments, renamed the tracks. Still rejected with the same empty error.
|
|
127
|
-
*/
|
|
128
|
-
export const vaayaErroredCompositionV2 = {
|
|
129
|
-
v: 1,
|
|
130
|
-
format: { aspectRatio: "16:9", fps: 30, resolution: "fhd" },
|
|
131
|
-
tracks: [
|
|
132
|
-
{
|
|
133
|
-
id: "video",
|
|
134
|
-
kind: "video",
|
|
135
|
-
contents: [
|
|
136
|
-
{
|
|
137
|
-
id: "title_in",
|
|
138
|
-
startTime: 0,
|
|
139
|
-
duration: 4,
|
|
140
|
-
source: {
|
|
141
|
-
kind: "media",
|
|
142
|
-
mediaId: "jh76np6j93brgbm96f6maa0tw988x6v0",
|
|
143
|
-
trim: { start: 0, end: 4 },
|
|
144
|
-
kenBurns: "in",
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
id: "portrait_section",
|
|
149
|
-
startTime: 4,
|
|
150
|
-
duration: 27,
|
|
151
|
-
source: {
|
|
152
|
-
kind: "media",
|
|
153
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
154
|
-
trim: { start: 0, end: 27 },
|
|
155
|
-
reframe: {
|
|
156
|
-
segments: [
|
|
157
|
-
{ startSec: 4, endSec: 12, focus: { mode: "frame-center" }, zoom: 0.85, ease: { in: 0.8, out: 0.8 } },
|
|
158
|
-
{ startSec: 12, endSec: 19, focus: { mode: "frame-center" }, zoom: 0.75, ease: { in: 0.6, out: 0.6 } },
|
|
159
|
-
{ startSec: 19, endSec: 27, focus: { mode: "frame-center" }, zoom: 0.65, ease: { in: 0.6, out: 0.6 } },
|
|
160
|
-
],
|
|
161
|
-
},
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
id: "usecases_hold",
|
|
166
|
-
startTime: 27,
|
|
167
|
-
duration: 4,
|
|
168
|
-
source: {
|
|
169
|
-
kind: "media",
|
|
170
|
-
mediaId: "jh71xe5ygsakx664syeq3x8ys588x0gx",
|
|
171
|
-
trim: { start: 0, end: 4 },
|
|
172
|
-
kenBurns: "in",
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
id: "outro",
|
|
177
|
-
startTime: 31,
|
|
178
|
-
duration: 3.5,
|
|
179
|
-
source: { kind: "media", mediaId: "jh76np6j93brgbm96f6maa0tw988x6v0", trim: { start: 0, end: 3.5 } },
|
|
180
|
-
},
|
|
181
|
-
],
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
id: "narration",
|
|
185
|
-
kind: "audio",
|
|
186
|
-
contents: [
|
|
187
|
-
{ id: "vo", startTime: 0, duration: 33.9, source: { kind: "media", mediaId: "jh72h9exp2zbv0kr5p214gq87h88xe2p", volume: 1 } },
|
|
188
|
-
],
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
id: "music",
|
|
192
|
-
kind: "audio",
|
|
193
|
-
contents: [
|
|
194
|
-
{
|
|
195
|
-
id: "bed",
|
|
196
|
-
startTime: 0,
|
|
197
|
-
duration: 34.5,
|
|
198
|
-
source: { kind: "media", mediaId: "jh74ahb6petnh4wrmhmpmcv0cd88w227", volume: 0.12, loop: true, fadeOutMs: 800 },
|
|
199
|
-
},
|
|
200
|
-
],
|
|
201
|
-
},
|
|
202
|
-
],
|
|
203
|
-
};
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The font families the render sandbox actually has, and the advisory that
|
|
3
|
-
* fires when a composition asks for one it doesn't.
|
|
4
|
-
*
|
|
5
|
-
* SSOT. This list used to exist as two hand-kept mirrors — `FONT_FAMILIES` in
|
|
6
|
-
* `packages/execution/render-entry/src/fonts.ts` (which does the loading) and
|
|
7
|
-
* `VENDORED_FONT_FAMILIES` in `services/convex/api/routes/components.ts` (which
|
|
8
|
-
* does the component advisory) — under a comment claiming "there is no shared
|
|
9
|
-
* package the app (Vite) and Convex (V8 isolate) both import". That stopped
|
|
10
|
-
* being true once both imported `@cueframe/composition`, so the list lives here
|
|
11
|
-
* and both sides import it.
|
|
12
|
-
*
|
|
13
|
-
* DEPENDENCY-FREE ON PURPOSE: the Remotion webpack bundle traverses the render
|
|
14
|
-
* app's fonts.ts, so anything it pulls in must stay import-light. This module
|
|
15
|
-
* has no value imports at all.
|
|
16
|
-
*
|
|
17
|
-
* WHY THE ADVISORY EXISTS. A real session authored 65 cards specifying
|
|
18
|
-
* `font-family:'Fredoka','Nunito','Baloo 2',sans-serif`. None of the three is
|
|
19
|
-
* vendored, the sandbox has no font egress, and `FONT_REGISTRY` is empty by
|
|
20
|
-
* design — so every card rendered in Liberation Sans and nothing said a word.
|
|
21
|
-
* The user, looking at the finished 3:17 video, attributed the result to "font
|
|
22
|
-
* is too big".
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Families vendored into the render page as committed woff2 binaries. A stack
|
|
26
|
-
* containing one of these rasterizes IDENTICALLY on all three render Chromiums
|
|
27
|
-
* (bake box / Lambda / Modal).
|
|
28
|
-
*/
|
|
29
|
-
export const VENDORED_FONT_FAMILIES = [
|
|
30
|
-
"Inter",
|
|
31
|
-
"Space Mono",
|
|
32
|
-
"Montserrat",
|
|
33
|
-
"Roboto",
|
|
34
|
-
"Poppins",
|
|
35
|
-
"Oswald",
|
|
36
|
-
"Playfair Display",
|
|
37
|
-
"Bebas Neue",
|
|
38
|
-
"Instrument Serif",
|
|
39
|
-
"National Park",
|
|
40
|
-
"Bricolage Grotesque",
|
|
41
|
-
"Schibsted Grotesk",
|
|
42
|
-
];
|
|
43
|
-
/**
|
|
44
|
-
* Families that are not raw woff2 but ARE registered as an `@font-face` alias
|
|
45
|
-
* backed by a vendored binary (`Georgia` → Gelasio, the metric-compatible
|
|
46
|
-
* replacement). Host-stable, so they are not advisory hits.
|
|
47
|
-
*/
|
|
48
|
-
export const ALIASED_FONT_FAMILIES = ["Georgia"];
|
|
49
|
-
const AVAILABLE_LOWER = new Set([...VENDORED_FONT_FAMILIES, ...ALIASED_FONT_FAMILIES].map((f) => f.toLowerCase()));
|
|
50
|
-
/** True when the render sandbox can rasterize this exact family name. */
|
|
51
|
-
export function isAvailableFontFamily(family) {
|
|
52
|
-
return AVAILABLE_LOWER.has(family.trim().replace(/^['"]|['"]$/g, "").toLowerCase());
|
|
53
|
-
}
|
|
54
|
-
/** Split a CSS `font-family` value into its families, quotes stripped. */
|
|
55
|
-
export function parseFontStack(value) {
|
|
56
|
-
return value
|
|
57
|
-
.split(",")
|
|
58
|
-
.map((f) => f.trim().replace(/^['"]|['"]$/g, "").trim())
|
|
59
|
-
.filter(Boolean);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* `font-family: <stack>` inside authored CSS — a card's inline `style="…"` or a
|
|
63
|
-
* `<style>` block. Families are usually QUOTED (`'Baloo 2'`), so the value must
|
|
64
|
-
* admit quotes while still stopping at the enclosing attribute's delimiter:
|
|
65
|
-
* each family is a quoted run or a bare run, and the lazy `+?` stops at the
|
|
66
|
-
* first real terminator (`;`, `}`, a closing `"`, or end of string).
|
|
67
|
-
*/
|
|
68
|
-
const FONT_FAMILY_CSS = /font-family\s*:\s*((?:'[^']*'|"[^"]*"|[^;}"'])+?)\s*(?:;|}|"|$)/gi;
|
|
69
|
-
/** A `fontFamily`-ish object KEY — caption style, overlay params, component props. */
|
|
70
|
-
const FONT_FAMILY_KEY = /fontfamily$/i;
|
|
71
|
-
/** How many distinct families to name before eliding. */
|
|
72
|
-
const MAX_NAMED = 6;
|
|
73
|
-
/**
|
|
74
|
-
* Collect every font stack a composition (or ops array, or clip) requests.
|
|
75
|
-
* Structural rather than schema-typed: families arrive through
|
|
76
|
-
* `captions.style.fontFamily`, `captions.style.emphasisFontFamily`, a card's
|
|
77
|
-
* html CSS, a card `tokens.fontFamily`, overlay `params.fontFamily` and
|
|
78
|
-
* component `props.fontFamily` alike, and a new carrier is covered on arrival.
|
|
79
|
-
*/
|
|
80
|
-
function collectFontStacks(value, out) {
|
|
81
|
-
if (Array.isArray(value)) {
|
|
82
|
-
for (const v of value)
|
|
83
|
-
collectFontStacks(v, out);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (value === null || typeof value !== "object")
|
|
87
|
-
return;
|
|
88
|
-
for (const [k, v] of Object.entries(value)) {
|
|
89
|
-
if (typeof v === "string") {
|
|
90
|
-
if (FONT_FAMILY_KEY.test(k))
|
|
91
|
-
out.push(v);
|
|
92
|
-
// Authored markup/CSS carries the request inline, not as a field. This is
|
|
93
|
-
// the case the toddler-parks session hit — the fonts were in card html.
|
|
94
|
-
for (const m of v.matchAll(FONT_FAMILY_CSS))
|
|
95
|
-
out.push(m[1]);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
collectFontStacks(v, out);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Advisory (never blocking) for font stacks the sandbox cannot satisfy.
|
|
103
|
-
*
|
|
104
|
-
* Fires only when NO family in a stack is available — i.e. the render is
|
|
105
|
-
* guaranteed to land on the generic fallback nobody chose. A stack whose
|
|
106
|
-
* primary is unavailable but which names a vendored family after it
|
|
107
|
-
* (`'Fredoka', 'Inter', sans-serif`) is an author's deliberate fallback and is
|
|
108
|
-
* NOT flagged; that is the difference between "you did not get what you asked
|
|
109
|
-
* for" and "you got something you never named", and only the second is a
|
|
110
|
-
* silent failure worth interrupting for.
|
|
111
|
-
*
|
|
112
|
-
* `$brand:` refs are skipped — run this on the BRAND-RESOLVED composition and
|
|
113
|
-
* they will already be real family names. Pure: no I/O, no kit needed.
|
|
114
|
-
*
|
|
115
|
-
* NOTE this is about availability, not registration: `FONT_REGISTRY` in the
|
|
116
|
-
* director's render-env resolver is `{}` DELIBERATELY (registering a built-in
|
|
117
|
-
* there routes it through a `delayRender` that never clears on Lambda and kills
|
|
118
|
-
* the render at 28s). So a custom brand font does not become available by being
|
|
119
|
-
* on a brand kit — the fix for a hit here is always "use a vendored family".
|
|
120
|
-
*
|
|
121
|
-
* UNRESOLVED, deliberately not asserted in the message: the `search_fonts` tool
|
|
122
|
-
* description tells agents "the render box has network" and to `@import` a
|
|
123
|
-
* family inside card HTML, while `resolveRenderEnvironment` states the sandbox
|
|
124
|
-
* "has no font egress". Both cannot be true. The advisory therefore claims only
|
|
125
|
-
* what is certain — the vendored set is what is GUARANTEED — and does not
|
|
126
|
-
* declare @import futile. See Issues/2026-08-05-render-font-egress-contradiction.
|
|
127
|
-
*/
|
|
128
|
-
export function detectUnavailableFonts(value) {
|
|
129
|
-
const stacks = [];
|
|
130
|
-
collectFontStacks(value, stacks);
|
|
131
|
-
if (stacks.length === 0)
|
|
132
|
-
return [];
|
|
133
|
-
const offenders = new Map(); // primary family → stacks requesting it
|
|
134
|
-
for (const raw of stacks) {
|
|
135
|
-
if (raw.includes("$brand:"))
|
|
136
|
-
continue; // unresolved ref, not a family name
|
|
137
|
-
const families = parseFontStack(raw);
|
|
138
|
-
if (families.length === 0)
|
|
139
|
-
continue;
|
|
140
|
-
// A dynamic value (`fontFamily: ${x}`) cannot be classified statically.
|
|
141
|
-
if (families.some((f) => f.includes("${")))
|
|
142
|
-
continue;
|
|
143
|
-
if (families.some(isAvailableFontFamily))
|
|
144
|
-
continue;
|
|
145
|
-
offenders.set(families[0], (offenders.get(families[0]) ?? 0) + 1);
|
|
146
|
-
}
|
|
147
|
-
if (offenders.size === 0)
|
|
148
|
-
return [];
|
|
149
|
-
const names = [...offenders.keys()];
|
|
150
|
-
const shown = names.slice(0, MAX_NAMED).map((n) => `\`${n}\``).join(", ");
|
|
151
|
-
const elided = names.length > MAX_NAMED ? ` (+${names.length - MAX_NAMED} more)` : "";
|
|
152
|
-
const requests = [...offenders.values()].reduce((a, b) => a + b, 0);
|
|
153
|
-
return [
|
|
154
|
-
`font_not_available — ${requests} font request${requests === 1 ? "" : "s"} name ${shown}` +
|
|
155
|
-
`${elided}, and nothing else in those stacks is vendored either. Only the vendored faces ` +
|
|
156
|
-
`are guaranteed present in the render, so naming a family alone gets you the generic ` +
|
|
157
|
-
`fallback (Liberation Sans) — no error, just the wrong typeface. ` +
|
|
158
|
-
`Guaranteed: ${VENDORED_FONT_FAMILIES.join(", ")} (plus Georgia). Note that putting the ` +
|
|
159
|
-
`family on a brand kit does NOT make it available — brand fonts resolve against the same ` +
|
|
160
|
-
`vendored set.`,
|
|
161
|
-
];
|
|
162
|
-
}
|