sickbay 1.7.0 → 1.7.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.
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  Header
3
- } from "./chunk-MH54MN56.js";
4
- import "./chunk-QGM4M3NI.js";
3
+ } from "./chunk-J2EJZWTP.js";
5
4
 
6
5
  // src/components/DiffApp.tsx
7
6
  import React, { useState, useEffect } from "react";
@@ -120,14 +119,14 @@ function DiffApp({ projectPath, branch, jsonOutput, checks, verbose }) {
120
119
  useEffect(() => {
121
120
  (async () => {
122
121
  try {
123
- const { runSickbay } = await import("./dist-PGYV4EWK.js");
122
+ const { runSickbay } = await import("./dist-COP53OQ4.js");
124
123
  const currentReport = await runSickbay({
125
124
  projectPath,
126
125
  checks,
127
126
  verbose
128
127
  });
129
128
  try {
130
- const { saveEntry, saveLastReport } = await import("./history-BRXZYAUW.js");
129
+ const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
131
130
  saveEntry(currentReport);
132
131
  saveLastReport(currentReport);
133
132
  } catch {
@@ -1,14 +1,13 @@
1
1
  import {
2
2
  shortName
3
- } from "./chunk-LBA7NZIO.js";
3
+ } from "./chunk-GTNHWGY5.js";
4
4
  import {
5
5
  Header
6
- } from "./chunk-MH54MN56.js";
6
+ } from "./chunk-J2EJZWTP.js";
7
7
  import {
8
8
  detectPackageManager,
9
9
  detectProject
10
- } from "./chunk-4B76LQAW.js";
11
- import "./chunk-QGM4M3NI.js";
10
+ } from "./chunk-O26ERRN2.js";
12
11
 
13
12
  // src/components/DoctorApp.tsx
14
13
  import React, { useState, useEffect } from "react";
@@ -1,16 +1,15 @@
1
1
  import {
2
2
  shortName
3
- } from "./chunk-LBA7NZIO.js";
3
+ } from "./chunk-GTNHWGY5.js";
4
4
  import {
5
5
  ProgressList
6
6
  } from "./chunk-MBVA75EM.js";
7
7
  import {
8
8
  Header
9
- } from "./chunk-MH54MN56.js";
9
+ } from "./chunk-J2EJZWTP.js";
10
10
  import {
11
11
  runSickbay
12
- } from "./chunk-4B76LQAW.js";
13
- import "./chunk-QGM4M3NI.js";
12
+ } from "./chunk-O26ERRN2.js";
14
13
 
15
14
  // src/components/FixApp.tsx
16
15
  import React, { useState, useEffect, useCallback } from "react";
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  shortName
3
- } from "./chunk-LBA7NZIO.js";
3
+ } from "./chunk-GTNHWGY5.js";
4
4
  import {
5
5
  Header
6
- } from "./chunk-MH54MN56.js";
6
+ } from "./chunk-J2EJZWTP.js";
7
7
  import {
8
8
  detectProject
9
- } from "./chunk-4B76LQAW.js";
10
- import "./chunk-QGM4M3NI.js";
9
+ } from "./chunk-O26ERRN2.js";
11
10
 
12
11
  // src/components/StatsApp.tsx
13
12
  import React, { useState, useEffect } from "react";
@@ -4,16 +4,15 @@ import {
4
4
  } from "./chunk-SHO3ZXTH.js";
5
5
  import {
6
6
  shortName
7
- } from "./chunk-LBA7NZIO.js";
7
+ } from "./chunk-GTNHWGY5.js";
8
8
  import {
9
9
  Header
10
- } from "./chunk-MH54MN56.js";
11
- import "./chunk-4B76LQAW.js";
10
+ } from "./chunk-J2EJZWTP.js";
11
+ import "./chunk-O26ERRN2.js";
12
12
  import {
13
13
  detectRegressions,
14
14
  loadHistory
15
15
  } from "./chunk-3OR2GFVE.js";
16
- import "./chunk-QGM4M3NI.js";
17
16
 
18
17
  // src/components/TrendApp.tsx
19
18
  import React, { useState, useEffect } from "react";
@@ -6,19 +6,18 @@ import {
6
6
  LOADING_MESSAGES,
7
7
  UpdateNotice
8
8
  } from "./chunk-TYG7ZQBP.js";
9
+ import {
10
+ checkForUpdate
11
+ } from "./chunk-TWCTPAXQ.js";
9
12
  import {
10
13
  buildSummary,
11
14
  detectMonorepo,
12
15
  runSickbay,
13
16
  runSickbayMonorepo
14
- } from "./chunk-4B76LQAW.js";
17
+ } from "./chunk-O26ERRN2.js";
15
18
  import {
16
19
  loadHistory
17
20
  } from "./chunk-3OR2GFVE.js";
18
- import {
19
- checkForUpdate
20
- } from "./chunk-TWCTPAXQ.js";
21
- import "./chunk-QGM4M3NI.js";
22
21
 
23
22
  // src/components/tui/TuiApp.tsx
24
23
  import React11, { useState as useState8, useEffect as useEffect7, useCallback as useCallback2, useRef as useRef5 } from "react";
@@ -363,7 +362,7 @@ function useSickbayRunner({ projectPath, checks, quotes }) {
363
362
  setMonorepoReport(null);
364
363
  setReport(result);
365
364
  try {
366
- const { saveEntry } = await import("./history-BRXZYAUW.js");
365
+ const { saveEntry } = await import("./history-XLNVZEDI.js");
367
366
  saveEntry(result);
368
367
  } catch {
369
368
  }
@@ -690,7 +689,7 @@ function TuiApp({
690
689
  return () => timers.forEach(clearTimeout);
691
690
  }, []);
692
691
  useEffect7(() => {
693
- checkForUpdate("1.6.0").then((info) => {
692
+ checkForUpdate("1.7.1").then((info) => {
694
693
  if (info) setUpdateInfo(info);
695
694
  });
696
695
  }, []);
@@ -711,13 +710,13 @@ function TuiApp({
711
710
  if (prevScore !== null) setPreviousScore(prevScore);
712
711
  setLastScanTime(/* @__PURE__ */ new Date());
713
712
  try {
714
- const { saveLastReport } = await import("./history-BRXZYAUW.js");
713
+ const { saveLastReport } = await import("./history-XLNVZEDI.js");
715
714
  saveLastReport(result);
716
715
  } catch {
717
716
  }
718
717
  try {
719
- const { getDependencyTree } = await import("./dist-PGYV4EWK.js");
720
- const { saveDepTree } = await import("./history-BRXZYAUW.js");
718
+ const { getDependencyTree } = await import("./dist-COP53OQ4.js");
719
+ const { saveDepTree } = await import("./history-XLNVZEDI.js");
721
720
  const tree = await getDependencyTree(projectPath, result.projectInfo.packageManager);
722
721
  saveDepTree(projectPath, tree);
723
722
  } catch {
@@ -733,7 +732,7 @@ function TuiApp({
733
732
  setTimeout(() => setScoreFlash(void 0), 600);
734
733
  }
735
734
  try {
736
- const { loadHistory: loadHistory2, detectRegressions } = await import("./history-BRXZYAUW.js");
735
+ const { loadHistory: loadHistory2, detectRegressions } = await import("./history-XLNVZEDI.js");
737
736
  const history = loadHistory2(projectPath);
738
737
  if (history) {
739
738
  const regressions = detectRegressions(history.entries);
@@ -820,11 +819,11 @@ function TuiApp({
820
819
  const webReport = monorepoReportRef.current ?? reportRef.current;
821
820
  if (!webReport) return;
822
821
  try {
823
- const { serveWeb } = await import("./web-KVY53X2F.js");
822
+ const { serveWeb } = await import("./web-XBUBGSTP.js");
824
823
  const { default: openBrowser } = await import("open");
825
824
  let aiService;
826
825
  if (withAI && process.env.ANTHROPIC_API_KEY && !monorepoReportRef.current) {
827
- const { createAIService } = await import("./ai-3LAZ6FTQ.js");
826
+ const { createAIService } = await import("./ai-7DGOLNJX.js");
828
827
  aiService = createAIService(process.env.ANTHROPIC_API_KEY);
829
828
  addActivity("info", "Launching web dashboard with AI...");
830
829
  } else {
@@ -1,5 +1,3 @@
1
- import "./chunk-QGM4M3NI.js";
2
-
3
1
  // src/services/ai.ts
4
2
  import Anthropic from "@anthropic-ai/sdk";
5
3
  function createAIService(apiKey) {
@@ -1,5 +1,3 @@
1
- import "./chunk-QGM4M3NI.js";
2
-
3
1
  // src/commands/badge.ts
4
2
  import { existsSync, readFileSync } from "fs";
5
3
  import { join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  detectMonorepo
3
- } from "./chunk-4B76LQAW.js";
3
+ } from "./chunk-O26ERRN2.js";
4
4
 
5
5
  // src/lib/resolve-package.ts
6
6
  import { readFileSync } from "fs";
@@ -11,7 +11,7 @@ var ASCII_ART = `
11
11
  A vitals health check for your app
12
12
  `.trim();
13
13
  function Header({ projectName }) {
14
- return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.6.0")), projectName && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " Analyzing "), /* @__PURE__ */ React.createElement(Text, { bold: true, color: "white" }, projectName)));
14
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.7.1")), projectName && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " Analyzing "), /* @__PURE__ */ React.createElement(Text, { bold: true, color: "white" }, projectName)));
15
15
  }
16
16
 
17
17
  export {
@@ -137,7 +137,7 @@ async function loadConfig(projectPath) {
137
137
  const configPath = CONFIG_FILES.map((f) => join(projectPath, f)).find((p) => existsSync(p));
138
138
  if (!configPath) return null;
139
139
  try {
140
- const { createJiti } = await import("./jiti-CG52ZJTF.js");
140
+ const { createJiti } = await import("jiti");
141
141
  const jiti = createJiti(projectPath);
142
142
  const mod = await jiti.import(configPath);
143
143
  const config = mod.default ?? mod;
package/dist/config.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  defineConfig
3
- } from "./chunk-4B76LQAW.js";
4
- import "./chunk-QGM4M3NI.js";
3
+ } from "./chunk-O26ERRN2.js";
5
4
  export {
6
5
  defineConfig
7
6
  };
@@ -21,8 +21,7 @@ import {
21
21
  runSickbay,
22
22
  runSickbayMonorepo,
23
23
  validateConfig
24
- } from "./chunk-4B76LQAW.js";
25
- import "./chunk-QGM4M3NI.js";
24
+ } from "./chunk-O26ERRN2.js";
26
25
  export {
27
26
  CRITICAL_LINES,
28
27
  SCORE_EXCELLENT,
@@ -5,7 +5,6 @@ import {
5
5
  saveEntry,
6
6
  saveLastReport
7
7
  } from "./chunk-3OR2GFVE.js";
8
- import "./chunk-QGM4M3NI.js";
9
8
  export {
10
9
  detectRegressions,
11
10
  loadHistory,
package/dist/index.js CHANGED
@@ -8,13 +8,12 @@ import {
8
8
  } from "./chunk-TYG7ZQBP.js";
9
9
  import {
10
10
  Header
11
- } from "./chunk-MH54MN56.js";
11
+ } from "./chunk-J2EJZWTP.js";
12
12
  import {
13
13
  getScoreEmoji,
14
14
  runSickbay,
15
15
  runSickbayMonorepo
16
- } from "./chunk-4B76LQAW.js";
17
- import "./chunk-QGM4M3NI.js";
16
+ } from "./chunk-O26ERRN2.js";
18
17
 
19
18
  // src/index.ts
20
19
  import { existsSync } from "fs";
@@ -177,8 +176,8 @@ function App({
177
176
  setMonorepoReport(r);
178
177
  setProjectName(`monorepo (${r.packages.length} packages)`);
179
178
  try {
180
- const { getDependencyTree } = await import("./dist-PGYV4EWK.js");
181
- const { saveDepTree } = await import("./history-BRXZYAUW.js");
179
+ const { getDependencyTree } = await import("./dist-COP53OQ4.js");
180
+ const { saveDepTree } = await import("./history-XLNVZEDI.js");
182
181
  const packages = {};
183
182
  for (const pkg of r.packages) {
184
183
  packages[pkg.name] = await getDependencyTree(pkg.path, r.packageManager);
@@ -189,11 +188,11 @@ function App({
189
188
  if (openWeb) {
190
189
  setPhase("opening-web");
191
190
  try {
192
- const { serveWeb } = await import("./web-KVY53X2F.js");
191
+ const { serveWeb } = await import("./web-XBUBGSTP.js");
193
192
  const { default: openBrowser } = await import("open");
194
193
  let aiService;
195
194
  if (enableAI && process.env.ANTHROPIC_API_KEY) {
196
- const { createAIService } = await import("./ai-3LAZ6FTQ.js");
195
+ const { createAIService } = await import("./ai-7DGOLNJX.js");
197
196
  aiService = createAIService(process.env.ANTHROPIC_API_KEY);
198
197
  }
199
198
  const url = await serveWeb(r, 3030, aiService);
@@ -240,14 +239,14 @@ function App({
240
239
  setProjectName(r.projectInfo.name);
241
240
  setReport(r);
242
241
  try {
243
- const { saveEntry, saveLastReport } = await import("./history-BRXZYAUW.js");
242
+ const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
244
243
  saveEntry(r);
245
244
  saveLastReport(r);
246
245
  } catch {
247
246
  }
248
247
  try {
249
- const { getDependencyTree } = await import("./dist-PGYV4EWK.js");
250
- const { saveDepTree } = await import("./history-BRXZYAUW.js");
248
+ const { getDependencyTree } = await import("./dist-COP53OQ4.js");
249
+ const { saveDepTree } = await import("./history-XLNVZEDI.js");
251
250
  const tree = await getDependencyTree(projectPath, r.projectInfo.packageManager);
252
251
  saveDepTree(projectPath, tree);
253
252
  } catch {
@@ -255,11 +254,11 @@ function App({
255
254
  if (openWeb) {
256
255
  setPhase("opening-web");
257
256
  try {
258
- const { serveWeb } = await import("./web-KVY53X2F.js");
257
+ const { serveWeb } = await import("./web-XBUBGSTP.js");
259
258
  const { default: openBrowser } = await import("open");
260
259
  let aiService;
261
260
  if (enableAI && process.env.ANTHROPIC_API_KEY) {
262
- const { createAIService } = await import("./ai-3LAZ6FTQ.js");
261
+ const { createAIService } = await import("./ai-7DGOLNJX.js");
263
262
  aiService = createAIService(process.env.ANTHROPIC_API_KEY);
264
263
  }
265
264
  const url = await serveWeb(r, 3030, aiService);
@@ -304,7 +303,7 @@ if (existsSync(globalConfigPath)) {
304
303
  }
305
304
  config({ debug: false, quiet: true });
306
305
  var program = new Command();
307
- program.name("sickbay").description("React project health check CLI").version("1.6.0", "-v, --version").enablePositionalOptions().passThroughOptions().option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single named package (monorepo only)").option("--json", "output raw JSON report").option("--web", "open web dashboard after scan").option("--no-ai", "disable AI features").option("--no-quotes", "suppress personality quotes in output").option("--verbose", "show verbose output").action(async (options) => {
306
+ program.name("sickbay").description("React project health check CLI").version("1.7.1", "-v, --version").enablePositionalOptions().passThroughOptions().option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single named package (monorepo only)").option("--json", "output raw JSON report").option("--web", "open web dashboard after scan").option("--no-ai", "disable AI features").option("--no-quotes", "suppress personality quotes in output").option("--verbose", "show verbose output").action(async (options) => {
308
307
  if (options.path && options.path !== process.cwd()) {
309
308
  const projectEnvPath = join(options.path, ".env");
310
309
  if (existsSync(projectEnvPath)) {
@@ -313,14 +312,14 @@ program.name("sickbay").description("React project health check CLI").version("1
313
312
  }
314
313
  const updatePromise = (async () => {
315
314
  try {
316
- const { checkForUpdate } = await import("./update-check-YUUHLHGJ.js");
317
- return await checkForUpdate("1.6.0");
315
+ const { checkForUpdate } = await import("./update-check-M7IFOMLJ.js");
316
+ return await checkForUpdate("1.7.1");
318
317
  } catch {
319
318
  return null;
320
319
  }
321
320
  })();
322
321
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
323
- const { detectMonorepo, runSickbay: runSickbay2, runSickbayMonorepo: runSickbayMonorepo2 } = await import("./dist-PGYV4EWK.js");
322
+ const { detectMonorepo, runSickbay: runSickbay2, runSickbayMonorepo: runSickbayMonorepo2 } = await import("./dist-COP53OQ4.js");
324
323
  const monorepoInfo = await detectMonorepo(options.path);
325
324
  if (options.package && monorepoInfo.isMonorepo) {
326
325
  const { readFileSync } = await import("fs");
@@ -378,14 +377,14 @@ program.name("sickbay").description("React project health check CLI").version("1
378
377
  quotes: options.quotes
379
378
  });
380
379
  try {
381
- const { saveEntry, saveLastReport } = await import("./history-BRXZYAUW.js");
380
+ const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
382
381
  saveEntry(report);
383
382
  saveLastReport(report);
384
383
  } catch {
385
384
  }
386
385
  try {
387
- const { getDependencyTree } = await import("./dist-PGYV4EWK.js");
388
- const { saveDepTree } = await import("./history-BRXZYAUW.js");
386
+ const { getDependencyTree } = await import("./dist-COP53OQ4.js");
387
+ const { saveDepTree } = await import("./history-XLNVZEDI.js");
389
388
  const tree = await getDependencyTree(options.path, report.projectInfo.packageManager);
390
389
  saveDepTree(options.path, tree);
391
390
  } catch {
@@ -407,7 +406,7 @@ program.name("sickbay").description("React project health check CLI").version("1
407
406
  );
408
407
  });
409
408
  program.command("init").description("Initialize .sickbay/ folder and run an initial baseline scan").option("-p, --path <path>", "project path to initialize", process.cwd()).action(async (options) => {
410
- const { initSickbay } = await import("./init-IQDCNRIK.js");
409
+ const { initSickbay } = await import("./init-NAO4S7IP.js");
411
410
  await initSickbay(options.path);
412
411
  });
413
412
  program.command("fix").description("Interactively fix issues found by sickbay scan").option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single package (monorepo only)").option("--all", "apply all available fixes without prompting").option("--dry-run", "show what would be fixed without executing").option("--verbose", "show verbose output").action(async (options) => {
@@ -417,9 +416,9 @@ program.command("fix").description("Interactively fix issues found by sickbay sc
417
416
  config({ path: projectEnvPath, override: true });
418
417
  }
419
418
  }
420
- const { resolveProject } = await import("./resolve-package-JTAJL7Y2.js");
419
+ const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
421
420
  const resolution = await resolveProject(options.path, options.package);
422
- const { FixApp } = await import("./FixApp-YZ3CLMFB.js");
421
+ const { FixApp } = await import("./FixApp-DO75A35F.js");
423
422
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
424
423
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
425
424
  render(
@@ -442,10 +441,10 @@ program.command("trend").description("Show score history and trends over time").
442
441
  config({ path: projectEnvPath, override: true });
443
442
  }
444
443
  }
445
- const { resolveProject } = await import("./resolve-package-JTAJL7Y2.js");
444
+ const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
446
445
  const resolution = await resolveProject(options.path, options.package);
447
446
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
448
- const { TrendApp } = await import("./TrendApp-JFDKGNXF.js");
447
+ const { TrendApp } = await import("./TrendApp-RQTELT4G.js");
449
448
  render(
450
449
  React6.createElement(TrendApp, {
451
450
  projectPath,
@@ -464,10 +463,10 @@ program.command("stats").description("Show a quick codebase overview and project
464
463
  config({ path: projectEnvPath, override: true });
465
464
  }
466
465
  }
467
- const { resolveProject } = await import("./resolve-package-JTAJL7Y2.js");
466
+ const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
468
467
  const resolution = await resolveProject(options.path, options.package);
469
468
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
470
- const { StatsApp } = await import("./StatsApp-DRXR7JNK.js");
469
+ const { StatsApp } = await import("./StatsApp-ZU3M6ZEU.js");
471
470
  render(
472
471
  React6.createElement(StatsApp, {
473
472
  projectPath,
@@ -479,7 +478,7 @@ program.command("stats").description("Show a quick codebase overview and project
479
478
  );
480
479
  });
481
480
  program.command("tui").description("Launch the persistent developer dashboard").option("-p, --path <path>", "project path to monitor", process.cwd()).option("--no-watch", "disable file-watching auto-refresh").option("--no-quotes", "suppress personality quotes in output").option("--refresh <seconds>", "auto-refresh interval in seconds", "300").option("-c, --checks <checks>", "comma-separated list of checks to run").action(async (options) => {
482
- const { TuiApp } = await import("./TuiApp-WCBES43B.js");
481
+ const { TuiApp } = await import("./TuiApp-Z5SKIJ6G.js");
483
482
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
484
483
  render(
485
484
  React6.createElement(TuiApp, {
@@ -499,10 +498,10 @@ program.command("doctor").description("Diagnose project setup and configuration
499
498
  config({ path: projectEnvPath, override: true });
500
499
  }
501
500
  }
502
- const { resolveProject } = await import("./resolve-package-JTAJL7Y2.js");
501
+ const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
503
502
  const resolution = await resolveProject(options.path, options.package);
504
503
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
505
- const { DoctorApp } = await import("./DoctorApp-GS3J4DMZ.js");
504
+ const { DoctorApp } = await import("./DoctorApp-VNX6BNDX.js");
506
505
  render(
507
506
  React6.createElement(DoctorApp, {
508
507
  projectPath,
@@ -515,16 +514,16 @@ program.command("doctor").description("Diagnose project setup and configuration
515
514
  );
516
515
  });
517
516
  program.command("badge").description("Generate a health score badge for your README").option("-p, --path <path>", "project path", process.cwd()).option("--package <name>", "scope to a single package (monorepo only)").option("--html", "output HTML <img> tag instead of markdown").option("--url", "output bare badge URL only").option("--label <text>", "custom badge label", "sickbay").option("--scan", "run a fresh scan instead of using last report").action(async (options) => {
518
- const { resolveProject } = await import("./resolve-package-JTAJL7Y2.js");
517
+ const { resolveProject } = await import("./resolve-package-PF56UGTP.js");
519
518
  const resolution = await resolveProject(options.path, options.package);
520
519
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
521
- const { loadScoreFromLastReport, badgeUrl, badgeMarkdown, badgeHtml } = await import("./badge-XXUVOLVT.js");
520
+ const { loadScoreFromLastReport, badgeUrl, badgeMarkdown, badgeHtml } = await import("./badge-KQ73KEIN.js");
522
521
  let score = options.scan ? null : loadScoreFromLastReport(projectPath);
523
522
  if (score === null) {
524
- const { runSickbay: runSickbay2 } = await import("./dist-PGYV4EWK.js");
523
+ const { runSickbay: runSickbay2 } = await import("./dist-COP53OQ4.js");
525
524
  const report = await runSickbay2({ projectPath, quotes: false });
526
525
  try {
527
- const { saveEntry, saveLastReport } = await import("./history-BRXZYAUW.js");
526
+ const { saveEntry, saveLastReport } = await import("./history-XLNVZEDI.js");
528
527
  saveEntry(report);
529
528
  saveLastReport(report);
530
529
  } catch {
@@ -550,7 +549,7 @@ program.command("diff <branch>").description("Compare health score against anoth
550
549
  }
551
550
  }
552
551
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
553
- const { DiffApp } = await import("./DiffApp-D73JA3XI.js");
552
+ const { DiffApp } = await import("./DiffApp-G6CSKRKY.js");
554
553
  render(
555
554
  React6.createElement(DiffApp, {
556
555
  projectPath: options.path,
@@ -2,11 +2,10 @@ import {
2
2
  detectContext,
3
3
  getAvailableChecks,
4
4
  runSickbay
5
- } from "./chunk-4B76LQAW.js";
5
+ } from "./chunk-O26ERRN2.js";
6
6
  import {
7
7
  saveEntry
8
8
  } from "./chunk-3OR2GFVE.js";
9
- import "./chunk-QGM4M3NI.js";
10
9
 
11
10
  // src/commands/init.ts
12
11
  import { mkdirSync, writeFileSync, existsSync, readFileSync, appendFileSync } from "fs";
@@ -49,13 +48,13 @@ ${lines.join("\n")}`);
49
48
  const checkLines = checkLineGroups.join("\n\n");
50
49
  const template = `// Threshold overrides, suppressions, and more:
51
50
  // https://nebulord-dev.github.io/sickbay/guide/configuration
52
- import { defineConfig } from 'sickbay/config'
53
51
 
54
- export default defineConfig({
52
+ /** @type {import('sickbay/config').SickbayConfig} */
53
+ export default {
55
54
  checks: {
56
55
  ${checkLines}
57
56
  },
58
- })
57
+ }
59
58
  `;
60
59
  writeFileSync(configPath, template);
61
60
  console.log(`Created sickbay.config.ts`);
@@ -79,7 +78,7 @@ async function initSickbay(projectPath) {
79
78
  console.log("\u26A0 .sickbay/baseline.json already exists. Overwriting with new scan.");
80
79
  }
81
80
  console.log("Running initial scan to generate baseline...\n");
82
- const report = await runSickbay({ projectPath });
81
+ const report = await runSickbay({ projectPath, _config: null });
83
82
  writeFileSync(baselinePath, JSON.stringify(report, null, 2));
84
83
  try {
85
84
  saveEntry(report);
@@ -0,0 +1,9 @@
1
+ import {
2
+ resolveProject,
3
+ shortName
4
+ } from "./chunk-GTNHWGY5.js";
5
+ import "./chunk-O26ERRN2.js";
6
+ export {
7
+ resolveProject,
8
+ shortName
9
+ };
@@ -4,7 +4,6 @@ import {
4
4
  checkForUpdate,
5
5
  isNewerVersion
6
6
  } from "./chunk-TWCTPAXQ.js";
7
- import "./chunk-QGM4M3NI.js";
8
7
  export {
9
8
  CACHE_TTL_MS,
10
9
  REGISTRY_URL,
@@ -1,5 +1,3 @@
1
- import "./chunk-QGM4M3NI.js";
2
-
3
1
  // src/commands/web.ts
4
2
  import { readFileSync, existsSync } from "fs";
5
3
  import http from "http";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sickbay",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Zero-config health check CLI for JavaScript and TypeScript projects",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,6 +44,7 @@
44
44
  "ink": "^6.8.0",
45
45
  "ink-gradient": "^4.0.0",
46
46
  "ink-spinner": "^5.0.0",
47
+ "jiti": "^2.6.1",
47
48
  "jscpd": "^4.0.8",
48
49
  "knip": "^6.1.0",
49
50
  "license-checker": "^25.0.1",
@@ -1,37 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
- }) : x)(function(x) {
10
- if (typeof require !== "undefined") return require.apply(this, arguments);
11
- throw Error('Dynamic require of "' + x + '" is not supported');
12
- });
13
- var __commonJS = (cb, mod) => function __require2() {
14
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
- };
16
- var __copyProps = (to, from, except, desc) => {
17
- if (from && typeof from === "object" || typeof from === "function") {
18
- for (let key of __getOwnPropNames(from))
19
- if (!__hasOwnProp.call(to, key) && key !== except)
20
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
- }
22
- return to;
23
- };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30
- mod
31
- ));
32
-
33
- export {
34
- __require,
35
- __commonJS,
36
- __toESM
37
- };