@cueframe/kernel 0.2.46 → 0.2.47

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.
@@ -113,7 +113,8 @@ function captionSourceMediaIds(composition, trackId) {
113
113
  function materializeCompositionCaptions(composition, trackId, transcriptsByMediaId) {
114
114
  const clips = selectedCaptionClips(composition, trackId);
115
115
  const segments = [];
116
- for (const clip of clips) {
116
+ const projectedClips = [];
117
+ for (const [clipIndex, clip] of clips.entries()) {
117
118
  if (clip.source.kind !== "media") continue;
118
119
  const source = clip.source;
119
120
  const utterances = transcriptsByMediaId[source.mediaId];
@@ -151,15 +152,22 @@ function materializeCompositionCaptions(composition, trackId, transcriptsByMedia
151
152
  if (seenSourceWords.has(identity)) continue;
152
153
  seenSourceWords.add(identity);
153
154
  let projected;
155
+ let sourceStart = 0;
156
+ let sourceEnd = 0;
154
157
  for (const span of positionedSpans) {
155
158
  const [part] = sliceTranscriptWords([{ ...utterance, words: [sourceWord] }], span.sourceStart, span.sourceEnd);
156
159
  if (!part) continue;
157
160
  const startMs = Math.min(clipEndMs, Math.round((span.timelineStart + part.startMs / 1e3 / rate) * 1e3));
158
161
  const endMs = Math.min(clipEndMs, Math.round((span.timelineStart + part.endMs / 1e3 / rate) * 1e3));
159
- if (!projected) projected = { ...part, startMs, endMs };
160
- else projected.endMs = Math.max(projected.endMs, endMs);
162
+ if (!projected) {
163
+ projected = { ...part, startMs, endMs };
164
+ sourceStart = Math.max(sourceWord.start, span.sourceStart);
165
+ } else projected.endMs = Math.max(projected.endMs, endMs);
166
+ sourceEnd = Math.min(sourceWord.end, span.sourceEnd);
167
+ }
168
+ if (projected && projected.endMs > projected.startMs) {
169
+ clipWords.push({ word: projected, mediaId: source.mediaId, sourceIdentity: identity, sourceStart, sourceEnd, clipIndex });
161
170
  }
162
- if (projected && projected.endMs > projected.startMs) clipWords.push(projected);
163
171
  }
164
172
  }
165
173
  if (clipWords.length === 0) {
@@ -168,8 +176,25 @@ function materializeCompositionCaptions(composition, trackId, transcriptsByMedia
168
176
  `captions.fromComposition: media '${source.mediaId}' has no transcript words in clip '${clip.id}' playable ranges`
169
177
  );
170
178
  }
171
- clipWords.sort((a, b) => a.startMs - b.startMs || a.endMs - b.endMs || a.text.localeCompare(b.text));
172
- segments.push(...splitIntoSentences(clipWords).map((words) => ({ words })));
179
+ clipWords.sort((a, b) => a.word.startMs - b.word.startMs || a.word.endMs - b.word.endMs || a.word.text.localeCompare(b.word.text));
180
+ projectedClips.push(clipWords);
181
+ }
182
+ const mergedByClip = projectedClips.map(() => []);
183
+ let previous;
184
+ for (const clipWords of projectedClips) {
185
+ for (const current of clipWords) {
186
+ if (previous && current.clipIndex === previous.clipIndex + 1 && current.mediaId === previous.mediaId && current.sourceIdentity === previous.sourceIdentity && Math.abs(current.sourceStart - previous.sourceEnd) < 1e-7 && Math.abs(current.word.startMs - previous.word.endMs) <= 1) {
187
+ previous.word.endMs = current.word.endMs;
188
+ previous.sourceEnd = current.sourceEnd;
189
+ previous.clipIndex = current.clipIndex;
190
+ } else {
191
+ mergedByClip[current.clipIndex].push(current.word);
192
+ previous = current;
193
+ }
194
+ }
195
+ }
196
+ for (const words of mergedByClip) {
197
+ segments.push(...splitIntoSentences(words).map((sentence) => ({ words: sentence })));
173
198
  }
174
199
  if (segments.length === 0) {
175
200
  throw new CaptionMaterializationError(
@@ -31,7 +31,7 @@ import {
31
31
  } from "./chunk-AOIY7NGF.js";
32
32
  import {
33
33
  CompositionOp
34
- } from "./chunk-LELDNLLA.js";
34
+ } from "./chunk-KCXADPOC.js";
35
35
 
36
36
  // ../mcp/src/prompts.ts
37
37
  var skillListCache = null;
package/dist/compose.js CHANGED
@@ -5,40 +5,40 @@ import "./chunk-GULDS3VE.js";
5
5
  import {
6
6
  isContrastCritical
7
7
  } from "./chunk-QDBVYZSF.js";
8
+ import {
9
+ catalog
10
+ } from "./chunk-RBWS5XHE.js";
11
+ import "./chunk-DLF4WVSE.js";
12
+ import "./chunk-U4V4FZGE.js";
13
+ import {
14
+ catalog as catalog3
15
+ } from "./chunk-FVDFPJHT.js";
8
16
  import {
9
17
  catalog as catalog6
10
- } from "./chunk-VLJOIUHL.js";
18
+ } from "./chunk-B3GSTQLR.js";
19
+ import {
20
+ catalog as catalog5
21
+ } from "./chunk-RAXHCRVV.js";
11
22
  import {
12
23
  catalog as catalog2
13
- } from "./chunk-5ZQLMPDY.js";
24
+ } from "./chunk-7SXY6NFW.js";
14
25
  import {
15
26
  catalog as catalog8
16
- } from "./chunk-7SQOXIWR.js";
27
+ } from "./chunk-RL5SO653.js";
28
+ import "./chunk-LT4PWSR2.js";
29
+ import "./chunk-FWSJLHSV.js";
30
+ import "./chunk-ZFEXATWN.js";
17
31
  import {
18
32
  catalog as catalog4
19
33
  } from "./chunk-CZOVEX2D.js";
34
+ import "./chunk-XHGZ2E77.js";
20
35
  import {
21
36
  catalog as catalog7
22
- } from "./chunk-4B4V3HYW.js";
37
+ } from "./chunk-O3SJTX6S.js";
38
+ import "./chunk-QGAWDLYX.js";
23
39
  import "./chunk-S5H6GH6M.js";
24
40
  import "./chunk-QAGGJHAF.js";
25
41
  import "./chunk-MFHXCHRI.js";
26
- import {
27
- catalog
28
- } from "./chunk-X34KW2SL.js";
29
- import "./chunk-DLF4WVSE.js";
30
- import "./chunk-U4V4FZGE.js";
31
- import "./chunk-LT4PWSR2.js";
32
- import "./chunk-FWSJLHSV.js";
33
- import {
34
- catalog as catalog3
35
- } from "./chunk-FVDFPJHT.js";
36
- import "./chunk-QGAWDLYX.js";
37
- import {
38
- catalog as catalog5
39
- } from "./chunk-RAXHCRVV.js";
40
- import "./chunk-XHGZ2E77.js";
41
- import "./chunk-ZFEXATWN.js";
42
42
  import "./chunk-W2245F6G.js";
43
43
  import "./chunk-2PU2TSUG.js";
44
44
  import "./chunk-XV2K3AQT.js";
@@ -20,7 +20,7 @@ import {
20
20
  replaceRegion,
21
21
  resolveClipKind,
22
22
  wrapWithOpRecorder
23
- } from "./chunk-LELDNLLA.js";
23
+ } from "./chunk-KCXADPOC.js";
24
24
  import "./chunk-FEG264CF.js";
25
25
  import "./chunk-QH3YI3ND.js";
26
26
  import "./chunk-JPMVNMF3.js";
@@ -8,12 +8,12 @@ import {
8
8
  registerRawTools,
9
9
  registerSkillPrompts,
10
10
  titleCase
11
- } from "../chunk-AJ3YRZ7A.js";
11
+ } from "../chunk-OYWX4NEP.js";
12
12
  import "../chunk-FYS2XUKJ.js";
13
13
  import "../chunk-XSBVOXSB.js";
14
14
  import "../chunk-CFIQY4OE.js";
15
15
  import "../chunk-AOIY7NGF.js";
16
- import "../chunk-LELDNLLA.js";
16
+ import "../chunk-KCXADPOC.js";
17
17
  import "../chunk-FEG264CF.js";
18
18
  import "../chunk-QH3YI3ND.js";
19
19
  import "../chunk-JPMVNMF3.js";
package/dist/mcp.js CHANGED
@@ -8,12 +8,12 @@ import {
8
8
  buildServer,
9
9
  registerCuratedTools,
10
10
  registerRawTools
11
- } from "./chunk-AJ3YRZ7A.js";
11
+ } from "./chunk-OYWX4NEP.js";
12
12
  import "./chunk-FYS2XUKJ.js";
13
13
  import "./chunk-XSBVOXSB.js";
14
14
  import "./chunk-CFIQY4OE.js";
15
15
  import "./chunk-AOIY7NGF.js";
16
- import "./chunk-LELDNLLA.js";
16
+ import "./chunk-KCXADPOC.js";
17
17
  import "./chunk-FEG264CF.js";
18
18
  import "./chunk-QH3YI3ND.js";
19
19
  import "./chunk-JPMVNMF3.js";
@@ -12,9 +12,9 @@ import {
12
12
  Vignette,
13
13
  catalog,
14
14
  laneDepths
15
- } from "../chunk-5ZQLMPDY.js";
16
- import "../chunk-MFHXCHRI.js";
15
+ } from "../chunk-7SXY6NFW.js";
17
16
  import "../chunk-XHGZ2E77.js";
17
+ import "../chunk-MFHXCHRI.js";
18
18
  import "../chunk-W2245F6G.js";
19
19
  import "../chunk-2PU2TSUG.js";
20
20
  import "../chunk-XV2K3AQT.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  HeroText,
3
3
  catalog
4
- } from "../chunk-7SQOXIWR.js";
4
+ } from "../chunk-RL5SO653.js";
5
5
  import "../chunk-LT4PWSR2.js";
6
6
  import "../chunk-FWSJLHSV.js";
7
- import "../chunk-XHGZ2E77.js";
8
7
  import "../chunk-ZFEXATWN.js";
8
+ import "../chunk-XHGZ2E77.js";
9
9
  import "../chunk-W2245F6G.js";
10
10
  import "../chunk-2ESYSVXG.js";
11
11
  export {
@@ -8,11 +8,11 @@ import {
8
8
  ProductLaunchTrailer,
9
9
  TerminalToBrowserDeploy,
10
10
  catalog
11
- } from "../chunk-4B4V3HYW.js";
11
+ } from "../chunk-O3SJTX6S.js";
12
+ import "../chunk-QGAWDLYX.js";
12
13
  import "../chunk-S5H6GH6M.js";
13
14
  import "../chunk-QAGGJHAF.js";
14
15
  import "../chunk-MFHXCHRI.js";
15
- import "../chunk-QGAWDLYX.js";
16
16
  import "../chunk-W2245F6G.js";
17
17
  import "../chunk-2PU2TSUG.js";
18
18
  import "../chunk-XV2K3AQT.js";
@@ -21,13 +21,13 @@ import {
21
21
  TrackingIn,
22
22
  Typewriter,
23
23
  catalog
24
- } from "../chunk-X34KW2SL.js";
24
+ } from "../chunk-RBWS5XHE.js";
25
25
  import "../chunk-DLF4WVSE.js";
26
26
  import "../chunk-U4V4FZGE.js";
27
27
  import "../chunk-LT4PWSR2.js";
28
28
  import "../chunk-FWSJLHSV.js";
29
- import "../chunk-XHGZ2E77.js";
30
29
  import "../chunk-ZFEXATWN.js";
30
+ import "../chunk-XHGZ2E77.js";
31
31
  import "../chunk-W2245F6G.js";
32
32
  import "../chunk-2ESYSVXG.js";
33
33
  export {
@@ -30,14 +30,14 @@ import {
30
30
  VisualDocsSnippet,
31
31
  VoiceWaveform,
32
32
  catalog
33
- } from "../chunk-VLJOIUHL.js";
33
+ } from "../chunk-B3GSTQLR.js";
34
+ import "../chunk-LT4PWSR2.js";
35
+ import "../chunk-FWSJLHSV.js";
36
+ import "../chunk-XHGZ2E77.js";
34
37
  import {
35
38
  DashboardPopulate
36
39
  } from "../chunk-S5H6GH6M.js";
37
40
  import "../chunk-QAGGJHAF.js";
38
- import "../chunk-LT4PWSR2.js";
39
- import "../chunk-FWSJLHSV.js";
40
- import "../chunk-XHGZ2E77.js";
41
41
  import "../chunk-W2245F6G.js";
42
42
  import "../chunk-2ESYSVXG.js";
43
43
  export {
@@ -1,37 +1,37 @@
1
+ import {
2
+ catalog
3
+ } from "./chunk-RBWS5XHE.js";
4
+ import "./chunk-DLF4WVSE.js";
5
+ import "./chunk-U4V4FZGE.js";
6
+ import {
7
+ catalog as catalog3
8
+ } from "./chunk-FVDFPJHT.js";
1
9
  import {
2
10
  catalog as catalog6
3
- } from "./chunk-VLJOIUHL.js";
11
+ } from "./chunk-B3GSTQLR.js";
12
+ import {
13
+ catalog as catalog5
14
+ } from "./chunk-RAXHCRVV.js";
4
15
  import {
5
16
  catalog as catalog2
6
- } from "./chunk-5ZQLMPDY.js";
17
+ } from "./chunk-7SXY6NFW.js";
7
18
  import {
8
19
  catalog as catalog8
9
- } from "./chunk-7SQOXIWR.js";
20
+ } from "./chunk-RL5SO653.js";
21
+ import "./chunk-LT4PWSR2.js";
22
+ import "./chunk-FWSJLHSV.js";
23
+ import "./chunk-ZFEXATWN.js";
10
24
  import {
11
25
  catalog as catalog4
12
26
  } from "./chunk-CZOVEX2D.js";
27
+ import "./chunk-XHGZ2E77.js";
13
28
  import {
14
29
  catalog as catalog7
15
- } from "./chunk-4B4V3HYW.js";
30
+ } from "./chunk-O3SJTX6S.js";
31
+ import "./chunk-QGAWDLYX.js";
16
32
  import "./chunk-S5H6GH6M.js";
17
33
  import "./chunk-QAGGJHAF.js";
18
34
  import "./chunk-MFHXCHRI.js";
19
- import {
20
- catalog
21
- } from "./chunk-X34KW2SL.js";
22
- import "./chunk-DLF4WVSE.js";
23
- import "./chunk-U4V4FZGE.js";
24
- import "./chunk-LT4PWSR2.js";
25
- import "./chunk-FWSJLHSV.js";
26
- import {
27
- catalog as catalog3
28
- } from "./chunk-FVDFPJHT.js";
29
- import "./chunk-QGAWDLYX.js";
30
- import {
31
- catalog as catalog5
32
- } from "./chunk-RAXHCRVV.js";
33
- import "./chunk-XHGZ2E77.js";
34
- import "./chunk-ZFEXATWN.js";
35
35
  import "./chunk-W2245F6G.js";
36
36
  import "./chunk-2PU2TSUG.js";
37
37
  import "./chunk-XV2K3AQT.js";
@@ -1,9 +1,3 @@
1
- import {
2
- assertCardHtmlAssetFree
3
- } from "./chunk-DV7ZFVL4.js";
4
- import {
5
- assertCardFontsAdmitted
6
- } from "./chunk-ACURZCPN.js";
7
1
  import {
8
2
  assertNoRemoteRefs,
9
3
  assetSlots,
@@ -11,7 +5,13 @@ import {
11
5
  isRemoteUrl,
12
6
  renderInputAssets
13
7
  } from "./chunk-KSRFYFUZ.js";
8
+ import {
9
+ assertCardHtmlAssetFree
10
+ } from "./chunk-DV7ZFVL4.js";
14
11
  import "./chunk-OSMXQV5V.js";
12
+ import {
13
+ assertCardFontsAdmitted
14
+ } from "./chunk-ACURZCPN.js";
15
15
  import "./chunk-MYBK6DKF.js";
16
16
  import "./chunk-BVA3537Z.js";
17
17
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cueframe/kernel",
3
- "version": "0.2.46",
3
+ "version": "0.2.47",
4
4
  "type": "module",
5
5
  "description": "Publish-only aggregate of CueFrame's isomorphic kernel packages — composition, primitives, authoring, MCP, and friends shipped as one npm artifact. Members remain separate workspace packages; this only changes what ships.",
6
6
  "files": [
@@ -17,25 +17,25 @@
17
17
  "tsup": "^8.3.5",
18
18
  "typescript": "^5.9.3",
19
19
  "@cueframe/account-model": "0.1.0",
20
+ "@cueframe/animate": "0.1.0",
20
21
  "@cueframe/authoring": "0.1.0",
21
- "@cueframe/component-runtime": "0.1.0",
22
+ "@cueframe/cloud-import": "0.1.0",
22
23
  "@cueframe/brand-derivation": "0.1.0",
24
+ "@cueframe/component-runtime": "0.1.0",
25
+ "@cueframe/compose": "0.1.0",
23
26
  "@cueframe/core": "0.1.0",
24
- "@cueframe/composition": "0.1.0",
27
+ "@cueframe/director": "0.1.0",
25
28
  "@cueframe/errors": "0.1.0",
26
- "@cueframe/cloud-import": "0.1.0",
29
+ "@cueframe/composition-ops": "0.1.0",
30
+ "@cueframe/nle-export": "0.1.0",
27
31
  "@cueframe/foundation": "0.1.0",
28
- "@cueframe/compose": "0.1.0",
32
+ "@cueframe/mcp": "0.1.0",
29
33
  "@cueframe/media-model": "0.1.0",
30
- "@cueframe/plane": "0.1.0",
34
+ "@cueframe/composition": "0.1.0",
31
35
  "@cueframe/perception": "0.1.0",
32
- "@cueframe/mcp": "0.1.0",
33
- "@cueframe/composition-ops": "0.1.0",
36
+ "@cueframe/render-harness": "0.1.0",
34
37
  "@cueframe/primitives": "0.1.0",
35
- "@cueframe/animate": "0.1.0",
36
- "@cueframe/director": "0.1.0",
37
- "@cueframe/nle-export": "0.1.0",
38
- "@cueframe/render-harness": "0.1.0"
38
+ "@cueframe/plane": "0.1.0"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "gsap": "3.13.0",
@@ -1,9 +1,9 @@
1
- import {
2
- EASING_BY_INTENT
3
- } from "./chunk-MFHXCHRI.js";
4
1
  import {
5
2
  FitText
6
3
  } from "./chunk-XHGZ2E77.js";
4
+ import {
5
+ EASING_BY_INTENT
6
+ } from "./chunk-MFHXCHRI.js";
7
7
  import {
8
8
  ACCENT,
9
9
  ACCENT_STRONG,
@@ -1,9 +1,3 @@
1
- import {
2
- DashboardPopulate
3
- } from "./chunk-S5H6GH6M.js";
4
- import {
5
- useFrameScale
6
- } from "./chunk-QAGGJHAF.js";
7
1
  import {
8
2
  resolveTypeface
9
3
  } from "./chunk-LT4PWSR2.js";
@@ -14,6 +8,12 @@ import {
14
8
  FitText,
15
9
  resolveFitFontSize
16
10
  } from "./chunk-XHGZ2E77.js";
11
+ import {
12
+ DashboardPopulate
13
+ } from "./chunk-S5H6GH6M.js";
14
+ import {
15
+ useFrameScale
16
+ } from "./chunk-QAGGJHAF.js";
17
17
  import {
18
18
  ACCENT,
19
19
  ACCENT_DEEP,
@@ -1,3 +1,7 @@
1
+ import {
2
+ frostedGlassWipe,
3
+ spatialPush
4
+ } from "./chunk-QGAWDLYX.js";
1
5
  import {
2
6
  DashboardPopulate
3
7
  } from "./chunk-S5H6GH6M.js";
@@ -7,10 +11,6 @@ import {
7
11
  import {
8
12
  EASING_BY_INTENT
9
13
  } from "./chunk-MFHXCHRI.js";
10
- import {
11
- frostedGlassWipe,
12
- spatialPush
13
- } from "./chunk-QGAWDLYX.js";
14
14
  import {
15
15
  ACCENT,
16
16
  ACCENT_SOFT,
@@ -12,15 +12,15 @@ import {
12
12
  FLOOR_TEXT,
13
13
  resolveContrast
14
14
  } from "./chunk-FWSJLHSV.js";
15
- import {
16
- FitText,
17
- resolveFitFontSize
18
- } from "./chunk-XHGZ2E77.js";
19
15
  import {
20
16
  resolveEasing,
21
17
  staggerRise,
22
18
  staggerUp
23
19
  } from "./chunk-ZFEXATWN.js";
20
+ import {
21
+ FitText,
22
+ resolveFitFontSize
23
+ } from "./chunk-XHGZ2E77.js";
24
24
  import {
25
25
  ACCENT,
26
26
  ACCENT_STRONG,
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  resolveContrast
6
6
  } from "./chunk-FWSJLHSV.js";
7
- import {
8
- resolveFitFontSize
9
- } from "./chunk-XHGZ2E77.js";
10
7
  import {
11
8
  fadeProgress,
12
9
  resolveEasing,
13
10
  staggerUp,
14
11
  wordPop
15
12
  } from "./chunk-ZFEXATWN.js";
13
+ import {
14
+ resolveFitFontSize
15
+ } from "./chunk-XHGZ2E77.js";
16
16
 
17
17
  // ../execution/primitives/src/hero-text/HeroText.tsx
18
18
  import { useCurrentFrame, useVideoConfig } from "remotion";