@mohitkumawat/warmup-cli 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/dist/commands/execute.d.ts +6 -0
  4. package/dist/commands/execute.d.ts.map +1 -0
  5. package/dist/commands/execute.js +52 -0
  6. package/dist/commands/execute.js.map +1 -0
  7. package/dist/commands/pause.d.ts +2 -0
  8. package/dist/commands/pause.d.ts.map +1 -0
  9. package/dist/commands/pause.js +18 -0
  10. package/dist/commands/pause.js.map +1 -0
  11. package/dist/commands/resume.d.ts +2 -0
  12. package/dist/commands/resume.d.ts.map +1 -0
  13. package/dist/commands/resume.js +18 -0
  14. package/dist/commands/resume.js.map +1 -0
  15. package/dist/commands/setup.d.ts +2 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +173 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/commands/status.d.ts +2 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +14 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/test.d.ts +2 -0
  24. package/dist/commands/test.d.ts.map +1 -0
  25. package/dist/commands/test.js +27 -0
  26. package/dist/commands/test.js.map +1 -0
  27. package/dist/commands/uninstall.d.ts +2 -0
  28. package/dist/commands/uninstall.d.ts.map +1 -0
  29. package/dist/commands/uninstall.js +38 -0
  30. package/dist/commands/uninstall.js.map +1 -0
  31. package/dist/commands/update.d.ts +2 -0
  32. package/dist/commands/update.d.ts.map +1 -0
  33. package/dist/commands/update.js +112 -0
  34. package/dist/commands/update.js.map +1 -0
  35. package/dist/config.d.ts +51 -0
  36. package/dist/config.d.ts.map +1 -0
  37. package/dist/config.js +320 -0
  38. package/dist/config.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +113 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/runtime.d.ts +9 -0
  44. package/dist/runtime.d.ts.map +1 -0
  45. package/dist/runtime.js +91 -0
  46. package/dist/runtime.js.map +1 -0
  47. package/dist/scheduler/index.d.ts +15 -0
  48. package/dist/scheduler/index.d.ts.map +1 -0
  49. package/dist/scheduler/index.js +103 -0
  50. package/dist/scheduler/index.js.map +1 -0
  51. package/dist/scheduler/linux.d.ts +12 -0
  52. package/dist/scheduler/linux.d.ts.map +1 -0
  53. package/dist/scheduler/linux.js +301 -0
  54. package/dist/scheduler/linux.js.map +1 -0
  55. package/dist/scheduler/macos.d.ts +16 -0
  56. package/dist/scheduler/macos.d.ts.map +1 -0
  57. package/dist/scheduler/macos.js +170 -0
  58. package/dist/scheduler/macos.js.map +1 -0
  59. package/dist/scheduler/windows.d.ts +14 -0
  60. package/dist/scheduler/windows.d.ts.map +1 -0
  61. package/dist/scheduler/windows.js +139 -0
  62. package/dist/scheduler/windows.js.map +1 -0
  63. package/dist/ui.d.ts +19 -0
  64. package/dist/ui.d.ts.map +1 -0
  65. package/dist/ui.js +329 -0
  66. package/dist/ui.js.map +1 -0
  67. package/dist/warmup.d.ts +32 -0
  68. package/dist/warmup.d.ts.map +1 -0
  69. package/dist/warmup.js +154 -0
  70. package/dist/warmup.js.map +1 -0
  71. package/package.json +60 -0
package/dist/ui.js ADDED
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printLogo = printLogo;
7
+ exports.printMiniLogo = printMiniLogo;
8
+ exports.animateSetupComplete = animateSetupComplete;
9
+ exports.displayStatus = displayStatus;
10
+ exports.animateBootRecovery = animateBootRecovery;
11
+ exports.animateBootRecoverySuccess = animateBootRecoverySuccess;
12
+ exports.animateTestWarmup = animateTestWarmup;
13
+ exports.animateTestSuccess = animateTestSuccess;
14
+ exports.animateTestFailure = animateTestFailure;
15
+ exports.printPaused = printPaused;
16
+ exports.printResumed = printResumed;
17
+ exports.printUninstalled = printUninstalled;
18
+ exports.printNoClaudeCode = printNoClaudeCode;
19
+ exports.printNotSetup = printNotSetup;
20
+ exports.printAlreadySetup = printAlreadySetup;
21
+ const chalk_1 = __importDefault(require("chalk"));
22
+ const boxen_1 = __importDefault(require("boxen"));
23
+ const gradient_string_1 = __importDefault(require("gradient-string"));
24
+ const figures_1 = __importDefault(require("figures"));
25
+ const config_1 = require("./config");
26
+ // ── Brand Colors ──
27
+ const BRAND = (0, gradient_string_1.default)(['#6C5CE7', '#A29BFE', '#74B9FF']); // purple-blue gradient
28
+ const ACCENT = chalk_1.default.hex('#6C5CE7');
29
+ const SUCCESS = chalk_1.default.hex('#00B894');
30
+ const WARNING = chalk_1.default.hex('#FDCB6E');
31
+ const ERROR = chalk_1.default.hex('#E17055');
32
+ const DIM = chalk_1.default.gray;
33
+ const BRIGHT = chalk_1.default.white.bold;
34
+ // ── Utility ──
35
+ function sleep(ms) {
36
+ return new Promise(resolve => setTimeout(resolve, ms));
37
+ }
38
+ function pad(str, len) {
39
+ return str.padEnd(len);
40
+ }
41
+ // ── Logo / Brand ──
42
+ function printLogo() {
43
+ const logo = `
44
+ _ _
45
+ | | | |
46
+ | | | | __ _ _ __ _ __ ___ _ _ _ __
47
+ | | | |/ _\` | '__| '_ \` _ \\| | | | '_ \\
48
+ | |__| | (_| | | | | | | | | |_| | |_) |
49
+ \\____/ \\__,_|_| |_| |_| |_|\\__,_| .__/
50
+ | |
51
+ |_|
52
+ `;
53
+ console.log(BRAND(logo));
54
+ console.log(DIM(' Pre-warm your Claude rate limits while you sleep.\n'));
55
+ }
56
+ function printMiniLogo() {
57
+ console.log(`\n ${BRAND('warmup')} ${DIM('v1.0.0')}\n`);
58
+ }
59
+ // ── Post-Setup Animation ──
60
+ async function animateSetupComplete(config) {
61
+ const time = config.schedule.time;
62
+ const tz = config.schedule.timezone;
63
+ const [h, m] = time.split(':').map(Number);
64
+ const warmTime = (0, config_1.formatHour)(h, m);
65
+ const resetHour = (h + 5) % 24;
66
+ const resetTime = (0, config_1.formatHour)(resetHour, m);
67
+ console.log('');
68
+ // Animated header
69
+ const header = (0, boxen_1.default)(BRIGHT(`${figures_1.default.tick} warmup is set up!`) + '\n\n' +
70
+ DIM(`Schedule: `) + ACCENT(warmTime) + DIM(` daily (${tz})`) + '\n' +
71
+ DIM(`Window resets: ~`) + SUCCESS(resetTime), {
72
+ padding: 1,
73
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
74
+ borderStyle: 'round',
75
+ borderColor: '#6C5CE7',
76
+ });
77
+ console.log(header);
78
+ await sleep(300);
79
+ // Timeline animation
80
+ console.log(`\n ${BRIGHT('YOUR DAY')} ${BRIGHT('RATE LIMIT WINDOW')}`);
81
+ console.log(DIM(` ${'─'.repeat(52)}`));
82
+ await sleep(150);
83
+ // Build timeline entries
84
+ const timelineEntries = [];
85
+ // Pre-warm fires
86
+ timelineEntries.push({
87
+ time: warmTime,
88
+ event: `${WARNING('⚡')} Pre-warm fires`,
89
+ window: `${ACCENT('██')} Window starts`,
90
+ delay: 200,
91
+ });
92
+ // Hours ticking by (sleeping)
93
+ for (let i = 1; i < 5; i++) {
94
+ const tickHour = (h + i) % 24;
95
+ const tickTime = (0, config_1.formatHour)(tickHour, m);
96
+ const barLen = Math.min(i * 3, 12);
97
+ const bar = ACCENT('█'.repeat(barLen));
98
+ const sleepMsgs = ['You\'re sleeping', 'Still sleeping', 'Maybe awake', 'Getting ready'];
99
+ timelineEntries.push({
100
+ time: tickTime,
101
+ event: `${DIM('│')} ${DIM(sleepMsgs[i - 1])}`,
102
+ window: `${bar} ${DIM(`${i}hr`)}`,
103
+ delay: 150,
104
+ });
105
+ }
106
+ // Window resets
107
+ timelineEntries.push({
108
+ time: resetTime,
109
+ event: `${SUCCESS(figures_1.default.tick)} ${SUCCESS('Window resets!')}`,
110
+ window: `${SUCCESS('━'.repeat(12))} ${SUCCESS.bold('FRESH!')}`,
111
+ delay: 300,
112
+ });
113
+ // You start working
114
+ timelineEntries.push({
115
+ time: resetTime,
116
+ event: `${chalk_1.default.hex('#FF6B6B')('🚀')} ${BRIGHT('You start working')}`,
117
+ window: SUCCESS('Full capacity!'),
118
+ delay: 200,
119
+ });
120
+ // Print each line with animation
121
+ for (const entry of timelineEntries) {
122
+ const timePad = pad(entry.time, 10);
123
+ console.log(` ${BRIGHT(timePad)} ${pad(entry.event, 38)} ${entry.window}`);
124
+ await sleep(entry.delay);
125
+ }
126
+ await sleep(200);
127
+ console.log(DIM(` ${'─'.repeat(52)}`));
128
+ await sleep(100);
129
+ // Before / After comparison
130
+ console.log('');
131
+ console.log(` ${ERROR(figures_1.default.cross)} ${DIM('Without warmup:')} Window starts when you work, resets mid-day`);
132
+ await sleep(200);
133
+ console.log(` ${SUCCESS(figures_1.default.tick)} ${DIM('With warmup: ')} Window starts at ${ACCENT(warmTime)}, resets by ${SUCCESS(resetTime)}`);
134
+ await sleep(200);
135
+ console.log('');
136
+ console.log((0, boxen_1.default)(SUCCESS.bold(`You save ~2-3 hours of waiting every day!`), {
137
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
138
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
139
+ borderStyle: 'round',
140
+ borderColor: '#00B894',
141
+ }));
142
+ console.log('');
143
+ }
144
+ // ── Status Display ──
145
+ async function displayStatus(config, options = {}) {
146
+ printMiniLogo();
147
+ const tz = config.schedule.timezone;
148
+ const [h, m] = config.schedule.time.split(':').map(Number);
149
+ const warmTime = (0, config_1.formatHour)(h, m);
150
+ // Determine reset time: use actual fire time if available (boot-recovery),
151
+ // otherwise fall back to scheduled time + 5h
152
+ const lastLog = (0, config_1.getLatestLog)();
153
+ let resetTime;
154
+ if (lastLog && (lastLog.status === 'success' || lastLog.status === 'boot-recovery')) {
155
+ const lastFireTime = new Date(lastLog.timestamp);
156
+ const resetDate = new Date(lastFireTime.getTime() + 5 * 60 * 60 * 1000);
157
+ resetTime = resetDate.toLocaleTimeString('en-US', {
158
+ timeZone: tz,
159
+ hour: 'numeric',
160
+ minute: '2-digit',
161
+ hour12: true,
162
+ });
163
+ }
164
+ else {
165
+ const resetHour = (h + 5) % 24;
166
+ resetTime = (0, config_1.formatHour)(resetHour, m);
167
+ }
168
+ // Schedule info
169
+ const enabledStr = config.schedule.enabled
170
+ ? SUCCESS('● active')
171
+ : WARNING('○ paused');
172
+ console.log(` ${DIM('Schedule:')} ${ACCENT(warmTime)} daily ${DIM(`(${tz})`)} ${enabledStr}`);
173
+ if (options.needsRuntimeRefresh) {
174
+ console.log(` ${WARNING(figures_1.default.warning)} ${DIM('Older install detected. Run')} ${ACCENT('warmup update')} ${DIM('once to refresh scheduler scripts.')}`);
175
+ }
176
+ // Last run (lastLog already fetched above for reset time calculation)
177
+ if (lastLog) {
178
+ const statusIcon = lastLog.status === 'success' ? SUCCESS(figures_1.default.tick)
179
+ : lastLog.status === 'boot-recovery' ? WARNING('⚡')
180
+ : ERROR(figures_1.default.cross);
181
+ const statusText = lastLog.status === 'success' ? SUCCESS('success')
182
+ : lastLog.status === 'boot-recovery' ? WARNING('boot-recovery')
183
+ : ERROR('failed');
184
+ const logDate = new Date(lastLog.timestamp);
185
+ const timeStr = lastLog.actualTime || (0, config_1.formatTimeLocal)(logDate, tz);
186
+ console.log(` ${DIM('Last run:')} ${timeStr} ${statusIcon} ${statusText}`);
187
+ if (lastLog.status === 'boot-recovery') {
188
+ console.log(` ${DIM('Boot-catch:')} ${WARNING('machine was off at scheduled time')}`);
189
+ }
190
+ }
191
+ else {
192
+ console.log(` ${DIM('Last run:')} ${DIM('no runs yet')}`);
193
+ }
194
+ console.log('');
195
+ // Progress bar
196
+ if (lastLog && (lastLog.status === 'success' || lastLog.status === 'boot-recovery')) {
197
+ const lastFireTime = new Date(lastLog.timestamp);
198
+ const now = new Date();
199
+ const elapsedMs = now.getTime() - lastFireTime.getTime();
200
+ const windowMs = 5 * 60 * 60 * 1000;
201
+ const progress = Math.min(1, Math.max(0, elapsedMs / windowMs));
202
+ if (progress < 1) {
203
+ // Window is still active
204
+ const barWidth = 30;
205
+ const filled = Math.round(progress * barWidth);
206
+ const partial = Math.min(3, barWidth - filled);
207
+ const empty = barWidth - filled - partial;
208
+ const bar = ACCENT('█'.repeat(filled)) +
209
+ DIM('▓'.repeat(partial)) +
210
+ DIM('░'.repeat(empty));
211
+ const pctStr = `${Math.round(progress * 100)}%`;
212
+ console.log(` ${DIM('Window:')} [${bar}] ${BRIGHT(pctStr)} elapsed`);
213
+ // Time markers
214
+ const fireTimeStr = lastLog.actualTime || warmTime;
215
+ const nowStr = 'now';
216
+ const resetStr = resetTime;
217
+ const markerLine = ` ${fireTimeStr}${' '.repeat(Math.max(1, 12 - fireTimeStr.length))}${DIM('(now)')}${' '.repeat(Math.max(1, 15 - 5))}${resetStr}`;
218
+ console.log(DIM(markerLine));
219
+ const remainMs = windowMs - elapsedMs;
220
+ const remainHours = Math.floor(remainMs / (60 * 60 * 1000));
221
+ const remainMins = Math.floor((remainMs % (60 * 60 * 1000)) / (60 * 1000));
222
+ console.log('');
223
+ if (remainHours > 0) {
224
+ console.log(` ${SUCCESS(figures_1.default.tick)} Window resets in ~${BRIGHT(`${remainHours}h ${remainMins}m`)}. Full capacity at ${SUCCESS(resetTime)}.`);
225
+ }
226
+ else {
227
+ console.log(` ${SUCCESS(figures_1.default.tick)} Window resets in ~${BRIGHT(`${remainMins}m`)}. Almost there!`);
228
+ }
229
+ }
230
+ else {
231
+ // Window has expired
232
+ console.log(` ${DIM('Window:')} [${SUCCESS('█'.repeat(30))}] ${SUCCESS.bold('RESET!')}`);
233
+ console.log('');
234
+ console.log(` ${SUCCESS(figures_1.default.tick)} ${SUCCESS.bold('Your window has reset!')} Full capacity available.`);
235
+ }
236
+ }
237
+ else if (!config.schedule.enabled) {
238
+ console.log(` ${WARNING(figures_1.default.warning)} Schedule is paused. Run ${ACCENT('warmup resume')} to reactivate.`);
239
+ }
240
+ else {
241
+ console.log(` ${DIM('Window:')} ${DIM('waiting for first pre-warm...')}`);
242
+ }
243
+ console.log('');
244
+ }
245
+ // ── Boot Recovery Animation ──
246
+ async function animateBootRecovery(scheduledTime, actualTime) {
247
+ console.log('');
248
+ console.log(` ${WARNING('⚡')} ${WARNING.bold('warmup:')} Missed ${ACCENT(scheduledTime)} schedule ${DIM('(machine was off)')}`);
249
+ await sleep(500);
250
+ console.log(` ${WARNING('⚡')} Firing pre-warm now ${DIM(`(${actualTime})`)}...`);
251
+ await sleep(1000);
252
+ }
253
+ async function animateBootRecoverySuccess(resetTime) {
254
+ console.log(` ${SUCCESS(figures_1.default.tick)} Pre-warm sent! Window started.`);
255
+ await sleep(300);
256
+ console.log(` ${SUCCESS(figures_1.default.tick)} Your window will reset at ~${SUCCESS.bold(resetTime)}.`);
257
+ console.log('');
258
+ console.log(DIM(` Tip: Keep your machine on overnight for best results,`));
259
+ console.log(DIM(` or enable auto-wake in System Settings.`));
260
+ console.log('');
261
+ }
262
+ // ── Test Animation ──
263
+ async function animateTestWarmup() {
264
+ console.log('');
265
+ console.log(` ${ACCENT('⚡')} Sending test pre-warm...`);
266
+ await sleep(500);
267
+ }
268
+ async function animateTestSuccess(duration) {
269
+ console.log(` ${SUCCESS(figures_1.default.tick)} ${SUCCESS.bold('Pre-warm sent!')} ${DIM(`(${duration}ms)`)}`);
270
+ console.log(` ${DIM('This counted as a real pre-warm and started your rate limit window.')}`);
271
+ console.log('');
272
+ }
273
+ async function animateTestFailure(message) {
274
+ console.log(` ${ERROR(figures_1.default.cross)} ${ERROR.bold('Pre-warm failed!')}`);
275
+ console.log(` ${DIM(message)}`);
276
+ console.log('');
277
+ }
278
+ // ── Pause/Resume Messages ──
279
+ function printPaused() {
280
+ console.log('');
281
+ console.log(` ${WARNING('○')} ${WARNING.bold('Schedule paused.')}`);
282
+ console.log(` ${DIM('Run')} ${ACCENT('warmup resume')} ${DIM('to reactivate.')}`);
283
+ console.log('');
284
+ }
285
+ function printResumed(config) {
286
+ const [h, m] = config.schedule.time.split(':').map(Number);
287
+ const warmTime = (0, config_1.formatHour)(h, m);
288
+ console.log('');
289
+ console.log(` ${SUCCESS('●')} ${SUCCESS.bold('Schedule resumed!')}`);
290
+ console.log(` ${DIM('Next pre-warm at')} ${ACCENT(warmTime)} ${DIM(`(${config.schedule.timezone})`)}`);
291
+ console.log('');
292
+ }
293
+ // ── Uninstall Message ──
294
+ function printUninstalled() {
295
+ console.log('');
296
+ console.log(` ${SUCCESS(figures_1.default.tick)} ${BRIGHT('warmup has been removed.')}`);
297
+ console.log(` ${DIM('Scheduled task removed. Config preserved at ~/.warmup/')}`);
298
+ console.log(` ${DIM('To fully remove, also run:')} ${ACCENT('npm uninstall -g warmup-cli')}`);
299
+ console.log('');
300
+ }
301
+ // ── Error Messages ──
302
+ function printNoClaudeCode() {
303
+ console.log('');
304
+ console.log((0, boxen_1.default)(ERROR.bold('Claude Code not found!') + '\n\n' +
305
+ DIM('warmup requires Claude Code to be installed.\n') +
306
+ DIM('Install it at: ') + ACCENT('https://code.claude.com'), {
307
+ padding: 1,
308
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
309
+ borderStyle: 'round',
310
+ borderColor: '#E17055',
311
+ }));
312
+ console.log('');
313
+ }
314
+ function printNotSetup() {
315
+ console.log('');
316
+ console.log(` ${WARNING(figures_1.default.warning)} warmup is not set up yet.`);
317
+ console.log(` ${DIM('Run')} ${ACCENT('warmup setup')} ${DIM('to get started.')}`);
318
+ console.log('');
319
+ }
320
+ function printAlreadySetup(config) {
321
+ const [h, m] = config.schedule.time.split(':').map(Number);
322
+ const warmTime = (0, config_1.formatHour)(h, m);
323
+ console.log('');
324
+ console.log(` ${WARNING(figures_1.default.warning)} warmup is already set up.`);
325
+ console.log(` ${DIM('Current schedule:')} ${ACCENT(warmTime)} ${DIM(`(${config.schedule.timezone})`)}`);
326
+ console.log(` ${DIM('Run')} ${ACCENT('warmup update')} ${DIM('to change the time.')}`);
327
+ console.log('');
328
+ }
329
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /** Check if Claude Code CLI is installed */
2
+ export declare function isClaudeInstalled(): boolean;
3
+ /** Check if Claude Code is authenticated (has valid session) */
4
+ export declare function isClaudeAuthenticated(): boolean;
5
+ /** Get Claude Code version string */
6
+ export declare function getClaudeVersion(): string | null;
7
+ export interface WarmupResult {
8
+ success: boolean;
9
+ message: string;
10
+ duration: number;
11
+ isBootRecovery: boolean;
12
+ }
13
+ /** Execute the pre-warm: send a minimal message through Claude Code */
14
+ export declare function executeWarmup(isBootRecovery?: boolean): WarmupResult;
15
+ /**
16
+ * Boot-recovery check: determine if we should fire a pre-warm now
17
+ * because the scheduled time was missed (machine was off).
18
+ *
19
+ * Returns true only if:
20
+ * 1. Schedule is enabled
21
+ * 2. The scheduled time already passed today
22
+ * 3. We're still within the 5-hour window (otherwise it's too late)
23
+ * 4. No successful pre-warm has already run today
24
+ */
25
+ export declare function shouldBootRecover(config: {
26
+ schedule: {
27
+ time: string;
28
+ timezone: string;
29
+ enabled: boolean;
30
+ };
31
+ }, now?: Date): boolean;
32
+ //# sourceMappingURL=warmup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warmup.d.ts","sourceRoot":"","sources":["../src/warmup.ts"],"names":[],"mappings":"AAWA,4CAA4C;AAC5C,wBAAgB,iBAAiB,IAAI,OAAO,CAW3C;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,IAAI,OAAO,CAY/C;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAchD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,cAAc,GAAE,OAAe,GAAG,YAAY,CAgF3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAChE,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAoBlC"}
package/dist/warmup.js ADDED
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isClaudeInstalled = isClaudeInstalled;
4
+ exports.isClaudeAuthenticated = isClaudeAuthenticated;
5
+ exports.getClaudeVersion = getClaudeVersion;
6
+ exports.executeWarmup = executeWarmup;
7
+ exports.shouldBootRecover = shouldBootRecover;
8
+ const child_process_1 = require("child_process");
9
+ const config_1 = require("./config");
10
+ const runtime_1 = require("./runtime");
11
+ /** Check if Claude Code CLI is installed */
12
+ function isClaudeInstalled() {
13
+ try {
14
+ const result = (0, child_process_1.spawnSync)('claude', ['--version'], {
15
+ encoding: 'utf-8',
16
+ timeout: 10000,
17
+ stdio: ['pipe', 'pipe', 'pipe'],
18
+ });
19
+ return result.status === 0;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ }
25
+ /** Check if Claude Code is authenticated (has valid session) */
26
+ function isClaudeAuthenticated() {
27
+ try {
28
+ const result = (0, child_process_1.spawnSync)('claude', ['auth', 'status', '--json'], {
29
+ encoding: 'utf-8',
30
+ timeout: 10000,
31
+ stdio: ['pipe', 'pipe', 'pipe'],
32
+ });
33
+ return (0, runtime_1.parseClaudeAuthStatus)(result.stdout || '');
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ /** Get Claude Code version string */
40
+ function getClaudeVersion() {
41
+ try {
42
+ const result = (0, child_process_1.spawnSync)('claude', ['--version'], {
43
+ encoding: 'utf-8',
44
+ timeout: 10000,
45
+ stdio: ['pipe', 'pipe', 'pipe'],
46
+ });
47
+ if (result.status === 0) {
48
+ return result.stdout?.trim() || null;
49
+ }
50
+ return null;
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ /** Execute the pre-warm: send a minimal message through Claude Code */
57
+ function executeWarmup(isBootRecovery = false) {
58
+ const config = (0, config_1.readConfig)();
59
+ const startTime = Date.now();
60
+ const timezone = config?.schedule.timezone || 'UTC';
61
+ const claudeBinary = config?.runtime?.claudePath || 'claude';
62
+ try {
63
+ const result = (0, child_process_1.spawnSync)(claudeBinary, ['-p', 'ping', '--max-turns', '1'], {
64
+ encoding: 'utf-8',
65
+ timeout: 30000, // 30 second timeout
66
+ stdio: ['pipe', 'pipe', 'pipe'],
67
+ env: { ...process.env, CLAUDE_NO_ANALYTICS: '1' },
68
+ });
69
+ const duration = Date.now() - startTime;
70
+ if (result.status === 0) {
71
+ const logEntry = {
72
+ timestamp: new Date().toISOString(),
73
+ status: isBootRecovery ? 'boot-recovery' : 'success',
74
+ message: isBootRecovery
75
+ ? `Boot-recovery pre-warm executed (machine was off at scheduled time)`
76
+ : `Pre-warm executed successfully`,
77
+ scheduledTime: config?.schedule.time || 'unknown',
78
+ actualTime: new Date().toLocaleTimeString('en-US', {
79
+ timeZone: timezone,
80
+ hour: 'numeric',
81
+ minute: '2-digit',
82
+ hour12: true,
83
+ }),
84
+ };
85
+ (0, config_1.writeLog)(logEntry, timezone);
86
+ return {
87
+ success: true,
88
+ message: isBootRecovery
89
+ ? 'Boot-recovery pre-warm sent!'
90
+ : 'Pre-warm sent successfully!',
91
+ duration,
92
+ isBootRecovery,
93
+ };
94
+ }
95
+ else {
96
+ const errorMsg = result.stderr?.trim() || 'Unknown error';
97
+ const logEntry = {
98
+ timestamp: new Date().toISOString(),
99
+ status: 'failed',
100
+ message: `Pre-warm failed: ${errorMsg}`,
101
+ scheduledTime: config?.schedule.time || 'unknown',
102
+ actualTime: new Date().toLocaleTimeString('en-US', {
103
+ timeZone: timezone,
104
+ hour: 'numeric',
105
+ minute: '2-digit',
106
+ hour12: true,
107
+ }),
108
+ };
109
+ (0, config_1.writeLog)(logEntry, timezone);
110
+ return {
111
+ success: false,
112
+ message: `Failed: ${errorMsg}`,
113
+ duration,
114
+ isBootRecovery,
115
+ };
116
+ }
117
+ }
118
+ catch (err) {
119
+ const duration = Date.now() - startTime;
120
+ const logEntry = {
121
+ timestamp: new Date().toISOString(),
122
+ status: 'failed',
123
+ message: `Pre-warm error: ${err.message}`,
124
+ };
125
+ (0, config_1.writeLog)(logEntry, timezone);
126
+ return {
127
+ success: false,
128
+ message: `Error: ${err.message}`,
129
+ duration,
130
+ isBootRecovery,
131
+ };
132
+ }
133
+ }
134
+ /**
135
+ * Boot-recovery check: determine if we should fire a pre-warm now
136
+ * because the scheduled time was missed (machine was off).
137
+ *
138
+ * Returns true only if:
139
+ * 1. Schedule is enabled
140
+ * 2. The scheduled time already passed today
141
+ * 3. We're still within the 5-hour window (otherwise it's too late)
142
+ * 4. No successful pre-warm has already run today
143
+ */
144
+ function shouldBootRecover(config, now = new Date()) {
145
+ if (!config.schedule.enabled)
146
+ return false;
147
+ const elapsedMinutes = (0, config_1.getMinutesSinceScheduled)(config.schedule.time, config.schedule.timezone, now);
148
+ if (!(elapsedMinutes > 0 && elapsedMinutes < 5 * 60)) {
149
+ return false;
150
+ }
151
+ const mostRecentScheduledOccurrence = (0, config_1.getMostRecentScheduledOccurrence)(config.schedule.time, config.schedule.timezone, now);
152
+ return !(0, config_1.hasSuccessfulRunSince)(mostRecentScheduledOccurrence);
153
+ }
154
+ //# sourceMappingURL=warmup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warmup.js","sourceRoot":"","sources":["../src/warmup.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@mohitkumawat/warmup-cli",
3
+ "version": "1.1.2",
4
+ "description": "Pre-warm your Claude rate limits while you sleep. One command, zero daily effort.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "warmup": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "ts-node src/index.ts",
12
+ "start": "node dist/index.js",
13
+ "test": "ts-node test/run.ts"
14
+ },
15
+ "keywords": [
16
+ "claude",
17
+ "anthropic",
18
+ "rate-limit",
19
+ "cli",
20
+ "developer-tools",
21
+ "productivity"
22
+ ],
23
+ "author": "Mohit",
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/mohit-kumawat/warmup.git"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/mohit-kumawat/warmup/issues"
31
+ },
32
+ "homepage": "https://github.com/mohit-kumawat/warmup#readme",
33
+ "dependencies": {
34
+ "chalk": "^4.1.2",
35
+ "commander": "^11.1.0",
36
+ "inquirer": "^8.2.6",
37
+ "ora": "^5.4.1",
38
+ "boxen": "^5.1.2",
39
+ "figures": "^3.2.0",
40
+ "gradient-string": "^2.0.2"
41
+ },
42
+ "devDependencies": {
43
+ "@types/inquirer": "^8.2.10",
44
+ "@types/gradient-string": "^1.1.6",
45
+ "@types/node": "^20.11.0",
46
+ "typescript": "^5.3.3",
47
+ "ts-node": "^10.9.2"
48
+ },
49
+ "engines": {
50
+ "node": ">=16.0.0"
51
+ },
52
+ "files": [
53
+ "dist/**/*"
54
+ ],
55
+ "directories": {
56
+ "test": "test"
57
+ },
58
+ "type": "commonjs",
59
+ "types": "./dist/index.d.ts"
60
+ }