storyforge 0.11.2 → 0.11.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.
@@ -5527,14 +5527,14 @@ var renderGeminiManimRemotion = async (shot, ctx) => {
5527
5527
  2
5528
5528
  )
5529
5529
  );
5530
- const remotion = requireRemotionRoot();
5530
+ const remotion2 = requireRemotionRoot();
5531
5531
  const compId = ctx.aspect === "9:16" ? "ForgeVideoVertical" : "ForgeVideo";
5532
5532
  const r = await runCmd(
5533
5533
  "npx",
5534
5534
  [
5535
5535
  "remotion",
5536
5536
  "render",
5537
- remotion.entry,
5537
+ remotion2.entry,
5538
5538
  compId,
5539
5539
  "--props",
5540
5540
  propsPath,
@@ -5543,7 +5543,7 @@ var renderGeminiManimRemotion = async (shot, ctx) => {
5543
5543
  "--concurrency",
5544
5544
  "4"
5545
5545
  ],
5546
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
5546
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
5547
5547
  );
5548
5548
  if (r.code !== 0) {
5549
5549
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -5595,13 +5595,13 @@ var renderGeminiRemotion = async (shot, ctx) => {
5595
5595
  );
5596
5596
  const durationFrames = Math.max(1, Math.round(shot.durationSec * ctx.fps));
5597
5597
  const dims = ASPECT_DIMS[ctx.aspect];
5598
- const remotion = requireRemotionRoot();
5598
+ const remotion2 = requireRemotionRoot();
5599
5599
  const publicRel = path4.posix.join(
5600
5600
  "clip-render-cache",
5601
5601
  ctx.chunkId,
5602
5602
  `${shot.id}${path4.extname(localImage) || ".png"}`
5603
5603
  );
5604
- const publicAbs = path4.join(remotion.cwd, "public", publicRel);
5604
+ const publicAbs = path4.join(remotion2.cwd, "public", publicRel);
5605
5605
  fs4.mkdirSync(path4.dirname(publicAbs), { recursive: true });
5606
5606
  fs4.copyFileSync(localImage, publicAbs);
5607
5607
  const propsPath = path4.join(ctx.tmpDir, "remotion", `${shot.id}_gr_props.json`);
@@ -5634,16 +5634,18 @@ var renderGeminiRemotion = async (shot, ctx) => {
5634
5634
  [
5635
5635
  "remotion",
5636
5636
  "render",
5637
- remotion.entry,
5637
+ remotion2.entry,
5638
5638
  compId,
5639
5639
  "--props",
5640
5640
  propsPath,
5641
5641
  "--output",
5642
5642
  ctx.sceneOutPath,
5643
+ "--frames",
5644
+ `0-${durationFrames - 1}`,
5643
5645
  "--concurrency",
5644
5646
  "4"
5645
5647
  ],
5646
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
5648
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
5647
5649
  );
5648
5650
  if (r.code !== 0) {
5649
5651
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -5861,14 +5863,14 @@ var renderManimRemotion = async (shot, ctx) => {
5861
5863
  2
5862
5864
  )
5863
5865
  );
5864
- const remotion = requireRemotionRoot();
5866
+ const remotion2 = requireRemotionRoot();
5865
5867
  const compId = ctx.aspect === "9:16" ? "ForgeVideoVertical" : "ForgeVideo";
5866
5868
  const r = await runCmd(
5867
5869
  "npx",
5868
5870
  [
5869
5871
  "remotion",
5870
5872
  "render",
5871
- remotion.entry,
5873
+ remotion2.entry,
5872
5874
  compId,
5873
5875
  "--props",
5874
5876
  propsPath,
@@ -5877,7 +5879,7 @@ var renderManimRemotion = async (shot, ctx) => {
5877
5879
  "--concurrency",
5878
5880
  "4"
5879
5881
  ],
5880
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
5882
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
5881
5883
  );
5882
5884
  if (r.code !== 0) {
5883
5885
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -5944,10 +5946,10 @@ var renderRemotion = async (shot, ctx) => {
5944
5946
  compId = id;
5945
5947
  remotionCwd = requireRemotionRoot().cwd;
5946
5948
  } else {
5947
- const remotion = requireRemotionRoot();
5948
- entryArg = remotion.entry;
5949
+ const remotion2 = requireRemotionRoot();
5950
+ entryArg = remotion2.entry;
5949
5951
  compId = ctx.aspect === "9:16" ? "ForgeVideoVertical" : "ForgeVideo";
5950
- remotionCwd = remotion.cwd;
5952
+ remotionCwd = remotion2.cwd;
5951
5953
  }
5952
5954
  const propsPath = path7.join(ctx.tmpDir, "remotion", `${shot.id}_props.json`);
5953
5955
  fs6.mkdirSync(path7.dirname(propsPath), { recursive: true });
@@ -5974,16 +5976,18 @@ var renderRemotion = async (shot, ctx) => {
5974
5976
  [
5975
5977
  "remotion",
5976
5978
  "render",
5977
- entryArg,
5979
+ remotion.entry,
5978
5980
  compId,
5979
5981
  "--props",
5980
5982
  propsPath,
5981
5983
  "--output",
5982
5984
  ctx.sceneOutPath,
5985
+ "--frames",
5986
+ `0-${durationFrames - 1}`,
5983
5987
  "--concurrency",
5984
5988
  "4"
5985
5989
  ],
5986
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotionCwd }
5990
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
5987
5991
  );
5988
5992
  if (r.code !== 0) {
5989
5993
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -6061,14 +6065,14 @@ var renderStockRemotion = async (shot, ctx) => {
6061
6065
  2
6062
6066
  )
6063
6067
  );
6064
- const remotion = requireRemotionRoot();
6068
+ const remotion2 = requireRemotionRoot();
6065
6069
  const compId = ctx.aspect === "9:16" ? "ForgeVideoVertical" : "ForgeVideo";
6066
6070
  const r = await runCmd(
6067
6071
  "npx",
6068
6072
  [
6069
6073
  "remotion",
6070
6074
  "render",
6071
- remotion.entry,
6075
+ remotion2.entry,
6072
6076
  compId,
6073
6077
  "--props",
6074
6078
  propsPath,
@@ -6077,7 +6081,7 @@ var renderStockRemotion = async (shot, ctx) => {
6077
6081
  "--concurrency",
6078
6082
  "4"
6079
6083
  ],
6080
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
6084
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
6081
6085
  );
6082
6086
  if (r.code !== 0) {
6083
6087
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -6111,9 +6115,9 @@ var renderDocumentaryV2 = async (shot, ctx) => {
6111
6115
  data = JSON.parse(fs8.readFileSync(shot.prompt, "utf8"));
6112
6116
  }
6113
6117
  const durationFrames = data.totalDurationFrames > 0 ? data.totalDurationFrames : Math.max(1, Math.round(shot.durationSec * ctx.fps));
6114
- const remotion = requireRemotionRoot();
6118
+ const remotion2 = requireRemotionRoot();
6115
6119
  const cacheRel = path9.posix.join("clip-render-cache", ctx.chunkId);
6116
- const cacheAbs = path9.join(remotion.cwd, "public", cacheRel);
6120
+ const cacheAbs = path9.join(remotion2.cwd, "public", cacheRel);
6117
6121
  fs8.mkdirSync(cacheAbs, { recursive: true });
6118
6122
  for (const scene of data.scenes) {
6119
6123
  for (const layer of scene.layers) {
@@ -6142,7 +6146,7 @@ var renderDocumentaryV2 = async (shot, ctx) => {
6142
6146
  [
6143
6147
  "remotion",
6144
6148
  "render",
6145
- remotion.entry,
6149
+ remotion2.entry,
6146
6150
  "DocumentaryV2",
6147
6151
  "--props",
6148
6152
  propsPath,
@@ -6151,7 +6155,7 @@ var renderDocumentaryV2 = async (shot, ctx) => {
6151
6155
  "--concurrency",
6152
6156
  "4"
6153
6157
  ],
6154
- { timeoutMs: 6e5, signal: ctx.signal, cwd: remotion.cwd }
6158
+ { timeoutMs: 6e5, signal: ctx.signal, cwd: remotion2.cwd }
6155
6159
  );
6156
6160
  if (r.code !== 0) {
6157
6161
  const tail = r.stderr.split("\n").slice(-8).join(" ").slice(0, 400);
@@ -6237,6 +6241,11 @@ var renderWebArticleRemotion = async (shot, ctx) => {
6237
6241
  `web-article+remotion requires shot.sourceUrl for shot ${shot.id}`
6238
6242
  );
6239
6243
  }
6244
+ if (/\.pdf(\?|$|#)/i.test(shot.sourceUrl)) {
6245
+ throw new Error(
6246
+ `web-article+remotion: sourceUrl is a PDF (${shot.sourceUrl}). PDFs aren't extractable by readability; planner should not pick PDFs for this engine.`
6247
+ );
6248
+ }
6240
6249
  const captureMode = shot.captureMode ?? "preview-card";
6241
6250
  if (captureMode === "screenshot-cropped" || captureMode === "screenshot-full") {
6242
6251
  if (!process.env.MICROLINK_API_KEY) {
@@ -6291,23 +6300,25 @@ var renderWebArticleRemotion = async (shot, ctx) => {
6291
6300
  framesRendered: 0,
6292
6301
  totalFrames: durationFrames
6293
6302
  });
6294
- const remotion = requireRemotionRoot();
6303
+ const remotion2 = requireRemotionRoot();
6295
6304
  const compId = ctx.aspect === "9:16" ? "ArticleCardVertical" : "ArticleCard";
6296
6305
  const r = await runCmd(
6297
6306
  "npx",
6298
6307
  [
6299
6308
  "remotion",
6300
6309
  "render",
6301
- remotion.entry,
6310
+ remotion2.entry,
6302
6311
  compId,
6303
6312
  "--props",
6304
6313
  propsPath,
6305
6314
  "--output",
6306
6315
  ctx.sceneOutPath,
6316
+ "--frames",
6317
+ `0-${durationFrames - 1}`,
6307
6318
  "--concurrency",
6308
6319
  "4"
6309
6320
  ],
6310
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
6321
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
6311
6322
  );
6312
6323
  if (r.code !== 0) {
6313
6324
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 300);
@@ -6383,9 +6394,9 @@ var renderXPostRemotion = async (shot, ctx) => {
6383
6394
  if (ctx.signal?.aborted) throw new Error("aborted");
6384
6395
  const durationFrames = Math.max(1, Math.round(shot.durationSec * ctx.fps));
6385
6396
  const dims = ASPECT_DIMS4[ctx.aspect];
6386
- const remotion = requireRemotionRoot();
6397
+ const remotion2 = requireRemotionRoot();
6387
6398
  const entry = path11.join(
6388
- remotion.cwd,
6399
+ remotion2.cwd,
6389
6400
  "src",
6390
6401
  "compositions",
6391
6402
  "XPostCard.tsx"
@@ -6435,7 +6446,7 @@ var renderXPostRemotion = async (shot, ctx) => {
6435
6446
  "--concurrency",
6436
6447
  "4"
6437
6448
  ],
6438
- { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion.cwd }
6449
+ { timeoutMs: 3e5, signal: ctx.signal, cwd: remotion2.cwd }
6439
6450
  );
6440
6451
  if (r.code !== 0) {
6441
6452
  const tail = r.stderr.split("\n").slice(-5).join(" ").slice(0, 400);
package/dist/index.js CHANGED
@@ -1615,7 +1615,7 @@ Return ONLY the complete updated TSX. No markdown fences, no explanation.`;
1615
1615
  return "0.0.0";
1616
1616
  })();
1617
1617
  void (async () => {
1618
- const { BridgePoller } = await import("./bridge-poller-WP2BQ3UQ.js");
1618
+ const { BridgePoller } = await import("./bridge-poller-UZLIRB2O.js");
1619
1619
  const poller = new BridgePoller({ baseUrl: bridgeUrl, token: bridgeToken, clientVersion: `storyforge ${pkgVersion}` });
1620
1620
  poller.start();
1621
1621
  })();
@@ -2438,7 +2438,7 @@ function resolveBridgeToken2(explicit) {
2438
2438
  // package.json
2439
2439
  var package_default = {
2440
2440
  name: "storyforge",
2441
- version: "0.11.2",
2441
+ version: "0.11.3",
2442
2442
  description: "StoryForge \u2014 local bridge for the Forge video production web app. Parallel clip-render orchestrator (Remotion 4 + Manim + HyperFrames + ffmpeg) + final video stitcher + dependency doctor.",
2443
2443
  type: "module",
2444
2444
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storyforge",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "description": "StoryForge — local bridge for the Forge video production web app. Parallel clip-render orchestrator (Remotion 4 + Manim + HyperFrames + ffmpeg) + final video stitcher + dependency doctor.",
5
5
  "type": "module",
6
6
  "bin": {