prismcast 1.1.0 → 1.2.1

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.
Files changed (136) hide show
  1. package/README.md +20 -4
  2. package/dist/app.js +5 -20
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/cdp.js +1 -4
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +5 -0
  7. package/dist/browser/channelSelection.js +803 -53
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.js +1 -4
  10. package/dist/browser/display.js.map +1 -1
  11. package/dist/browser/index.js +10 -28
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/video.d.ts +24 -10
  14. package/dist/browser/video.js +101 -44
  15. package/dist/browser/video.js.map +1 -1
  16. package/dist/channels/index.d.ts +1 -17
  17. package/dist/channels/index.js +246 -137
  18. package/dist/channels/index.js.map +1 -1
  19. package/dist/config/index.js +10 -9
  20. package/dist/config/index.js.map +1 -1
  21. package/dist/config/presets.js +1 -4
  22. package/dist/config/presets.js.map +1 -1
  23. package/dist/config/profiles.d.ts +14 -13
  24. package/dist/config/profiles.js +47 -287
  25. package/dist/config/profiles.js.map +1 -1
  26. package/dist/config/providers.d.ts +75 -0
  27. package/dist/config/providers.js +283 -0
  28. package/dist/config/providers.js.map +1 -0
  29. package/dist/config/sites.d.ts +20 -0
  30. package/dist/config/sites.js +350 -0
  31. package/dist/config/sites.js.map +1 -0
  32. package/dist/config/userChannels.d.ts +15 -3
  33. package/dist/config/userChannels.js +85 -33
  34. package/dist/config/userChannels.js.map +1 -1
  35. package/dist/config/userConfig.d.ts +1 -0
  36. package/dist/config/userConfig.js +12 -26
  37. package/dist/config/userConfig.js.map +1 -1
  38. package/dist/hdhr/channelMap.js +3 -6
  39. package/dist/hdhr/channelMap.js.map +1 -1
  40. package/dist/hdhr/deviceId.js +1 -4
  41. package/dist/hdhr/deviceId.js.map +1 -1
  42. package/dist/hdhr/discover.js.map +1 -1
  43. package/dist/hdhr/index.js +1 -4
  44. package/dist/hdhr/index.js.map +1 -1
  45. package/dist/index.js +4 -16
  46. package/dist/index.js.map +1 -1
  47. package/dist/routes/assets.js +1 -4
  48. package/dist/routes/assets.js.map +1 -1
  49. package/dist/routes/auth.js +4 -2
  50. package/dist/routes/auth.js.map +1 -1
  51. package/dist/routes/channels.js +2 -2
  52. package/dist/routes/channels.js.map +1 -1
  53. package/dist/routes/components.js.map +1 -1
  54. package/dist/routes/config.js +163 -34
  55. package/dist/routes/config.js.map +1 -1
  56. package/dist/routes/health.js +1 -4
  57. package/dist/routes/health.js.map +1 -1
  58. package/dist/routes/hls.js +1 -4
  59. package/dist/routes/hls.js.map +1 -1
  60. package/dist/routes/index.js +1 -4
  61. package/dist/routes/index.js.map +1 -1
  62. package/dist/routes/logs.js +3 -12
  63. package/dist/routes/logs.js.map +1 -1
  64. package/dist/routes/mpegts.js +1 -4
  65. package/dist/routes/mpegts.js.map +1 -1
  66. package/dist/routes/play.js +1 -4
  67. package/dist/routes/play.js.map +1 -1
  68. package/dist/routes/playlist.js +2 -5
  69. package/dist/routes/playlist.js.map +1 -1
  70. package/dist/routes/root.js +43 -12
  71. package/dist/routes/root.js.map +1 -1
  72. package/dist/routes/streams.js +2 -8
  73. package/dist/routes/streams.js.map +1 -1
  74. package/dist/routes/theme.js +1 -4
  75. package/dist/routes/theme.js.map +1 -1
  76. package/dist/routes/ui.js +1 -4
  77. package/dist/routes/ui.js.map +1 -1
  78. package/dist/service/commands.js +1 -4
  79. package/dist/service/commands.js.map +1 -1
  80. package/dist/service/generators.js +4 -16
  81. package/dist/service/generators.js.map +1 -1
  82. package/dist/streaming/clients.js.map +1 -1
  83. package/dist/streaming/fmp4Segmenter.d.ts +1 -0
  84. package/dist/streaming/fmp4Segmenter.js +7 -12
  85. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  86. package/dist/streaming/hls.d.ts +3 -0
  87. package/dist/streaming/hls.js +39 -21
  88. package/dist/streaming/hls.js.map +1 -1
  89. package/dist/streaming/hlsSegments.js +1 -4
  90. package/dist/streaming/hlsSegments.js.map +1 -1
  91. package/dist/streaming/lifecycle.js +1 -4
  92. package/dist/streaming/lifecycle.js.map +1 -1
  93. package/dist/streaming/monitor.d.ts +1 -0
  94. package/dist/streaming/monitor.js +296 -76
  95. package/dist/streaming/monitor.js.map +1 -1
  96. package/dist/streaming/mp4Parser.js.map +1 -1
  97. package/dist/streaming/mpegts.js +1 -4
  98. package/dist/streaming/mpegts.js.map +1 -1
  99. package/dist/streaming/registry.d.ts +7 -0
  100. package/dist/streaming/registry.js +10 -0
  101. package/dist/streaming/registry.js.map +1 -1
  102. package/dist/streaming/setup.d.ts +4 -1
  103. package/dist/streaming/setup.js +35 -33
  104. package/dist/streaming/setup.js.map +1 -1
  105. package/dist/streaming/showInfo.js +3 -6
  106. package/dist/streaming/showInfo.js.map +1 -1
  107. package/dist/streaming/statusEmitter.d.ts +2 -0
  108. package/dist/streaming/statusEmitter.js +2 -4
  109. package/dist/streaming/statusEmitter.js.map +1 -1
  110. package/dist/types/index.d.ts +34 -2
  111. package/dist/utils/errors.js +1 -4
  112. package/dist/utils/errors.js.map +1 -1
  113. package/dist/utils/evaluate.js +3 -6
  114. package/dist/utils/evaluate.js.map +1 -1
  115. package/dist/utils/ffmpeg.js +2 -8
  116. package/dist/utils/ffmpeg.js.map +1 -1
  117. package/dist/utils/fileLogger.js +9 -30
  118. package/dist/utils/fileLogger.js.map +1 -1
  119. package/dist/utils/format.d.ts +7 -0
  120. package/dist/utils/format.js +20 -0
  121. package/dist/utils/format.js.map +1 -1
  122. package/dist/utils/html.js +1 -4
  123. package/dist/utils/html.js.map +1 -1
  124. package/dist/utils/logEmitter.js +1 -4
  125. package/dist/utils/logEmitter.js.map +1 -1
  126. package/dist/utils/logger.js +4 -16
  127. package/dist/utils/logger.js.map +1 -1
  128. package/dist/utils/m3u.js +1 -4
  129. package/dist/utils/m3u.js.map +1 -1
  130. package/dist/utils/morganStream.js +1 -4
  131. package/dist/utils/morganStream.js.map +1 -1
  132. package/dist/utils/platform.js.map +1 -1
  133. package/dist/utils/retry.js +1 -4
  134. package/dist/utils/retry.js.map +1 -1
  135. package/dist/utils/streamContext.js.map +1 -1
  136. package/package.json +3 -3
@@ -5,7 +5,7 @@
5
5
  import { EvaluateTimeoutError, LOG, formatError, getAbortSignal, isSessionClosedError, runWithStreamContext } from "../utils/index.js";
6
6
  import { buildVideoSelectorType, checkVideoPresence, enforceVideoVolume, ensurePlayback, findVideoContext, getVideoState, tuneToChannel, validateVideoElement } from "../browser/video.js";
7
7
  import { getChannelLogo, getShowName } from "./showInfo.js";
8
- import { getStream, getStreamMemoryUsage } from "./registry.js";
8
+ import { getLastSegmentSize, getStream, getStreamMemoryUsage } from "./registry.js";
9
9
  import { CONFIG } from "../config/index.js";
10
10
  import { emitStreamHealthChanged } from "./statusEmitter.js";
11
11
  import { getClientSummary } from "./clients.js";
@@ -17,14 +17,9 @@ const RECOVERY_METHODS = {
17
17
  sourceReload: "source reload",
18
18
  tabReplacement: "tab replacement"
19
19
  };
20
- /*
21
- * RECOVERY METRICS FIELD MAPPING
22
- *
23
- * These mappings connect recovery method names to their corresponding counter fields in RecoveryMetrics. Using a mapping pattern instead of if/else chains:
24
- * - Reduces code duplication in recordRecoveryAttempt() and recordRecoverySuccess()
25
- * - Makes adding new recovery methods trivial (add one entry to each map)
26
- * - Ensures consistency between attempt and success counting
27
- * - Provides type safety via the RecoveryMetrics interface
20
+ /* These mappings connect recovery method names to their corresponding counter fields in RecoveryMetrics. Using a mapping pattern instead of if/else chains reduces
21
+ * code duplication, makes adding new recovery methods trivial (add one entry to each map), ensures consistency between attempt and success counting, and provides
22
+ * type safety via the RecoveryMetrics interface.
28
23
  */
29
24
  // Maps recovery method names to their attempt counter field names.
30
25
  const ATTEMPT_FIELDS = {
@@ -299,6 +294,10 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
299
294
  // Number of consecutive checks where currentTime did not advance. We require multiple consecutive stalls before triggering recovery to avoid reacting to momentary
300
295
  // hiccups. Reset to 0 when progression is detected.
301
296
  let stallCount = 0;
297
+ // Number of consecutive checks where the video reports paused state. Like stallCount, we require multiple consecutive paused checks (> stallCountThreshold) before
298
+ // triggering recovery. This filters out transient rebuffer pauses where the player briefly pauses itself to refill its buffer and resumes on its own. Without this
299
+ // hysteresis, every transient rebuffer pause triggers an unnecessary L1 recovery (play/unmute) that logs noise but does nothing useful.
300
+ let pauseCount = 0;
302
301
  // Current escalation level (0-4). Level 0 means no recovery needed. Each time recovery is triggered, this increments to try increasingly aggressive actions.
303
302
  // Resets to 0 after sustained healthy playback.
304
303
  let escalationLevel = 0;
@@ -315,6 +314,16 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
315
314
  // Track whether source reload (L2) has been attempted in the current page session. Log analysis shows the first source reload often works (~58%), but the second
316
315
  // always fails and leaves the video at readyState=0. When this flag is true and recovery is needed, we skip L2 and go directly to L3 (page reload).
317
316
  let sourceReloadAttempted = false;
317
+ // Segment production monitoring state. After L2/L3 recovery, we track whether segments are actually being produced. If recovery reports success but the capture
318
+ // pipeline is dead (MediaRecorder stopped producing data), we need to escalate to tab replacement.
319
+ let preRecoverySegmentIndex = null; // Segment index when recovery started, used to detect if new segments are produced.
320
+ let segmentWaitStartTime = null; // Timestamp when we started waiting for segment production after recovery grace period.
321
+ let segmentProductionStalled = false; // Flag indicating segment production has stalled after recovery.
322
+ // Continuous segment size monitoring state. Detects spontaneous capture pipeline death (no preceding recovery event) by checking segment sizes. Dead pipelines
323
+ // produce tiny segments (18 bytes observed) while the video element appears healthy. This complements post-recovery index monitoring.
324
+ let lastCheckedSegmentIndex = 0; // Last segment index we inspected (to detect new segments).
325
+ let consecutiveTinySegments = 0; // Count of consecutive tiny segments.
326
+ let wasInTinySegmentState = false; // For detecting spontaneous recovery (tiny→valid transition without explicit recovery).
318
327
  // Track whether the browser window needs to be re-minimized after recovery. Recovery actions (especially ensureFullscreen) can cause the window to un-minimize.
319
328
  // We set this flag when recovery is triggered and clear it after the recovery grace period passes and we see a healthy check.
320
329
  let pendingReMinimize = false;
@@ -344,7 +353,22 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
344
353
  // Recovery grace period. After a recovery action, we wait before checking for new issues to give the action time to take effect. L1 (play/unmute) is a quick
345
354
  // action. L2 (source reload) and L3 (page reload) need more time for rebuffering/navigation.
346
355
  const recoveryGracePeriods = [0, 3000, 10000, 10000]; // L0, L1, L2, L3 in milliseconds.
356
+ // Segment stall timeout. After L2/L3 recovery completes, if no new segments are produced within this timeout, the capture pipeline is considered dead and we
357
+ // escalate directly to tab replacement. This catches the case where recovery reports success but the MediaRecorder/FFmpeg pipeline has silently died.
358
+ const SEGMENT_STALL_TIMEOUT = 10000; // 10 seconds.
359
+ // Tiny segment detection thresholds. Used for continuous segment size monitoring to detect dead capture pipelines. When video capture dies but audio continues,
360
+ // segments contain only audio data. Audio is transcoded at a controlled bitrate (max 512Kbps), so audio-only segments are at most ~192KB for 3-second segments.
361
+ // The 500KB threshold catches both dead captures (18 bytes) and audio-only captures while staying well below the smallest video preset (480p/3Mbps ≈ 750KB/segment).
362
+ const TINY_SEGMENT_THRESHOLD = 512000; // 500KB - segments below this indicate dead or degraded capture.
363
+ const TINY_SEGMENT_COUNT_TRIGGER = 10; // Trigger recovery after 10 consecutive tiny segments (~20 seconds with 2-second segments).
364
+ // Fixed margin in milliseconds before the maxContinuousPlayback limit at which a proactive reload is triggered. Two minutes provides enough time for page
365
+ // navigation and video reinitialization to complete before the site enforces its cutoff.
366
+ const PROACTIVE_RELOAD_MARGIN_MS = 120000;
347
367
  let recoveryGraceUntil = 0;
368
+ // Timestamp of the most recent full page navigation. Used to calculate elapsed continuous playback for proactive reload when maxContinuousPlayback is configured.
369
+ // Initialized to Date.now() because the monitor starts immediately after tuneToChannel() succeeds in stream setup, meaning a page load just completed. Reset
370
+ // after any successful page navigation recovery or tab replacement, but NOT after source reloads (L2) which preserve the page's JavaScript context.
371
+ let lastPageNavigationTime = Date.now();
348
372
  // Pre-compute the selector type string for video element selection. This is passed to evaluate() calls.
349
373
  const selectorType = buildVideoSelectorType(profile);
350
374
  // Capture stream context for re-establishing on each interval tick. AsyncLocalStorage context is lost when entering setInterval callbacks.
@@ -410,6 +434,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
410
434
  memoryBytes,
411
435
  networkState: lastVideoState?.networkState ?? 0,
412
436
  pageReloadsInWindow: pageReloadTimestamps.length,
437
+ providerName: streamInfo.providerName,
413
438
  readyState: lastVideoState?.readyState ?? 0,
414
439
  recoveryAttempts: totalRecoveryAttempts,
415
440
  showName: getShowName(streamInfo.numericStreamId),
@@ -426,6 +451,107 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
426
451
  recoveryInProgress = false;
427
452
  emitStatusUpdate();
428
453
  }
454
+ /**
455
+ * Resets all segment monitoring state variables. Called after successful recovery or sustained healthy playback to clear tracking for both post-recovery index
456
+ * monitoring and continuous size monitoring.
457
+ */
458
+ function resetSegmentMonitoringState() {
459
+ preRecoverySegmentIndex = null;
460
+ segmentWaitStartTime = null;
461
+ segmentProductionStalled = false;
462
+ consecutiveTinySegments = 0;
463
+ wasInTinySegmentState = false;
464
+ lastCheckedSegmentIndex = getStream(streamInfo.numericStreamId)?.segmenter?.getSegmentIndex() ?? 0;
465
+ }
466
+ /**
467
+ * Resets all failure/retry counters to zero. Called after successful tab replacement or page navigation to give the stream a fresh start.
468
+ */
469
+ function resetRecoveryCounters() {
470
+ consecutiveTimeouts = 0;
471
+ consecutiveNavigationFailures = 0;
472
+ pauseCount = 0;
473
+ videoNotFoundCount = 0;
474
+ stallCount = 0;
475
+ }
476
+ /**
477
+ * Resets escalation level and related flags. Called after successful recovery to allow the stream to start from level 0 on future issues.
478
+ */
479
+ function resetEscalationState() {
480
+ escalationLevel = 0;
481
+ sourceReloadAttempted = false;
482
+ }
483
+ /**
484
+ * Sets the recovery grace period and re-minimize flag after a recovery action. The grace period prevents the monitor from immediately detecting new issues while the
485
+ * recovery action takes effect.
486
+ * @param level - The recovery level (1-3) to determine grace period duration.
487
+ */
488
+ function setRecoveryGracePeriod(level) {
489
+ pendingReMinimize = true;
490
+ recoveryGraceUntil = Date.now() + recoveryGracePeriods[level];
491
+ }
492
+ /**
493
+ * Handles tab replacement failure by checking the circuit breaker. If the breaker trips, terminates the stream. Returns the appropriate outcome for the caller.
494
+ * @param context - Description of the failure for logging.
495
+ * @returns The tab replacement outcome (failed or terminated).
496
+ */
497
+ function handleTabReplacementFailure(context) {
498
+ const cbResult = checkCircuitBreaker(circuitBreaker, Date.now());
499
+ if (cbResult.shouldTrip) {
500
+ LOG.error("Circuit breaker tripped after %s. Stream appears fundamentally broken.", context);
501
+ clearInterval(interval);
502
+ onCircuitBreak();
503
+ return { outcome: "terminated" };
504
+ }
505
+ return { outcome: "failed" };
506
+ }
507
+ /**
508
+ * Executes tab replacement recovery with full error handling. This unified helper handles all tab replacement triggers (tiny segments, stalled capture, unresponsive
509
+ * tab) consistently, including metrics recording, success/failure logging, circuit breaker checks, and state resets.
510
+ * @param issueType - Description of what triggered the replacement (for logging and UI display).
511
+ * @returns The tab replacement outcome.
512
+ */
513
+ async function executeTabReplacement(issueType) {
514
+ // Guard: caller should ensure onTabReplacement exists, but TypeScript needs explicit narrowing.
515
+ if (!onTabReplacement) {
516
+ return { outcome: "failed" };
517
+ }
518
+ recoveryInProgress = true;
519
+ totalRecoveryAttempts++;
520
+ lastRecoveryTime = Date.now();
521
+ lastIssueType = issueType;
522
+ lastIssueTime = Date.now();
523
+ recordRecoveryAttempt(metrics, RECOVERY_METHODS.tabReplacement);
524
+ try {
525
+ const result = await onTabReplacement();
526
+ if (result) {
527
+ // Success: update references and reset state.
528
+ currentPage = result.page;
529
+ currentContext = result.context;
530
+ const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? Date.now());
531
+ LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.tabReplacement);
532
+ recordRecoverySuccess(metrics, RECOVERY_METHODS.tabReplacement);
533
+ // Full state reset for fresh tab.
534
+ lastPageNavigationTime = Date.now();
535
+ resetRecoveryCounters();
536
+ resetEscalationState();
537
+ resetSegmentMonitoringState();
538
+ setRecoveryGracePeriod(3);
539
+ resetCircuitBreaker(circuitBreaker);
540
+ return { outcome: "success" };
541
+ }
542
+ // Failure: null result from callback.
543
+ LOG.warn("Tab replacement unsuccessful.");
544
+ return handleTabReplacementFailure("tab replacement unsuccessful");
545
+ }
546
+ catch (error) {
547
+ // Error: exception during replacement.
548
+ LOG.warn("Tab replacement failed: %s.", formatError(error));
549
+ return handleTabReplacementFailure("tab replacement error");
550
+ }
551
+ finally {
552
+ finalizeTabReplacement();
553
+ }
554
+ }
429
555
  /**
430
556
  * Performs page navigation recovery with validation. This is the single recovery function used by both the "video not found" and "escalation level 4" code paths,
431
557
  * ensuring consistent behavior. The function:
@@ -653,11 +779,11 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
653
779
  const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? now);
654
780
  LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.pageNavigation);
655
781
  recordRecoverySuccess(metrics, RECOVERY_METHODS.pageNavigation);
656
- // Reset escalation and source reload tracking after successful recovery.
657
- escalationLevel = 0;
658
- consecutiveNavigationFailures = 0;
659
- videoNotFoundCount = 0;
660
- sourceReloadAttempted = false;
782
+ // Reset state after successful page navigation recovery.
783
+ lastPageNavigationTime = Date.now();
784
+ resetRecoveryCounters();
785
+ resetEscalationState();
786
+ resetSegmentMonitoringState();
661
787
  }
662
788
  else {
663
789
  consecutiveNavigationFailures++;
@@ -705,6 +831,69 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
705
831
  const withinBufferingGrace = isBuffering && bufferingStartTime && ((now - bufferingStartTime) < CONFIG.playback.bufferingGracePeriod);
706
832
  // Check if we're within the recovery grace period (recently performed a recovery action and waiting for it to take effect).
707
833
  const withinRecoveryGrace = now < recoveryGraceUntil;
834
+ /*
835
+ * Segment production monitoring. After L2/L3 recovery completes (grace period ends), we verify that segments are actually being produced. If recovery reported
836
+ * success but the capture pipeline is dead (MediaRecorder stopped producing data, FFmpeg stdin idle), segments will stop flowing while the video element
837
+ * appears healthy. This catches the 20+ minute freeze bug where PrismCast reports "Recovered" but Channels DVR receives no data.
838
+ */
839
+ if ((preRecoverySegmentIndex !== null) && !withinRecoveryGrace) {
840
+ // Start the segment wait timer when recovery grace period ends.
841
+ segmentWaitStartTime ??= now;
842
+ // Check if segments are flowing by comparing current index to pre-recovery index.
843
+ const entry = getStream(streamInfo.numericStreamId);
844
+ const currentSegmentIndex = entry?.segmenter?.getSegmentIndex() ?? null;
845
+ if ((currentSegmentIndex !== null) && (currentSegmentIndex > preRecoverySegmentIndex)) {
846
+ // Segments are flowing - recovery actually succeeded. Clear tracking state.
847
+ preRecoverySegmentIndex = null;
848
+ segmentWaitStartTime = null;
849
+ segmentProductionStalled = false;
850
+ }
851
+ else if ((now - segmentWaitStartTime) > SEGMENT_STALL_TIMEOUT) {
852
+ // No new segments for SEGMENT_STALL_TIMEOUT after recovery grace period. The capture pipeline is dead.
853
+ LOG.warn("No segments produced for %ss after recovery. Capture pipeline appears dead.", SEGMENT_STALL_TIMEOUT / 1000);
854
+ segmentProductionStalled = true;
855
+ }
856
+ }
857
+ /*
858
+ * Continuous segment size monitoring. Runs on every healthy interval to detect spontaneous capture pipeline death (no preceding recovery event). Dead pipelines
859
+ * produce tiny segments (18 bytes observed) while the video element appears healthy. This catches failures that post-recovery index monitoring misses because
860
+ * there's no recovery to trigger monitoring.
861
+ */
862
+ const sizeCheckEntry = getStream(streamInfo.numericStreamId);
863
+ const currentSegmentIndex = sizeCheckEntry?.segmenter?.getSegmentIndex() ?? 0;
864
+ if ((currentSegmentIndex > lastCheckedSegmentIndex) && sizeCheckEntry) {
865
+ // A new segment was produced. Check its size.
866
+ const segmentSize = getLastSegmentSize(sizeCheckEntry) ?? 0;
867
+ if (segmentSize < TINY_SEGMENT_THRESHOLD) {
868
+ consecutiveTinySegments++;
869
+ wasInTinySegmentState = true;
870
+ if (consecutiveTinySegments >= TINY_SEGMENT_COUNT_TRIGGER) {
871
+ LOG.warn("Detected %d consecutive tiny segments (%d bytes). Capture pipeline appears dead.", consecutiveTinySegments, segmentSize);
872
+ // Trigger tab replacement if available, otherwise let circuit breaker handle it via segmentProductionStalled.
873
+ if (onTabReplacement && !recoveryInProgress) {
874
+ const tabResult = await executeTabReplacement("tiny segments");
875
+ if (tabResult.outcome === "terminated") {
876
+ return;
877
+ }
878
+ }
879
+ else if (!onTabReplacement) {
880
+ // No tab replacement callback - set stalled flag for circuit breaker.
881
+ segmentProductionStalled = true;
882
+ }
883
+ }
884
+ }
885
+ else {
886
+ // Valid segment size. Check for spontaneous recovery from tiny segment state. We don't mark discontinuity here - only tab replacement marks discontinuity.
887
+ // Self-healing may be transient and not require decoder reset.
888
+ if (wasInTinySegmentState) {
889
+ LOG.debug("Segment production self-healed (%d bytes).", segmentSize);
890
+ }
891
+ // Reset tiny segment tracking.
892
+ consecutiveTinySegments = 0;
893
+ wasInTinySegmentState = false;
894
+ }
895
+ lastCheckedSegmentIndex = currentSegmentIndex;
896
+ }
708
897
  /*
709
898
  * Re-minimize check. After recovery, the browser window may have been un-minimized by fullscreen actions. As soon as the stream is healthy (progressing without
710
899
  * issues), we re-minimize to reduce GPU usage.
@@ -725,14 +914,27 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
725
914
  stallCount = 0;
726
915
  }
727
916
  /*
917
+ * Pause counter management. We increment pauseCount when video.paused is true and reset when it clears. This provides the same hysteresis as stall detection,
918
+ * filtering out transient rebuffer pauses (where the player briefly pauses to refill its buffer) while still catching genuine persistent pauses.
919
+ */
920
+ if (state.paused) {
921
+ pauseCount++;
922
+ }
923
+ else {
924
+ pauseCount = 0;
925
+ }
926
+ /*
728
927
  * Recovery decision. We trigger recovery when any of these conditions are met AND we're not within the recovery grace period:
729
928
  * - Video has an error state
730
929
  * - Video ended (live streams shouldn't end)
731
- * - Video is paused and not just buffering
930
+ * - Video is paused persistently (pauseCount exceeds threshold and not just buffering)
732
931
  * - Video is stalled for too long (stallCount exceeds threshold and not in buffering grace)
932
+ * - Segment production has stalled after recovery (capture pipeline dead)
733
933
  */
734
- const needsRecovery = !withinRecoveryGrace && (state.error || state.ended || (state.paused && !withinBufferingGrace) ||
735
- (!isProgressing && !withinBufferingGrace && (stallCount > CONFIG.playback.stallCountThreshold)));
934
+ const needsRecovery = !withinRecoveryGrace && (state.error || state.ended ||
935
+ (state.paused && !withinBufferingGrace && (pauseCount > CONFIG.playback.stallCountThreshold)) ||
936
+ (!isProgressing && !withinBufferingGrace && (stallCount > CONFIG.playback.stallCountThreshold)) ||
937
+ segmentProductionStalled);
736
938
  /*
737
939
  * Escalation reset. After sustained healthy playback (SUSTAINED_PLAYBACK_REQUIRED, default 60 seconds), we reset the escalation level and circuit breaker.
738
940
  * This allows a stream that recovered to start fresh, rather than immediately escalating to aggressive recovery on the next issue.
@@ -746,17 +948,68 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
746
948
  }
747
949
  const healthyDuration = now - lastRecoveryTime;
748
950
  if ((escalationLevel > 0) && (healthyDuration > CONFIG.playback.sustainedPlaybackRequired)) {
749
- escalationLevel = 0;
750
951
  // Clear buffering state. The bufferingStartTime may persist through recovery cycles due to networkState === 2 (NETWORK_LOADING) being true for live streams
751
952
  // even during healthy playback. Since we have confirmed 60 seconds of progression, the stream is definitively not buffering.
752
953
  bufferingStartTime = null;
753
- // Reset source reload tracking. The stream is healthy now, so if a future issue occurs, we should try L2 (source reload) again before escalating to L3.
754
- sourceReloadAttempted = false;
755
- // Reset circuit breaker on sustained healthy playback. The stream has proven it can work, so we give it a fresh start.
954
+ // Reset escalation, segment tracking, and circuit breaker. Sustained healthy playback confirms the stream works.
955
+ resetEscalationState();
956
+ resetSegmentMonitoringState();
756
957
  resetCircuitBreaker(circuitBreaker);
757
958
  }
758
959
  }
759
960
  /*
961
+ * Proactive page reload. Some streaming sites enforce a maximum continuous playback duration (e.g., NBC.com cuts streams after 4 hours). When a domain
962
+ * configures maxContinuousPlayback, we proactively reload the page before the site's limit expires to maintain uninterrupted streaming. The reload triggers
963
+ * PROACTIVE_RELOAD_MARGIN_MS (2 minutes) before the configured limit, giving enough time for page navigation and video reinitialization.
964
+ *
965
+ * This check runs only when playback is healthy (escalationLevel === 0), not within a recovery grace period, and progressing normally. If recovery is already
966
+ * in progress, the ongoing recovery will eventually perform a page navigation if needed. The page reload rate limit is also checked to avoid consuming reload
967
+ * budget that error recovery needs. The timer resets after any successful full page navigation (proactive or recovery-triggered).
968
+ */
969
+ if ((profile.maxContinuousPlayback !== null) && (escalationLevel === 0) && !withinRecoveryGrace && isProgressing && !state.paused && !state.error &&
970
+ !state.ended) {
971
+ const maxPlaybackMs = profile.maxContinuousPlayback * 3600000;
972
+ const elapsedMs = now - lastPageNavigationTime;
973
+ if (elapsedMs >= (maxPlaybackMs - PROACTIVE_RELOAD_MARGIN_MS)) {
974
+ const elapsedHours = (elapsedMs / 3600000).toFixed(1);
975
+ LOG.info("Proactive reload after %sh of continuous playback (site limit: %sh). Reloading page to prevent stream cutoff.", elapsedHours, String(profile.maxContinuousPlayback));
976
+ recoveryInProgress = true;
977
+ // Check page reload rate limit before attempting. Proactive reload is best-effort maintenance — if the reload budget is exhausted from recent error
978
+ // recoveries, we gracefully yield. If the site eventually cuts the stream, normal error recovery handles it.
979
+ const reloadWindow = now - CONFIG.playback.pageReloadWindow;
980
+ pageReloadTimestamps = pageReloadTimestamps.filter((ts) => ts > reloadWindow);
981
+ if (pageReloadTimestamps.length >= CONFIG.playback.maxPageReloads) {
982
+ LOG.warn("Proactive reload deferred — page navigation rate limit reached (%s in %s minutes).", CONFIG.playback.maxPageReloads, Math.round(CONFIG.playback.pageReloadWindow / 60000));
983
+ // Set a grace period to prevent this deferral from re-triggering every 2 seconds while the rate limit remains in effect. The 10-second L3 grace
984
+ // period spaces out re-checks, and the rate-limit window (default 15 minutes) will eventually expire old timestamps to allow the proactive reload. We
985
+ // set recoveryGraceUntil directly rather than calling setRecoveryGracePeriod() because no recovery action was performed — the window state is unchanged
986
+ // and pendingReMinimize should not be set.
987
+ recoveryGraceUntil = now + recoveryGracePeriods[3];
988
+ recoveryInProgress = false;
989
+ emitStatusUpdate();
990
+ return;
991
+ }
992
+ pageReloadTimestamps.push(now);
993
+ const recoveryResult = await performPageNavigationRecovery();
994
+ // Page navigation disrupted the video stream. Mark a discontinuity so HLS clients resynchronize their decoders.
995
+ markStreamDiscontinuity();
996
+ setRecoveryGracePeriod(3);
997
+ if (recoveryResult.success && recoveryResult.newContext) {
998
+ currentContext = recoveryResult.newContext;
999
+ lastPageNavigationTime = Date.now();
1000
+ LOG.info("Proactive reload completed successfully.");
1001
+ resetRecoveryCounters();
1002
+ resetSegmentMonitoringState();
1003
+ }
1004
+ else {
1005
+ LOG.warn("Proactive reload unsuccessful. Will retry after recovery grace period.");
1006
+ }
1007
+ recoveryInProgress = false;
1008
+ emitStatusUpdate();
1009
+ return;
1010
+ }
1011
+ }
1012
+ /*
760
1013
  * Recovery execution. When recovery is needed, we update circuit breaker state, determine the appropriate recovery level based on issue type and history, and
761
1014
  * execute the recovery action. The recovery system is issue-aware:
762
1015
  * - Paused issues try L1 (play/unmute) first since it works ~50% of the time for paused state
@@ -764,6 +1017,15 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
764
1017
  * - If L2 has already been attempted, skip to L3 (page reload) since a second L2 always fails
765
1018
  */
766
1019
  if (needsRecovery) {
1020
+ /*
1021
+ * Segment production stall handling. When we detect that segments stopped flowing after L2/L3 recovery, the capture pipeline is dead and normal recovery
1022
+ * won't help. We skip the escalation ladder and go directly to tab replacement if available.
1023
+ */
1024
+ if (segmentProductionStalled && onTabReplacement) {
1025
+ LOG.warn("Capture pipeline stalled after recovery. Escalating directly to %s...", RECOVERY_METHODS.tabReplacement);
1026
+ await executeTabReplacement("capture pipeline stalled");
1027
+ return;
1028
+ }
767
1029
  // Check circuit breaker for too many failures. The helper handles incrementing, window checks, and resetting if outside the window.
768
1030
  const cbResult = checkCircuitBreaker(circuitBreaker, now);
769
1031
  if (cbResult.shouldTrip) {
@@ -820,6 +1082,13 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
820
1082
  }
821
1083
  // Record this recovery attempt in metrics.
822
1084
  recordRecoveryAttempt(metrics, recoveryMethod);
1085
+ // For L2/L3 recovery, record the current segment index so we can verify segments are flowing after recovery completes.
1086
+ if (escalationLevel >= 2) {
1087
+ const entry = getStream(streamInfo.numericStreamId);
1088
+ preRecoverySegmentIndex = entry?.segmenter?.getSegmentIndex() ?? null;
1089
+ segmentWaitStartTime = null; // Will be set after recovery grace period ends.
1090
+ segmentProductionStalled = false;
1091
+ }
823
1092
  // Mark recovery in progress to prevent overlapping recovery attempts.
824
1093
  recoveryInProgress = true;
825
1094
  try {
@@ -878,10 +1147,11 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
878
1147
  const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? now);
879
1148
  LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.pageNavigation);
880
1149
  recordRecoverySuccess(metrics, RECOVERY_METHODS.pageNavigation);
881
- // Reset escalation and source reload tracking after successful page navigation. The stream is working again with a fresh page.
882
- escalationLevel = 0;
883
- consecutiveNavigationFailures = 0;
884
- sourceReloadAttempted = false;
1150
+ // Reset state after successful page navigation recovery.
1151
+ lastPageNavigationTime = Date.now();
1152
+ resetRecoveryCounters();
1153
+ resetEscalationState();
1154
+ resetSegmentMonitoringState();
885
1155
  }
886
1156
  else {
887
1157
  consecutiveNavigationFailures++;
@@ -918,57 +1188,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
918
1188
  // After 3 consecutive timeouts, attempt tab replacement if the callback is available.
919
1189
  if ((consecutiveTimeouts >= 3) && onTabReplacement) {
920
1190
  LOG.warn("Tab unresponsive. Attempting %s...", RECOVERY_METHODS.tabReplacement);
921
- recoveryInProgress = true;
922
- totalRecoveryAttempts++;
923
- lastRecoveryTime = Date.now();
924
- lastIssueType = "tab unresponsive";
925
- lastIssueTime = Date.now();
926
- recordRecoveryAttempt(metrics, RECOVERY_METHODS.tabReplacement);
927
- try {
928
- const result = await onTabReplacement();
929
- if (result) {
930
- // Tab replacement succeeded - update our references.
931
- currentPage = result.page;
932
- currentContext = result.context;
933
- // Log success with timing.
934
- const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? Date.now());
935
- LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.tabReplacement);
936
- recordRecoverySuccess(metrics, RECOVERY_METHODS.tabReplacement);
937
- // Reset recovery state since we have a fresh tab.
938
- consecutiveTimeouts = 0;
939
- escalationLevel = 0;
940
- sourceReloadAttempted = false;
941
- consecutiveNavigationFailures = 0;
942
- videoNotFoundCount = 0;
943
- pendingReMinimize = true;
944
- recoveryGraceUntil = Date.now() + recoveryGracePeriods[3];
945
- }
946
- else {
947
- // Tab replacement failed - check circuit breaker.
948
- LOG.warn("Tab replacement unsuccessful.");
949
- const cbResult = checkCircuitBreaker(circuitBreaker, Date.now());
950
- if (cbResult.shouldTrip) {
951
- LOG.error("Circuit breaker tripped after tab replacement failure. Stream appears fundamentally broken.");
952
- clearInterval(interval);
953
- onCircuitBreak();
954
- return;
955
- }
956
- }
957
- }
958
- catch (replacementError) {
959
- LOG.warn("Tab replacement failed: %s.", formatError(replacementError));
960
- const cbResult = checkCircuitBreaker(circuitBreaker, Date.now());
961
- if (cbResult.shouldTrip) {
962
- LOG.error("Circuit breaker tripped after tab replacement error.");
963
- clearInterval(interval);
964
- onCircuitBreak();
965
- return;
966
- }
967
- }
968
- finally {
969
- // Clear recovery flag and emit status. The finally block ensures cleanup happens on all paths including circuit breaker returns.
970
- finalizeTabReplacement();
971
- }
1191
+ await executeTabReplacement("tab unresponsive");
972
1192
  return;
973
1193
  }
974
1194
  // Emit status so SSE clients see current duration/memory even during timeout degradation (when consecutiveTimeouts < 3).
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/streaming/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/streaming/monitor.ts"],"names":[],"mappings":"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"}