@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.
- package/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/commands/execute.d.ts +6 -0
- package/dist/commands/execute.d.ts.map +1 -0
- package/dist/commands/execute.js +52 -0
- package/dist/commands/execute.js.map +1 -0
- package/dist/commands/pause.d.ts +2 -0
- package/dist/commands/pause.d.ts.map +1 -0
- package/dist/commands/pause.js +18 -0
- package/dist/commands/pause.js.map +1 -0
- package/dist/commands/resume.d.ts +2 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +18 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +173 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +14 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/test.d.ts +2 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +27 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/uninstall.d.ts +2 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +38 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +112 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +320 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +91 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scheduler/index.d.ts +15 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +103 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/linux.d.ts +12 -0
- package/dist/scheduler/linux.d.ts.map +1 -0
- package/dist/scheduler/linux.js +301 -0
- package/dist/scheduler/linux.js.map +1 -0
- package/dist/scheduler/macos.d.ts +16 -0
- package/dist/scheduler/macos.d.ts.map +1 -0
- package/dist/scheduler/macos.js +170 -0
- package/dist/scheduler/macos.js.map +1 -0
- package/dist/scheduler/windows.d.ts +14 -0
- package/dist/scheduler/windows.d.ts.map +1 -0
- package/dist/scheduler/windows.js +139 -0
- package/dist/scheduler/windows.js.map +1 -0
- package/dist/ui.d.ts +19 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +329 -0
- package/dist/ui.js.map +1 -0
- package/dist/warmup.d.ts +32 -0
- package/dist/warmup.d.ts.map +1 -0
- package/dist/warmup.js +154 -0
- package/dist/warmup.js.map +1 -0
- 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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"}
|
package/dist/warmup.d.ts
ADDED
|
@@ -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":";;AAYA,8CAWC;AAGD,sDAYC;AAGD,4CAcC;AAUD,sCAgFC;AAYD,8CAsBC;AAnLD,iDAA0C;AAC1C,qCAOkB;AAClB,uCAAkD;AAElD,4CAA4C;AAC5C,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;YAChD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,SAAgB,qBAAqB;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;YAC/D,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,OAAO,IAAA,+BAAqB,EAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,SAAgB,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;YAChD,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,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AASD,uEAAuE;AACvE,SAAgB,aAAa,CAAC,iBAA0B,KAAK;IAC3D,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,QAAQ,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE;YACzE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK,EAAE,oBAAoB;YACpC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE;SAClD,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAa;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;gBACpD,OAAO,EAAE,cAAc;oBACrB,CAAC,CAAC,qEAAqE;oBACvE,CAAC,CAAC,gCAAgC;gBACpC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;gBACjD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;oBACjD,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,IAAI;iBACb,CAAC;aACH,CAAC;YACF,IAAA,iBAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE7B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,cAAc;oBACrB,CAAC,CAAC,8BAA8B;oBAChC,CAAC,CAAC,6BAA6B;gBACjC,QAAQ;gBACR,cAAc;aACf,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC;YAC1D,MAAM,QAAQ,GAAa;gBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,oBAAoB,QAAQ,EAAE;gBACvC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;gBACjD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;oBACjD,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,IAAI;iBACb,CAAC;aACH,CAAC;YACF,IAAA,iBAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,WAAW,QAAQ,EAAE;gBAC9B,QAAQ;gBACR,cAAc;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,QAAQ,GAAa;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,mBAAmB,GAAG,CAAC,OAAO,EAAE;SAC1C,CAAC;QACF,IAAA,iBAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,UAAU,GAAG,CAAC,OAAO,EAAE;YAChC,QAAQ;YACR,cAAc;SACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,MAEjC,EAAE,MAAY,IAAI,IAAI,EAAE;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3C,MAAM,cAAc,GAAG,IAAA,iCAAwB,EAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EACxB,GAAG,CACJ,CAAC;IAEF,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,6BAA6B,GAAG,IAAA,yCAAgC,EACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EACxB,GAAG,CACJ,CAAC;IAEF,OAAO,CAAC,IAAA,8BAAqB,EAAC,6BAA6B,CAAC,CAAC;AAC/D,CAAC"}
|
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
|
+
}
|