@agent-foundry/replay-server 1.0.1 → 1.0.2

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/README.md CHANGED
@@ -281,22 +281,83 @@ curl http://localhost:3001/status/5eaee18f-48a7-4193-b594-86756ac76ce2
281
281
  curl -o video.mp4 http://localhost:3001/download/5eaee18f-48a7-4193-b594-86756ac76ce2
282
282
  ```
283
283
 
284
+ ## Replay Modes
285
+
286
+ The renderer supports two replay modes, detected automatically based on manifest fields:
287
+
288
+ | Mode | Detection | Use Case | Example |
289
+ |------|-----------|----------|---------|
290
+ | **Continuous** | `summary.durationSeconds` present | Real-time games with continuous animation | JumpArena |
291
+ | **Age-based** | `timeline[]` array present | Turn-based or discrete-state games | LifeRestart |
292
+
293
+ ### Mode Detection Priority
294
+
295
+ 1. If `manifest.summary.durationSeconds` exists and is > 0 → **Continuous mode**
296
+ 2. If `manifest.timeline[]` exists and has items → **Age-based mode**
297
+ 3. Fallback: Continuous mode with 10s default duration
298
+
299
+ ### Continuous Mode
300
+
301
+ For games that animate in real-time (like JumpArena):
302
+
303
+ - Renderer captures frames at regular intervals (e.g., 16 FPS = every 62.5ms)
304
+ - Game runs its own simulation based on elapsed time
305
+ - No external events dispatched during capture
306
+ - Duration determined by `manifest.summary.durationSeconds`
307
+
308
+ **Manifest structure:**
309
+ ```json
310
+ {
311
+ "schema": "jumpArena.replay.v1",
312
+ "bundleId": "game-jump-arena",
313
+ "gameId": "ja-abc123",
314
+ "gameRun": { "seed": 1234, "inputs": [...], "events": [...] },
315
+ "summary": {
316
+ "durationSeconds": 8.5,
317
+ "totalScore": 10
318
+ }
319
+ }
320
+ ```
321
+
322
+ ### Age-based Mode
323
+
324
+ For games with discrete states (like LifeRestart):
325
+
326
+ - Renderer dispatches `replay-next-age` events to advance the game
327
+ - Each "age" is displayed for `secondsPerAge` seconds (default: 1.2s)
328
+ - Frames captured while displaying each age
329
+ - Duration = `timeline.length × secondsPerAge`
330
+
331
+ **Manifest structure:**
332
+ ```json
333
+ {
334
+ "schema": "lifeRestart.replay.v1",
335
+ "bundleId": "game-life-restart",
336
+ "gameId": "lr-abc123",
337
+ "timeline": [
338
+ { "age": 0, "eventId": 1, "description": "..." },
339
+ { "age": 1, "eventId": 2, "description": "..." }
340
+ ],
341
+ "summary": { "finalAge": 80 }
342
+ }
343
+ ```
344
+
284
345
  ## Game Integration
285
346
 
286
- For the renderer to work, the game must support replay mode:
347
+ For the renderer to work, the game must support replay mode. The requirements differ slightly based on replay mode.
348
+
349
+ ### Common Requirements (Both Modes)
287
350
 
288
- ### 1. Listen for replay manifest
351
+ #### 1. Listen for replay manifest
289
352
 
290
353
  ```typescript
291
- // In your game's main component
354
+ // In your game's main component or hook
292
355
  useEffect(() => {
293
- // Check for manifest from URL or window
294
356
  const urlParams = new URLSearchParams(window.location.search);
295
357
  if (urlParams.get('mode') === 'replay') {
296
358
  // Wait for manifest injection
297
359
  const handleManifest = (e: CustomEvent) => {
298
- const manifest = e.detail;
299
- enterReplayMode(manifest);
360
+ enterReplayMode(e.detail);
300
361
  };
301
362
 
302
363
  window.addEventListener('replay-manifest-loaded', handleManifest);
@@ -305,26 +366,94 @@ useEffect(() => {
305
366
  if ((window as any).__REPLAY_MANIFEST__) {
306
367
  enterReplayMode((window as any).__REPLAY_MANIFEST__);
307
368
  }
369
+
370
+ return () => {
371
+ window.removeEventListener('replay-manifest-loaded', handleManifest);
372
+ };
308
373
  }
309
374
  }, []);
310
375
  ```
311
376
 
312
- ### 2. Handle replay-next-age event
377
+ #### 2. Signal when ready for capture
378
+
379
+ ```tsx
380
+ // Add data attribute when replay is ready
381
+ <div data-replay-ready={isReplayReady ? "true" : "false"}>
382
+ {/* game content */}
383
+ </div>
384
+ ```
385
+
386
+ ### Continuous Mode Requirements
387
+
388
+ For real-time games like JumpArena:
389
+
390
+ #### 1. Start simulation from time zero
391
+
392
+ ```typescript
393
+ function enterReplayMode(manifest: ReplayManifest) {
394
+ // Load the game state from manifest
395
+ loadGameRun(manifest.gameRun);
396
+
397
+ // CRITICAL: Reset simulation time to 0
398
+ simulationTime = 0;
399
+
400
+ // Mark as replay mode
401
+ setIsReplayMode(true);
402
+ setIsReplayReady(true);
403
+ }
404
+ ```
405
+
406
+ #### 2. Use elapsed time for simulation (not wall clock)
407
+
408
+ ```typescript
409
+ // In your animation loop
410
+ function gameLoop() {
411
+ const now = performance.now();
412
+ const dt = (now - lastFrameTime) / 1000;
413
+ lastFrameTime = now;
414
+
415
+ // Advance simulation time
416
+ if (isReplayMode) {
417
+ simulationTime += dt;
418
+ }
419
+
420
+ // Render game state at simulationTime
421
+ const state = simulateAtTime(gameRun, simulationTime);
422
+ render(state);
423
+
424
+ requestAnimationFrame(gameLoop);
425
+ }
426
+ ```
427
+
428
+ #### 3. Key implementation notes
429
+
430
+ - **Do NOT skip to final state**: Even if `gameRun.result` exists, animate from the beginning
431
+ - **simulateAtTime must be deterministic**: Given the same inputs and time, return the same state
432
+ - **Include summary.durationSeconds**: Calculate total replay duration when exporting manifest
433
+
434
+ ### Age-based Mode Requirements
435
+
436
+ For discrete-state games like LifeRestart:
437
+
438
+ #### 1. Handle replay-next-age event
313
439
 
314
440
  ```typescript
315
441
  window.addEventListener('replay-next-age', () => {
316
- // Advance to next age in replay
317
- replayNextAge();
442
+ // Advance to next age/state in timeline
443
+ currentAgeIndex++;
444
+ displayAge(timeline[currentAgeIndex]);
318
445
  });
319
446
  ```
320
447
 
321
- ### 3. Signal when ready
448
+ #### 2. Start from first age
322
449
 
323
- ```tsx
324
- // Add data attribute when ready for capture
325
- <div data-replay-ready="true">
326
- {/* game content */}
327
- </div>
450
+ ```typescript
451
+ function enterReplayMode(manifest: ReplayManifest) {
452
+ timeline = manifest.timeline;
453
+ currentAgeIndex = -1; // Will be incremented on first replay-next-age
454
+ setIsReplayMode(true);
455
+ setIsReplayReady(true);
456
+ }
328
457
  ```
329
458
 
330
459
  ## Configuration
@@ -17,6 +17,10 @@ export interface GenericReplayManifest {
17
17
  bundleId?: string;
18
18
  gameId: string;
19
19
  timeline?: unknown[];
20
+ summary?: {
21
+ durationSeconds?: number;
22
+ [key: string]: unknown;
23
+ };
20
24
  [key: string]: unknown;
21
25
  }
22
26
  export interface RenderConfig {
@@ -57,6 +61,18 @@ export declare class PuppeteerRenderer {
57
61
  private page;
58
62
  private pageErrors;
59
63
  private failedRequests;
64
+ /**
65
+ * Calculate replay timing based on manifest fields
66
+ *
67
+ * Detection priority (field-based, not schema-name based):
68
+ * 1. If manifest.summary.durationSeconds exists → continuous mode
69
+ * 2. If manifest.timeline[] exists → age-based mode
70
+ * 3. Fallback to 10s continuous mode
71
+ *
72
+ * Continuous mode: Real-time simulation, frames captured at regular intervals
73
+ * Age-based mode: Discrete ages with replay-next-age events
74
+ */
75
+ private calculateReplayTiming;
60
76
  /**
61
77
  * Render a replay manifest to video
62
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PuppeteerRenderer.d.ts","sourceRoot":"","sources":["../../src/renderer/PuppeteerRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IAEnB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8EAA8E;IAC9E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,cAAc,CAAkD;IAExE;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAmD5E,WAAW;YAqDX,QAAQ;IAiGtB;;;OAGG;YACW,sBAAsB;IAYpC;;OAEG;YACW,iCAAiC;IA4K/C;;OAEG;IACH,OAAO,CAAC,YAAY;YA4BN,YAAY;IAQ1B,OAAO,CAAC,cAAc;CAWzB"}
1
+ {"version":3,"file":"PuppeteerRenderer.d.ts","sourceRoot":"","sources":["../../src/renderer/PuppeteerRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAkBD,MAAM,WAAW,YAAY;IACzB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IAEnB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8EAA8E;IAC9E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,cAAc,CAAkD;IAExE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IAsC7B;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAsD5E,WAAW;YAqDX,QAAQ;IAiGtB;;;OAGG;YACW,sBAAsB;IAapC;;OAEG;YACW,iCAAiC;IAwO/C;;OAEG;IACH,OAAO,CAAC,YAAY;YA4BN,YAAY;IAQ1B,OAAO,CAAC,cAAc;CAWzB"}
@@ -23,6 +23,49 @@ export class PuppeteerRenderer {
23
23
  page = null;
24
24
  pageErrors = [];
25
25
  failedRequests = [];
26
+ /**
27
+ * Calculate replay timing based on manifest fields
28
+ *
29
+ * Detection priority (field-based, not schema-name based):
30
+ * 1. If manifest.summary.durationSeconds exists → continuous mode
31
+ * 2. If manifest.timeline[] exists → age-based mode
32
+ * 3. Fallback to 10s continuous mode
33
+ *
34
+ * Continuous mode: Real-time simulation, frames captured at regular intervals
35
+ * Age-based mode: Discrete ages with replay-next-age events
36
+ */
37
+ calculateReplayTiming(manifest, config) {
38
+ // Priority 1: Check for summary.durationSeconds (continuous mode)
39
+ const durationSeconds = manifest.summary?.durationSeconds;
40
+ if (typeof durationSeconds === 'number' && durationSeconds > 0) {
41
+ const totalFrames = Math.ceil(durationSeconds * config.fps);
42
+ console.log(`📼 Continuous mode (durationSeconds): ${durationSeconds.toFixed(2)}s, ${totalFrames} frames`);
43
+ return {
44
+ mode: 'continuous',
45
+ durationSeconds,
46
+ totalFrames,
47
+ };
48
+ }
49
+ // Priority 2: Check for timeline[] (age-based mode)
50
+ if (Array.isArray(manifest.timeline) && manifest.timeline.length > 0) {
51
+ const timelineLength = manifest.timeline.length;
52
+ const duration = timelineLength * config.secondsPerAge;
53
+ const totalFrames = Math.ceil(duration * config.fps);
54
+ console.log(`📼 Age-based mode (timeline): ${timelineLength} ages, ${duration.toFixed(2)}s, ${totalFrames} frames`);
55
+ return {
56
+ mode: 'age-based',
57
+ durationSeconds: duration,
58
+ totalFrames,
59
+ };
60
+ }
61
+ // Fallback: No duration info, use default continuous mode
62
+ console.warn('📼 No duration info in manifest, using default 10s continuous mode');
63
+ return {
64
+ mode: 'continuous',
65
+ durationSeconds: 10,
66
+ totalFrames: Math.ceil(10 * config.fps),
67
+ };
68
+ }
26
69
  /**
27
70
  * Render a replay manifest to video
28
71
  */
@@ -46,12 +89,14 @@ export class PuppeteerRenderer {
46
89
  // Navigate to game
47
90
  this.reportProgress(config.onProgress, 'init', 0, 1, 'Loading game...');
48
91
  await this.loadGame(fullConfig.gameUrl, manifest);
92
+ // Calculate timing based on manifest schema
93
+ const timing = this.calculateReplayTiming(manifest, {
94
+ fps: fullConfig.fps,
95
+ secondsPerAge: fullConfig.secondsPerAge,
96
+ });
49
97
  // Capture and encode frames in streaming mode
50
- // Handle optional timeline - games may not have timelines
51
- const timelineLength = Array.isArray(manifest.timeline) ? manifest.timeline.length : 1;
52
- const frameCount = timelineLength * fullConfig.secondsPerAge * fullConfig.fps;
53
- this.reportProgress(config.onProgress, 'capture', 0, frameCount, 'Starting capture & encode...');
54
- await this.captureAndEncodeFrames(manifest, fullConfig, config.onProgress);
98
+ this.reportProgress(config.onProgress, 'capture', 0, timing.totalFrames, 'Starting capture & encode...');
99
+ await this.captureAndEncodeFrames(manifest, fullConfig, timing, config.onProgress);
55
100
  const duration = (Date.now() - startTime) / 1000;
56
101
  this.reportProgress(config.onProgress, 'complete', 1, 1, `Completed in ${duration.toFixed(1)}s`);
57
102
  return {
@@ -206,23 +251,24 @@ export class PuppeteerRenderer {
206
251
  * Capture frames and encode video in streaming mode using FFmpeg stdin
207
252
  * Frames are captured as JPEG buffers and streamed directly to FFmpeg
208
253
  */
209
- async captureAndEncodeFrames(manifest, config, onProgress) {
254
+ async captureAndEncodeFrames(manifest, config, timing, onProgress) {
210
255
  // Use encoder based on configuration
211
256
  const encoder = config.useHardwareAcceleration ? 'h264_nvenc' : 'libx264';
212
257
  console.log(`📼 Using encoder: ${encoder} (Hardware acceleration: ${config.useHardwareAcceleration ? 'enabled' : 'disabled'})`);
213
- await this.captureAndEncodeFramesWithEncoder(manifest, config, encoder, onProgress);
258
+ await this.captureAndEncodeFramesWithEncoder(manifest, config, timing, encoder, onProgress);
214
259
  }
215
260
  /**
216
261
  * Internal method to capture and encode with a specific encoder
217
262
  */
218
- async captureAndEncodeFramesWithEncoder(manifest, config, encoder, onProgress) {
263
+ async captureAndEncodeFramesWithEncoder(manifest, config, timing, encoder, onProgress) {
219
264
  if (!this.page)
220
265
  throw new Error('Browser not initialized');
221
- // Handle optional timeline - games may not have timelines
266
+ const { mode, totalFrames, durationSeconds } = timing;
267
+ // For age-based mode, calculate ages and frames per age
222
268
  const timelineLength = Array.isArray(manifest.timeline) ? manifest.timeline.length : 1;
223
269
  const totalAges = timelineLength;
224
- const framesPerAge = config.secondsPerAge * config.fps;
225
- const totalFrames = totalAges * framesPerAge;
270
+ const framesPerAge = Math.ceil(config.secondsPerAge * config.fps);
271
+ console.log(`📼 Replay mode: ${mode}, duration: ${durationSeconds.toFixed(2)}s, frames: ${totalFrames}`);
226
272
  console.log(`📼 Using encoder: ${encoder}`);
227
273
  // Launch FFmpeg process with stdin input
228
274
  const ffmpeg = this.launchFFmpeg(encoder, config);
@@ -289,16 +335,13 @@ export class PuppeteerRenderer {
289
335
  throw new Error('FFmpeg stdin not available');
290
336
  }
291
337
  try {
292
- // Capture and stream frames
293
- for (let ageIndex = 0; ageIndex < totalAges; ageIndex++) {
294
- // Advance to next age in the game
295
- await this.page.evaluate(() => {
296
- window.dispatchEvent(new CustomEvent('replay-next-age'));
297
- });
298
- // Wait a bit for animation
299
- await new Promise(resolve => setTimeout(resolve, 100));
300
- // Capture frames for this age
301
- for (let f = 0; f < framesPerAge; f++) {
338
+ // Frame interval in ms (for continuous mode timing)
339
+ const frameIntervalMs = 1000 / config.fps;
340
+ if (mode === 'continuous') {
341
+ // CONTINUOUS MODE: Capture frames at regular intervals
342
+ // Game runs in real-time, we just capture screenshots
343
+ console.log(`📼 Continuous mode: capturing ${totalFrames} frames over ${durationSeconds.toFixed(2)}s`);
344
+ for (let f = 0; f < totalFrames; f++) {
302
345
  // Check if FFmpeg process has closed unexpectedly
303
346
  if (ffmpegClosed) {
304
347
  throw new Error('FFmpeg process closed unexpectedly');
@@ -325,12 +368,60 @@ export class PuppeteerRenderer {
325
368
  }
326
369
  }
327
370
  frameIndex++;
328
- // Update progress
371
+ // Update progress every second
329
372
  if (frameIndex % config.fps === 0) {
330
373
  this.reportProgress(onProgress, 'capture', frameIndex, totalFrames, `Capturing & encoding frame ${frameIndex}/${totalFrames} (${encoder})`);
331
374
  }
332
- // Small delay between frames
333
- await new Promise(resolve => setTimeout(resolve, 1000 / config.fps / 2));
375
+ // Wait for next frame interval (allow game to advance simulation)
376
+ await new Promise(resolve => setTimeout(resolve, frameIntervalMs));
377
+ }
378
+ }
379
+ else {
380
+ // AGE-BASED MODE: Dispatch replay-next-age for each age
381
+ // Used by LifeRestart and similar games
382
+ console.log(`📼 Age-based mode: ${totalAges} ages, ${framesPerAge} frames per age`);
383
+ for (let ageIndex = 0; ageIndex < totalAges; ageIndex++) {
384
+ // Advance to next age in the game
385
+ await this.page.evaluate(() => {
386
+ window.dispatchEvent(new CustomEvent('replay-next-age'));
387
+ });
388
+ // Wait a bit for animation
389
+ await new Promise(resolve => setTimeout(resolve, 100));
390
+ // Capture frames for this age
391
+ for (let f = 0; f < framesPerAge; f++) {
392
+ // Check if FFmpeg process has closed unexpectedly
393
+ if (ffmpegClosed) {
394
+ throw new Error('FFmpeg process closed unexpectedly');
395
+ }
396
+ // Capture screenshot as JPEG buffer
397
+ const screenshotBuffer = await this.page.screenshot({
398
+ type: 'jpeg',
399
+ quality: 85,
400
+ encoding: 'binary',
401
+ });
402
+ // Write frame to FFmpeg stdin
403
+ if (ffmpeg.stdin && !ffmpeg.stdin.destroyed) {
404
+ const writeSuccess = ffmpeg.stdin.write(screenshotBuffer);
405
+ if (!writeSuccess) {
406
+ // Wait for drain event if buffer is full
407
+ await new Promise((resolve) => {
408
+ if (ffmpeg.stdin) {
409
+ ffmpeg.stdin.once('drain', resolve);
410
+ }
411
+ else {
412
+ resolve();
413
+ }
414
+ });
415
+ }
416
+ }
417
+ frameIndex++;
418
+ // Update progress
419
+ if (frameIndex % config.fps === 0) {
420
+ this.reportProgress(onProgress, 'capture', frameIndex, totalFrames, `Capturing & encoding frame ${frameIndex}/${totalFrames} (${encoder})`);
421
+ }
422
+ // Small delay between frames
423
+ await new Promise(resolve => setTimeout(resolve, frameIntervalMs / 2));
424
+ }
334
425
  }
335
426
  }
336
427
  // Close stdin to signal end of input
@@ -1 +1 @@
1
- {"version":3,"file":"PuppeteerRenderer.js","sourceRoot":"","sources":["../../src/renderer/PuppeteerRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PuppeteerRenderer.js","sourceRoot":"","sources":["../../src/renderer/PuppeteerRenderer.ts"],"names":[],"mappings":"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"}
@@ -33,5 +33,7 @@ services:
33
33
  volumes:
34
34
  # Mount output directory for easy access to rendered videos
35
35
  - ./output:/app/packages/replay-server/output
36
+ # Mount bundles directory for local game testing
37
+ # - ./bundles:/app/packages/replay-server/bundles
36
38
  # Increase shared memory for Chromium
37
39
  shm_size: '2gb'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-foundry/replay-server",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Video rendering service for AgentFoundry mini-game replays",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",