@mohitkumawat/warmup-cli 1.2.16 → 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.
@@ -0,0 +1,185 @@
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.buildMenuChoices = buildMenuChoices;
7
+ exports.filterMenuChoices = filterMenuChoices;
8
+ exports.runInteractiveHome = runInteractiveHome;
9
+ const inquirer_1 = __importDefault(require("inquirer"));
10
+ const inquirer_autocomplete_prompt_1 = __importDefault(require("inquirer-autocomplete-prompt"));
11
+ const config_1 = require("../config");
12
+ const ui_1 = require("../ui");
13
+ const status_1 = require("./status");
14
+ const update_1 = require("./update");
15
+ const test_1 = require("./test");
16
+ const pause_1 = require("./pause");
17
+ const resume_1 = require("./resume");
18
+ const uninstall_1 = require("./uninstall");
19
+ const doctor_1 = require("./doctor");
20
+ // Enable the slash-command-style "type to filter" menu (substring match over
21
+ // the visible labels). Registered once; harmless in tests, which inject prompt.
22
+ inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
23
+ /**
24
+ * Build the interactive home-menu choices for the current config state.
25
+ * Pure and synchronous so the menu contents can be unit-tested without a TTY.
26
+ * The pause/resume entry flips to match whether the schedule is enabled.
27
+ */
28
+ function buildMenuChoices(config) {
29
+ const paused = !config.schedule.enabled;
30
+ return [
31
+ { name: 'View status', value: 'status' },
32
+ { name: 'View recent runs', value: 'logs' },
33
+ { name: 'Run health check', value: 'doctor' },
34
+ { name: 'Change schedule', value: 'update' },
35
+ { name: 'Run a pre-warm now', value: 'test' },
36
+ paused
37
+ ? { name: 'Resume daily schedule', value: 'toggle' }
38
+ : { name: 'Pause daily schedule', value: 'toggle' },
39
+ { name: 'Help / about', value: 'help' },
40
+ { name: 'Uninstall warmup', value: 'uninstall' },
41
+ { name: 'Exit', value: 'exit' },
42
+ ];
43
+ }
44
+ /**
45
+ * Autocomplete source: substring-filter the menu by what the user types (case-
46
+ * insensitive). Empty input shows everything. Returned as a factory so the
47
+ * choices are captured per frame.
48
+ */
49
+ function filterMenuChoices(choices) {
50
+ return async (_answers, input) => {
51
+ const term = (input || '').trim().toLowerCase();
52
+ if (!term)
53
+ return choices;
54
+ return choices.filter(choice => choice.name.toLowerCase().includes(term));
55
+ };
56
+ }
57
+ const defaultActions = {
58
+ status: status_1.statusCommand,
59
+ logs: async () => {
60
+ const config = (0, config_1.readConfig)();
61
+ (0, ui_1.printRecentRuns)((0, config_1.getRecentLogs)(), config?.schedule.timezone);
62
+ },
63
+ doctor: doctor_1.doctorCommand,
64
+ update: update_1.updateCommand,
65
+ test: () => (0, test_1.testCommand)({}),
66
+ pause: pause_1.pauseCommand,
67
+ resume: resume_1.resumeCommand,
68
+ help: async () => { (0, ui_1.printHubHelp)(); },
69
+ uninstall: uninstall_1.uninstallCommand,
70
+ };
71
+ const inquirerPrompt = inquirer_1.default.prompt;
72
+ const defaultWaitForKey = async () => {
73
+ await inquirerPrompt([{
74
+ type: 'input',
75
+ name: 'continue',
76
+ message: 'Press enter to return to the menu',
77
+ }]);
78
+ };
79
+ /**
80
+ * Interactive "home" hub shown when a configured user runs bare `warmup` in a
81
+ * terminal. Each frame repaints from a clean screen: the status dashboard
82
+ * (persistent header + live context), a keyboard-hint footer, then an arrow-key
83
+ * menu. Selecting an action runs it, pauses so the output is readable, then
84
+ * returns to a fresh frame — so the whole tool is browsable without retyping
85
+ * subcommands, until the user picks Exit (or confirms Uninstall).
86
+ *
87
+ * The caller gates this on an interactive TTY; non-interactive contexts keep
88
+ * the one-shot status print, so `warmup` stays scriptable and never blocks on a
89
+ * prompt (launchd/systemd/CI/pipes). The cursor is always restored on exit.
90
+ */
91
+ async function runInteractiveHome(deps = {}) {
92
+ const prompt = deps.prompt ?? inquirerPrompt;
93
+ const loadConfig = deps.readConfig ?? config_1.readConfig;
94
+ const actions = deps.actions ?? defaultActions;
95
+ const clear = deps.clearScreen ?? ui_1.clearScreen;
96
+ const waitForKey = deps.waitForKey ?? defaultWaitForKey;
97
+ try {
98
+ for (;;) {
99
+ const config = loadConfig();
100
+ if (!config) {
101
+ // Config went away mid-session (e.g. the user just uninstalled).
102
+ return;
103
+ }
104
+ // Repaint a clean frame: the dashboard is the persistent header/context.
105
+ clear();
106
+ await actions.status();
107
+ (0, ui_1.printMenuHint)();
108
+ const { action } = await prompt([{
109
+ type: 'autocomplete',
110
+ name: 'action',
111
+ message: 'What would you like to do?',
112
+ source: filterMenuChoices(buildMenuChoices(config)),
113
+ pageSize: 10,
114
+ }]);
115
+ switch (action) {
116
+ case 'status':
117
+ // The dashboard is already shown at the top of every frame; selecting
118
+ // this simply repaints (next loop iteration), so nothing else to do.
119
+ break;
120
+ case 'logs':
121
+ await actions.logs();
122
+ await waitForKey();
123
+ break;
124
+ case 'doctor':
125
+ await actions.doctor();
126
+ await waitForKey();
127
+ break;
128
+ case 'update':
129
+ await actions.update();
130
+ await waitForKey();
131
+ break;
132
+ case 'test': {
133
+ // Firing here consumes a real 5-hour window — never one keystroke away
134
+ // by accident. Confirm before spending it.
135
+ const { confirmTest } = await prompt([{
136
+ type: 'confirm',
137
+ name: 'confirmTest',
138
+ message: 'Send a real pre-warm now? This starts a fresh 5-hour window.',
139
+ default: false,
140
+ }]);
141
+ if (confirmTest) {
142
+ await actions.test();
143
+ await waitForKey();
144
+ }
145
+ break;
146
+ }
147
+ case 'toggle':
148
+ if (config.schedule.enabled) {
149
+ await actions.pause();
150
+ }
151
+ else {
152
+ await actions.resume();
153
+ }
154
+ await waitForKey();
155
+ break;
156
+ case 'help':
157
+ await actions.help();
158
+ await waitForKey();
159
+ break;
160
+ case 'uninstall': {
161
+ // Destructive — confirm before removing the scheduled task.
162
+ const { confirmUninstall } = await prompt([{
163
+ type: 'confirm',
164
+ name: 'confirmUninstall',
165
+ message: 'Remove the scheduled task? (your config is preserved)',
166
+ default: false,
167
+ }]);
168
+ if (confirmUninstall) {
169
+ await actions.uninstall();
170
+ return;
171
+ }
172
+ break;
173
+ }
174
+ case 'exit':
175
+ default:
176
+ return;
177
+ }
178
+ }
179
+ }
180
+ finally {
181
+ // inquirer hides the cursor; make sure it's back on any exit path.
182
+ (0, ui_1.showCursor)();
183
+ }
184
+ }
185
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
- export declare function statusCommand(): Promise<void>;
1
+ import { type WarmupConfig } from '../config';
2
+ export interface StatusCommandOptions {
3
+ watch?: boolean;
4
+ json?: boolean;
5
+ }
6
+ /** Structured, scriptable view of the current state (`status --json`). */
7
+ export declare function buildStatusReport(config: WarmupConfig): Record<string, unknown>;
8
+ export declare function statusCommand(options?: StatusCommandOptions): Promise<void>;
2
9
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBnD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAWD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB/E;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAerF"}
@@ -1,25 +1,99 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildStatusReport = buildStatusReport;
3
4
  exports.statusCommand = statusCommand;
4
5
  const config_1 = require("../config");
5
6
  const ui_1 = require("../ui");
6
7
  const scheduler_1 = require("../scheduler");
7
- async function statusCommand() {
8
- const config = (0, config_1.readConfig)();
8
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
9
+ /** Whether warmup owns a live macOS wake (undefined on other platforms). */
10
+ function wakeState(config) {
11
+ return (0, scheduler_1.detectPlatform)() === 'macos'
12
+ ? Boolean(config.wake) && (0, scheduler_1.isWakeScheduleActive)()
13
+ : undefined;
14
+ }
15
+ /** Structured, scriptable view of the current state (`status --json`). */
16
+ function buildStatusReport(config) {
17
+ const lastLog = (0, config_1.getLatestLog)();
18
+ const warmed = lastLog && (lastLog.status === 'success' || lastLog.status === 'boot-recovery')
19
+ ? new Date(lastLog.timestamp)
20
+ : null;
21
+ return {
22
+ version: require('../../package.json').version,
23
+ schedule: {
24
+ time: config.schedule.time,
25
+ timezone: config.schedule.timezone,
26
+ enabled: config.schedule.enabled,
27
+ },
28
+ nextFireAt: (0, config_1.getNextFireTime)(config).toISOString(),
29
+ window: warmed
30
+ ? { active: true, resetAt: (0, config_1.getWindowResetTime)(warmed).toISOString(), progress: (0, config_1.getWindowProgress)(warmed) }
31
+ : { active: false, resetAt: null, progress: null },
32
+ lastRun: lastLog
33
+ ? { status: lastLog.status, timestamp: lastLog.timestamp, actualTime: lastLog.actualTime ?? null, message: lastLog.message }
34
+ : null,
35
+ wakeScheduled: wakeState(config) ?? null,
36
+ };
37
+ }
38
+ async function statusCommand(options = {}) {
39
+ if (options.json) {
40
+ const config = (0, config_1.readConfig)();
41
+ process.stdout.write(`${JSON.stringify(config ? buildStatusReport(config) : { configured: false }, null, 2)}\n`);
42
+ return;
43
+ }
44
+ // Live mode only in a real terminal; piped/CI gets the one-shot print so it
45
+ // stays scriptable and never spins forever.
46
+ if (options.watch && process.stdout.isTTY) {
47
+ await runStatusWatch();
48
+ return;
49
+ }
50
+ await renderStatusOnce();
51
+ }
52
+ async function renderStatusOnce(existingConfig) {
53
+ const config = existingConfig ?? (0, config_1.readConfig)();
9
54
  if (!config) {
10
55
  (0, ui_1.printNotSetup)();
11
- return;
56
+ return false;
12
57
  }
13
- // Only macOS exposes a separately-managed wake; elsewhere the wake flag is
14
- // baked into the task itself, so we leave the row out. Report "scheduled"
15
- // only when warmup owns the live wake (config.wake) — a foreign pmset repeat
16
- // must not be attributed to warmup.
17
- const wakeScheduleActive = (0, scheduler_1.detectPlatform)() === 'macos'
18
- ? Boolean(config.wake) && (0, scheduler_1.isWakeScheduleActive)()
19
- : undefined;
58
+ // Only macOS exposes a separately-managed wake (wakeState returns undefined
59
+ // elsewhere, so the row is omitted); report "scheduled" only when warmup owns
60
+ // the live wake — a foreign pmset repeat must not be attributed to warmup.
20
61
  await (0, ui_1.displayStatus)(config, {
21
62
  needsRuntimeRefresh: !config.runtime,
22
- wakeScheduleActive,
63
+ wakeScheduleActive: wakeState(config),
23
64
  });
65
+ return true;
66
+ }
67
+ /**
68
+ * `warmup status --watch`: repaint the dashboard every second so the rate-limit
69
+ * window bar and the "next in …" countdown stay live. TTY-only. Ctrl+C restores
70
+ * the cursor (hidden during the ticker) and exits cleanly. Bails immediately if
71
+ * warmup isn't set up rather than looping on the not-set-up screen.
72
+ */
73
+ async function runStatusWatch() {
74
+ const onSigint = () => {
75
+ (0, ui_1.showCursor)();
76
+ process.exit(0);
77
+ };
78
+ process.on('SIGINT', onSigint);
79
+ process.stdout.write('\x1b[?25l'); // hide cursor for a stable ticker
80
+ try {
81
+ for (;;) {
82
+ const config = (0, config_1.readConfig)();
83
+ (0, ui_1.repaintFrame)();
84
+ if (!config) {
85
+ (0, ui_1.printNotSetup)();
86
+ return;
87
+ }
88
+ console.log((0, ui_1.renderStatusLine)(config));
89
+ await renderStatusOnce(config); // reuse the config we just read (one read/frame)
90
+ (0, ui_1.printWatchFooter)();
91
+ await sleep(1000);
92
+ }
93
+ }
94
+ finally {
95
+ (0, ui_1.showCursor)();
96
+ process.removeListener('SIGINT', onSigint);
97
+ }
24
98
  }
25
99
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;AAIA,sCAmBC;AAvBD,sCAAuC;AACvC,8BAAqD;AACrD,4CAAoE;AAE7D,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,kBAAa,GAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,oCAAoC;IACpC,MAAM,kBAAkB,GAAG,IAAA,0BAAc,GAAE,KAAK,OAAO;QACrD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,gCAAoB,GAAE;QAChD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,IAAA,kBAAa,EAAC,MAAM,EAAE;QAC1B,mBAAmB,EAAE,CAAC,MAAM,CAAC,OAAO;QACpC,kBAAkB;KACnB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;AAiCA,8CAqBC;AAED,sCAeC;AAvED,sCAOmB;AACnB,8BAOe;AACf,4CAAoE;AAOpE,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7F,4EAA4E;AAC5E,SAAS,SAAS,CAAC,MAAoB;IACrC,OAAO,IAAA,0BAAc,GAAE,KAAK,OAAO;QACjC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,gCAAoB,GAAE;QAChD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,0EAA0E;AAC1E,SAAgB,iBAAiB,CAAC,MAAoB;IACpD,MAAM,OAAO,GAAG,IAAA,qBAAY,GAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC;QAC5F,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC;IACT,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO;QAC9C,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAClC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;SACjC;QACD,UAAU,EAAE,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE;QACjD,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAA,2BAAkB,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAA,0BAAiB,EAAC,MAAM,CAAC,EAAE;YAC1G,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpD,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;YAC5H,CAAC,CAAC,IAAI;QACR,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI;KACzC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACjH,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,4CAA4C;IAC5C,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,cAA6B;IAC3D,MAAM,MAAM,GAAG,cAAc,IAAI,IAAA,mBAAU,GAAE,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,kBAAa,GAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,IAAA,kBAAa,EAAC,MAAM,EAAE;QAC1B,mBAAmB,EAAE,CAAC,MAAM,CAAC,OAAO;QACpC,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC;KACtC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,cAAc;IAC3B,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAA,eAAU,GAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,kCAAkC;IAErE,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAA,iBAAY,GAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAA,kBAAa,GAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAA,qBAAgB,EAAC,MAAM,CAAC,CAAC,CAAC;YACtC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,iDAAiD;YACjF,IAAA,qBAAgB,GAAE,CAAC;YACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAA,eAAU,GAAE,CAAC;QACb,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBjF"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCjF"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.testCommand = testCommand;
7
+ const ora_1 = __importDefault(require("ora"));
4
8
  const config_1 = require("../config");
5
9
  const warmup_1 = require("../warmup");
6
10
  const ui_1 = require("../ui");
@@ -16,13 +20,30 @@ async function testCommand(options = {}) {
16
20
  (0, ui_1.printNoClaudeCode)();
17
21
  return;
18
22
  }
19
- await (0, ui_1.animateTestWarmup)(isDryRun);
20
- const result = (0, warmup_1.executeWarmup)(false, isDryRun);
23
+ // Spinner tied to the REAL ping latency (async spawn) — it ticks live elapsed
24
+ // time during the actual round-trip rather than playing a canned animation
25
+ // that finishes before or after the request really does.
26
+ const label = isDryRun ? 'Simulating pre-warm' : 'Pinging Claude';
27
+ const spinner = (0, ora_1.default)({ text: `${label}…`, color: 'magenta' }).start();
28
+ const startedAt = Date.now();
29
+ const ticker = setInterval(() => {
30
+ spinner.text = `${label}… ${((Date.now() - startedAt) / 1000).toFixed(1)}s`;
31
+ }, 100);
32
+ let result;
33
+ try {
34
+ result = await (0, warmup_1.executeWarmupAsync)(false, isDryRun);
35
+ }
36
+ finally {
37
+ clearInterval(ticker);
38
+ }
21
39
  if (result.success) {
22
- await (0, ui_1.animateTestSuccess)(result.duration, isDryRun);
40
+ const secs = (result.duration / 1000).toFixed(1);
41
+ spinner.succeed(isDryRun
42
+ ? 'Dry run complete — no request sent, no limits used.'
43
+ : `Pre-warm landed in ${secs}s — your 5-hour window has started.`);
23
44
  }
24
45
  else {
25
- await (0, ui_1.animateTestFailure)(result.message);
46
+ spinner.fail(result.message);
26
47
  }
27
48
  }
28
49
  //# sourceMappingURL=test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":";;AAeA,kCAwBC;AAvCD,sCAAuC;AACvC,sCAA6D;AAC7D,8BAOe;AAMR,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,IAAA,kBAAa,GAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,kBAAa,GAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAA,0BAAiB,GAAE,EAAE,CAAC;QACzB,IAAA,sBAAiB,GAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,IAAA,sBAAiB,EAAC,QAAQ,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAA,uBAAkB,EAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,IAAA,uBAAkB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":";;;;;AASA,kCAwCC;AAjDD,8CAAsB;AACtB,sCAAuC;AACvC,sCAAkE;AAClE,8BAAwE;AAMjE,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,IAAA,kBAAa,GAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,kBAAa,GAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAA,0BAAiB,GAAE,EAAE,CAAC;QACzB,IAAA,sBAAiB,GAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAClE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9E,CAAC,EAAE,GAAG,CAAC,CAAC;IAER,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,QAAQ;YACtB,CAAC,CAAC,qDAAqD;YACvD,CAAC,CAAC,sBAAsB,IAAI,qCAAqC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
package/dist/config.d.ts CHANGED
@@ -38,6 +38,13 @@ export declare function getDateStringInTimezone(date: Date, timezone: string): s
38
38
  export declare function writeLog(entry: LogEntry, timezone: string): void;
39
39
  export declare function getLatestLog(): LogEntry | null;
40
40
  export declare function getLogsForDate(date: string): LogEntry[];
41
+ /**
42
+ * The most recent log entries across all dated files, newest first, capped at
43
+ * `limit`. Dated files are already sorted newest-first; within a day entries
44
+ * are appended oldest-first, so we walk each day's slice in reverse as we
45
+ * collect. Powers the hub's "Recent runs" view and `warmup logs`.
46
+ */
47
+ export declare function getRecentLogs(limit?: number): LogEntry[];
41
48
  export declare function hasSuccessfulRunSince(since: Date): boolean;
42
49
  /**
43
50
  * Whether any actionable outcome (a run, a recorded skip, OR a failure) exists
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;OAIG;IACH,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAOtC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAqBhD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAItD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CAYvG;AAMD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU5E;AA4BD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAehE;AAED,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAQ9C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAW1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CASpD;AAiBD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUxE;AAID,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI5D;AA4BD,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,CAWlF;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAIvD;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,CAK5D;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAQ/G;AAED,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,IAAI,CAGrH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,GAAE,MAAU,EAC5B,GAAG,GAAE,IAAiB,GACrB,OAAO,CAST"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -48,6 +48,7 @@ exports.getDateStringInTimezone = getDateStringInTimezone;
48
48
  exports.writeLog = writeLog;
49
49
  exports.getLatestLog = getLatestLog;
50
50
  exports.getLogsForDate = getLogsForDate;
51
+ exports.getRecentLogs = getRecentLogs;
51
52
  exports.hasSuccessfulRunSince = hasSuccessfulRunSince;
52
53
  exports.hasOutcomeSince = hasOutcomeSince;
53
54
  exports.detectTimezone = detectTimezone;
@@ -195,6 +196,26 @@ function getLatestLog() {
195
196
  function getLogsForDate(date) {
196
197
  return readLogFile(`${date}.log`);
197
198
  }
199
+ /**
200
+ * The most recent log entries across all dated files, newest first, capped at
201
+ * `limit`. Dated files are already sorted newest-first; within a day entries
202
+ * are appended oldest-first, so we walk each day's slice in reverse as we
203
+ * collect. Powers the hub's "Recent runs" view and `warmup logs`.
204
+ */
205
+ function getRecentLogs(limit = 10) {
206
+ if (limit <= 0)
207
+ return [];
208
+ const recent = [];
209
+ for (const file of getDatedLogFiles()) {
210
+ const entries = readLogFile(file);
211
+ for (let i = entries.length - 1; i >= 0; i--) {
212
+ recent.push(entries[i]);
213
+ if (recent.length >= limit)
214
+ return recent;
215
+ }
216
+ }
217
+ return recent;
218
+ }
198
219
  function hasSuccessfulRunSince(since) {
199
220
  const threshold = since.getTime();
200
221
  return getDatedLogFiles().some(file => readLogFile(file).some(entry => {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,oCAEC;AAED,8CAEC;AAED,gCAEC;AAED,0CAOC;AAED,oCAEC;AAED,gCAqBC;AAED,kCAIC;AAED,kDAYC;AAMD,0DAUC;AA4BD,4BAeC;AAED,oCAQC;AAED,wCAEC;AAQD,sCAWC;AAED,sDAWC;AAQD,0CASC;AAiBD,wCAEC;AAED,0CAOC;AAED,kDAUC;AAKD,gCAIC;AA6BD,0CAWC;AAGD,gDAIC;AAGD,8CAKC;AAED,4DAQC;AAED,4EAGC;AAMD,kDAcC;AAlXD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,kDAA0B;AA8B1B,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AACpD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE/C,SAAgB,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,eAAe;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,UAAU;IACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;QAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;YAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1C,OAAO,MAAM,CAAC,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC;YAC9C,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;YAC9B,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;YAC3D,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAC/B,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,MAAoB;IAC9C,eAAe,EAAE,CAAC;IAClB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,QAAgB,EAAE,OAAqB;IACvF,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE;YACR,IAAI;YACJ,QAAQ;YACR,OAAO,EAAE,IAAI;SACd;QACD,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,gBAAgB;AAEhB,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB,SAAgB,uBAAuB,CAAC,IAAU,EAAE,QAAgB;IAClE,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;SAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C,IAAI,EAAE;SACN,OAAO,EAAE,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAqB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAe,EAAE,QAAgB;IACxD,eAAe,EAAE,CAAC;IAClB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1C,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1C,qEAAqE;IACrE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,aAAa,GAAG,IAAI,CAAC;QACrB,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAgB,YAAY;IAC1B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,WAAW,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE;IAC9C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK;gBAAE,OAAO,MAAM,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAW;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAElC,OAAO,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACpE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC;IAC5D,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAW;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3E,OAAO,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC;IAC5D,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,iBAAiB;AAEjB,SAAgB,cAAc;IAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,SAAgB,eAAe,CAAC,IAAU,EAAE,QAAgB;IAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACtC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAU,EAAE,QAAgB;IAC9D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClC,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC;AAED,0BAA0B;AAE1B,yEAAyE;AACzE,SAAgB,UAAU,CAAC,IAAY,EAAE,GAAW;IAClD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED,yBAAyB;AAEzB;;;GAGG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,MAAY,IAAI,IAAI,EAAE;IAChE,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,+DAA+D;IAC/D,IAAI,IAAI,KAAK,EAAE;QAAE,IAAI,GAAG,CAAC,CAAC;IAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,oDAAoD;AACpD,SAAgB,eAAe,CAAC,MAAoB,EAAE,MAAY,IAAI,IAAI,EAAE;IAC1E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAErF,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;IAC1C,IAAI,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;IAC5C,IAAI,WAAW,IAAI,CAAC;QAAE,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW;IAEzD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,gEAAgE;AAChE,SAAgB,kBAAkB,CAAC,QAAc;IAC/C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kEAAkE;AAClE,SAAgB,iBAAiB,CAAC,YAAkB;IAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,wBAAwB,CAAC,YAAoB,EAAE,QAAgB,EAAE,MAAY,IAAI,IAAI,EAAE;IACrG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;IAEpC,OAAO,CAAC,UAAU,GAAG,YAAY,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,gCAAgC,CAAC,YAAoB,EAAE,QAAgB,EAAE,MAAY,IAAI,IAAI,EAAE;IAC7G,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpF,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,QAAgB,EAChB,mBAA2B,CAAC,EAC5B,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IAEjD,OAAO,IAAI,IAAI,gBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,gBAAgB,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,aAAa,IAAI,OAAO,CAwEvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,aAAa,IAAI,OAAO,CAuGvC"}
package/dist/index.js CHANGED
@@ -11,6 +11,8 @@ const pause_1 = require("./commands/pause");
11
11
  const resume_1 = require("./commands/resume");
12
12
  const update_1 = require("./commands/update");
13
13
  const uninstall_1 = require("./commands/uninstall");
14
+ const logs_1 = require("./commands/logs");
15
+ const doctor_1 = require("./commands/doctor");
14
16
  const execute_1 = require("./commands/execute");
15
17
  function createProgram() {
16
18
  const program = new commander_1.Command();
@@ -18,7 +20,17 @@ function createProgram() {
18
20
  .name('warmup')
19
21
  .description('Pre-warm your Claude rate limits while you sleep.')
20
22
  .version(require("../package.json").version);
21
- ;
23
+ program.addHelpText('after', `
24
+ Examples:
25
+ $ warmup Open the interactive hub (or first-run setup)
26
+ $ warmup setup Run the guided setup wizard
27
+ $ warmup status Show schedule + live rate-limit window
28
+ $ warmup doctor Health-check your setup
29
+ $ warmup test --dry-run Simulate a pre-warm (no real request)
30
+ $ warmup logs -n 20 Show the last 20 runs
31
+ $ warmup pause / resume Pause or resume the daily schedule
32
+
33
+ Run a command with no setup yet? warmup walks you through it.`);
22
34
  program
23
35
  .command('setup')
24
36
  .description('Set up warmup with your preferred pre-warm time')
@@ -28,8 +40,10 @@ function createProgram() {
28
40
  program
29
41
  .command('status')
30
42
  .description('Show your schedule, last run, and rate limit window progress')
31
- .action(async () => {
32
- await (0, status_1.statusCommand)();
43
+ .option('-w, --watch', 'Continuously refresh the dashboard (ctrl-c to exit)')
44
+ .option('--json', 'Output the status as JSON (scriptable; no colors)')
45
+ .action(async (options) => {
46
+ await (0, status_1.statusCommand)({ watch: options.watch, json: options.json });
33
47
  });
34
48
  program
35
49
  .command('test')
@@ -63,6 +77,21 @@ function createProgram() {
63
77
  .action(async () => {
64
78
  await (0, uninstall_1.uninstallCommand)();
65
79
  });
80
+ program
81
+ .command('logs')
82
+ .description('Show recent pre-warm run history')
83
+ .option('-n, --limit <count>', 'How many recent runs to show', (v) => parseInt(v, 10))
84
+ .option('--json', 'Output the run history as JSON (scriptable)')
85
+ .action(async (options) => {
86
+ await (0, logs_1.logsCommand)({ limit: options.limit, json: options.json });
87
+ });
88
+ program
89
+ .command('doctor')
90
+ .description('Run a health check on your warmup setup')
91
+ .option('--json', 'Output the health check as JSON; exits non-zero on failures')
92
+ .action(async (options) => {
93
+ await (0, doctor_1.doctorCommand)({ json: options.json });
94
+ });
66
95
  program
67
96
  .command('_execute-warmup', { hidden: true })
68
97
  .description('Internal: execute pre-warm (called by OS scheduler)')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}