@mohitkumawat/warmup-cli 1.2.15 → 1.3.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 (75) hide show
  1. package/README.md +37 -14
  2. package/dist/commands/default.d.ts +3 -1
  3. package/dist/commands/default.d.ts.map +1 -1
  4. package/dist/commands/default.js +25 -0
  5. package/dist/commands/default.js.map +1 -1
  6. package/dist/commands/doctor.d.ts +51 -0
  7. package/dist/commands/doctor.d.ts.map +1 -0
  8. package/dist/commands/doctor.js +219 -0
  9. package/dist/commands/doctor.js.map +1 -0
  10. package/dist/commands/execute.d.ts +24 -1
  11. package/dist/commands/execute.d.ts.map +1 -1
  12. package/dist/commands/execute.js +53 -21
  13. package/dist/commands/execute.js.map +1 -1
  14. package/dist/commands/logs.d.ts +12 -0
  15. package/dist/commands/logs.d.ts.map +1 -0
  16. package/dist/commands/logs.js +27 -0
  17. package/dist/commands/logs.js.map +1 -0
  18. package/dist/commands/menu.d.ts +52 -0
  19. package/dist/commands/menu.d.ts.map +1 -0
  20. package/dist/commands/menu.js +185 -0
  21. package/dist/commands/menu.js.map +1 -0
  22. package/dist/commands/setup.d.ts +7 -0
  23. package/dist/commands/setup.d.ts.map +1 -1
  24. package/dist/commands/setup.js +94 -5
  25. package/dist/commands/setup.js.map +1 -1
  26. package/dist/commands/status.d.ts +8 -1
  27. package/dist/commands/status.d.ts.map +1 -1
  28. package/dist/commands/status.js +89 -4
  29. package/dist/commands/status.js.map +1 -1
  30. package/dist/commands/test.d.ts.map +1 -1
  31. package/dist/commands/test.js +25 -4
  32. package/dist/commands/test.js.map +1 -1
  33. package/dist/commands/uninstall.d.ts.map +1 -1
  34. package/dist/commands/uninstall.js +15 -0
  35. package/dist/commands/uninstall.js.map +1 -1
  36. package/dist/config.d.ts +23 -1
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +38 -0
  39. package/dist/config.js.map +1 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +32 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/notify.d.ts +14 -0
  44. package/dist/notify.d.ts.map +1 -0
  45. package/dist/notify.js +91 -0
  46. package/dist/notify.js.map +1 -0
  47. package/dist/runtime.d.ts +10 -0
  48. package/dist/runtime.d.ts.map +1 -1
  49. package/dist/runtime.js +39 -8
  50. package/dist/runtime.js.map +1 -1
  51. package/dist/scheduler/index.d.ts +17 -0
  52. package/dist/scheduler/index.d.ts.map +1 -1
  53. package/dist/scheduler/index.js +42 -0
  54. package/dist/scheduler/index.js.map +1 -1
  55. package/dist/scheduler/linux.d.ts.map +1 -1
  56. package/dist/scheduler/linux.js +3 -10
  57. package/dist/scheduler/linux.js.map +1 -1
  58. package/dist/scheduler/macos.d.ts +38 -0
  59. package/dist/scheduler/macos.d.ts.map +1 -1
  60. package/dist/scheduler/macos.js +158 -23
  61. package/dist/scheduler/macos.js.map +1 -1
  62. package/dist/scheduler/script.d.ts +18 -0
  63. package/dist/scheduler/script.d.ts.map +1 -0
  64. package/dist/scheduler/script.js +62 -0
  65. package/dist/scheduler/script.js.map +1 -0
  66. package/dist/scheduler/windows.js +1 -1
  67. package/dist/ui.d.ts +50 -4
  68. package/dist/ui.d.ts.map +1 -1
  69. package/dist/ui.js +250 -38
  70. package/dist/ui.js.map +1 -1
  71. package/dist/warmup.d.ts +52 -4
  72. package/dist/warmup.d.ts.map +1 -1
  73. package/dist/warmup.js +194 -79
  74. package/dist/warmup.js.map +1 -1
  75. package/package.json +3 -1
@@ -40,6 +40,11 @@ exports.installSchedule = installSchedule;
40
40
  exports.uninstallSchedule = uninstallSchedule;
41
41
  exports.isScheduleInstalled = isScheduleInstalled;
42
42
  exports.pauseSchedule = pauseSchedule;
43
+ exports.applyWakeSchedule = applyWakeSchedule;
44
+ exports.clearWakeSchedule = clearWakeSchedule;
45
+ exports.isWakeScheduleActive = isWakeScheduleActive;
46
+ exports.getWakeCommandHint = getWakeCommandHint;
47
+ exports.getWakeTime = getWakeTime;
43
48
  exports.resumeSchedule = resumeSchedule;
44
49
  const os = __importStar(require("os"));
45
50
  const macos_1 = require("./macos");
@@ -109,6 +114,43 @@ function pauseSchedule() {
109
114
  case 'windows': return (0, windows_1.pauseWindowsSchedule)();
110
115
  }
111
116
  }
117
+ /**
118
+ * Schedule a system wake so the pre-warm can run while the Mac is asleep.
119
+ * Returns null on platforms where waking is handled by the task definition
120
+ * itself (Windows `WakeToRun`, systemd `WakeSystem`) and needs no extra step.
121
+ */
122
+ function applyWakeSchedule(hour, minute, options = {}) {
123
+ if (detectPlatform() === 'macos') {
124
+ return (0, macos_1.applyMacWakeSchedule)(hour, minute, options);
125
+ }
126
+ return null;
127
+ }
128
+ function clearWakeSchedule(options = {}) {
129
+ if (detectPlatform() === 'macos') {
130
+ return (0, macos_1.clearMacWakeSchedule)(options);
131
+ }
132
+ return null;
133
+ }
134
+ function isWakeScheduleActive() {
135
+ if (detectPlatform() === 'macos') {
136
+ return (0, macos_1.isMacWakeScheduleActive)();
137
+ }
138
+ // Windows/Linux bake the wake flag into the task; treat install as authoritative.
139
+ return isScheduleInstalled();
140
+ }
141
+ function getWakeCommandHint(hour, minute) {
142
+ if (detectPlatform() === 'macos') {
143
+ return (0, macos_1.buildPmsetWakeCommand)(hour, minute);
144
+ }
145
+ return null;
146
+ }
147
+ /** The system-local wake time ('HH:MM:SS') warmup would schedule, or null off-macOS. */
148
+ function getWakeTime(hour, minute) {
149
+ if (detectPlatform() === 'macos') {
150
+ return (0, macos_1.buildMacWakeSchedule)(hour, minute).time;
151
+ }
152
+ return null;
153
+ }
112
154
  function resumeSchedule() {
113
155
  const platform = detectPlatform();
114
156
  switch (platform) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"linux.d.ts","sourceRoot":"","sources":["../../src/scheduler/linux.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAOtD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC;AA8BvD,wBAAgB,2BAA2B,IAAI,OAAO,CAGrD;AAkCD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,GACxB,qBAAqB,CAIvB;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAKnE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,MAAM,CAQzF;AAwFD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAS1E;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAuB7C;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAclD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAoBzC;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAoB1C"}
1
+ {"version":3,"file":"linux.d.ts","sourceRoot":"","sources":["../../src/scheduler/linux.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAQtD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC;AA0BvD,wBAAgB,2BAA2B,IAAI,OAAO,CAGrD;AAkCD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,GACxB,qBAAqB,CAIvB;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAKnE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,MAAM,CAEzF;AAyFD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAS1E;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAuB7C;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAclD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAoBzC;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAoB1C"}
@@ -48,6 +48,7 @@ const path = __importStar(require("path"));
48
48
  const os = __importStar(require("os"));
49
49
  const child_process_1 = require("child_process");
50
50
  const runtime_1 = require("../runtime");
51
+ const script_1 = require("./script");
51
52
  const SERVICE_NAME = 'warmup';
52
53
  const SYSTEMD_USER_DIR = path.join(os.homedir(), '.config', 'systemd', 'user');
53
54
  const SERVICE_PATH = path.join(SYSTEMD_USER_DIR, `${SERVICE_NAME}.service`);
@@ -55,9 +56,6 @@ const TIMER_PATH = path.join(SYSTEMD_USER_DIR, `${SERVICE_NAME}.timer`);
55
56
  function getWarmupScriptPath() {
56
57
  return path.join(os.homedir(), '.warmup', 'warmup.sh');
57
58
  }
58
- function shellQuote(value) {
59
- return `'${value.replace(/'/g, `'\\''`)}'`;
60
- }
61
59
  function runCommand(command, args) {
62
60
  return (0, child_process_1.spawnSync)(command, args, {
63
61
  encoding: 'utf-8',
@@ -126,13 +124,7 @@ function getLinuxSchedulerName() {
126
124
  : 'Linux (cron)';
127
125
  }
128
126
  function buildLinuxWarmupScript(runtime) {
129
- return `#!/bin/bash
130
- set -euo pipefail
131
-
132
- mkdir -p "$HOME/.warmup/logs"
133
-
134
- ${shellQuote(runtime.nodePath)} ${shellQuote(runtime.cliEntry)} _execute-warmup >> "$HOME/.warmup/logs/systemd.log" 2>&1
135
- `;
127
+ return (0, script_1.buildWarmupShellScript)(runtime, 'systemd.log');
136
128
  }
137
129
  function createWarmupScript(runtime) {
138
130
  const scriptPath = getWarmupScriptPath();
@@ -162,6 +154,7 @@ Description=warmup daily pre-warm timer
162
154
  OnCalendar=*-*-* ${hStr}:${mStr}:00
163
155
  Persistent=true
164
156
  AccuracySec=1min
157
+ WakeSystem=true
165
158
 
166
159
  [Install]
167
160
  WantedBy=timers.target
@@ -1 +1 @@
1
- {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/scheduler/linux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../src/scheduler/linux.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,43 @@
1
1
  import type { ScheduleInstallOptions } from './index';
2
2
  export declare function buildMacWarmupScript(runtime: ScheduleInstallOptions['runtime']): string;
3
+ export interface MacWakeSchedule {
4
+ days: string;
5
+ time: string;
6
+ }
7
+ export type WakeStatus = 'applied' | 'needs-sudo' | 'unsupported' | 'failed';
8
+ export interface WakeResult {
9
+ status: WakeStatus;
10
+ /** The exact command a user can run manually if elevation is required. */
11
+ command: string;
12
+ }
13
+ /** Compute the wake time (fire time minus the lead), wrapping past midnight. */
14
+ export declare function buildMacWakeSchedule(hour: number, minute: number, leadMinutes?: number): MacWakeSchedule;
15
+ /** Human-readable command shown to the user when sudo is required. */
16
+ export declare function buildPmsetWakeCommand(hour: number, minute: number): string;
17
+ /**
18
+ * Schedule a daily system wake a few minutes before the pre-warm fires.
19
+ * `pmset repeat` requires root; if a password is needed and we are not running
20
+ * interactively, returns 'needs-sudo' with the command for the user to run.
21
+ *
22
+ * Note: macOS supports only ONE `pmset repeat` schedule and it is global, so
23
+ * this overwrites any existing repeating wake the user may have set.
24
+ */
25
+ export declare function applyMacWakeSchedule(hour: number, minute: number, options?: {
26
+ interactive?: boolean;
27
+ }): WakeResult;
28
+ /** Remove the daily wake schedule (best-effort). */
29
+ export declare function clearMacWakeSchedule(options?: {
30
+ interactive?: boolean;
31
+ }): WakeResult;
32
+ /**
33
+ * Parse `pmset -g sched` output for an active *repeating* wake/poweron event.
34
+ * Only the "Repeating power events" section is inspected — one-time entries in
35
+ * the "Scheduled power events" section (e.g. macOS's own maintenance wakes)
36
+ * must not register as a false positive.
37
+ */
38
+ export declare function parseWakeScheduleActive(pmsetOutput: string): boolean;
39
+ /** Whether a repeating wake/poweron event is currently registered. */
40
+ export declare function isMacWakeScheduleActive(): boolean;
3
41
  /**
4
42
  * Install a launchd plist for macOS.
5
43
  * Key feature: RunAtLoad=true ensures boot-recovery.
@@ -1 +1 @@
1
- {"version":3,"file":"macos.d.ts","sourceRoot":"","sources":["../../src/scheduler/macos.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAkBtD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,MAAM,CAQvF;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CA4DxE;AAED,+BAA+B;AAC/B,wBAAgB,oBAAoB,IAAI,IAAI,CAa3C;AAED,2CAA2C;AAC3C,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
1
+ {"version":3,"file":"macos.d.ts","sourceRoot":"","sources":["../../src/scheduler/macos.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAmBtD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,MAAM,CAEvF;AAOD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAA0B,GACtC,eAAe,CAMjB;AAMD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1E;AAqBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,UAAU,CAEZ;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAKpE;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,IAAI,OAAO,CAYjD;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAuDxE;AA4DD,+BAA+B;AAC/B,wBAAgB,oBAAoB,IAAI,IAAI,CAW3C;AAED,2CAA2C;AAC3C,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
@@ -34,6 +34,12 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.buildMacWarmupScript = buildMacWarmupScript;
37
+ exports.buildMacWakeSchedule = buildMacWakeSchedule;
38
+ exports.buildPmsetWakeCommand = buildPmsetWakeCommand;
39
+ exports.applyMacWakeSchedule = applyMacWakeSchedule;
40
+ exports.clearMacWakeSchedule = clearMacWakeSchedule;
41
+ exports.parseWakeScheduleActive = parseWakeScheduleActive;
42
+ exports.isMacWakeScheduleActive = isMacWakeScheduleActive;
37
43
  exports.installMacSchedule = installMacSchedule;
38
44
  exports.uninstallMacSchedule = uninstallMacSchedule;
39
45
  exports.isMacScheduleInstalled = isMacScheduleInstalled;
@@ -43,9 +49,13 @@ const fs = __importStar(require("fs"));
43
49
  const path = __importStar(require("path"));
44
50
  const os = __importStar(require("os"));
45
51
  const child_process_1 = require("child_process");
52
+ const script_1 = require("./script");
46
53
  const PLIST_NAME = 'com.warmup.prewarm';
47
54
  const PLIST_DIR = path.join(os.homedir(), 'Library', 'LaunchAgents');
48
55
  const PLIST_PATH = path.join(PLIST_DIR, `${PLIST_NAME}.plist`);
56
+ /** Wake the Mac this many minutes before the launchd fire time, so it is awake
57
+ * and ready when the pre-warm runs. */
58
+ const WAKE_LEAD_MINUTES = 3;
49
59
  /**
50
60
  * Get the path to the warmup script.
51
61
  * We generate a small shell script that warmup's launchd plist will execute.
@@ -53,17 +63,92 @@ const PLIST_PATH = path.join(PLIST_DIR, `${PLIST_NAME}.plist`);
53
63
  function getWarmupScriptPath() {
54
64
  return path.join(os.homedir(), '.warmup', 'warmup.sh');
55
65
  }
56
- function shellQuote(value) {
57
- return `'${value.replace(/'/g, `'\\''`)}'`;
58
- }
59
66
  function buildMacWarmupScript(runtime) {
60
- return `#!/bin/bash
61
- set -euo pipefail
62
-
63
- mkdir -p "$HOME/.warmup/logs"
64
-
65
- ${shellQuote(runtime.nodePath)} ${shellQuote(runtime.cliEntry)} _execute-warmup >> "$HOME/.warmup/logs/launchd.log" 2>&1
66
- `;
67
+ return (0, script_1.buildWarmupShellScript)(runtime, 'launchd.log');
68
+ }
69
+ function pad2(value) {
70
+ return value.toString().padStart(2, '0');
71
+ }
72
+ /** Compute the wake time (fire time minus the lead), wrapping past midnight. */
73
+ function buildMacWakeSchedule(hour, minute, leadMinutes = WAKE_LEAD_MINUTES) {
74
+ const total = (((hour * 60 + minute - leadMinutes) % 1440) + 1440) % 1440;
75
+ return {
76
+ days: 'MTWRFSU',
77
+ time: `${pad2(Math.floor(total / 60))}:${pad2(total % 60)}:00`,
78
+ };
79
+ }
80
+ function pmsetRepeatArgs(wake) {
81
+ return ['repeat', 'wakeorpoweron', wake.days, wake.time];
82
+ }
83
+ /** Human-readable command shown to the user when sudo is required. */
84
+ function buildPmsetWakeCommand(hour, minute) {
85
+ const wake = buildMacWakeSchedule(hour, minute);
86
+ return `sudo pmset ${pmsetRepeatArgs(wake).join(' ')}`;
87
+ }
88
+ function runSudoPmset(args, interactive) {
89
+ const command = `sudo pmset ${args.join(' ')}`;
90
+ try {
91
+ // Non-interactive (`-n`) never blocks on a password prompt; interactive
92
+ // inherits the TTY so the user can authenticate during `warmup setup`.
93
+ const sudoArgs = interactive ? ['pmset', ...args] : ['-n', 'pmset', ...args];
94
+ const result = (0, child_process_1.spawnSync)('sudo', sudoArgs, {
95
+ stdio: interactive ? 'inherit' : 'pipe',
96
+ timeout: interactive ? 120000 : 10000,
97
+ });
98
+ if (result.error)
99
+ return { status: 'failed', command };
100
+ if (result.status === 0)
101
+ return { status: 'applied', command };
102
+ // Non-zero from `sudo -n` almost always means a password is required.
103
+ return { status: interactive ? 'failed' : 'needs-sudo', command };
104
+ }
105
+ catch {
106
+ return { status: 'failed', command };
107
+ }
108
+ }
109
+ /**
110
+ * Schedule a daily system wake a few minutes before the pre-warm fires.
111
+ * `pmset repeat` requires root; if a password is needed and we are not running
112
+ * interactively, returns 'needs-sudo' with the command for the user to run.
113
+ *
114
+ * Note: macOS supports only ONE `pmset repeat` schedule and it is global, so
115
+ * this overwrites any existing repeating wake the user may have set.
116
+ */
117
+ function applyMacWakeSchedule(hour, minute, options = {}) {
118
+ return runSudoPmset(pmsetRepeatArgs(buildMacWakeSchedule(hour, minute)), !!options.interactive);
119
+ }
120
+ /** Remove the daily wake schedule (best-effort). */
121
+ function clearMacWakeSchedule(options = {}) {
122
+ return runSudoPmset(['repeat', 'cancel'], !!options.interactive);
123
+ }
124
+ /**
125
+ * Parse `pmset -g sched` output for an active *repeating* wake/poweron event.
126
+ * Only the "Repeating power events" section is inspected — one-time entries in
127
+ * the "Scheduled power events" section (e.g. macOS's own maintenance wakes)
128
+ * must not register as a false positive.
129
+ */
130
+ function parseWakeScheduleActive(pmsetOutput) {
131
+ const afterRepeating = pmsetOutput.split(/Repeating power events:/i)[1];
132
+ if (!afterRepeating)
133
+ return false;
134
+ const repeatingSection = afterRepeating.split(/Scheduled power events:/i)[0];
135
+ return /wakepoweron|wakeorpoweron/i.test(repeatingSection);
136
+ }
137
+ /** Whether a repeating wake/poweron event is currently registered. */
138
+ function isMacWakeScheduleActive() {
139
+ try {
140
+ const result = (0, child_process_1.spawnSync)('pmset', ['-g', 'sched'], {
141
+ encoding: 'utf-8',
142
+ timeout: 10000,
143
+ stdio: ['pipe', 'pipe', 'pipe'],
144
+ });
145
+ if (result.status !== 0)
146
+ return false;
147
+ return parseWakeScheduleActive(result.stdout || '');
148
+ }
149
+ catch {
150
+ return false;
151
+ }
67
152
  }
68
153
  /** Create the warmup shell script that launchd will execute */
69
154
  function createWarmupScript(runtime) {
@@ -105,7 +190,8 @@ function installMacSchedule(options) {
105
190
  <integer>${minute}</integer>
106
191
  </dict>
107
192
 
108
- <!-- BOOT RECOVERY: Run immediately on load if scheduled time was missed -->
193
+ <!-- Run once at load (login/boot) and on the next wake after a missed fire.
194
+ NOTE: this does NOT wake a sleeping Mac — a pmset wake handles that. -->
109
195
  <key>RunAtLoad</key>
110
196
  <true/>
111
197
 
@@ -125,20 +211,72 @@ function installMacSchedule(options) {
125
211
  </dict>
126
212
  </plist>`;
127
213
  fs.writeFileSync(PLIST_PATH, plist);
128
- // Unload first if already loaded (ignore errors)
214
+ loadAgent();
215
+ }
216
+ /** GUI domain target for the modern `launchctl bootstrap`/`bootout` API. */
217
+ function domainTarget() {
218
+ const uid = typeof process.getuid === 'function' ? process.getuid() : undefined;
219
+ return uid === undefined ? null : `gui/${uid}`;
220
+ }
221
+ /** Whether the LaunchAgent is currently registered with launchd. */
222
+ function isAgentLoaded() {
223
+ try {
224
+ const result = (0, child_process_1.spawnSync)('launchctl', ['list', PLIST_NAME], { stdio: 'pipe', timeout: 10000 });
225
+ return result.status === 0;
226
+ }
227
+ catch {
228
+ return false;
229
+ }
230
+ }
231
+ /** (Re)load the LaunchAgent, preferring the modern bootstrap API with a
232
+ * fallback to the legacy `launchctl load` for older macOS. */
233
+ function loadAgent() {
234
+ const target = domainTarget();
235
+ if (target) {
236
+ try {
237
+ (0, child_process_1.execSync)(`launchctl bootout ${target}/${PLIST_NAME} 2>/dev/null`, { stdio: 'pipe' });
238
+ }
239
+ catch { }
240
+ try {
241
+ (0, child_process_1.execSync)(`launchctl bootstrap ${target} "${PLIST_PATH}"`, { stdio: 'pipe' });
242
+ return;
243
+ }
244
+ catch {
245
+ // Fall through to legacy API.
246
+ }
247
+ }
129
248
  try {
130
- (0, child_process_1.execSync)(`launchctl unload ${PLIST_PATH} 2>/dev/null`, { stdio: 'pipe' });
249
+ (0, child_process_1.execSync)(`launchctl unload "${PLIST_PATH}" 2>/dev/null`, { stdio: 'pipe' });
131
250
  }
132
251
  catch { }
133
- // Load the plist
134
- (0, child_process_1.execSync)(`launchctl load ${PLIST_PATH}`);
252
+ try {
253
+ (0, child_process_1.execSync)(`launchctl load "${PLIST_PATH}"`, { stdio: 'pipe' });
254
+ }
255
+ catch (err) {
256
+ // Tolerate "already loaded"; only fail if the agent truly isn't registered.
257
+ if (!isAgentLoaded()) {
258
+ const detail = (err?.stderr || err?.message || '').toString().trim();
259
+ throw new Error(`Failed to load warmup LaunchAgent: ${detail}`);
260
+ }
261
+ }
135
262
  }
136
- /** Remove the launchd plist */
137
- function uninstallMacSchedule() {
263
+ /** Unload the LaunchAgent via modern then legacy APIs (best-effort). */
264
+ function unloadAgent() {
265
+ const target = domainTarget();
266
+ if (target) {
267
+ try {
268
+ (0, child_process_1.execSync)(`launchctl bootout ${target}/${PLIST_NAME} 2>/dev/null`, { stdio: 'pipe' });
269
+ }
270
+ catch { }
271
+ }
138
272
  try {
139
- (0, child_process_1.execSync)(`launchctl unload ${PLIST_PATH} 2>/dev/null`, { stdio: 'pipe' });
273
+ (0, child_process_1.execSync)(`launchctl unload "${PLIST_PATH}" 2>/dev/null`, { stdio: 'pipe' });
140
274
  }
141
275
  catch { }
276
+ }
277
+ /** Remove the launchd plist */
278
+ function uninstallMacSchedule() {
279
+ unloadAgent();
142
280
  if (fs.existsSync(PLIST_PATH)) {
143
281
  fs.unlinkSync(PLIST_PATH);
144
282
  }
@@ -153,16 +291,13 @@ function isMacScheduleInstalled() {
153
291
  }
154
292
  /** Temporarily disable by unloading (don't delete) */
155
293
  function pauseMacSchedule() {
156
- try {
157
- (0, child_process_1.execSync)(`launchctl unload ${PLIST_PATH} 2>/dev/null`, { stdio: 'pipe' });
158
- }
159
- catch { }
294
+ unloadAgent();
160
295
  }
161
296
  /** Re-enable by loading */
162
297
  function resumeMacSchedule() {
163
298
  if (fs.existsSync(PLIST_PATH)) {
164
299
  try {
165
- (0, child_process_1.execSync)(`launchctl load ${PLIST_PATH}`, { stdio: 'pipe' });
300
+ loadAgent();
166
301
  }
167
302
  catch { }
168
303
  }
@@ -1 +1 @@
1
- {"version":3,"file":"macos.js","sourceRoot":"","sources":["../../src/scheduler/macos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macos.js","sourceRoot":"","sources":["../../src/scheduler/macos.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,oDAEC;AAyBD,oDAUC;AAOD,sDAGC;AA6BD,oDAMC;AAGD,oDAEC;AAQD,0DAKC;AAGD,0DAYC;AAeD,gDAuDC;AA6DD,oDAWC;AAGD,wDAEC;AAGD,4CAEC;AAGD,8CAMC;AA3SD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAoD;AAEpD,qCAAkD;AAElD,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;AAE/D;wCACwC;AACxC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAA0C;IAC7E,OAAO,IAAA,+BAAsB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAoBD,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,SAAgB,oBAAoB,CAClC,IAAY,EACZ,MAAc,EACd,cAAsB,iBAAiB;IAEvC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1E,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAqB;IAC5C,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,sEAAsE;AACtE,SAAgB,qBAAqB,CAAC,IAAY,EAAE,MAAc;IAChE,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,cAAc,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,WAAoB;IACxD,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/C,IAAI,CAAC;QACH,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,QAAQ,EAAE;YACzC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACvC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;SACtC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC/D,sEAAsE;QACtE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,IAAY,EACZ,MAAc,EACd,UAAqC,EAAE;IAEvC,OAAO,YAAY,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAClG,CAAC;AAED,oDAAoD;AACpD,SAAgB,oBAAoB,CAAC,UAAqC,EAAE;IAC1E,OAAO,YAAY,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,WAAmB;IACzD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7D,CAAC;AAED,sEAAsE;AACtE,SAAgB,uBAAuB;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YACjD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,uBAAuB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,kBAAkB,CAAC,OAA0C;IACpE,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE7C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAA+B;IAChE,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEjC,MAAM,KAAK,GAAG;;;;;YAKJ,UAAU;;;;;cAKR,UAAU;;;;;;;eAOT,IAAI;;eAEJ,MAAM;;;;;;;;;;;;;;YAcT,EAAE,CAAC,OAAO,EAAE;;;;YAIZ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC;;YAEhE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC;;SAEnE,CAAC;IAER,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEpC,SAAS,EAAE,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;AACjD,CAAC;AAED,oEAAoE;AACpE,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,WAAW,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;+DAC+D;AAC/D,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,qBAAqB,MAAM,IAAI,UAAU,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,uBAAuB,MAAM,KAAK,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,qBAAqB,UAAU,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,mBAAmB,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,4EAA4E;QAC5E,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,qBAAqB,MAAM,IAAI,UAAU,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,qBAAqB,UAAU,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,+BAA+B;AAC/B,SAAgB,oBAAoB;IAClC,WAAW,EAAE,CAAC;IAEd,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,2CAA2C;AAC3C,SAAgB,sBAAsB;IACpC,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,sDAAsD;AACtD,SAAgB,gBAAgB;IAC9B,WAAW,EAAE,CAAC;AAChB,CAAC;AAED,2BAA2B;AAC3B,SAAgB,iBAAiB;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,SAAS,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { RuntimePaths } from '../runtime';
2
+ /**
3
+ * Build the resilient bash launcher shared by launchd (macOS) and
4
+ * systemd/cron (Linux).
5
+ *
6
+ * Hardening over a bare `node cli _execute-warmup` invocation:
7
+ * - If the recorded Node.js interpreter has vanished (e.g. after
8
+ * `brew upgrade node` removed the pinned Cellar build, or an nvm version
9
+ * was uninstalled), fall back to a PATH-resolved `node`.
10
+ * - If node or the CLI entry still cannot be found, append a dated JSON
11
+ * failure entry to the logs so it surfaces in `warmup status` instead of
12
+ * failing silently into a log nobody reads.
13
+ *
14
+ * `set -e` is intentionally omitted so the fallback/logging branches run; the
15
+ * script's exit status is that of the final node invocation.
16
+ */
17
+ export declare function buildWarmupShellScript(runtime: RuntimePaths, logFileName: string): string;
18
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/scheduler/script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuCzF"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildWarmupShellScript = buildWarmupShellScript;
4
+ function shellQuote(value) {
5
+ return `'${value.replace(/'/g, `'\\''`)}'`;
6
+ }
7
+ /**
8
+ * Build the resilient bash launcher shared by launchd (macOS) and
9
+ * systemd/cron (Linux).
10
+ *
11
+ * Hardening over a bare `node cli _execute-warmup` invocation:
12
+ * - If the recorded Node.js interpreter has vanished (e.g. after
13
+ * `brew upgrade node` removed the pinned Cellar build, or an nvm version
14
+ * was uninstalled), fall back to a PATH-resolved `node`.
15
+ * - If node or the CLI entry still cannot be found, append a dated JSON
16
+ * failure entry to the logs so it surfaces in `warmup status` instead of
17
+ * failing silently into a log nobody reads.
18
+ *
19
+ * `set -e` is intentionally omitted so the fallback/logging branches run; the
20
+ * script's exit status is that of the final node invocation.
21
+ */
22
+ function buildWarmupShellScript(runtime, logFileName) {
23
+ return `#!/bin/bash
24
+ set -uo pipefail
25
+
26
+ WARMUP_LOG_DIR="$HOME/.warmup/logs"
27
+ mkdir -p "$WARMUP_LOG_DIR"
28
+
29
+ NODE_BIN=${shellQuote(runtime.nodePath)}
30
+ CLI_ENTRY=${shellQuote(runtime.cliEntry)}
31
+
32
+ # Recover if the recorded interpreter was removed by a toolchain upgrade.
33
+ # launchd runs with a minimal PATH (/usr/bin:/bin:/usr/sbin:/sbin), so we check
34
+ # common install locations explicitly rather than relying on \`command -v\`.
35
+ if [ ! -x "$NODE_BIN" ]; then
36
+ for candidate in /opt/homebrew/bin/node /usr/local/bin/node /usr/bin/node "$(command -v node 2>/dev/null || true)"; do
37
+ if [ -n "$candidate" ] && [ -x "$candidate" ]; then NODE_BIN="$candidate"; break; fi
38
+ done
39
+ fi
40
+
41
+ warmup_log_failure() {
42
+ ts="$(date -u +%Y-%m-%dT%H:%M:%S.000Z)"
43
+ day="$(date +%Y-%m-%d)"
44
+ printf '{"timestamp":"%s","status":"failed","message":"%s"}\\n' "$ts" "$1" >> "$WARMUP_LOG_DIR/$day.log"
45
+ }
46
+
47
+ if [ ! -x "$NODE_BIN" ]; then
48
+ warmup_log_failure "Node.js runtime not found - re-run: warmup setup"
49
+ echo "warmup: Node.js runtime not found" >&2
50
+ exit 1
51
+ fi
52
+
53
+ if [ ! -e "$CLI_ENTRY" ]; then
54
+ warmup_log_failure "warmup CLI entry missing - re-run: warmup setup"
55
+ echo "warmup: CLI entry not found at $CLI_ENTRY" >&2
56
+ exit 1
57
+ fi
58
+
59
+ "$NODE_BIN" "$CLI_ENTRY" _execute-warmup >> "$WARMUP_LOG_DIR/${logFileName}" 2>&1
60
+ `;
61
+ }
62
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/scheduler/script.ts"],"names":[],"mappings":";;AAqBA,wDAuCC;AA1DD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,sBAAsB,CAAC,OAAqB,EAAE,WAAmB;IAC/E,OAAO;;;;;;WAME,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DA6BuB,WAAW;CACzE,CAAC;AACF,CAAC"}
@@ -92,7 +92,7 @@ function installWindowsSchedule(options) {
92
92
  const psCommand = `
93
93
  $task = Get-ScheduledTask -TaskName '${TASK_NAME}'
94
94
  $task.Settings.StartWhenAvailable = $true
95
- $task.Settings.WakeToRun = $false
95
+ $task.Settings.WakeToRun = $true
96
96
  $task.Settings.DisallowStartIfOnBatteries = $false
97
97
  $task.Settings.StopIfGoingOnBatteries = $false
98
98
  Set-ScheduledTask -InputObject $task