prismcast 1.4.1 → 1.5.0

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 (182) hide show
  1. package/dist/app.js +18 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/browser/cdp.d.ts +2 -1
  4. package/dist/browser/cdp.js +44 -23
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +45 -1
  7. package/dist/browser/channelSelection.js +164 -27
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.d.ts +0 -4
  10. package/dist/browser/display.js +0 -7
  11. package/dist/browser/display.js.map +1 -1
  12. package/dist/browser/index.d.ts +5 -0
  13. package/dist/browser/index.js +14 -0
  14. package/dist/browser/index.js.map +1 -1
  15. package/dist/browser/precaching.d.ts +5 -0
  16. package/dist/browser/precaching.js +112 -0
  17. package/dist/browser/precaching.js.map +1 -0
  18. package/dist/browser/tuning/directv.d.ts +2 -0
  19. package/dist/browser/tuning/directv.js +723 -0
  20. package/dist/browser/tuning/directv.js.map +1 -0
  21. package/dist/browser/tuning/fox.d.ts +2 -2
  22. package/dist/browser/tuning/fox.js +141 -22
  23. package/dist/browser/tuning/fox.js.map +1 -1
  24. package/dist/browser/tuning/hbo.d.ts +2 -2
  25. package/dist/browser/tuning/hbo.js +110 -41
  26. package/dist/browser/tuning/hbo.js.map +1 -1
  27. package/dist/browser/tuning/hulu.d.ts +2 -2
  28. package/dist/browser/tuning/hulu.js +537 -211
  29. package/dist/browser/tuning/hulu.js.map +1 -1
  30. package/dist/browser/tuning/sling.d.ts +2 -2
  31. package/dist/browser/tuning/sling.js +200 -56
  32. package/dist/browser/tuning/sling.js.map +1 -1
  33. package/dist/browser/tuning/youtubeTv.d.ts +2 -2
  34. package/dist/browser/tuning/youtubeTv.js +243 -57
  35. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  36. package/dist/browser/video.d.ts +1 -1
  37. package/dist/browser/video.js +4 -2
  38. package/dist/browser/video.js.map +1 -1
  39. package/dist/channels/index.js +280 -34
  40. package/dist/channels/index.js.map +1 -1
  41. package/dist/config/health.d.ts +78 -0
  42. package/dist/config/health.js +202 -0
  43. package/dist/config/health.js.map +1 -0
  44. package/dist/config/paths.d.ts +10 -0
  45. package/dist/config/paths.js +14 -0
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/profiles.d.ts +6 -4
  48. package/dist/config/profiles.js +65 -14
  49. package/dist/config/profiles.js.map +1 -1
  50. package/dist/config/providerPacks.d.ts +46 -0
  51. package/dist/config/providerPacks.js +200 -0
  52. package/dist/config/providerPacks.js.map +1 -0
  53. package/dist/config/providers.d.ts +47 -6
  54. package/dist/config/providers.js +211 -17
  55. package/dist/config/providers.js.map +1 -1
  56. package/dist/config/sites.d.ts +1 -12
  57. package/dist/config/sites.js +40 -7
  58. package/dist/config/sites.js.map +1 -1
  59. package/dist/config/userChannels.d.ts +41 -19
  60. package/dist/config/userChannels.js +152 -35
  61. package/dist/config/userChannels.js.map +1 -1
  62. package/dist/config/userConfig.d.ts +5 -1
  63. package/dist/config/userConfig.js +58 -6
  64. package/dist/config/userConfig.js.map +1 -1
  65. package/dist/config/userProfiles.d.ts +81 -0
  66. package/dist/config/userProfiles.js +424 -0
  67. package/dist/config/userProfiles.js.map +1 -0
  68. package/dist/routes/config/channels/index.d.ts +3 -0
  69. package/dist/routes/config/channels/index.js +3 -0
  70. package/dist/routes/config/channels/index.js.map +1 -0
  71. package/dist/routes/config/channels/routes.d.ts +6 -0
  72. package/dist/routes/config/channels/routes.js +797 -0
  73. package/dist/routes/config/channels/routes.js.map +1 -0
  74. package/dist/routes/config/channels/table.d.ts +46 -0
  75. package/dist/routes/config/channels/table.js +811 -0
  76. package/dist/routes/config/channels/table.js.map +1 -0
  77. package/dist/routes/config/index.d.ts +37 -0
  78. package/dist/routes/config/index.js +81 -0
  79. package/dist/routes/config/index.js.map +1 -0
  80. package/dist/routes/config/providers.d.ts +18 -0
  81. package/dist/routes/config/providers.js +573 -0
  82. package/dist/routes/config/providers.js.map +1 -0
  83. package/dist/routes/config/settings.d.ts +39 -0
  84. package/dist/routes/config/settings.js +820 -0
  85. package/dist/routes/config/settings.js.map +1 -0
  86. package/dist/routes/index.d.ts +3 -2
  87. package/dist/routes/index.js +7 -4
  88. package/dist/routes/index.js.map +1 -1
  89. package/dist/routes/playlist.d.ts +5 -1
  90. package/dist/routes/playlist.js +32 -7
  91. package/dist/routes/playlist.js.map +1 -1
  92. package/dist/routes/providers.d.ts +6 -0
  93. package/dist/routes/providers.js +166 -0
  94. package/dist/routes/providers.js.map +1 -0
  95. package/dist/routes/root/content.d.ts +32 -0
  96. package/dist/routes/root/content.js +857 -0
  97. package/dist/routes/root/content.js.map +1 -0
  98. package/dist/routes/root/index.js +197 -0
  99. package/dist/routes/root/index.js.map +1 -0
  100. package/dist/routes/root/scripts/channels.d.ts +1 -0
  101. package/dist/routes/root/scripts/channels.js +745 -0
  102. package/dist/routes/root/scripts/channels.js.map +1 -0
  103. package/dist/routes/root/scripts/config.d.ts +1 -0
  104. package/dist/routes/root/scripts/config.js +1662 -0
  105. package/dist/routes/root/scripts/config.js.map +1 -0
  106. package/dist/routes/root/scripts/index.d.ts +3 -0
  107. package/dist/routes/root/scripts/index.js +8 -0
  108. package/dist/routes/root/scripts/index.js.map +1 -0
  109. package/dist/routes/root/scripts/status.d.ts +1 -0
  110. package/dist/routes/root/scripts/status.js +436 -0
  111. package/dist/routes/root/scripts/status.js.map +1 -0
  112. package/dist/routes/root/styles.d.ts +5 -0
  113. package/dist/routes/root/styles.js +447 -0
  114. package/dist/routes/root/styles.js.map +1 -0
  115. package/dist/routes/theme.js +7 -1
  116. package/dist/routes/theme.js.map +1 -1
  117. package/dist/routes/ui.js +8 -3
  118. package/dist/routes/ui.js.map +1 -1
  119. package/dist/service/commands.d.ts +5 -3
  120. package/dist/service/commands.js +117 -33
  121. package/dist/service/commands.js.map +1 -1
  122. package/dist/service/generators.d.ts +27 -0
  123. package/dist/service/generators.js +97 -6
  124. package/dist/service/generators.js.map +1 -1
  125. package/dist/streaming/hls.js +18 -1
  126. package/dist/streaming/hls.js.map +1 -1
  127. package/dist/streaming/lifecycle.js +1 -1
  128. package/dist/streaming/lifecycle.js.map +1 -1
  129. package/dist/streaming/monitor.d.ts +1 -38
  130. package/dist/streaming/monitor.js +2 -289
  131. package/dist/streaming/monitor.js.map +1 -1
  132. package/dist/streaming/recovery.d.ts +143 -0
  133. package/dist/streaming/recovery.js +286 -0
  134. package/dist/streaming/recovery.js.map +1 -0
  135. package/dist/streaming/registry.d.ts +1 -1
  136. package/dist/streaming/setup.d.ts +1 -1
  137. package/dist/streaming/setup.js +3 -1
  138. package/dist/streaming/setup.js.map +1 -1
  139. package/dist/streaming/showInfo.js +12 -14
  140. package/dist/streaming/showInfo.js.map +1 -1
  141. package/dist/streaming/statusEmitter.d.ts +4 -2
  142. package/dist/streaming/statusEmitter.js +5 -0
  143. package/dist/streaming/statusEmitter.js.map +1 -1
  144. package/dist/types/channels.d.ts +68 -0
  145. package/dist/types/channels.js +2 -0
  146. package/dist/types/channels.js.map +1 -0
  147. package/dist/types/config.d.ts +127 -0
  148. package/dist/types/config.js +2 -0
  149. package/dist/types/config.js.map +1 -0
  150. package/dist/types/index.d.ts +7 -406
  151. package/dist/types/index.js +1 -5
  152. package/dist/types/index.js.map +1 -1
  153. package/dist/types/profiles.d.ts +141 -0
  154. package/dist/types/profiles.js +2 -0
  155. package/dist/types/profiles.js.map +1 -0
  156. package/dist/types/selection.d.ts +101 -0
  157. package/dist/types/selection.js +6 -0
  158. package/dist/types/selection.js.map +1 -0
  159. package/dist/types/shared.d.ts +7 -0
  160. package/dist/types/shared.js +6 -0
  161. package/dist/types/shared.js.map +1 -0
  162. package/dist/types/streaming.d.ts +96 -0
  163. package/dist/types/streaming.js +2 -0
  164. package/dist/types/streaming.js.map +1 -0
  165. package/dist/utils/debugFilter.js +3 -1
  166. package/dist/utils/debugFilter.js.map +1 -1
  167. package/dist/utils/format.d.ts +7 -0
  168. package/dist/utils/format.js +22 -0
  169. package/dist/utils/format.js.map +1 -1
  170. package/dist/utils/index.d.ts +1 -0
  171. package/dist/utils/index.js +1 -0
  172. package/dist/utils/index.js.map +1 -1
  173. package/dist/utils/sanitize.d.ts +14 -0
  174. package/dist/utils/sanitize.js +37 -0
  175. package/dist/utils/sanitize.js.map +1 -0
  176. package/package.json +6 -4
  177. package/dist/routes/config.d.ts +0 -72
  178. package/dist/routes/config.js +0 -1987
  179. package/dist/routes/config.js.map +0 -1
  180. package/dist/routes/root.js +0 -2959
  181. package/dist/routes/root.js.map +0 -1
  182. /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
@@ -14,17 +14,19 @@ export declare function handleInstall(force: boolean): Promise<number>;
14
14
  */
15
15
  export declare function handleUninstall(): Promise<number>;
16
16
  /**
17
- * Handles the `service start` command. Starts the service if it is installed but not running.
17
+ * Handles the `service start` command. Starts the service if it is installed but not running. If the service file contains stale paths (e.g., after a Homebrew
18
+ * upgrade), they are fixed automatically before starting.
18
19
  * @returns Exit code (0 for success, 1 for error).
19
20
  */
20
21
  export declare function handleStart(): Promise<number>;
21
22
  /**
22
- * Handles the `service stop` command. Stops the service if it is running.
23
+ * Handles the `service stop` command. Always attempts to stop the service regardless of whether it appears to be running, ensuring that loaded-but-not-running
24
+ * state (common on launchd after a crash) is properly cleared.
23
25
  * @returns Exit code (0 for success, 1 for error).
24
26
  */
25
27
  export declare function handleStop(): Promise<number>;
26
28
  /**
27
- * Handles the `service restart` command. Stops the service if running, then starts it.
29
+ * Handles the `service restart` command. Stops the service, then compares paths and regenerates the service file if needed before starting.
28
30
  * @returns Exit code (0 for success, 1 for error).
29
31
  */
30
32
  export declare function handleRestart(): Promise<number>;
@@ -3,8 +3,8 @@
3
3
  * commands.ts: Service command handlers for PrismCast CLI.
4
4
  */
5
5
  import { DEFAULTS, loadUserConfig } from "../config/userConfig.js";
6
- import { SERVICE_NAME, getPlatform, getServiceFilePath } from "../utils/platform.js";
7
- import { collectServiceEnvironment, getServiceGenerator } from "./generators.js";
6
+ import { SERVICE_NAME, getNodeExecutablePath, getPlatform, getPrismCastEntryPoint, getServiceFilePath } from "../utils/platform.js";
7
+ import { collectServiceEnvironment, detectStalePaths, getServiceGenerator, getServicePaths } from "./generators.js";
8
8
  import { getDataDir } from "../config/paths.js";
9
9
  import path from "node:path";
10
10
  /* These handlers implement the `prismcast service` subcommands for installing, uninstalling, and checking the status of PrismCast as a system service. Each handler
@@ -26,6 +26,24 @@ function printError(message) {
26
26
  // eslint-disable-next-line no-console
27
27
  console.error(message);
28
28
  }
29
+ /**
30
+ * Prints a stale path warning block to stderr. Called by handleStatus() when the service file references paths that no longer exist on disk.
31
+ */
32
+ function printStalePathWarning() {
33
+ const staleResult = detectStalePaths();
34
+ if (!staleResult?.stale) {
35
+ return;
36
+ }
37
+ print("");
38
+ printError("Warning: Service file contains stale paths that no longer exist on disk.");
39
+ if (staleResult.nodePath) {
40
+ printError(" Node binary: " + staleResult.nodePath + " (not found)");
41
+ }
42
+ if (staleResult.entryPoint) {
43
+ printError(" Entry point: " + staleResult.entryPoint + " (not found)");
44
+ }
45
+ printError("Run 'prismcast service restart' to update the service file.");
46
+ }
29
47
  /**
30
48
  * Formats a duration in seconds to a human-readable string.
31
49
  * @param seconds - The duration in seconds.
@@ -202,7 +220,66 @@ export async function handleUninstall() {
202
220
  return 0;
203
221
  }
204
222
  /**
205
- * Handles the `service start` command. Starts the service if it is installed but not running.
223
+ * Core restart logic shared by handleStart() and handleRestart(). Compares paths in the existing service file against the current runtime paths. If the paths have
224
+ * changed (e.g., after a Homebrew or npm upgrade), the service file is regenerated before starting. Otherwise, a normal start is performed. The caller is
225
+ * responsible for validation (platform support, installed check) and for stopping the service if needed before calling this function.
226
+ * @param generator - The validated service generator for the current platform.
227
+ * @param action - The user-facing action verb for success messages ("started" or "restarted").
228
+ * @returns Exit code (0 for success, 1 for error).
229
+ */
230
+ async function restartService(generator, action) {
231
+ // Compare the paths in the existing service file against the current runtime paths to determine whether regeneration is needed. All supported platforms (launchd,
232
+ // systemd, Windows) store paths in their service files, so getServicePaths() only returns null for corrupt or legacy marker files.
233
+ const existingPaths = getServicePaths();
234
+ const currentNodePath = getNodeExecutablePath();
235
+ const currentEntryPoint = getPrismCastEntryPoint();
236
+ const pathsMatch = (existingPaths?.nodePath === currentNodePath) && (existingPaths.entryPoint === currentEntryPoint);
237
+ // Regenerate the service file if paths have changed or couldn't be extracted.
238
+ if (!pathsMatch) {
239
+ if (existingPaths) {
240
+ print("Detected path changes in service file:");
241
+ if (existingPaths.nodePath !== currentNodePath) {
242
+ print(" Node binary: " + existingPaths.nodePath + " -> " + currentNodePath);
243
+ }
244
+ if (existingPaths.entryPoint !== currentEntryPoint) {
245
+ print(" Entry point: " + existingPaths.entryPoint + " -> " + currentEntryPoint);
246
+ }
247
+ }
248
+ print("Regenerating service file...");
249
+ try {
250
+ const envVars = collectServiceEnvironment();
251
+ const content = generator.generate({ envVars });
252
+ await generator.install(content);
253
+ }
254
+ catch (error) {
255
+ printError("Error: Failed to regenerate service file.");
256
+ if (error instanceof Error) {
257
+ printError(error.message);
258
+ }
259
+ return 1;
260
+ }
261
+ print("Updated service file with current paths.");
262
+ }
263
+ else {
264
+ // Paths match — normal start cycle without file rewrite.
265
+ print("Starting " + SERVICE_NAME + " service...");
266
+ try {
267
+ await generator.start();
268
+ }
269
+ catch (error) {
270
+ printError("Error: Failed to start service.");
271
+ if (error instanceof Error) {
272
+ printError(error.message);
273
+ }
274
+ return 1;
275
+ }
276
+ }
277
+ print("Service " + action + " successfully.");
278
+ return 0;
279
+ }
280
+ /**
281
+ * Handles the `service start` command. Starts the service if it is installed but not running. If the service file contains stale paths (e.g., after a Homebrew
282
+ * upgrade), they are fixed automatically before starting.
206
283
  * @returns Exit code (0 for success, 1 for error).
207
284
  */
208
285
  export async function handleStart() {
@@ -224,22 +301,11 @@ export async function handleStart() {
224
301
  print(SERVICE_NAME + " service is already running.");
225
302
  return 0;
226
303
  }
227
- print("Starting " + SERVICE_NAME + " service...");
228
- try {
229
- await generator.start();
230
- }
231
- catch (error) {
232
- printError("Error: Failed to start service.");
233
- if (error instanceof Error) {
234
- printError(error.message);
235
- }
236
- return 1;
237
- }
238
- print("Service started successfully.");
239
- return 0;
304
+ return restartService(generator, "started");
240
305
  }
241
306
  /**
242
- * Handles the `service stop` command. Stops the service if it is running.
307
+ * Handles the `service stop` command. Always attempts to stop the service regardless of whether it appears to be running, ensuring that loaded-but-not-running
308
+ * state (common on launchd after a crash) is properly cleared.
243
309
  * @returns Exit code (0 for success, 1 for error).
244
310
  */
245
311
  export async function handleStop() {
@@ -254,38 +320,51 @@ export async function handleStop() {
254
320
  printError("Error: " + SERVICE_NAME + " service is not installed.");
255
321
  return 1;
256
322
  }
257
- // Check if running.
258
- const isRunning = await generator.isRunning();
259
- if (!isRunning) {
260
- print(SERVICE_NAME + " service is not running.");
261
- return 0;
262
- }
323
+ // Always attempt to stop the service regardless of whether isRunning() reports it as running. On launchd, a service can be in a "loaded but not running" state
324
+ // (e.g., after a crash) where isRunning() returns false but the stale definition remains loaded. Skipping the stop in that case prevents launchctl unload from
325
+ // clearing the loaded state, which causes subsequent start attempts to reuse the cached (potentially stale) definition.
263
326
  print("Stopping " + SERVICE_NAME + " service...");
264
327
  try {
265
328
  await generator.stop();
266
329
  }
267
330
  catch (error) {
268
- printError("Error: Failed to stop service.");
331
+ // The stop call may fail if the service wasn't actually loaded or running. This is expected — each platform's stop() can throw when there's nothing to stop.
332
+ // We log the error but don't treat it as a failure since the end state (service stopped) is what we wanted.
269
333
  if (error instanceof Error) {
270
- printError(error.message);
334
+ printError("Note: " + error.message);
271
335
  }
272
- return 1;
273
336
  }
274
337
  print("Service stopped successfully.");
275
338
  return 0;
276
339
  }
277
340
  /**
278
- * Handles the `service restart` command. Stops the service if running, then starts it.
341
+ * Handles the `service restart` command. Stops the service, then compares paths and regenerates the service file if needed before starting.
279
342
  * @returns Exit code (0 for success, 1 for error).
280
343
  */
281
344
  export async function handleRestart() {
282
- // Stop the service (ignores "not running" state).
283
- const stopResult = await handleStop();
284
- if (stopResult !== 0) {
285
- return stopResult;
345
+ const generator = getServiceGenerator();
346
+ if (!generator) {
347
+ printError("Error: Service management is not supported on this platform (" + getPlatform() + ").");
348
+ return 1;
286
349
  }
287
- // Start the service.
288
- return handleStart();
350
+ // Check if installed.
351
+ const isInstalled = await generator.isInstalled();
352
+ if (!isInstalled) {
353
+ printError("Error: " + SERVICE_NAME + " service is not installed.");
354
+ printError("Run 'prismcast service install' first.");
355
+ return 1;
356
+ }
357
+ // Stop the service. We call generator.stop() directly rather than handleStop() to avoid the duplicate "not installed" check and to ensure the stop is always
358
+ // attempted regardless of isRunning() state.
359
+ print("Stopping " + SERVICE_NAME + " service...");
360
+ try {
361
+ await generator.stop();
362
+ }
363
+ catch {
364
+ // The service may not be running or loaded. This is fine — we just need it stopped before restart.
365
+ }
366
+ print("");
367
+ return restartService(generator, "restarted");
289
368
  }
290
369
  /**
291
370
  * Handles the `service status` command. Shows the current service installation and running status.
@@ -311,6 +390,11 @@ export async function handleStatus() {
311
390
  print("Service file: " + getServiceFilePath());
312
391
  print("Installed: " + (isInstalled ? "Yes" : "No"));
313
392
  print("Running: " + (isRunning ? "Yes" : "No"));
393
+ // Warn about stale paths if the service is installed. This is the most common scenario users encounter after upgrading — the status shows "not running" with no
394
+ // explanation. The warning gives them a clear next step.
395
+ if (isInstalled) {
396
+ printStalePathWarning();
397
+ }
314
398
  // If the service is running, fetch and display active streams.
315
399
  if (isRunning) {
316
400
  const port = await getServerPort();
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/service/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/service/commands.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,33 @@ export interface ServiceGenerator {
21
21
  stop(): Promise<void>;
22
22
  uninstall(): Promise<void>;
23
23
  }
24
+ /**
25
+ * Paths extracted from an existing service file.
26
+ */
27
+ export interface ServicePaths {
28
+ entryPoint: string;
29
+ nodePath: string;
30
+ }
31
+ /**
32
+ * Result of stale path detection.
33
+ */
34
+ export interface StalePathResult {
35
+ entryPoint?: string;
36
+ nodePath?: string;
37
+ stale: boolean;
38
+ }
39
+ /**
40
+ * Reads the existing service file and extracts the node binary and PrismCast entry point paths. Each platform has its own format: launchd plist XML, systemd unit
41
+ * ExecStart line, or Windows marker file with explicit path entries.
42
+ * @returns The extracted paths, or null if the file doesn't exist or can't be parsed.
43
+ */
44
+ export declare function getServicePaths(): Nullable<ServicePaths>;
45
+ /**
46
+ * Checks whether the paths in the existing service file still exist on disk. This detects the common post-upgrade scenario where Homebrew or npm has moved the
47
+ * installation to a new versioned directory and the old paths no longer resolve.
48
+ * @returns A StalePathResult indicating which paths are missing, or null if the service file doesn't exist or can't be parsed.
49
+ */
50
+ export declare function detectStalePaths(): Nullable<StalePathResult>;
24
51
  /**
25
52
  * Returns the service generator for the current platform.
26
53
  * @returns The appropriate ServiceGenerator, or null if the platform is not supported.
@@ -125,14 +125,17 @@ function createLaunchdGenerator() {
125
125
  // eslint-disable-next-line @typescript-eslint/require-await
126
126
  async start() {
127
127
  const installPath = this.getInstallPath();
128
- // Load the plist if not already loaded. This is idempotent — if already loaded, launchd logs a warning but doesn't fail.
128
+ // Unload first to clear any stale loaded-but-not-running state. Without this, `launchctl load -w` is a no-op when the definition is already loaded
129
+ // (e.g., after a crash or upgrade with changed paths), and the cached stale definition is reused.
129
130
  try {
130
- execSync("launchctl load -w \"" + installPath + "\"", { stdio: "pipe" });
131
+ execSync("launchctl unload \"" + installPath + "\"", { stdio: "pipe" });
131
132
  }
132
133
  catch {
133
- // Ignore — may already be loaded.
134
+ // Ignore — may not be loaded.
134
135
  }
135
- // Explicitly start the service. This handles the case where the plist is loaded but the process isn't running (e.g., after a crash).
136
+ // Load the plist with the current (possibly updated) definition.
137
+ execSync("launchctl load -w \"" + installPath + "\"", { stdio: "pipe" });
138
+ // Explicitly start the service. This handles the case where RunAtLoad doesn't trigger (e.g., load-then-start sequence).
136
139
  execSync("launchctl start " + SERVICE_ID, { stdio: "pipe" });
137
140
  },
138
141
  // eslint-disable-next-line @typescript-eslint/require-await
@@ -311,8 +314,11 @@ function createWindowsSchedulerGenerator() {
311
314
  // Create the scheduled task. The /SC ONLOGON runs at user logon. /RL HIGHEST gives elevated privileges if needed.
312
315
  const createCmd = "schtasks /Create /TN \"" + taskName + "\" /TR \"" + content + "\" /SC ONLOGON /RL HIGHEST /F";
313
316
  execSync(createCmd, { stdio: "pipe" });
314
- // Write marker file to indicate installation.
315
- await fsPromises.writeFile(installPath, "Installed at " + new Date().toISOString() + "\n", "utf8");
317
+ // Write marker file to indicate installation. We include the node binary and entry point paths so that getServicePaths() can extract them for stale path
318
+ // detection. The task command itself is stored in the Windows Task Scheduler registry, which isn't easily inspectable.
319
+ const nodePath = getNodeExecutablePath();
320
+ const entryPoint = getPrismCastEntryPoint();
321
+ await fsPromises.writeFile(installPath, "node:" + nodePath + "\nentry:" + entryPoint + "\n", "utf8");
316
322
  // Start the task immediately.
317
323
  try {
318
324
  execSync("schtasks /Run /TN \"" + taskName + "\"", { stdio: "pipe" });
@@ -367,6 +373,91 @@ function createWindowsSchedulerGenerator() {
367
373
  }
368
374
  };
369
375
  }
376
+ /**
377
+ * Reads the existing service file and extracts the node binary and PrismCast entry point paths. Each platform has its own format: launchd plist XML, systemd unit
378
+ * ExecStart line, or Windows marker file with explicit path entries.
379
+ * @returns The extracted paths, or null if the file doesn't exist or can't be parsed.
380
+ */
381
+ export function getServicePaths() {
382
+ const filePath = getServiceFilePath();
383
+ if (!fs.existsSync(filePath)) {
384
+ return null;
385
+ }
386
+ let content;
387
+ try {
388
+ content = fs.readFileSync(filePath, "utf8");
389
+ }
390
+ catch {
391
+ return null;
392
+ }
393
+ switch (getPlatform()) {
394
+ // Launchd plist: ProgramArguments contains two <string> elements — first is the node path, second is the entry point.
395
+ case "darwin": {
396
+ const stringPattern = /<string>([^<]+)<\/string>/g;
397
+ const matches = [];
398
+ let match;
399
+ // Walk the ProgramArguments array. We look for the section after the ProgramArguments key and extract the first two string values.
400
+ const programArgsIndex = content.indexOf("<key>ProgramArguments</key>");
401
+ if (programArgsIndex === -1) {
402
+ return null;
403
+ }
404
+ // Extract strings from the <array> section following ProgramArguments.
405
+ const arraySection = content.slice(programArgsIndex);
406
+ while ((match = stringPattern.exec(arraySection)) !== null) {
407
+ matches.push(match[1]);
408
+ if (matches.length === 2) {
409
+ break;
410
+ }
411
+ }
412
+ if (matches.length < 2) {
413
+ return null;
414
+ }
415
+ return { entryPoint: matches[1], nodePath: matches[0] };
416
+ }
417
+ // Systemd unit: ExecStart=<node> <entrypoint> on one line.
418
+ case "linux": {
419
+ const execStartMatch = /^ExecStart=(.+)$/m.exec(content);
420
+ if (!execStartMatch) {
421
+ return null;
422
+ }
423
+ const parts = execStartMatch[1].split(" ");
424
+ if (parts.length < 2) {
425
+ return null;
426
+ }
427
+ return { entryPoint: parts[1], nodePath: parts[0] };
428
+ }
429
+ // Windows: paths are stored in the marker file as "node:<path>" and "entry:<path>" lines.
430
+ case "windows": {
431
+ const nodeMatch = /^node:(.+)$/m.exec(content);
432
+ const entryMatch = /^entry:(.+)$/m.exec(content);
433
+ if (!nodeMatch || !entryMatch) {
434
+ return null;
435
+ }
436
+ return { entryPoint: entryMatch[1], nodePath: nodeMatch[1] };
437
+ }
438
+ default: {
439
+ return null;
440
+ }
441
+ }
442
+ }
443
+ /**
444
+ * Checks whether the paths in the existing service file still exist on disk. This detects the common post-upgrade scenario where Homebrew or npm has moved the
445
+ * installation to a new versioned directory and the old paths no longer resolve.
446
+ * @returns A StalePathResult indicating which paths are missing, or null if the service file doesn't exist or can't be parsed.
447
+ */
448
+ export function detectStalePaths() {
449
+ const paths = getServicePaths();
450
+ if (!paths) {
451
+ return null;
452
+ }
453
+ const nodeStale = !fs.existsSync(paths.nodePath);
454
+ const entryStale = !fs.existsSync(paths.entryPoint);
455
+ return {
456
+ entryPoint: entryStale ? paths.entryPoint : undefined,
457
+ nodePath: nodeStale ? paths.nodePath : undefined,
458
+ stale: nodeStale || entryStale
459
+ };
460
+ }
370
461
  /* Returns the appropriate service generator for the current platform.
371
462
  */
372
463
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/service/generators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/service/generators.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@ import { deleteChannelStreamId, getChannelStreamId, isTerminationInitiated, setC
6
6
  import { emitCurrentSystemStatus, isLoginModeActive, unregisterManagedPage } from "../browser/index.js";
7
7
  import { getAllChannels, isPredefinedChannelDisabled } from "../config/userChannels.js";
8
8
  import { getInitSegment, getPlaylist, getSegment, waitForPlaylist } from "./hlsSegments.js";
9
- import { getResolvedChannel, resolveProviderKey } from "../config/providers.js";
9
+ import { getProviderTagForChannel, getResolvedChannel, resolveProviderKey } from "../config/providers.js";
10
+ import { markChannelFailure, markChannelSuccess } from "../config/health.js";
10
11
  import { CONFIG } from "../config/index.js";
11
12
  import { createFMP4Segmenter } from "./fmp4Segmenter.js";
12
13
  import { createHash } from "node:crypto";
14
+ import { getProviderBySlug } from "../browser/channelSelection.js";
13
15
  import { registerClient } from "./clients.js";
14
16
  import { triggerShowNameUpdate } from "./showInfo.js";
15
17
  // Login mode error body used by both validateChannel() and handlePlayStream() to ensure consistent response format.
@@ -552,6 +554,12 @@ export async function initializeStream(options) {
552
554
  }, onCircuitBreak);
553
555
  }
554
556
  catch (error) {
557
+ // Mark channel health as failed. Only for predefined channels (channel is defined). Ad-hoc URL streams have no persistent channel identity.
558
+ if (channel) {
559
+ const failVariantKey = resolveProviderKey(channelName);
560
+ const failProviderTag = getProviderTagForChannel(failVariantKey);
561
+ markChannelFailure(channelName, failProviderTag);
562
+ }
555
563
  // Remove startup sentinel on failure and re-throw for the caller to handle error responses.
556
564
  deleteChannelStreamId(channelName);
557
565
  throw error;
@@ -622,6 +630,15 @@ export async function initializeStream(options) {
622
630
  const displayName = channel?.name ?? url;
623
631
  const tuneTime = ((Date.now() - setup.startTime.getTime()) / 1000).toFixed(1);
624
632
  LOG.info("Streaming %s (%s, %s). Tuned in %ss%s.", displayName, setup.profileName, captureMode, tuneTime, setup.directTune ? " (direct)" : "");
633
+ // Mark channel health as successful. Only for predefined channels (channel is defined). Ad-hoc URL streams have no persistent channel identity. Provider
634
+ // auth is conditionally skipped when the provider defines validateTune and the tuned channel does not prove paid access (e.g., Sling Freestream channels).
635
+ if (channel) {
636
+ const successVariantKey = resolveProviderKey(channelName);
637
+ const successProviderTag = getProviderTagForChannel(successVariantKey);
638
+ const provider = getProviderBySlug(successProviderTag);
639
+ const markAuth = !provider?.validateTune || provider.validateTune(channel.channelSelector ?? channelName);
640
+ markChannelSuccess(channelName, successProviderTag, markAuth);
641
+ }
625
642
  // Emit stream added event.
626
643
  emitStreamAdded(createInitialStreamStatus({
627
644
  channelName: channel?.name ?? null,