@mohitkumawat/warmup-cli 1.1.3 → 1.2.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.
package/README.md CHANGED
@@ -15,7 +15,7 @@ Claude Pro and Max subscribers share a **5-hour rolling rate limit window** acro
15
15
 
16
16
  ## 🟢 The Solution
17
17
 
18
- **warmup** starts your rate limit window _before_ you wake up by sending a tiny invisible message (~10 tokens) through Claude Code at a scheduled time.
18
+ **warmup** starts your rate limit window _before_ you wake up by scheduling one tiny Claude Code ping (~10 tokens) at the right time.
19
19
 
20
20
  By the time you sit down to work, the window is perfectly timed to expire exactly when you need it, granting you a **100% fresh allocation** right in the middle of your workday.
21
21
 
@@ -25,7 +25,7 @@ By the time you sit down to work, the window is perfectly timed to expire exactl
25
25
  12:00 PM → Rate limited! Must wait until 3:00 PM
26
26
 
27
27
  ✔ With Smart warmup (2-hour exhaustion):
28
- 7:00 AM → warmup sends invisible "ping"
28
+ 7:00 AM → warmup sends one tiny Claude Code ping
29
29
  10:00 AM → You start working using the active window.
30
30
  12:00 PM → You exhaust your limits. BUT the 7:00 AM window ends right now!
31
31
  12:00 PM → Window resets instantly! Full capacity continues.
@@ -42,6 +42,32 @@ npm install -g @mohitkumawat/warmup-cli
42
42
 
43
43
  **Prerequisites:** [Claude Code](https://code.claude.com) must be installed and authenticated.
44
44
 
45
+ ## 🚀 Quick Start
46
+
47
+ ```bash
48
+ warmup
49
+ ```
50
+
51
+ Fresh installs now open a **guided onboarding wizard**. If you want to skip straight to the wizard later, `warmup setup` still works too.
52
+
53
+ ## What happens
54
+
55
+ - `warmup` shows the exact scheduled Claude command before it installs anything:
56
+
57
+ ```bash
58
+ claude -p ping --max-turns 1
59
+ ```
60
+
61
+ - Setup checks Claude Code install + auth, asks about your work start time and how fast you hit limits, then shows an install preview before saving anything.
62
+ - Config and logs stay local in `~/.warmup/`.
63
+ - The scheduler runs locally through native OS tooling.
64
+
65
+ ## What does not happen
66
+
67
+ - Setup does **not** send a live Claude request or start your 5-hour window.
68
+ - `warmup` does **not** extract tokens, proxy your session, or depend on a backend service.
69
+ - Nothing is installed until you confirm the schedule preview.
70
+
45
71
  ## 🧠 Smart Setup
46
72
 
47
73
  We don't ask you to do modulo-math to figure out your 5-hour window. `warmup` uses a **Smart Scheduler**.
@@ -56,7 +82,7 @@ Just tell it:
56
82
 
57
83
  `warmup` automatically calculates the **exact optimal pre-warm time** to ensure your rate limit resets exactly the minute you run out of messages.
58
84
 
59
- That's it. The OS scheduler installs it in the background. You'll never touch it again.
85
+ Then it shows an install preview with your schedule, expected reset time, local file paths, and scheduler backend before installing the OS-native task.
60
86
 
61
87
  ## 🛡️ Bulletproof Boot-Recovery
62
88
 
@@ -0,0 +1,19 @@
1
+ import { readConfig } from '../config';
2
+ import { type SetupCommandOptions } from './setup';
3
+ interface OnboardingDependencies {
4
+ confirmStartSetup: () => Promise<boolean>;
5
+ printLogo: () => void;
6
+ printFirstRunIntro: () => void;
7
+ printSetupTransparency: () => void;
8
+ printSetupDeferred: () => void;
9
+ runSetup: (options?: SetupCommandOptions) => Promise<void>;
10
+ }
11
+ interface DefaultCommandDependencies {
12
+ readConfig: typeof readConfig;
13
+ runStatus: () => Promise<void>;
14
+ runFirstRunOnboarding: () => Promise<void>;
15
+ }
16
+ export declare function runFirstRunOnboarding(deps?: Partial<OnboardingDependencies>): Promise<void>;
17
+ export declare function defaultCommand(deps?: Partial<DefaultCommandDependencies>): Promise<'status' | 'onboarding'>;
18
+ export {};
19
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGjE,UAAU,sBAAsB;IAC9B,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,UAAU,0BAA0B;IAClC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,qBAAqB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAaD,wBAAsB,qBAAqB,CACzC,IAAI,GAAE,OAAO,CAAC,sBAAsB,CAAM,GACzC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,cAAc,CAClC,IAAI,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAC7C,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,CAYlC"}
@@ -0,0 +1,49 @@
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.runFirstRunOnboarding = runFirstRunOnboarding;
7
+ exports.defaultCommand = defaultCommand;
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const config_1 = require("../config");
10
+ const ui_1 = require("../ui");
11
+ const setup_1 = require("./setup");
12
+ const status_1 = require("./status");
13
+ async function promptToStartSetup() {
14
+ const { startSetup } = await inquirer_1.default.prompt([{
15
+ type: 'confirm',
16
+ name: 'startSetup',
17
+ message: 'Start setup now?',
18
+ default: true,
19
+ }]);
20
+ return startSetup;
21
+ }
22
+ async function runFirstRunOnboarding(deps = {}) {
23
+ const confirmStartSetup = deps.confirmStartSetup ?? promptToStartSetup;
24
+ const showLogo = deps.printLogo ?? ui_1.printLogo;
25
+ const showFirstRunIntro = deps.printFirstRunIntro ?? ui_1.printFirstRunIntro;
26
+ const showSetupTransparency = deps.printSetupTransparency ?? ui_1.printSetupTransparency;
27
+ const showSetupDeferred = deps.printSetupDeferred ?? ui_1.printSetupDeferred;
28
+ const runSetup = deps.runSetup ?? setup_1.setupCommand;
29
+ showLogo();
30
+ showFirstRunIntro();
31
+ showSetupTransparency();
32
+ if (!(await confirmStartSetup())) {
33
+ showSetupDeferred();
34
+ return;
35
+ }
36
+ await runSetup({ skipLogo: true });
37
+ }
38
+ async function defaultCommand(deps = {}) {
39
+ const loadConfig = deps.readConfig ?? config_1.readConfig;
40
+ const runStatus = deps.runStatus ?? status_1.statusCommand;
41
+ const runOnboarding = deps.runFirstRunOnboarding ?? runFirstRunOnboarding;
42
+ if (loadConfig()) {
43
+ await runStatus();
44
+ return 'status';
45
+ }
46
+ await runOnboarding();
47
+ return 'onboarding';
48
+ }
49
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":";;;;;AAqCA,sDAoBC;AAED,wCAcC;AAzED,wDAAgC;AAChC,sCAAuC;AACvC,8BAKe;AACf,mCAAiE;AACjE,qCAAyC;AAiBzC,KAAK,UAAU,kBAAkB;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IAEJ,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAAwC,EAAE;IAE1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,kBAAkB,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,cAAS,CAAC;IAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,IAAI,uBAAkB,CAAC;IACxE,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,IAAI,2BAAsB,CAAC;IACpF,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,IAAI,uBAAkB,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,oBAAY,CAAC;IAE/C,QAAQ,EAAE,CAAC;IACX,iBAAiB,EAAE,CAAC;IACpB,qBAAqB,EAAE,CAAC;IAExB,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACjC,iBAAiB,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,OAA4C,EAAE;IAE9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAU,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,sBAAa,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;IAE1E,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,EAAE,CAAC;IACtB,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,2 +1,48 @@
1
- export declare function setupCommand(): Promise<void>;
1
+ import { WarmupConfig } from '../config';
2
+ import { type InstallPreviewContent } from '../ui';
3
+ import { type RuntimePaths } from '../runtime';
4
+ export interface SetupCommandOptions {
5
+ skipLogo?: boolean;
6
+ }
7
+ export interface SetupInstallPlan extends InstallPreviewContent {
8
+ time: string;
9
+ hour: number;
10
+ minute: number;
11
+ }
12
+ interface SpinnerLike {
13
+ succeed(text: string): void;
14
+ fail(text: string): void;
15
+ }
16
+ interface ConfirmAndInstallDependencies {
17
+ printInstallPreview: (preview: InstallPreviewContent) => void;
18
+ confirmInstall: () => Promise<boolean>;
19
+ printSetupDeferred: () => void;
20
+ createInstallSpinner: (schedulerLabel: string) => SpinnerLike;
21
+ ensureConfigDir: () => void;
22
+ resolveRuntimePaths: () => RuntimePaths;
23
+ installSchedule: (options: {
24
+ hour: number;
25
+ minute: number;
26
+ runtime: RuntimePaths;
27
+ }) => void;
28
+ createDefaultConfig: (time: string, timezone: string, runtime: RuntimePaths) => WarmupConfig;
29
+ writeConfig: (config: WarmupConfig) => void;
30
+ animateSetupComplete: (config: WarmupConfig) => Promise<void>;
31
+ }
32
+ /** Generate choices for work start time (30 min increments) */
33
+ export declare function generateStartTimeChoices(): Array<{
34
+ name: string;
35
+ value: number;
36
+ }>;
37
+ /** Calculate the optimal pre-warm time based on user feedback */
38
+ export declare function calculateOptimalPrewarm(startMins: number, exhaustMins: number): {
39
+ time: string;
40
+ h: number;
41
+ m: number;
42
+ explanation: string;
43
+ };
44
+ export declare function buildSetupInstallPlan(startMins: number, exhaustMins: number, timezone: string, overrides?: Partial<Pick<SetupInstallPlan, 'schedulerLabel' | 'note'>>): SetupInstallPlan;
45
+ export declare function confirmAndInstallSchedule(plan: SetupInstallPlan, deps?: Partial<ConfirmAndInstallDependencies>): Promise<'cancelled' | 'installed' | 'failed'>;
46
+ export declare function setupCommand(options?: SetupCommandOptions): Promise<void>;
47
+ export {};
2
48
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AA6EA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA0HlD"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,YAAY,EACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EAQL,KAAK,qBAAqB,EAC3B,MAAM,OAAO,CAAC;AACf,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAKpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,UAAU,6BAA6B;IACrC,mBAAmB,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC9D,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,oBAAoB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,WAAW,CAAC;IAC9D,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,mBAAmB,EAAE,MAAM,YAAY,CAAC;IACxC,eAAe,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5F,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;IAC7F,WAAW,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBjF;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAuB7D;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM,CAAC,CAAM,GACzE,gBAAgB,CAclB;AAoBD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,gBAAgB,EACtB,IAAI,GAAE,OAAO,CAAC,6BAA6B,CAAM,GAChD,OAAO,CAAC,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC,CAoC/C;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EnF"}
@@ -3,6 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateStartTimeChoices = generateStartTimeChoices;
7
+ exports.calculateOptimalPrewarm = calculateOptimalPrewarm;
8
+ exports.buildSetupInstallPlan = buildSetupInstallPlan;
9
+ exports.confirmAndInstallSchedule = confirmAndInstallSchedule;
6
10
  exports.setupCommand = setupCommand;
7
11
  const inquirer_1 = __importDefault(require("inquirer"));
8
12
  const chalk_1 = __importDefault(require("chalk"));
@@ -25,7 +29,6 @@ function generateStartTimeChoices() {
25
29
  const label = `${h12}:${mStr} ${period}`;
26
30
  const minutesSinceMidnight = h * 60 + m;
27
31
  let suffix = '';
28
- // typical work start times
29
32
  if (h === 9 && m === 0)
30
33
  suffix = ' ← standard';
31
34
  if (h === 10 && m === 0)
@@ -40,16 +43,10 @@ function generateStartTimeChoices() {
40
43
  }
41
44
  /** Calculate the optimal pre-warm time based on user feedback */
42
45
  function calculateOptimalPrewarm(startMins, exhaustMins) {
43
- // We want the 5-hour window to end EXACTLY when they exhaust their limits.
44
- // Window End = Start Time + Exhaustion Time
45
- // Pre-warm Time = Window End - 5 hours
46
46
  let prewarmMins = startMins + exhaustMins - (5 * 60);
47
- // If exhaust time > 5 hours, pre-warm time would be *after* start time, which defeats the purpose.
48
- // Cap it so pre-warm is at absolute maximum their start time.
49
47
  if (prewarmMins > startMins) {
50
48
  prewarmMins = startMins;
51
49
  }
52
- // Handle midnight wraparound
53
50
  if (prewarmMins < 0) {
54
51
  prewarmMins += 24 * 60;
55
52
  }
@@ -63,9 +60,71 @@ function calculateOptimalPrewarm(startMins, exhaustMins) {
63
60
  const explanation = `To ensure your rate limit window resets completely at ${resetStr} exactly when you run out, we'll run the pre-warm at ${(0, config_1.formatHour)(h, m)}.`;
64
61
  return { time: timeStr, h, m, explanation };
65
62
  }
66
- async function setupCommand() {
67
- (0, ui_1.printLogo)();
68
- // Check if already set up
63
+ function buildSetupInstallPlan(startMins, exhaustMins, timezone, overrides = {}) {
64
+ const { time, h, m, explanation } = calculateOptimalPrewarm(startMins, exhaustMins);
65
+ return {
66
+ explanation,
67
+ time,
68
+ hour: h,
69
+ minute: m,
70
+ warmTime: (0, config_1.formatHour)(h, m),
71
+ timezone,
72
+ resetTime: (0, config_1.formatHour)((h + 5) % 24, m),
73
+ schedulerLabel: overrides.schedulerLabel ?? (0, scheduler_1.getSchedulerName)(),
74
+ note: overrides.note,
75
+ };
76
+ }
77
+ async function promptToConfirmInstall() {
78
+ const { confirm } = await inquirer_1.default.prompt([{
79
+ type: 'confirm',
80
+ name: 'confirm',
81
+ message: 'Install this schedule?',
82
+ default: true,
83
+ }]);
84
+ return confirm;
85
+ }
86
+ function createInstallSpinner(schedulerLabel) {
87
+ return (0, ora_1.default)({
88
+ text: `Installing schedule (${schedulerLabel})...`,
89
+ color: 'magenta',
90
+ }).start();
91
+ }
92
+ async function confirmAndInstallSchedule(plan, deps = {}) {
93
+ const showInstallPreview = deps.printInstallPreview ?? ui_1.printInstallPreview;
94
+ const confirmInstall = deps.confirmInstall ?? promptToConfirmInstall;
95
+ const showSetupDeferred = deps.printSetupDeferred ?? ui_1.printSetupDeferred;
96
+ const startInstallSpinner = deps.createInstallSpinner ?? createInstallSpinner;
97
+ const ensureDir = deps.ensureConfigDir ?? config_1.ensureConfigDir;
98
+ const resolveRuntime = deps.resolveRuntimePaths ?? runtime_1.resolveRuntimePaths;
99
+ const install = deps.installSchedule ?? scheduler_1.installSchedule;
100
+ const makeConfig = deps.createDefaultConfig ?? config_1.createDefaultConfig;
101
+ const persistConfig = deps.writeConfig ?? config_1.writeConfig;
102
+ const finishSetup = deps.animateSetupComplete ?? ui_1.animateSetupComplete;
103
+ showInstallPreview(plan);
104
+ if (!(await confirmInstall())) {
105
+ showSetupDeferred();
106
+ return 'cancelled';
107
+ }
108
+ const installSpinner = startInstallSpinner(plan.schedulerLabel);
109
+ try {
110
+ ensureDir();
111
+ const runtime = resolveRuntime();
112
+ install({ hour: plan.hour, minute: plan.minute, runtime });
113
+ const config = makeConfig(plan.time, plan.timezone, runtime);
114
+ persistConfig(config);
115
+ installSpinner.succeed('Schedule installed with boot-recovery');
116
+ await finishSetup(config);
117
+ return 'installed';
118
+ }
119
+ catch (err) {
120
+ installSpinner.fail(`Installation failed: ${err.message}`);
121
+ return 'failed';
122
+ }
123
+ }
124
+ async function setupCommand(options = {}) {
125
+ if (!options.skipLogo) {
126
+ (0, ui_1.printLogo)();
127
+ }
69
128
  const existing = (0, config_1.readConfig)();
70
129
  if (existing) {
71
130
  (0, ui_1.printAlreadySetup)(existing);
@@ -78,7 +137,7 @@ async function setupCommand() {
78
137
  if (!overwrite)
79
138
  return;
80
139
  }
81
- // Check Claude Code
140
+ (0, ui_1.printSetupTransparency)();
82
141
  const spinner = (0, ora_1.default)({
83
142
  text: 'Checking for Claude Code...',
84
143
  color: 'magenta',
@@ -89,7 +148,6 @@ async function setupCommand() {
89
148
  return;
90
149
  }
91
150
  spinner.succeed('Claude Code detected');
92
- // Check authentication
93
151
  const authSpinner = (0, ora_1.default)({
94
152
  text: 'Checking Claude Code authentication...',
95
153
  color: 'magenta',
@@ -101,11 +159,9 @@ async function setupCommand() {
101
159
  return;
102
160
  }
103
161
  authSpinner.succeed('Claude Code authenticated');
104
- // Detect timezone
105
162
  const timezone = (0, config_1.detectTimezone)();
106
163
  console.log(` ${DIM('Timezone:')} ${ACCENT(timezone)} ${DIM('(auto-detected)')}`);
107
164
  console.log('');
108
- // Smart Scheduler Questionnaire
109
165
  console.log(chalk_1.default.cyan(' Let\'s optimize your schedule based on your typical usage.'));
110
166
  console.log('');
111
167
  const { startMins } = await inquirer_1.default.prompt([{
@@ -113,7 +169,7 @@ async function setupCommand() {
113
169
  name: 'startMins',
114
170
  message: 'When do you usually start your heavy Claude usage each day?',
115
171
  choices: generateStartTimeChoices(),
116
- default: 9 * 60, // 9:00 AM
172
+ default: 9 * 60,
117
173
  pageSize: 12,
118
174
  }]);
119
175
  const { exhaustMins } = await inquirer_1.default.prompt([{
@@ -125,49 +181,11 @@ async function setupCommand() {
125
181
  { name: '1-2 hours', value: 120 },
126
182
  { name: '2-3 hours', value: 180 },
127
183
  { name: '3-4 hours', value: 240 },
128
- { name: 'I rarely hit the limit / 5+ hours', value: 300 }
184
+ { name: 'I rarely hit the limit / 5+ hours', value: 300 },
129
185
  ],
130
- default: 120, // 2 hours
186
+ default: 120,
131
187
  }]);
132
- // Calculate
133
- const { time, h, m, explanation } = calculateOptimalPrewarm(startMins, exhaustMins);
134
- const resetH = (h + 5) % 24;
135
- console.log('');
136
- console.log(` ${chalk_1.default.bgCyan.black(' OPTIMAL SCHEDULE ')}`);
137
- console.log(` ${chalk_1.default.cyan('💡')} ${DIM(explanation)}`);
138
- console.log('');
139
- console.log(` ${DIM('Pre-warm at:')} ${ACCENT((0, config_1.formatHour)(h, m))}`);
140
- console.log(` ${DIM('Window resets:')} ${ACCENT(`~${(0, config_1.formatHour)(resetH, m)}`)}`);
141
- console.log(` ${DIM('Platform:')} ${ACCENT((0, scheduler_1.getPlatformName)())}`);
142
- console.log(` ${DIM('Boot-recovery:')} ${ACCENT('enabled')}`);
143
- console.log('');
144
- const { confirm } = await inquirer_1.default.prompt([{
145
- type: 'confirm',
146
- name: 'confirm',
147
- message: 'Set up this schedule?',
148
- default: true,
149
- }]);
150
- if (!confirm) {
151
- console.log(DIM('\n Setup cancelled.\n'));
152
- return;
153
- }
154
- // Install
155
- const installSpinner = (0, ora_1.default)({
156
- text: `Installing schedule (${(0, scheduler_1.getPlatformName)()})...`,
157
- color: 'magenta',
158
- }).start();
159
- try {
160
- (0, config_1.ensureConfigDir)();
161
- const runtime = (0, runtime_1.resolveRuntimePaths)();
162
- (0, scheduler_1.installSchedule)({ hour: h, minute: m, runtime });
163
- const config = (0, config_1.createDefaultConfig)(time, timezone, runtime);
164
- (0, config_1.writeConfig)(config);
165
- installSpinner.succeed('Schedule installed with boot-recovery');
166
- // Animate the setup complete visualization
167
- await (0, ui_1.animateSetupComplete)(config);
168
- }
169
- catch (err) {
170
- installSpinner.fail(`Installation failed: ${err.message}`);
171
- }
188
+ const plan = buildSetupInstallPlan(startMins, exhaustMins, timezone);
189
+ await confirmAndInstallSchedule(plan);
172
190
  }
173
191
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";;;;;AA6EA,oCA0HC;AAvMD,wDAAgC;AAChC,kDAA0B;AAC1B,8CAAsB;AACtB,sCAOmB;AACnB,sCAAqE;AACrE,4CAAgE;AAChE,8BAA8F;AAC9F,wCAAiD;AAEjD,MAAM,MAAM,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC;AAEvB,+DAA+D;AAC/D,SAAS,wBAAwB;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACzC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,2BAA2B;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,GAAG,aAAa,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,GAAG,WAAW,CAAC;YAE9C,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,GAAG,KAAK,GAAG,MAAM,EAAE;gBACzB,KAAK,EAAE,oBAAoB;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iEAAiE;AACjE,SAAS,uBAAuB,CAAC,SAAiB,EAAE,WAAmB;IACrE,2EAA2E;IAC3E,4CAA4C;IAC5C,uCAAuC;IACvC,IAAI,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAErD,mGAAmG;IACnG,8DAA8D;IAC9D,IAAI,WAAW,GAAG,SAAS,EAAE,CAAC;QAC5B,WAAW,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,6BAA6B;IAC7B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,WAAW,IAAI,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAEpF,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;IAE9B,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,yDAAyD,QAAQ,wDAAwD,IAAA,mBAAU,EAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IAEjK,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9C,CAAC;AAEM,KAAK,UAAU,YAAY;IAChC,IAAA,cAAS,GAAE,CAAC;IAEZ,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,IAAA,sBAAiB,EAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,KAAK;aACf,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,SAAS;YAAE,OAAO;IACzB,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC;QAClB,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,IAAA,0BAAiB,GAAE,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,IAAA,sBAAiB,GAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAExC,uBAAuB;IACvB,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC;QACtB,IAAI,EAAE,wCAAwC;QAC9C,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,IAAA,8BAAqB,GAAE,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAEjD,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAA,uBAAc,GAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,6DAA6D;YACtE,OAAO,EAAE,wBAAwB,EAAE;YACnC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,UAAU;YAC3B,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,wEAAwE;YACjF,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;gBACjC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;gBACjC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;gBACjC,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,GAAG,EAAE;aAC1D;YACD,OAAO,EAAE,GAAG,EAAE,UAAU;SACzB,CAAC,CAAC,CAAC;IAEJ,YAAY;IACZ,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,IAAA,mBAAU,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,IAAI,IAAA,mBAAU,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAA,2BAAe,GAAE,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,UAAU;IACV,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC;QACzB,IAAI,EAAE,wBAAwB,IAAA,2BAAe,GAAE,MAAM;QACrD,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,IAAA,wBAAe,GAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAA,6BAAmB,GAAE,CAAC;QACtC,IAAA,2BAAe,EAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,cAAc,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAEhE,2CAA2C;QAC3C,MAAM,IAAA,yBAAoB,EAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA8DA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA+DnD"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAyDA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAkDnD"}
@@ -11,49 +11,39 @@ const config_1 = require("../config");
11
11
  const scheduler_1 = require("../scheduler");
12
12
  const ui_1 = require("../ui");
13
13
  const runtime_1 = require("../runtime");
14
+ const setup_1 = require("./setup");
14
15
  const ACCENT = chalk_1.default.hex('#6C5CE7');
15
16
  const DIM = chalk_1.default.gray;
16
- /** Generate choices for work start time (30 min increments) */
17
- function generateStartTimeChoices() {
18
- const choices = [];
19
- for (let h = 0; h < 24; h++) {
20
- for (const m of [0, 30]) {
21
- const period = h >= 12 ? 'PM' : 'AM';
22
- const h12 = h > 12 ? h - 12 : h === 0 ? 12 : h;
23
- const mStr = m.toString().padStart(2, '0');
24
- const label = `${h12}:${mStr} ${period}`;
25
- const minutesSinceMidnight = h * 60 + m;
26
- let suffix = '';
27
- if (h === 9 && m === 0)
28
- suffix = ' ← standard';
29
- if (h === 10 && m === 0)
30
- suffix = ' ← common';
31
- choices.push({
32
- name: `${label}${suffix}`,
33
- value: minutesSinceMidnight,
34
- });
35
- }
36
- }
37
- return choices;
17
+ async function promptToConfirmUpdate() {
18
+ const { confirm } = await inquirer_1.default.prompt([{
19
+ type: 'confirm',
20
+ name: 'confirm',
21
+ message: 'Update to this schedule?',
22
+ default: true,
23
+ }]);
24
+ return confirm;
38
25
  }
39
- /** Calculate the optimal pre-warm time based on user feedback */
40
- function calculateOptimalPrewarm(startMins, exhaustMins) {
41
- let prewarmMins = startMins + exhaustMins - (5 * 60);
42
- if (prewarmMins > startMins) {
43
- prewarmMins = startMins;
44
- }
45
- if (prewarmMins < 0) {
46
- prewarmMins += 24 * 60;
47
- }
48
- const h = Math.floor(prewarmMins / 60) % 24;
49
- const m = prewarmMins % 60;
50
- const timeStr = `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`;
51
- const resetMins = (prewarmMins + 5 * 60) % (24 * 60);
52
- const resetH = Math.floor(resetMins / 60);
53
- const resetM = resetMins % 60;
54
- const resetStr = (0, config_1.formatHour)(resetH, resetM);
55
- const explanation = `To ensure your rate limit window resets completely at ${resetStr} exactly when you run out, we'll run the pre-warm at ${(0, config_1.formatHour)(h, m)}.`;
56
- return { time: timeStr, h, m, explanation };
26
+ function printUpdateDeferred() {
27
+ console.log(` ${DIM('Update cancelled. Current schedule is unchanged.')}`);
28
+ console.log('');
29
+ }
30
+ function createUpdateSpinner(schedulerLabel) {
31
+ return (0, ora_1.default)({
32
+ text: `Updating schedule (${schedulerLabel})...`,
33
+ color: 'magenta',
34
+ }).start();
35
+ }
36
+ function buildUpdatedConfig(config, plan, runtime) {
37
+ return {
38
+ ...config,
39
+ schedule: {
40
+ ...config.schedule,
41
+ time: plan.time,
42
+ timezone: plan.timezone,
43
+ enabled: true,
44
+ },
45
+ runtime,
46
+ };
57
47
  }
58
48
  async function updateCommand() {
59
49
  (0, ui_1.printMiniLogo)();
@@ -69,8 +59,8 @@ async function updateCommand() {
69
59
  type: 'list',
70
60
  name: 'startMins',
71
61
  message: 'When do you usually start your heavy Claude usage each day?',
72
- choices: generateStartTimeChoices(),
73
- default: 9 * 60, // 9:00 AM
62
+ choices: (0, setup_1.generateStartTimeChoices)(),
63
+ default: 9 * 60,
74
64
  pageSize: 12,
75
65
  }]);
76
66
  const { exhaustMins } = await inquirer_1.default.prompt([{
@@ -82,31 +72,22 @@ async function updateCommand() {
82
72
  { name: '1-2 hours', value: 120 },
83
73
  { name: '2-3 hours', value: 180 },
84
74
  { name: '3-4 hours', value: 240 },
85
- { name: 'I rarely hit the limit / 5+ hours', value: 300 }
75
+ { name: 'I rarely hit the limit / 5+ hours', value: 300 },
86
76
  ],
87
- default: 120, // 2 hours
77
+ default: 120,
88
78
  }]);
89
- // Calculate
90
- const { time, h, m, explanation } = calculateOptimalPrewarm(startMins, exhaustMins);
91
- console.log('');
92
- console.log(` ${chalk_1.default.bgCyan.black(' OPTIMAL SCHEDULE ')}`);
93
- console.log(` ${chalk_1.default.cyan('💡')} ${DIM(explanation)}`);
94
- console.log('');
95
- const spinner = (0, ora_1.default)({
96
- text: 'Updating schedule...',
97
- color: 'magenta',
98
- }).start();
99
- try {
100
- config.schedule.time = time;
101
- config.schedule.enabled = true;
102
- config.runtime = (0, runtime_1.resolveRuntimePaths)();
103
- (0, scheduler_1.installSchedule)({ hour: h, minute: m, runtime: config.runtime });
104
- (0, config_1.writeConfig)(config);
105
- spinner.succeed('Schedule updated');
106
- await (0, ui_1.animateSetupComplete)(config);
107
- }
108
- catch (err) {
109
- spinner.fail(`Update failed: ${err.message}`);
110
- }
79
+ const plan = (0, setup_1.buildSetupInstallPlan)(startMins, exhaustMins, config.schedule.timezone, {
80
+ note: 'Updating the schedule will not send a live pre-warm yet.',
81
+ });
82
+ await (0, setup_1.confirmAndInstallSchedule)(plan, {
83
+ confirmInstall: promptToConfirmUpdate,
84
+ printSetupDeferred: printUpdateDeferred,
85
+ createInstallSpinner: createUpdateSpinner,
86
+ resolveRuntimePaths: runtime_1.resolveRuntimePaths,
87
+ installSchedule: scheduler_1.installSchedule,
88
+ createDefaultConfig: (_time, _timezone, runtime) => buildUpdatedConfig(config, plan, runtime),
89
+ writeConfig: config_1.writeConfig,
90
+ animateSetupComplete: ui_1.animateSetupComplete,
91
+ });
111
92
  }
112
93
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface LogEntry {
19
19
  actualTime?: string;
20
20
  }
21
21
  export declare function getConfigDir(): string;
22
+ export declare function getConfigFilePath(): string;
22
23
  export declare function getLogsDir(): string;
23
24
  export declare function ensureConfigDir(): void;
24
25
  export declare function configExists(): boolean;