@cueframe/kernel 0.2.10 → 0.2.12

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.
@@ -1,8 +1,8 @@
1
1
  export interface ComponentFirewallDecision {
2
2
  allow: boolean;
3
- documentOrigin: string | null;
3
+ documentOrigin: string;
4
4
  }
5
- export declare function decideComponentRequest(url: string, resourceType: string, documentOrigin: string | null, allowedAssetOrigins: ReadonlySet<string>): ComponentFirewallDecision;
5
+ export declare function decideComponentRequest(url: string, _resourceType: string, documentOrigin: string, allowedAssetOrigins: ReadonlySet<string>): ComponentFirewallDecision;
6
6
  export declare const COMPONENT_PAGE_LOCKDOWN = "\nObject.defineProperties(globalThis, {\n open: { value: undefined },\n Worker: { value: undefined },\n SharedWorker: { value: undefined },\n RTCPeerConnection: { value: undefined },\n webkitRTCPeerConnection: { value: undefined },\n WebSocket: { value: undefined },\n EventSource: { value: undefined }\n});\n";
7
7
  type DevtoolsSession = {
8
8
  on(event: string, listener: (payload: any) => void): void;
@@ -14,7 +14,7 @@ type FirewallBrowser = {
14
14
  silent: boolean;
15
15
  }): Promise<void>;
16
16
  };
17
- export declare function installComponentRequestFirewall(browser: FirewallBrowser, allowedAssetOrigins: ReadonlySet<string>, onDiagnostic?: (entry: {
17
+ export declare function installComponentRequestFirewall(browser: FirewallBrowser, documentOrigin: string, allowedAssetOrigins: ReadonlySet<string>, onDiagnostic?: (entry: {
18
18
  type: 'request-failed' | 'page-error';
19
19
  url?: string;
20
20
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"browserFirewall.d.ts","sourceRoot":"","sources":["../src/browserFirewall.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAMD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,GACvC,yBAAyB,CAoB3B;AAcD,eAAO,MAAM,uBAAuB,iUAAgB,CAAC;AAErD,KAAK,eAAe,GAAG;IACrB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,eAAe,EACxB,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,EACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,GACvG,OAAO,CAAC;IACT,cAAc,IAAI,SAAS,MAAM,EAAE,CAAC;IACpC,UAAU,IAAI,OAAO,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC,CA+DD"}
1
+ {"version":3,"file":"browserFirewall.d.ts","sourceRoot":"","sources":["../src/browserFirewall.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,GACvC,yBAAyB,CAiB3B;AAcD,eAAO,MAAM,uBAAuB,iUAAgB,CAAC;AAErD,KAAK,eAAe,GAAG;IACrB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,CAAC;AACF,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAEF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,EACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,GACvG,OAAO,CAAC;IACT,cAAc,IAAI,SAAS,MAAM,EAAE,CAAC;IACpC,UAAU,IAAI,OAAO,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC,CA0ED"}
@@ -0,0 +1,9 @@
1
+ export interface ComponentBundleServer {
2
+ renderUrl: string;
3
+ liveUrl: string;
4
+ origin: string;
5
+ close(): Promise<void>;
6
+ }
7
+ /** Own one loopback bundle origin for selection, capture and the live player. */
8
+ export declare function startComponentBundleServer(upstream: string, assetOrigins: ReadonlySet<string>): Promise<ComponentBundleServer>;
9
+ //# sourceMappingURL=componentBundleServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentBundleServer.d.ts","sourceRoot":"","sources":["../src/componentBundleServer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAmBD,iFAAiF;AACjF,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAkFhC"}
@@ -72,7 +72,7 @@ export interface CreateComponentStillSessionOpts extends Omit<RenderComponentSti
72
72
  /** Optional host diagnostic sink for browser console output during startup/render. */
73
73
  onBrowserLog?: (entry: unknown) => void;
74
74
  /** Reports bounded startup phases without exposing component source or props. */
75
- onStartupPhase?: (phase: 'prepare' | 'prepared' | 'open-browser' | 'browser-open' | 'firewall' | 'select-composition' | 'composition-ready' | 'start-proxy' | 'ready') => void;
75
+ onStartupPhase?: (phase: 'prepare' | 'prepared' | 'open-browser' | 'browser-open' | 'firewall' | 'select-composition' | 'composition-ready' | 'start-bundle-server' | 'ready') => void;
76
76
  }
77
77
  export declare function importFromRenderEntry<T>(renderEntryRoot: string, spec: string): Promise<T>;
78
78
  /** What the shared verifier hands back: the browser this process will actually run. */
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import {
3
3
  assertSceneShotParamsAdmitted,
4
4
  materializeComponentSource,
5
5
  renderComponentAlpha
6
- } from "./chunk-SH2QPDMU.js";
6
+ } from "./chunk-RSEN7JYE.js";
7
7
  import {
8
8
  componentArtifactId,
9
9
  componentBundleId,
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-TECEMBCI.js";
23
23
  import {
24
24
  CURATED_TOOLS
25
- } from "./chunk-SC55VDLC.js";
25
+ } from "./chunk-NNMXLNOI.js";
26
26
 
27
27
  // ../mcp/src/prompts.ts
28
28
  var skillListCache = null;
@@ -259,11 +259,13 @@ function describeClip(c) {
259
259
  function formatComposition(json) {
260
260
  const full = JSON.stringify(json, null, 2);
261
261
  if (full.length <= COMPOSITION_VERBATIM_BUDGET) return full;
262
+ const compact = JSON.stringify(json);
263
+ if (compact.length <= COMPOSITION_VERBATIM_BUDGET) return compact;
262
264
  const tracks = Array.isArray(json?.tracks) ? json.tracks : [];
263
265
  const clips = tracks.flatMap((t) => Array.isArray(t?.contents) ? t.contents : []);
264
266
  const f = json?.format ?? {};
265
267
  const lines = [
266
- `Composition SUMMARIZED \u2014 the full JSON is ${full.length.toLocaleString()} chars, past what an MCP result can carry. Structure below is complete (every track and clip is listed); card html bodies and caption words are elided as lengths/counts. For a verbatim copy, GET /v1/projects/{id}/composition over REST.`,
268
+ `Composition SUMMARIZED \u2014 the full JSON is ${full.length.toLocaleString()} chars, past CueFrame's inline response budget. Structure below is complete (every track and clip is listed); card html bodies and caption words are elided as lengths/counts. For a verbatim copy, GET /v1/projects/{id}/composition over REST.`,
267
269
  "",
268
270
  `format: ${f.aspectRatio ?? "?"} ${f.fps ?? "?"}fps ${f.resolution ?? ""}`.trim(),
269
271
  `tracks: ${tracks.length} clips: ${clips.length}`
@@ -137,7 +137,7 @@ function readMaterializedComponentSource(ws, id) {
137
137
  function isLoopbackHost(hostname) {
138
138
  return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
139
139
  }
140
- function decideComponentRequest(url, resourceType, documentOrigin, allowedAssetOrigins) {
140
+ function decideComponentRequest(url, _resourceType, documentOrigin, allowedAssetOrigins) {
141
141
  let parsed;
142
142
  try {
143
143
  parsed = new URL(url);
@@ -150,9 +150,6 @@ function decideComponentRequest(url, resourceType, documentOrigin, allowedAssetO
150
150
  if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
151
151
  return { allow: false, documentOrigin };
152
152
  }
153
- if (documentOrigin === null && resourceType === "Document" && isLoopbackHost(parsed.hostname)) {
154
- return { allow: true, documentOrigin: parsed.origin };
155
- }
156
153
  return {
157
154
  allow: parsed.origin === documentOrigin || allowedAssetOrigins.has(parsed.origin),
158
155
  documentOrigin
@@ -170,11 +167,15 @@ Object.defineProperties(globalThis, {
170
167
  });
171
168
  `;
172
169
  var COMPONENT_PAGE_LOCKDOWN = PAGE_LOCKDOWN;
173
- async function installComponentRequestFirewall(browser, allowedAssetOrigins, onDiagnostic) {
170
+ async function installComponentRequestFirewall(browser, documentOrigin, allowedAssetOrigins, onDiagnostic) {
174
171
  let closing = false;
175
172
  let fatal = null;
176
173
  let closePromise = null;
177
174
  const denied = [];
175
+ const bundle = new URL(documentOrigin);
176
+ if (bundle.origin !== documentOrigin || bundle.protocol !== "http:" || !isLoopbackHost(bundle.hostname)) {
177
+ throw new Error("Component firewall requires an owned loopback bundle origin.");
178
+ }
178
179
  const closeBrowser = browser.close.bind(browser);
179
180
  const close = () => {
180
181
  closing = true;
@@ -187,7 +188,6 @@ async function installComponentRequestFirewall(browser, allowedAssetOrigins, onD
187
188
  return await closePromise;
188
189
  };
189
190
  const configureSession = async (client) => {
190
- let documentOrigin = null;
191
191
  client.on("Fetch.requestPaused", (event) => {
192
192
  const decision = decideComponentRequest(
193
193
  event.request.url,
@@ -195,8 +195,16 @@ async function installComponentRequestFirewall(browser, allowedAssetOrigins, onD
195
195
  documentOrigin,
196
196
  allowedAssetOrigins
197
197
  );
198
- documentOrigin = decision.documentOrigin;
199
- if (!decision.allow) denied.push(event.request.url);
198
+ if (!decision.allow) {
199
+ denied.push(event.request.url);
200
+ let location = "invalid URL";
201
+ try {
202
+ const url = new URL(event.request.url);
203
+ location = url.origin + url.pathname;
204
+ } catch {
205
+ }
206
+ onDiagnostic?.({ type: "request-failed", message: `Denied ${event.resourceType} ${location}; component origin ${documentOrigin ?? "not established"}` });
207
+ }
200
208
  const action = decision.allow ? client.send("Fetch.continueRequest", { requestId: event.requestId }) : client.send("Fetch.failRequest", { requestId: event.requestId, errorReason: "BlockedByClient" });
201
209
  void action.catch(() => {
202
210
  });
@@ -920,7 +928,7 @@ function deterministicRuntimeScopeSource() {
920
928
  return createDeterministicRuntimeScope.toString();
921
929
  }
922
930
 
923
- // ../execution/component-runtime/src/livePreviewProxy.ts
931
+ // ../execution/component-runtime/src/componentBundleServer.ts
924
932
  import { createServer } from "http";
925
933
  import { randomBytes } from "crypto";
926
934
  import { readFile, realpath } from "fs/promises";
@@ -941,7 +949,7 @@ function contentSecurityPolicy(assetOrigins, scriptNonce, resourceOrigin) {
941
949
  "frame-ancestors tauri: http://tauri.localhost"
942
950
  ].join("; ");
943
951
  }
944
- async function startLivePreviewProxy(upstream, assetOrigins) {
952
+ async function startComponentBundleServer(upstream, assetOrigins) {
945
953
  const upstreamUrl = URL.canParse(upstream) ? new URL(upstream) : null;
946
954
  if (upstreamUrl && (upstreamUrl.protocol !== "http:" || !["127.0.0.1", "localhost"].includes(upstreamUrl.hostname))) {
947
955
  throw new Error("Live component preview requires a loopback bundle origin.");
@@ -1010,10 +1018,14 @@ async function startLivePreviewProxy(upstream, assetOrigins) {
1010
1018
  throw new Error("Live component preview did not bind a loopback port.");
1011
1019
  }
1012
1020
  const liveUrl = new URL(upstreamUrl ? upstreamUrl.pathname + upstreamUrl.search : "/", `http://localhost:${address.port}`);
1021
+ liveUrl.searchParams.delete("__cueframe_live");
1022
+ const renderUrl = liveUrl.href;
1013
1023
  liveUrl.searchParams.set("__cueframe_live", "1");
1014
1024
  let closePromise;
1015
1025
  return {
1016
- url: liveUrl.href,
1026
+ renderUrl,
1027
+ liveUrl: liveUrl.href,
1028
+ origin: liveUrl.origin,
1017
1029
  close: () => closePromise ??= new Promise((resolve2, reject) => {
1018
1030
  server.close((error) => error ? reject(error) : resolve2());
1019
1031
  })
@@ -1430,7 +1442,7 @@ async function createComponentStillSession(opts) {
1430
1442
  const revision = opts.revision ?? localSourceRevision(opts.ws, opts.id);
1431
1443
  const allowedAssetOrigins = new Set(opts.allowedAssetOrigins ?? []);
1432
1444
  opts.onStartupPhase?.("prepare");
1433
- const { serveUrl, browserExecutable, stagedBrowser, inputProps, renderEntryRoot, pinnedManifest } = await prepareLocalBundle({
1445
+ const { serveUrl: bundlePath, browserExecutable, stagedBrowser, inputProps, renderEntryRoot, pinnedManifest } = await prepareLocalBundle({
1434
1446
  ws: opts.ws,
1435
1447
  id: opts.id,
1436
1448
  width,
@@ -1450,6 +1462,9 @@ async function createComponentStillSession(opts) {
1450
1462
  renderEntryRoot,
1451
1463
  "@remotion/renderer"
1452
1464
  );
1465
+ opts.onStartupPhase?.("start-bundle-server");
1466
+ const bundleServer = await startComponentBundleServer(bundlePath, allowedAssetOrigins);
1467
+ const serveUrl = bundleServer.renderUrl;
1453
1468
  const requiredGraphics = opts.graphics ?? {
1454
1469
  api: "canvas2d",
1455
1470
  required: true,
@@ -1478,6 +1493,7 @@ async function createComponentStillSession(opts) {
1478
1493
  opts.onStartupPhase?.("firewall");
1479
1494
  candidateFirewall = await withComponentBrowserFirewallTimeout(installComponentRequestFirewall(
1480
1495
  candidateBrowser,
1496
+ bundleServer.origin,
1481
1497
  allowedAssetOrigins,
1482
1498
  opts.onBrowserLog ? (entry) => opts.onBrowserLog?.(entry) : void 0
1483
1499
  ));
@@ -1553,9 +1569,11 @@ async function createComponentStillSession(opts) {
1553
1569
  } catch {
1554
1570
  }
1555
1571
  if (!candidateBrowser) {
1572
+ await bundleServer.close();
1556
1573
  throw componentRuntimeError(error, "component_resource_exhausted", true);
1557
1574
  }
1558
1575
  if (error instanceof ComponentBrowserFirewallTimeout && attempt < COMPONENT_BROWSER_FIREWALL_ATTEMPTS) continue;
1576
+ await bundleServer.close();
1559
1577
  const retryable = error instanceof ComponentBrowserFirewallTimeout;
1560
1578
  throw componentRuntimeError(
1561
1579
  error,
@@ -1565,19 +1583,6 @@ async function createComponentStillSession(opts) {
1565
1583
  }
1566
1584
  }
1567
1585
  opts.onStartupPhase?.("composition-ready");
1568
- let liveProxy;
1569
- try {
1570
- opts.onStartupPhase?.("start-proxy");
1571
- liveProxy = await startLivePreviewProxy(serveUrl, allowedAssetOrigins);
1572
- } catch (error) {
1573
- let cleanupError;
1574
- await firewall.close().catch((caught) => {
1575
- cleanupError = caught;
1576
- });
1577
- const failure = componentRuntimeError(error, "component_runtime_error");
1578
- if (cleanupError !== void 0 && failure.cause === void 0) failure.cause = cleanupError;
1579
- throw failure;
1580
- }
1581
1586
  opts.onStartupPhase?.("ready");
1582
1587
  let state = "open";
1583
1588
  let tail = Promise.resolve();
@@ -1593,7 +1598,7 @@ async function createComponentStillSession(opts) {
1593
1598
  };
1594
1599
  const session = {
1595
1600
  revision,
1596
- liveUrl: liveProxy.url,
1601
+ liveUrl: bundleServer.liveUrl,
1597
1602
  hostAttestation,
1598
1603
  renderFrame(frameOpts = {}) {
1599
1604
  if (state !== "open") {
@@ -1603,7 +1608,7 @@ async function createComponentStillSession(opts) {
1603
1608
  const fatal = firewall.fatalError();
1604
1609
  if (fatal !== null) {
1605
1610
  state = "closed";
1606
- closePromise ??= Promise.all([firewall.close(), liveProxy.close()]).then(() => void 0);
1611
+ closePromise ??= Promise.all([firewall.close(), bundleServer.close()]).then(() => void 0);
1607
1612
  throw componentRuntimeError(fatal, "component_runtime_error");
1608
1613
  }
1609
1614
  if (frameOpts.expectedRevision !== void 0 && frameOpts.expectedRevision !== revision) {
@@ -1662,6 +1667,7 @@ async function createComponentStillSession(opts) {
1662
1667
  await sizeLocalLaneWindows(renderEntryRoot, candidateBrowser, width, height);
1663
1668
  candidateFirewall = await withComponentBrowserFirewallTimeout(installComponentRequestFirewall(
1664
1669
  candidateBrowser,
1670
+ bundleServer.origin,
1665
1671
  allowedAssetOrigins,
1666
1672
  opts.onBrowserLog ? (entry) => opts.onBrowserLog?.(entry) : void 0
1667
1673
  ));
@@ -1755,7 +1761,7 @@ async function createComponentStillSession(opts) {
1755
1761
  const renderFatal = firewall.fatalError();
1756
1762
  if (renderFatal !== null) {
1757
1763
  state = "closed";
1758
- closePromise ??= Promise.all([firewall.close(), liveProxy.close()]).then(() => void 0);
1764
+ closePromise ??= Promise.all([firewall.close(), bundleServer.close()]).then(() => void 0);
1759
1765
  return refuseAfterCleanup(componentRuntimeError(renderFatal, "component_runtime_error"));
1760
1766
  }
1761
1767
  if (opts.captureAttestation && capturePageRaster.value === null) {
@@ -1836,7 +1842,7 @@ async function createComponentStillSession(opts) {
1836
1842
  try {
1837
1843
  await Promise.all([
1838
1844
  firewall.close(),
1839
- liveProxy.close(),
1845
+ bundleServer.close(),
1840
1846
  ...[...ownedOutputs].map((path) => unlink(path).catch((error) => {
1841
1847
  if (error.code !== "ENOENT") throw error;
1842
1848
  }))
@@ -1851,7 +1857,7 @@ async function createComponentStillSession(opts) {
1851
1857
  cancel() {
1852
1858
  if (cancelPromise) return cancelPromise;
1853
1859
  state = "closing";
1854
- const browserClose = Promise.all([firewall.close(), liveProxy.close()]);
1860
+ const browserClose = Promise.all([firewall.close(), bundleServer.close()]);
1855
1861
  cancelPromise = (async () => {
1856
1862
  let closeError;
1857
1863
  try {
@@ -1922,7 +1928,7 @@ async function renderComponentAlpha(opts) {
1922
1928
  opts.onTiming?.({ stage, durationMs: now - stageStarted });
1923
1929
  stageStarted = now;
1924
1930
  };
1925
- const { serveUrl, browserExecutable, stagedBrowser, inputProps, renderEntryRoot } = await prepareLocalBundle({
1931
+ const { serveUrl: bundlePath, browserExecutable, stagedBrowser, inputProps, renderEntryRoot } = await prepareLocalBundle({
1926
1932
  ws: opts.ws,
1927
1933
  id: opts.id,
1928
1934
  width,
@@ -1945,19 +1951,22 @@ async function renderComponentAlpha(opts) {
1945
1951
  required: true,
1946
1952
  accelerationPreference: "software-allowed"
1947
1953
  };
1954
+ const bundleServer = await startComponentBundleServer(bundlePath, opts.allowedAssetOrigins ?? /* @__PURE__ */ new Set());
1955
+ const serveUrl = bundleServer.renderUrl;
1948
1956
  const collector = graphicsCollector(requiredGraphics);
1949
1957
  let browser;
1950
1958
  try {
1951
1959
  browser = await openBrowser("chrome", componentBrowserOptions(requiredGraphics, browserExecutable, stagedBrowser.chromeMode));
1952
1960
  timed("browser");
1953
1961
  } catch (error) {
1962
+ await bundleServer.close();
1954
1963
  throw componentRuntimeError(error, "component_resource_exhausted", true);
1955
1964
  }
1956
1965
  let primaryError;
1957
1966
  const pageDiagnostics = [];
1958
1967
  try {
1959
1968
  await sizeLocalLaneWindows(renderEntryRoot, browser, width, height);
1960
- const firewall = await installComponentRequestFirewall(browser, opts.allowedAssetOrigins ?? /* @__PURE__ */ new Set(), (entry) => {
1969
+ const firewall = await installComponentRequestFirewall(browser, bundleServer.origin, opts.allowedAssetOrigins ?? /* @__PURE__ */ new Set(), (entry) => {
1961
1970
  if (pageDiagnostics.length < 5) pageDiagnostics.push(`${entry.type}: ${entry.message.slice(0, 2e3)}`);
1962
1971
  });
1963
1972
  const host = await assertComponentBrowserHardware(browser, requiredGraphics);
@@ -2042,11 +2051,9 @@ ${primaryError.message}`,
2042
2051
  }
2043
2052
  throw primaryError;
2044
2053
  } finally {
2045
- try {
2046
- await browser.close({ silent: true });
2047
- } catch (closeError) {
2048
- if (primaryError === void 0) throw closeError;
2049
- }
2054
+ const cleanup = await Promise.allSettled([browser.close({ silent: true }), bundleServer.close()]);
2055
+ const failed = cleanup.find((result) => result.status === "rejected");
2056
+ if (primaryError === void 0 && failed?.status === "rejected") throw failed.reason;
2050
2057
  }
2051
2058
  }
2052
2059
 
@@ -26,7 +26,7 @@ import {
26
26
  stagedBrowserLocator,
27
27
  verifyLocalStagedBrowser,
28
28
  vp9AlphaFfmpegOverride
29
- } from "../chunk-SH2QPDMU.js";
29
+ } from "../chunk-RSEN7JYE.js";
30
30
  import "../chunk-WB2VFDQZ.js";
31
31
  import "../chunk-EXY4JJPH.js";
32
32
  import "../chunk-DAARYRNT.js";
@@ -7,7 +7,7 @@ import {
7
7
  sourceIdentityForBake,
8
8
  startComponentAssetServer,
9
9
  verifyComponentOutput
10
- } from "./chunk-ARZSMQJX.js";
10
+ } from "./chunk-2KO5EQQS.js";
11
11
  import {
12
12
  COMPONENT_MEDIA_HEADROOM,
13
13
  COMPONENT_MEDIA_TIERS,
@@ -52,7 +52,7 @@ import {
52
52
  stagedBrowserLocator,
53
53
  verifyLocalStagedBrowser,
54
54
  vp9AlphaFfmpegOverride
55
- } from "./chunk-SH2QPDMU.js";
55
+ } from "./chunk-RSEN7JYE.js";
56
56
  import "./chunk-WB2VFDQZ.js";
57
57
  import {
58
58
  bundleIdentityFields,
@@ -16,7 +16,7 @@ import {
16
16
  } from "../chunk-TECEMBCI.js";
17
17
  import {
18
18
  CURATED_TOOLS
19
- } from "../chunk-SC55VDLC.js";
19
+ } from "../chunk-NNMXLNOI.js";
20
20
  import "../chunk-2ESYSVXG.js";
21
21
 
22
22
  // ../mcp/src/adapter.ts
@@ -10,7 +10,7 @@ import {
10
10
  formatResourceCandidates,
11
11
  formatTranscriptPage,
12
12
  formatWarnings
13
- } from "../chunk-SC55VDLC.js";
13
+ } from "../chunk-NNMXLNOI.js";
14
14
  import "../chunk-2ESYSVXG.js";
15
15
  export {
16
16
  CRUD_COVERAGE,
@@ -7,10 +7,10 @@ import {
7
7
  registerRawTools,
8
8
  registerSkillPrompts,
9
9
  titleCase
10
- } from "../chunk-AW6HX577.js";
10
+ } from "../chunk-EWABZ72N.js";
11
11
  import "../chunk-3V75A6UH.js";
12
12
  import "../chunk-TECEMBCI.js";
13
- import "../chunk-SC55VDLC.js";
13
+ import "../chunk-NNMXLNOI.js";
14
14
  import "../chunk-2ESYSVXG.js";
15
15
  export {
16
16
  RAW_EXCLUDED_OPERATION_IDS,
package/dist/mcp.js CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  buildServer,
8
8
  registerCuratedTools,
9
9
  registerRawTools
10
- } from "./chunk-AW6HX577.js";
10
+ } from "./chunk-EWABZ72N.js";
11
11
  import "./chunk-3V75A6UH.js";
12
12
  import "./chunk-TECEMBCI.js";
13
- import "./chunk-SC55VDLC.js";
13
+ import "./chunk-NNMXLNOI.js";
14
14
  import "./chunk-2ESYSVXG.js";
15
15
  export {
16
16
  API_URLS,
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  assertCardHtmlAssetFree
10
10
  } from "./chunk-ODUWCQI3.js";
11
- import "./chunk-ARZSMQJX.js";
11
+ import "./chunk-2KO5EQQS.js";
12
12
  import "./chunk-BVA3537Z.js";
13
13
  import {
14
14
  COMPONENT_STILL_RUNTIME_IDENTITY,
@@ -19,7 +19,7 @@ import {
19
19
  readMaterializedComponentSource,
20
20
  resolveRenderEntryRoot,
21
21
  verifyLocalStagedBrowser
22
- } from "./chunk-SH2QPDMU.js";
22
+ } from "./chunk-RSEN7JYE.js";
23
23
  import "./chunk-WB2VFDQZ.js";
24
24
  import {
25
25
  sourceVersionId
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cueframe/kernel",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
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": [
@@ -19,24 +19,24 @@
19
19
  "typescript": "^5.9.3",
20
20
  "@cueframe/account-model": "0.1.0",
21
21
  "@cueframe/animate": "0.1.0",
22
+ "@cueframe/cloud-import": "0.1.0",
23
+ "@cueframe/compose": "0.1.0",
22
24
  "@cueframe/authoring": "0.1.0",
23
25
  "@cueframe/brand-derivation": "0.1.0",
24
- "@cueframe/compose": "0.1.0",
25
26
  "@cueframe/composition-ops": "0.1.0",
26
- "@cueframe/component-runtime": "0.1.0",
27
- "@cueframe/foundation": "0.1.0",
28
27
  "@cueframe/composition": "0.1.0",
29
- "@cueframe/director": "0.1.0",
30
- "@cueframe/core": "0.1.0",
28
+ "@cueframe/component-runtime": "0.1.0",
31
29
  "@cueframe/errors": "0.1.0",
32
- "@cueframe/cloud-import": "0.1.0",
30
+ "@cueframe/core": "0.1.0",
31
+ "@cueframe/director": "0.1.0",
33
32
  "@cueframe/mcp": "0.1.0",
34
- "@cueframe/media-model": "0.1.0",
35
- "@cueframe/primitives": "0.1.0",
36
- "@cueframe/plane": "0.1.0",
37
33
  "@cueframe/nle-export": "0.1.0",
34
+ "@cueframe/perception": "0.1.0",
35
+ "@cueframe/plane": "0.1.0",
36
+ "@cueframe/media-model": "0.1.0",
38
37
  "@cueframe/render-harness": "0.1.0",
39
- "@cueframe/perception": "0.1.0"
38
+ "@cueframe/primitives": "0.1.0",
39
+ "@cueframe/foundation": "0.1.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "gsap": "3.13.0",
@@ -1,7 +0,0 @@
1
- export interface LivePreviewProxy {
2
- url: string;
3
- close(): Promise<void>;
4
- }
5
- /** Serve the authored player with a network-denying CSP on a fresh loopback origin. */
6
- export declare function startLivePreviewProxy(upstream: string, assetOrigins: ReadonlySet<string>): Promise<LivePreviewProxy>;
7
- //# sourceMappingURL=livePreviewProxy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"livePreviewProxy.d.ts","sourceRoot":"","sources":["../src/livePreviewProxy.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAmBD,uFAAuF;AACvF,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,CA8E3B"}