@cueframe/kernel 0.2.59-rc.1 → 0.2.59-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_members/component-runtime/componentBundleServer.d.ts +7 -2
- package/dist/_members/component-runtime/componentBundleServer.d.ts.map +1 -1
- package/dist/_members/component-runtime/contracts.d.ts +0 -14
- package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
- package/dist/_members/component-runtime/template/schema.d.ts +0 -6
- package/dist/_members/component-runtime/template/schema.d.ts.map +1 -1
- package/dist/_members/composition/componentClip.d.ts +96 -0
- package/dist/_members/composition/depth.d.ts +1 -1
- package/dist/_members/composition/scene/clipRules.d.ts +1 -1
- package/dist/_members/composition/validators/composition.d.ts +0 -52
- package/dist/_members/composition/validators/graphicKinds.d.ts +1 -1
- package/dist/_members/composition-ops/{alphaLayers.d.ts → componentClips.d.ts} +3 -2
- package/dist/_members/composition-ops/index.d.ts +6 -28
- package/dist/_members/core/render/compositionRender.d.ts +6 -1
- package/dist/_members/core/render/trackProjection.d.ts +3 -1
- package/dist/_members/errors/registry.d.ts +12 -0
- package/dist/_members/mcp/generated/harness.d.ts +1 -1
- package/dist/animate/preparation-facts.js +2 -2
- package/dist/animate.js +3 -3
- package/dist/authoring/context.js +6 -6
- package/dist/authoring/motion.js +3 -2
- package/dist/authoring/scene.js +2 -2
- package/dist/authoring.js +12 -11
- package/dist/{chunk-ZCEYEIRB.js → chunk-3KFQM7DG.js} +1 -1
- package/dist/{chunk-JNBNDHEF.js → chunk-3SMYBRYD.js} +2 -2
- package/dist/{chunk-H2ZZXISB.js → chunk-6D3KCUWA.js} +1 -1
- package/dist/{chunk-BZVOCVQV.js → chunk-BLVSFN6J.js} +0 -17
- package/dist/{chunk-NECN7TT4.js → chunk-BR6QZZEI.js} +4 -4
- package/dist/{chunk-3JEUNKDK.js → chunk-CMPRHO6D.js} +1 -1
- package/dist/{chunk-CEO47DIE.js → chunk-D5QWWPDL.js} +2 -2
- package/dist/{chunk-AK6QPX7A.js → chunk-DBBKM74E.js} +22 -45
- package/dist/chunk-DPMS7I65.js +11 -0
- package/dist/{chunk-ONSGT6UJ.js → chunk-E2DVOSUE.js} +37 -10
- package/dist/{chunk-4WBSXHQA.js → chunk-EA3J5XUJ.js} +2 -2
- package/dist/{chunk-3HLDIIWA.js → chunk-F5UOF52Q.js} +1 -1
- package/dist/{chunk-I2HNC4PQ.js → chunk-FZCVNHML.js} +1 -1
- package/dist/{chunk-DCKADD5B.js → chunk-HEMRBFLN.js} +1 -1
- package/dist/{chunk-IUJABAG2.js → chunk-HOQ45246.js} +55 -39
- package/dist/{chunk-T56BK7NS.js → chunk-JRGALHBZ.js} +1 -1
- package/dist/{chunk-FZB7UX44.js → chunk-KEQTT67U.js} +7 -49
- package/dist/{chunk-4VBLQIM5.js → chunk-KRIEZVXX.js} +1 -1
- package/dist/{chunk-PLWDYWK6.js → chunk-KWWWMU5S.js} +1 -1
- package/dist/{chunk-IVFMOHAC.js → chunk-L53YKOK4.js} +5 -5
- package/dist/{chunk-XOT2VWCO.js → chunk-LRS32NU7.js} +6 -6
- package/dist/{chunk-6KZCXAYL.js → chunk-MRLC4HLJ.js} +1 -1
- package/dist/{chunk-P6RVYHLT.js → chunk-NASGAME6.js} +4 -4
- package/dist/{chunk-XQGQ5EFS.js → chunk-O3RHY4ZI.js} +2 -0
- package/dist/{chunk-WPZKOVYF.js → chunk-OL3ULF5Q.js} +1 -1
- package/dist/{chunk-AFUITAH6.js → chunk-S6YSOEK5.js} +3 -12
- package/dist/{chunk-U7KSOA2L.js → chunk-SBKCVRJB.js} +1 -1
- package/dist/{chunk-MMJYII7Y.js → chunk-SBWXIK5K.js} +4 -4
- package/dist/{chunk-7II5OM7R.js → chunk-TBZEIN45.js} +1 -1
- package/dist/{chunk-RWJHZCOR.js → chunk-TG756AMB.js} +2 -2
- package/dist/{chunk-X2RTLS6K.js → chunk-TPQA5TPU.js} +1 -1
- package/dist/{chunk-CL5Y6V6K.js → chunk-UB6Z7RY4.js} +3 -3
- package/dist/{chunk-KC4LNZL5.js → chunk-VSHAP22Q.js} +2 -2
- package/dist/{chunk-LVMWPFV4.js → chunk-VW22APZC.js} +1 -1
- package/dist/chunk-WHYTCQYZ.js +161 -0
- package/dist/{chunk-XV2K3AQT.js → chunk-WONOHP4G.js} +1 -1
- package/dist/{chunk-ZPJQ3TQL.js → chunk-WYMJ5RXC.js} +1 -1
- package/dist/{chunk-6HA55CRU.js → chunk-X7DGPNSV.js} +1 -1
- package/dist/{chunk-2K2GBFLU.js → chunk-Y2NR3Y6J.js} +1 -1
- package/dist/{chunk-UGWJC4GA.js → chunk-ZTJYOHS3.js} +1 -1
- package/dist/{chunk-6HPEMDQW.js → chunk-ZUCLQVXD.js} +1 -1
- package/dist/component-runtime/browserOptions.js +3 -3
- package/dist/component-runtime/contracts.js +3 -11
- package/dist/component-runtime/importPolicy.js +2 -2
- package/dist/component-runtime/render.js +5 -5
- package/dist/component-runtime/sourceAdmission.js +2 -2
- package/dist/component-runtime/template/testing.js +11 -10
- package/dist/component-runtime/template.js +11 -10
- package/dist/component-runtime.js +8 -16
- package/dist/compose.js +11 -11
- package/dist/composition/component-clip.d.ts +1 -0
- package/dist/composition/component-clip.js +29 -0
- package/dist/composition/depth.js +3 -8
- package/dist/composition/graphics-plan.js +2 -2
- package/dist/composition/invariants.js +2 -2
- package/dist/composition/ops.js +5 -5
- package/dist/composition/projection.js +3 -2
- package/dist/composition/scene.js +1 -1
- package/dist/composition/timeline.js +2 -2
- package/dist/composition/validators/brand-kit-body.js +4 -4
- package/dist/composition/validators/graphic-kinds.js +1 -1
- package/dist/composition/validators.js +4 -6
- package/dist/composition-ops.js +17 -15
- package/dist/composition.js +9 -10
- package/dist/{context-7SWSVJ6Z.js → context-WOYP7QBB.js} +6 -6
- package/dist/core/render.js +9 -7
- package/dist/core/select.js +2 -2
- package/dist/core.js +9 -7
- package/dist/director/ai-sdk.js +3 -3
- package/dist/director/domain.js +2 -2
- package/dist/director.js +4 -4
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +3 -3
- package/dist/mcp/composition-ops.js +1 -1
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +1 -1
- package/dist/mcp/scene-shot.js +2 -2
- package/dist/mcp/server.js +6 -6
- package/dist/mcp.js +10 -10
- package/dist/primitives/captions.js +3 -3
- package/dist/primitives/effects.js +5 -5
- package/dist/primitives/layouts.js +4 -4
- package/dist/primitives/lib/index.js +3 -3
- package/dist/primitives/lib.js +3 -3
- package/dist/primitives/scenes.js +4 -4
- package/dist/primitives/ui-blocks.js +2 -2
- package/dist/primitives.js +9 -9
- package/dist/render-harness/cardAssetAdmission.js +2 -2
- package/dist/render-harness/cardFonts.js +2 -2
- package/dist/render-harness.js +20 -18
- package/dist/{src-XI5MULKD.js → src-XYW7BEJ5.js} +17 -15
- package/package.json +16 -12
- package/dist/{chunk-UGEUB763.js → chunk-7PSQUTL5.js} +3 -3
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
flattenCompoundClips,
|
|
8
8
|
hasCompoundClips
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WYMJ5RXC.js";
|
|
10
10
|
import {
|
|
11
11
|
DOMINANCE_WEIGHTS,
|
|
12
12
|
ENTER_SEC,
|
|
@@ -24,11 +24,14 @@ import {
|
|
|
24
24
|
scoreAndRank,
|
|
25
25
|
segmentShots,
|
|
26
26
|
stabilizeSelectionHysteresis
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-F5UOF52Q.js";
|
|
28
28
|
import {
|
|
29
29
|
compositionHasVo,
|
|
30
30
|
roleDefaultGainDb
|
|
31
31
|
} from "./chunk-P3EFZDM5.js";
|
|
32
|
+
import {
|
|
33
|
+
componentClipRenderInput
|
|
34
|
+
} from "./chunk-WHYTCQYZ.js";
|
|
32
35
|
import {
|
|
33
36
|
SHOT_SCALE_TARGET,
|
|
34
37
|
shotScaleZoom
|
|
@@ -39,7 +42,7 @@ import {
|
|
|
39
42
|
import {
|
|
40
43
|
CueframeError,
|
|
41
44
|
encodeError
|
|
42
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-O3RHY4ZI.js";
|
|
43
46
|
import {
|
|
44
47
|
SCENE_CAPTURE_IDENTITY_FIELDS_V1,
|
|
45
48
|
SCENE_PRESET_TRIANGLES,
|
|
@@ -54,7 +57,7 @@ import {
|
|
|
54
57
|
sceneFullMipLevels,
|
|
55
58
|
sceneTextureBytes,
|
|
56
59
|
selectSceneBakeScale
|
|
57
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-UB6Z7RY4.js";
|
|
58
61
|
import {
|
|
59
62
|
SCENE_CONTEXT_GL_BUDGET_BYTES,
|
|
60
63
|
SCENE_MAX_TRIANGLES,
|
|
@@ -1663,7 +1666,7 @@ function clipTransformChannel(c) {
|
|
|
1663
1666
|
...c.animate !== void 0 ? { animate: c.animate } : {}
|
|
1664
1667
|
};
|
|
1665
1668
|
}
|
|
1666
|
-
function projectOverlayTrack(track, trackIndex, trackCount, fps, alphaUrls
|
|
1669
|
+
function projectOverlayTrack(track, trackIndex, trackCount, fps, alphaUrls, componentClips, isSceneClip = () => false) {
|
|
1667
1670
|
const overlays = [];
|
|
1668
1671
|
for (let i = 0; i < track.contents.length; i++) {
|
|
1669
1672
|
const c = track.contents[i];
|
|
@@ -1680,37 +1683,33 @@ function projectOverlayTrack(track, trackIndex, trackCount, fps, alphaUrls = {},
|
|
|
1680
1683
|
{ trackId: track.id, clipId: c.id, compositionPath: `composition.tracks[${track.id}].contents[${i}].effects` }
|
|
1681
1684
|
);
|
|
1682
1685
|
}
|
|
1683
|
-
if (c.source.kind === "component") {
|
|
1686
|
+
if (c.source.kind === "component" && componentClips === "baked") {
|
|
1684
1687
|
const { startFrame: startFrame2, durationInFrames: durationInFrames2 } = timelineSpanFrames(
|
|
1685
1688
|
c.startTime,
|
|
1686
1689
|
c.startTime + c.duration,
|
|
1687
1690
|
fps
|
|
1688
1691
|
);
|
|
1689
1692
|
if (durationInFrames2 === 0) continue;
|
|
1690
|
-
const
|
|
1691
|
-
|
|
1692
|
-
if (ref?.version !== 1 || typeof ref.sourceVersionId !== "string" || !/^[a-f0-9]{64}$/.test(ref.sourceVersionId)) {
|
|
1693
|
+
const src = alphaUrls[c.id];
|
|
1694
|
+
if (!src) {
|
|
1693
1695
|
throw renderInputError(
|
|
1694
|
-
"
|
|
1695
|
-
`composition.tracks[${track.id}].contents[${i}]
|
|
1696
|
-
{
|
|
1696
|
+
"variant_not_baked",
|
|
1697
|
+
`composition.tracks[${track.id}].contents[${i}]: component clip ${c.id} has no baked alpha (alphaUrls[${c.id}] missing), bake before render`,
|
|
1698
|
+
{
|
|
1699
|
+
trackId: track.id,
|
|
1700
|
+
clipId: c.id,
|
|
1701
|
+
componentId: c.source.componentId,
|
|
1702
|
+
compositionPath: `composition.tracks[${track.id}].contents[${i}].source`
|
|
1703
|
+
}
|
|
1697
1704
|
);
|
|
1698
1705
|
}
|
|
1699
|
-
const { componentRef: _reserved, renderSeed, ...params } = c.source.props;
|
|
1700
|
-
if (renderSeed !== void 0 && (typeof renderSeed !== "string" || renderSeed.length === 0)) {
|
|
1701
|
-
throw renderInputError("invalid_composition", `composition.tracks[${track.id}].contents[${i}].source.props.renderSeed must be a non-empty string`, transitionLocator);
|
|
1702
|
-
}
|
|
1703
1706
|
overlays.push({
|
|
1704
1707
|
...visualIdentity(track, trackIndex, trackCount, i),
|
|
1705
1708
|
id: c.id,
|
|
1706
|
-
template: "
|
|
1707
|
-
componentId: c.source.componentId,
|
|
1708
|
-
sourceVersionId: ref.sourceVersionId,
|
|
1709
|
-
...renderSeed !== void 0 ? { renderSeed } : {},
|
|
1710
|
-
componentAssets: c.source.assets ?? {},
|
|
1709
|
+
template: "alpha-layer",
|
|
1711
1710
|
startFrame: startFrame2,
|
|
1712
1711
|
durationInFrames: durationInFrames2,
|
|
1713
|
-
params,
|
|
1712
|
+
params: { src },
|
|
1714
1713
|
...c.source.zPlane !== void 0 ? { zPlane: c.source.zPlane } : {},
|
|
1715
1714
|
...c.region !== void 0 ? { region: c.region } : {},
|
|
1716
1715
|
...c.fit !== void 0 ? { fit: c.fit } : {},
|
|
@@ -1719,33 +1718,33 @@ function projectOverlayTrack(track, trackIndex, trackCount, fps, alphaUrls = {},
|
|
|
1719
1718
|
});
|
|
1720
1719
|
continue;
|
|
1721
1720
|
}
|
|
1722
|
-
if (c.source.kind === "
|
|
1721
|
+
if (c.source.kind === "component") {
|
|
1723
1722
|
const { startFrame: startFrame2, durationInFrames: durationInFrames2 } = timelineSpanFrames(
|
|
1724
1723
|
c.startTime,
|
|
1725
1724
|
c.startTime + c.duration,
|
|
1726
1725
|
fps
|
|
1727
1726
|
);
|
|
1728
1727
|
if (durationInFrames2 === 0) continue;
|
|
1729
|
-
const
|
|
1730
|
-
if (!
|
|
1728
|
+
const built = componentClipRenderInput({ id: c.id, componentId: c.source.componentId, props: c.source.props });
|
|
1729
|
+
if (!built.ok) {
|
|
1731
1730
|
throw renderInputError(
|
|
1732
|
-
|
|
1733
|
-
`composition.tracks[${track.id}].contents[${i}]:
|
|
1734
|
-
{
|
|
1735
|
-
trackId: track.id,
|
|
1736
|
-
clipId: c.id,
|
|
1737
|
-
componentId: c.source.componentId,
|
|
1738
|
-
compositionPath: `composition.tracks[${track.id}].contents[${i}].source`
|
|
1739
|
-
}
|
|
1731
|
+
built.refusal.code,
|
|
1732
|
+
`composition.tracks[${track.id}].contents[${i}].source: ${built.refusal.message}`,
|
|
1733
|
+
{ trackId: track.id, clipId: c.id, componentId: c.source.componentId }
|
|
1740
1734
|
);
|
|
1741
1735
|
}
|
|
1736
|
+
const { sourceVersionId, params, seed } = built.input;
|
|
1742
1737
|
overlays.push({
|
|
1743
1738
|
...visualIdentity(track, trackIndex, trackCount, i),
|
|
1744
1739
|
id: c.id,
|
|
1745
|
-
template: "
|
|
1740
|
+
template: "component",
|
|
1741
|
+
componentId: c.source.componentId,
|
|
1742
|
+
sourceVersionId,
|
|
1743
|
+
renderSeed: seed,
|
|
1744
|
+
componentAssets: c.source.assets ?? {},
|
|
1746
1745
|
startFrame: startFrame2,
|
|
1747
1746
|
durationInFrames: durationInFrames2,
|
|
1748
|
-
params
|
|
1747
|
+
params,
|
|
1749
1748
|
...c.source.zPlane !== void 0 ? { zPlane: c.source.zPlane } : {},
|
|
1750
1749
|
...c.region !== void 0 ? { region: c.region } : {},
|
|
1751
1750
|
...c.fit !== void 0 ? { fit: c.fit } : {},
|
|
@@ -1782,7 +1781,7 @@ function projectOverlayTrack(track, trackIndex, trackCount, fps, alphaUrls = {},
|
|
|
1782
1781
|
if (c.source.kind !== "overlay") {
|
|
1783
1782
|
throw renderInputError(
|
|
1784
1783
|
"clip_source_track_mismatch",
|
|
1785
|
-
`composition.tracks[${track.id}].contents[${i}]: kind=${c.source.kind} is invalid on an overlay track (expected 'overlay', '
|
|
1784
|
+
`composition.tracks[${track.id}].contents[${i}]: kind=${c.source.kind} is invalid on an overlay track (expected 'overlay', 'component', or 'card')`,
|
|
1786
1785
|
{ trackId: track.id, clipId: c.id, compositionPath: `composition.tracks[${track.id}].contents[${i}].source` }
|
|
1787
1786
|
);
|
|
1788
1787
|
}
|
|
@@ -2014,6 +2013,14 @@ function assertMergedCaptionFacesDrawable(composition) {
|
|
|
2014
2013
|
);
|
|
2015
2014
|
}
|
|
2016
2015
|
function compositionToRenderInput(composition, srcUrls, trajectoryUrls, coViewUrls, alphaUrls, subCompositions, trajectories, options) {
|
|
2016
|
+
const componentClips = options?.componentClips;
|
|
2017
|
+
if (componentClips !== "live" && componentClips !== "baked") {
|
|
2018
|
+
throw renderInputError(
|
|
2019
|
+
"internal_error",
|
|
2020
|
+
`render input must name its component lane ('live' or 'baked'), got ${String(componentClips)}`,
|
|
2021
|
+
{}
|
|
2022
|
+
);
|
|
2023
|
+
}
|
|
2017
2024
|
const flattened = hasCompoundClips(composition) ? flattenCompoundClips(composition, (id) => subCompositions?.[id]) : composition;
|
|
2018
2025
|
composition = flattened;
|
|
2019
2026
|
for (const track of composition.tracks) {
|
|
@@ -2047,7 +2054,7 @@ function compositionToRenderInput(composition, srcUrls, trajectoryUrls, coViewUr
|
|
|
2047
2054
|
trajectoryUrls,
|
|
2048
2055
|
coViewUrls,
|
|
2049
2056
|
trajectories,
|
|
2050
|
-
options
|
|
2057
|
+
options.sourceDimensions
|
|
2051
2058
|
);
|
|
2052
2059
|
clips.push(...c);
|
|
2053
2060
|
audioTracks.push(...audio);
|
|
@@ -2069,7 +2076,8 @@ function compositionToRenderInput(composition, srcUrls, trajectoryUrls, coViewUr
|
|
|
2069
2076
|
trackCount,
|
|
2070
2077
|
fps,
|
|
2071
2078
|
alphaUrls ?? {},
|
|
2072
|
-
|
|
2079
|
+
componentClips,
|
|
2080
|
+
options.isSceneClip
|
|
2073
2081
|
));
|
|
2074
2082
|
} else if (track.kind === "effect") {
|
|
2075
2083
|
effects.push(...projectEffectTrack(track, trackIndex, trackCount, fps));
|
|
@@ -2093,7 +2101,7 @@ function compositionToRenderInput(composition, srcUrls, trajectoryUrls, coViewUr
|
|
|
2093
2101
|
for (const e of effects) {
|
|
2094
2102
|
consider(e.startFrame ?? 0, e.durationInFrames ?? 0);
|
|
2095
2103
|
}
|
|
2096
|
-
const SCENE_OVERLAY_TEMPLATES = /* @__PURE__ */ new Set(["alpha-layer", "custom", "card"]);
|
|
2104
|
+
const SCENE_OVERLAY_TEMPLATES = /* @__PURE__ */ new Set(["alpha-layer", "component", "custom", "card"]);
|
|
2097
2105
|
let maxBackgroundEndFrames = 0;
|
|
2098
2106
|
for (const c of clips) {
|
|
2099
2107
|
const end = c.timelineStartFrames + c.durationInFrames;
|
|
@@ -2176,6 +2184,13 @@ function compositionToRenderInput(composition, srcUrls, trajectoryUrls, coViewUr
|
|
|
2176
2184
|
};
|
|
2177
2185
|
}
|
|
2178
2186
|
function assembleRenderInput(composition, resolved) {
|
|
2187
|
+
if (resolved.componentClips === "baked" && Object.keys(resolved.componentSources ?? {}).length > 0) {
|
|
2188
|
+
throw renderInputError(
|
|
2189
|
+
"internal_error",
|
|
2190
|
+
"render input on the baked lane must not carry componentSources: component code goes to the bake step, never to the render",
|
|
2191
|
+
{}
|
|
2192
|
+
);
|
|
2193
|
+
}
|
|
2179
2194
|
const resolveSource = resolved.componentSources ? sceneSourceResolverForPinnedRows(resolved.componentSources) : null;
|
|
2180
2195
|
if (resolveSource) {
|
|
2181
2196
|
assertSceneClipShapes(composition, {
|
|
@@ -2194,6 +2209,7 @@ function assembleRenderInput(composition, resolved) {
|
|
|
2194
2209
|
// The same manifest-backed answer the shape rules used, so projection cannot floor a scene
|
|
2195
2210
|
// clip's boundary into a length the rules above would have refused.
|
|
2196
2211
|
{
|
|
2212
|
+
componentClips: resolved.componentClips,
|
|
2197
2213
|
...resolveSource ? { isSceneClip: (clip) => isSceneShotClip(clip, resolveSource) } : {},
|
|
2198
2214
|
sourceDimensions: resolved.sourceDimensions
|
|
2199
2215
|
}
|
|
@@ -55,7 +55,7 @@ function isSourceKindCompatible(trackKind, sourceKind) {
|
|
|
55
55
|
case "image":
|
|
56
56
|
return sourceKind === "media" || sourceKind === "component";
|
|
57
57
|
case "overlay":
|
|
58
|
-
return sourceKind === "overlay" || sourceKind === "component" || sourceKind === "
|
|
58
|
+
return sourceKind === "overlay" || sourceKind === "component" || sourceKind === "card";
|
|
59
59
|
case "effect":
|
|
60
60
|
return sourceKind === "effect";
|
|
61
61
|
}
|
|
@@ -1392,7 +1392,7 @@ var BriefCreateRequest = zod19.strictObject({
|
|
|
1392
1392
|
"kind": zod19.literal("component"),
|
|
1393
1393
|
"componentId": zod19.string().min(1),
|
|
1394
1394
|
"props": zod19.record(zod19.string(), zod19.unknown()),
|
|
1395
|
-
"assets": zod19.record(zod19.string(), zod19.string().min(1)).optional(),
|
|
1395
|
+
"assets": zod19.record(zod19.string(), zod19.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1396
1396
|
"zPlane": zod19.enum(["front", "behind-subject"]).optional()
|
|
1397
1397
|
}), zod19.strictObject({
|
|
1398
1398
|
"kind": zod19.literal("overlay"),
|
|
@@ -1409,12 +1409,6 @@ var BriefCreateRequest = zod19.strictObject({
|
|
|
1409
1409
|
"kind": zod19.literal("effect"),
|
|
1410
1410
|
"primitiveId": zod19.string().min(1),
|
|
1411
1411
|
"params": zod19.record(zod19.string(), zod19.unknown()).optional()
|
|
1412
|
-
}), zod19.strictObject({
|
|
1413
|
-
"kind": zod19.literal("alpha-layer"),
|
|
1414
|
-
"componentId": zod19.string().min(1),
|
|
1415
|
-
"props": zod19.record(zod19.string(), zod19.unknown()),
|
|
1416
|
-
"assets": zod19.record(zod19.string(), zod19.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1417
|
-
"zPlane": zod19.enum(["front", "behind-subject"]).optional()
|
|
1418
1412
|
}), zod19.strictObject({
|
|
1419
1413
|
"kind": zod19.literal("card"),
|
|
1420
1414
|
"html": zod19.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -1654,7 +1648,7 @@ var BriefResponse = zod21.strictObject({
|
|
|
1654
1648
|
"kind": zod21.literal("component"),
|
|
1655
1649
|
"componentId": zod21.string().min(1),
|
|
1656
1650
|
"props": zod21.record(zod21.string(), zod21.unknown()),
|
|
1657
|
-
"assets": zod21.record(zod21.string(), zod21.string().min(1)).optional(),
|
|
1651
|
+
"assets": zod21.record(zod21.string(), zod21.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1658
1652
|
"zPlane": zod21.enum(["front", "behind-subject"]).optional()
|
|
1659
1653
|
}), zod21.strictObject({
|
|
1660
1654
|
"kind": zod21.literal("overlay"),
|
|
@@ -1671,12 +1665,6 @@ var BriefResponse = zod21.strictObject({
|
|
|
1671
1665
|
"kind": zod21.literal("effect"),
|
|
1672
1666
|
"primitiveId": zod21.string().min(1),
|
|
1673
1667
|
"params": zod21.record(zod21.string(), zod21.unknown()).optional()
|
|
1674
|
-
}), zod21.strictObject({
|
|
1675
|
-
"kind": zod21.literal("alpha-layer"),
|
|
1676
|
-
"componentId": zod21.string().min(1),
|
|
1677
|
-
"props": zod21.record(zod21.string(), zod21.unknown()),
|
|
1678
|
-
"assets": zod21.record(zod21.string(), zod21.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1679
|
-
"zPlane": zod21.enum(["front", "behind-subject"]).optional()
|
|
1680
1668
|
}), zod21.strictObject({
|
|
1681
1669
|
"kind": zod21.literal("card"),
|
|
1682
1670
|
"html": zod21.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -1905,7 +1893,7 @@ var BriefPatchRequest = zod23.strictObject({
|
|
|
1905
1893
|
"kind": zod23.literal("component"),
|
|
1906
1894
|
"componentId": zod23.string().min(1),
|
|
1907
1895
|
"props": zod23.record(zod23.string(), zod23.unknown()),
|
|
1908
|
-
"assets": zod23.record(zod23.string(), zod23.string().min(1)).optional(),
|
|
1896
|
+
"assets": zod23.record(zod23.string(), zod23.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1909
1897
|
"zPlane": zod23.enum(["front", "behind-subject"]).optional()
|
|
1910
1898
|
}), zod23.strictObject({
|
|
1911
1899
|
"kind": zod23.literal("overlay"),
|
|
@@ -1922,12 +1910,6 @@ var BriefPatchRequest = zod23.strictObject({
|
|
|
1922
1910
|
"kind": zod23.literal("effect"),
|
|
1923
1911
|
"primitiveId": zod23.string().min(1),
|
|
1924
1912
|
"params": zod23.record(zod23.string(), zod23.unknown()).optional()
|
|
1925
|
-
}), zod23.strictObject({
|
|
1926
|
-
"kind": zod23.literal("alpha-layer"),
|
|
1927
|
-
"componentId": zod23.string().min(1),
|
|
1928
|
-
"props": zod23.record(zod23.string(), zod23.unknown()),
|
|
1929
|
-
"assets": zod23.record(zod23.string(), zod23.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
1930
|
-
"zPlane": zod23.enum(["front", "behind-subject"]).optional()
|
|
1931
1913
|
}), zod23.strictObject({
|
|
1932
1914
|
"kind": zod23.literal("card"),
|
|
1933
1915
|
"html": zod23.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -2812,7 +2794,7 @@ var Composition = zod58.strictObject({
|
|
|
2812
2794
|
"kind": zod58.literal("component"),
|
|
2813
2795
|
"componentId": zod58.string().min(1),
|
|
2814
2796
|
"props": zod58.record(zod58.string(), zod58.unknown()),
|
|
2815
|
-
"assets": zod58.record(zod58.string(), zod58.string().min(1)).optional(),
|
|
2797
|
+
"assets": zod58.record(zod58.string(), zod58.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
2816
2798
|
"zPlane": zod58.enum(["front", "behind-subject"]).optional()
|
|
2817
2799
|
}), zod58.strictObject({
|
|
2818
2800
|
"kind": zod58.literal("overlay"),
|
|
@@ -2829,12 +2811,6 @@ var Composition = zod58.strictObject({
|
|
|
2829
2811
|
"kind": zod58.literal("effect"),
|
|
2830
2812
|
"primitiveId": zod58.string().min(1),
|
|
2831
2813
|
"params": zod58.record(zod58.string(), zod58.unknown()).optional()
|
|
2832
|
-
}), zod58.strictObject({
|
|
2833
|
-
"kind": zod58.literal("alpha-layer"),
|
|
2834
|
-
"componentId": zod58.string().min(1),
|
|
2835
|
-
"props": zod58.record(zod58.string(), zod58.unknown()),
|
|
2836
|
-
"assets": zod58.record(zod58.string(), zod58.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
2837
|
-
"zPlane": zod58.enum(["front", "behind-subject"]).optional()
|
|
2838
2814
|
}), zod58.strictObject({
|
|
2839
2815
|
"kind": zod58.literal("card"),
|
|
2840
2816
|
"html": zod58.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -6520,7 +6496,7 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6520
6496
|
"kind": zod67.literal("component"),
|
|
6521
6497
|
"componentId": zod67.string().min(1),
|
|
6522
6498
|
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6523
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional(),
|
|
6499
|
+
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6524
6500
|
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6525
6501
|
}), zod67.strictObject({
|
|
6526
6502
|
"kind": zod67.literal("overlay"),
|
|
@@ -6537,12 +6513,6 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6537
6513
|
"kind": zod67.literal("effect"),
|
|
6538
6514
|
"primitiveId": zod67.string().min(1),
|
|
6539
6515
|
"params": zod67.record(zod67.string(), zod67.unknown()).optional()
|
|
6540
|
-
}), zod67.strictObject({
|
|
6541
|
-
"kind": zod67.literal("alpha-layer"),
|
|
6542
|
-
"componentId": zod67.string().min(1),
|
|
6543
|
-
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6544
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6545
|
-
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6546
6516
|
}), zod67.strictObject({
|
|
6547
6517
|
"kind": zod67.literal("card"),
|
|
6548
6518
|
"html": zod67.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -6670,7 +6640,7 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6670
6640
|
"kind": zod67.literal("component"),
|
|
6671
6641
|
"componentId": zod67.string().min(1),
|
|
6672
6642
|
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6673
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional(),
|
|
6643
|
+
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6674
6644
|
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6675
6645
|
}), zod67.strictObject({
|
|
6676
6646
|
"kind": zod67.literal("overlay"),
|
|
@@ -6687,12 +6657,6 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6687
6657
|
"kind": zod67.literal("effect"),
|
|
6688
6658
|
"primitiveId": zod67.string().min(1),
|
|
6689
6659
|
"params": zod67.record(zod67.string(), zod67.unknown()).optional()
|
|
6690
|
-
}), zod67.strictObject({
|
|
6691
|
-
"kind": zod67.literal("alpha-layer"),
|
|
6692
|
-
"componentId": zod67.string().min(1),
|
|
6693
|
-
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6694
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6695
|
-
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6696
6660
|
}), zod67.strictObject({
|
|
6697
6661
|
"kind": zod67.literal("card"),
|
|
6698
6662
|
"html": zod67.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -6816,7 +6780,7 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6816
6780
|
"kind": zod67.literal("component"),
|
|
6817
6781
|
"componentId": zod67.string().min(1),
|
|
6818
6782
|
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6819
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional(),
|
|
6783
|
+
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6820
6784
|
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6821
6785
|
}), zod67.strictObject({
|
|
6822
6786
|
"kind": zod67.literal("overlay"),
|
|
@@ -6833,12 +6797,6 @@ var CompositionOp = zod67.union([zod67.strictObject({
|
|
|
6833
6797
|
"kind": zod67.literal("effect"),
|
|
6834
6798
|
"primitiveId": zod67.string().min(1),
|
|
6835
6799
|
"params": zod67.record(zod67.string(), zod67.unknown()).optional()
|
|
6836
|
-
}), zod67.strictObject({
|
|
6837
|
-
"kind": zod67.literal("alpha-layer"),
|
|
6838
|
-
"componentId": zod67.string().min(1),
|
|
6839
|
-
"props": zod67.record(zod67.string(), zod67.unknown()),
|
|
6840
|
-
"assets": zod67.record(zod67.string(), zod67.string().min(1)).optional().describe("Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."),
|
|
6841
|
-
"zPlane": zod67.enum(["front", "behind-subject"]).optional()
|
|
6842
6800
|
}), zod67.strictObject({
|
|
6843
6801
|
"kind": zod67.literal("card"),
|
|
6844
6802
|
"html": zod67.string().min(1).describe("Your card's HTML \u2014 rendered VERBATIM as the graphic (shell motion via applyMotionPreset in a FOLLOWING call). CANVAS CONTRACT: the card renders in a viewport equal to the composition format's pixel frame (1080\xD71920 at 9:16 fhd); the root is NOT auto-pinned \u2014 declare explicit width/height matching the frame (box-sizing:border-box) and anchor content with flex/grid; position:absolute;inset:0 on the root does NOT fill the frame; for edge-to-edge backgrounds add an inner absolutely-positioned layer with generous negative inset. Overlay compositing applies a ~92% safe-area inset \u2014 keep critical copy away from the extreme edges. FONTS: name a family from GET /v1/fonts (list_render_fonts) \u2014 the renderer loads those faces for the card and waits for them, so `font-family: Inter` draws Inter. `@import` and remote font files are REFUSED: the card renders with no network. A family that is not on that list has no bytes behind it and the browser falls back, so end any stack with a generic (`Inter, sans-serif`) rather than relying on a system face being present."),
|
|
@@ -5,7 +5,7 @@ var DescribeCompositionOpsInput = z.object({
|
|
|
5
5
|
type: z.string().optional().describe("Exact CompositionOp type, such as captions.fromComposition. Omit for the operation list.")
|
|
6
6
|
});
|
|
7
7
|
async function describeCompositionOps(type) {
|
|
8
|
-
const { CompositionOp } = await import("./src-
|
|
8
|
+
const { CompositionOp } = await import("./src-XYW7BEJ5.js");
|
|
9
9
|
const variants = CompositionOp.options;
|
|
10
10
|
const knownTypes = variants.map((variant2) => variant2.shape.type.value);
|
|
11
11
|
if (type === void 0) {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isBehindSubjectDepthSource
|
|
3
|
+
} from "./chunk-DPMS7I65.js";
|
|
1
4
|
import {
|
|
2
5
|
activeFaceKeepOutSeries,
|
|
3
6
|
boundingBox,
|
|
@@ -6,7 +9,7 @@ import {
|
|
|
6
9
|
import {
|
|
7
10
|
CueframeError,
|
|
8
11
|
encodeError
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-O3RHY4ZI.js";
|
|
10
13
|
|
|
11
14
|
// ../composition/src/projection/cardTokens.ts
|
|
12
15
|
var CARD_MOTION_VAR_NAMES = [
|
|
@@ -251,10 +254,7 @@ function behindWindowsOf(composition) {
|
|
|
251
254
|
const out = [];
|
|
252
255
|
for (const track of tracksOf(composition)) {
|
|
253
256
|
for (const clip of clipsOf(track)) {
|
|
254
|
-
|
|
255
|
-
const kind = src?.kind;
|
|
256
|
-
if (kind !== "overlay" && kind !== "alpha-layer") continue;
|
|
257
|
-
if (src?.zPlane !== "behind-subject") continue;
|
|
257
|
+
if (!isBehindSubjectDepthSource(clip.source)) continue;
|
|
258
258
|
if (clip.duration <= 0) continue;
|
|
259
259
|
out.push({
|
|
260
260
|
startMs: clip.startTime * 1e3,
|
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
SCENE_SHOT_RESOURCE_DESCRIPTION,
|
|
3
3
|
SCENE_SHOT_RESOURCE_URI,
|
|
4
4
|
sceneShotContract
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-FZCVNHML.js";
|
|
6
6
|
import {
|
|
7
7
|
WAIT_KINDS,
|
|
8
8
|
querySchemaShape,
|
|
9
9
|
serializeQuery,
|
|
10
10
|
waitForJob
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TBZEIN45.js";
|
|
12
12
|
import {
|
|
13
13
|
DESCRIBE_COMPOSITION_OPS_DESCRIPTION,
|
|
14
14
|
DescribeCompositionOpsInput,
|
|
15
15
|
describeCompositionOps
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-KRIEZVXX.js";
|
|
17
17
|
import {
|
|
18
18
|
GENERATED_OPERATIONS,
|
|
19
19
|
apiErrorFrom,
|
|
@@ -31,10 +31,10 @@ import {
|
|
|
31
31
|
text,
|
|
32
32
|
textWithData,
|
|
33
33
|
withMedia
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-KEQTT67U.js";
|
|
35
35
|
import {
|
|
36
36
|
CURATED_TOOLS
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-EA3J5XUJ.js";
|
|
38
38
|
|
|
39
39
|
// ../mcp/src/prompts.ts
|
|
40
40
|
var skillListCache = null;
|
|
@@ -117,7 +117,7 @@ Every long job is either polled or pushed \u2014 never guessed:
|
|
|
117
117
|
- Webhooks (\`create_webhook\`): ONE terminal event per kind with status INSIDE the payload \u2014 \`render.completed\`, \`compose.completed\`, \`media.completed\`, \`suggest.completed\` \u2014 plus \`checkpoint.ready\` (a held compose paused for review). Read \`cueframe://webhook-events\` for the full contract before building a receiver.
|
|
118
118
|
- Presigned URLs (stills, clips, render outputs) expire \u2014 render outputs last ~7 days (refresh via the render's refresh-url op); preview stills/clips ~1 hour. Re-read for a fresh link instead of caching one.
|
|
119
119
|
|
|
120
|
-
CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource + contract-v2 manifest) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns the verified artifact from the same immutable bundle used by production; a compile/runtime/capability failure lands on the job's FAILED terminal carrying the sanitized author-fixable message) \u2192 fix via \`update_component\` \u2192 preview again. Place the verified component
|
|
120
|
+
CUSTOM GRAPHICS \u2014 author or FORK: \`create_component\` (tsxSource + contract-v2 manifest) from scratch, or \`get_component_source\` on a built-in primitive (e.g. \`cinematic-title\`) to fork its editable module. Iterate author\u2192preview\u2192fix with \`preview_component\` (202 + jobId; \`wait_job(kind:"preview")\` returns the verified artifact from the same immutable bundle used by production; a compile/runtime/capability failure lands on the job's FAILED terminal carrying the sanitized author-fixable message) \u2192 fix via \`update_component\` \u2192 preview again. Place the verified component via \`apply_composition\` as a \`{kind:'component', componentId, props}\` clip.
|
|
121
121
|
|
|
122
122
|
Cleanup: \`delete_project\` / \`delete_media\` / \`delete_webhook\` / \`delete_composition\`. \`list_projects\` re-orients you in an existing workspace; \`list_media\` (filter by \`source\`/\`tag\`) lists the library.
|
|
123
123
|
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
assertSceneShotParamsAdmitted,
|
|
4
4
|
materializeComponentSource,
|
|
5
5
|
renderComponentAlpha
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DBBKM74E.js";
|
|
7
7
|
import {
|
|
8
8
|
assertSourceReadsDeclaredAssets
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZUCLQVXD.js";
|
|
10
10
|
import {
|
|
11
11
|
resolvedComponentRenderer
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VSHAP22Q.js";
|
|
13
13
|
import {
|
|
14
14
|
componentArtifactId,
|
|
15
15
|
componentBundleId,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
ComponentRuntimeError,
|
|
26
26
|
assertGraphicsReceiptMatches,
|
|
27
27
|
assertRendererReceiptMatches
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-BLVSFN6J.js";
|
|
29
29
|
|
|
30
30
|
// ../execution/component-runtime/src/assetServer.ts
|
|
31
31
|
import { createHash, randomBytes } from "crypto";
|
|
@@ -66,6 +66,7 @@ var ERROR_CODES = {
|
|
|
66
66
|
component_does_not_compile: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
|
|
67
67
|
component_runtime_error: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
|
|
68
68
|
component_source_unavailable: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
|
|
69
|
+
component_source_unpinned: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
|
|
69
70
|
scene_materialization_failed: { stage: "validate", category: "authoring", retryable: false, httpStatus: 422 },
|
|
70
71
|
// ── CUE-28: codes that were thrown typed and arrived as internal_error 500 ──
|
|
71
72
|
//
|
|
@@ -182,6 +183,7 @@ var ERROR_CODES = {
|
|
|
182
183
|
wrong_status: { stage: "billing", category: "authoring", retryable: false, httpStatus: 409 },
|
|
183
184
|
transcript_payload_empty: { stage: "import", category: "authoring", retryable: false, httpStatus: 422 },
|
|
184
185
|
render_job_no_snapshot: { stage: "render", category: "internal", retryable: false, httpStatus: 500 },
|
|
186
|
+
composition_unreadable: { stage: "validate", category: "internal", retryable: false, httpStatus: 500 },
|
|
185
187
|
project_revision_invariant: { stage: "system", category: "internal", retryable: false, httpStatus: 500 },
|
|
186
188
|
// ── INTERNAL: the message would describe our infrastructure, not the request.
|
|
187
189
|
// Registered anyway, so the CODE and `retryable` are still honest even though
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ../composition/src/validators/graphicKinds.ts
|
|
2
|
-
var AUTHORED_GRAPHIC_KINDS = ["overlay", "component", "card"
|
|
2
|
+
var AUTHORED_GRAPHIC_KINDS = ["overlay", "component", "card"];
|
|
3
3
|
var GRAPHIC_ROLE_CANONICAL_KIND = {
|
|
4
4
|
"title-card": "overlay",
|
|
5
5
|
stat: "overlay",
|
|
@@ -62,7 +62,9 @@ var ComponentClipSource = z2.object({
|
|
|
62
62
|
kind: z2.literal("component"),
|
|
63
63
|
componentId: z2.string().min(1),
|
|
64
64
|
props: z2.record(z2.string(), z2.unknown()),
|
|
65
|
-
assets: z2.record(z2.string().min(1), z2.string().min(1)).optional()
|
|
65
|
+
assets: z2.record(z2.string().min(1), z2.string().min(1)).optional().describe(
|
|
66
|
+
"Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."
|
|
67
|
+
),
|
|
66
68
|
zPlane: z2.enum(["front", "behind-subject"]).optional()
|
|
67
69
|
});
|
|
68
70
|
var OverlayClipSource = z2.object({
|
|
@@ -78,15 +80,6 @@ var EffectClipSource = z2.object({
|
|
|
78
80
|
primitiveId: z2.string().min(1),
|
|
79
81
|
params: z2.record(z2.string(), z2.unknown()).optional()
|
|
80
82
|
});
|
|
81
|
-
var AlphaLayerClipSource = z2.object({
|
|
82
|
-
kind: z2.literal("alpha-layer"),
|
|
83
|
-
componentId: z2.string().min(1),
|
|
84
|
-
props: z2.record(z2.string(), z2.unknown()),
|
|
85
|
-
assets: z2.record(z2.string().min(1), z2.string().min(1)).optional().describe(
|
|
86
|
-
"Manifest asset slot \u2192 project media id. At mount each slot arrives as `assets[slot].handle`, a fetchable URL for <Img>/<Video>/<Audio>; `props` becomes `params` and never carries an asset URL."
|
|
87
|
-
),
|
|
88
|
-
zPlane: z2.enum(["front", "behind-subject"]).optional()
|
|
89
|
-
});
|
|
90
83
|
var CardClipSource = z2.object({
|
|
91
84
|
kind: z2.literal("card"),
|
|
92
85
|
html: CardHtml,
|
|
@@ -103,7 +96,6 @@ var ClipSource = z2.discriminatedUnion("kind", [
|
|
|
103
96
|
ComponentClipSource,
|
|
104
97
|
OverlayClipSource,
|
|
105
98
|
EffectClipSource,
|
|
106
|
-
AlphaLayerClipSource,
|
|
107
99
|
CardClipSource,
|
|
108
100
|
CompositionClipSource
|
|
109
101
|
]);
|
|
@@ -636,7 +628,6 @@ export {
|
|
|
636
628
|
ComponentClipSource,
|
|
637
629
|
OverlayClipSource,
|
|
638
630
|
EffectClipSource,
|
|
639
|
-
AlphaLayerClipSource,
|
|
640
631
|
CardClipSource,
|
|
641
632
|
CompositionClipSource,
|
|
642
633
|
ClipSource,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FitText
|
|
3
|
-
} from "./chunk-XHGZ2E77.js";
|
|
4
1
|
import {
|
|
5
2
|
EASING_BY_INTENT
|
|
6
3
|
} from "./chunk-MFHXCHRI.js";
|
|
4
|
+
import {
|
|
5
|
+
FitText
|
|
6
|
+
} from "./chunk-XHGZ2E77.js";
|
|
7
7
|
import {
|
|
8
8
|
ACCENT,
|
|
9
9
|
ACCENT_STRONG,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
perspectiveFor,
|
|
27
27
|
resolveCamera,
|
|
28
28
|
useStage
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-TG756AMB.js";
|
|
30
30
|
|
|
31
31
|
// ../execution/primitives/src/effects/blur/index.tsx
|
|
32
32
|
import React2 from "react";
|