sickbay 1.16.0 → 1.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/DiffApp-DeNEtlY7.js +181 -0
- package/dist/DiffApp-DeNEtlY7.js.map +1 -0
- package/dist/DoctorApp-CaiqnhHH.js +415 -0
- package/dist/DoctorApp-CaiqnhHH.js.map +1 -0
- package/dist/FixApp-MWXohP60.js +337 -0
- package/dist/FixApp-MWXohP60.js.map +1 -0
- package/dist/StatsApp-BC4P4hII.js +372 -0
- package/dist/StatsApp-BC4P4hII.js.map +1 -0
- package/dist/TrendApp-DOBt7ITA.js +127 -0
- package/dist/TrendApp-DOBt7ITA.js.map +1 -0
- package/dist/TuiApp-D4Wn81Qv.js +1042 -0
- package/dist/TuiApp-D4Wn81Qv.js.map +1 -0
- package/dist/ai-DxA5r3hA.js +69 -0
- package/dist/ai-DxA5r3hA.js.map +1 -0
- package/dist/badge-DB3y0fWt.js +37 -0
- package/dist/badge-DB3y0fWt.js.map +1 -0
- package/dist/{claude-SN6IVGBI.js → claude-C5dUtWBJ.js} +13 -12
- package/dist/claude-C5dUtWBJ.js.map +1 -0
- package/dist/config.d.ts +27 -1
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +2 -6
- package/dist/dist-Bjhxbcak.js +5431 -0
- package/dist/dist-Bjhxbcak.js.map +1 -0
- package/dist/history-DVegAwFp.js +83 -0
- package/dist/history-DVegAwFp.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +692 -564
- package/dist/index.js.map +1 -0
- package/dist/init-Dn7eDMEp.js +199 -0
- package/dist/init-Dn7eDMEp.js.map +1 -0
- package/dist/resolve-package-DS27JBhN.js +60 -0
- package/dist/resolve-package-DS27JBhN.js.map +1 -0
- package/dist/rolldown-runtime-CiIaOW0V.js +13 -0
- package/dist/trend-D-Hufthb.js +45 -0
- package/dist/trend-D-Hufthb.js.map +1 -0
- package/dist/update-check-C7bNNfvf.js +58 -0
- package/dist/update-check-C7bNNfvf.js.map +1 -0
- package/dist/web-D5etye5Q.js +259 -0
- package/dist/web-D5etye5Q.js.map +1 -0
- package/package.json +6 -5
- package/dist/DiffApp-ASQWWDLS.js +0 -172
- package/dist/DoctorApp-SMIZDD64.js +0 -440
- package/dist/FixApp-63PU5VF7.js +0 -351
- package/dist/StatsApp-CFZBEITZ.js +0 -356
- package/dist/TrendApp-BKGRSP6Q.js +0 -106
- package/dist/TuiApp-K7KP35RC.js +0 -980
- package/dist/ai-7DGOLNJX.js +0 -64
- package/dist/badge-KQ73KEIN.js +0 -41
- package/dist/chunk-352RAVRZ.js +0 -19
- package/dist/chunk-3OR2GFVE.js +0 -90
- package/dist/chunk-DJA6K3MN.js +0 -5564
- package/dist/chunk-LZOEMCE7.js +0 -62
- package/dist/chunk-MBVA75EM.js +0 -19
- package/dist/chunk-SHO3ZXTH.js +0 -23
- package/dist/chunk-TWCTPAXQ.js +0 -73
- package/dist/chunk-VBM6NZAY.js +0 -60
- package/dist/dist-LQY3FYCP.js +0 -64
- package/dist/history-XLNVZEDI.js +0 -14
- package/dist/init-DD2HOQE2.js +0 -217
- package/dist/resolve-package-774YTW5Q.js +0 -9
- package/dist/update-check-M7IFOMLJ.js +0 -12
- package/dist/web-2KWCYTW4.js +0 -269
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
//#region src/lib/history.ts
|
|
5
|
+
var history_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
+
detectRegressions: () => detectRegressions,
|
|
7
|
+
loadHistory: () => loadHistory,
|
|
8
|
+
saveDepTree: () => saveDepTree,
|
|
9
|
+
saveEntry: () => saveEntry,
|
|
10
|
+
saveLastReport: () => saveLastReport
|
|
11
|
+
});
|
|
12
|
+
function historyFilePath(projectPath) {
|
|
13
|
+
return join(projectPath, ".sickbay", "history.json");
|
|
14
|
+
}
|
|
15
|
+
function loadHistory(projectPath) {
|
|
16
|
+
const filePath = historyFilePath(projectPath);
|
|
17
|
+
if (!existsSync(filePath)) return null;
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(readFileSync(filePath, "utf-8"));
|
|
20
|
+
} catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function saveEntry(report) {
|
|
25
|
+
mkdirSync(join(report.projectPath, ".sickbay"), { recursive: true });
|
|
26
|
+
const filePath = historyFilePath(report.projectPath);
|
|
27
|
+
const existing = loadHistory(report.projectPath) ?? {
|
|
28
|
+
projectPath: report.projectPath,
|
|
29
|
+
projectName: report.projectInfo.name,
|
|
30
|
+
entries: []
|
|
31
|
+
};
|
|
32
|
+
const categoryScores = {};
|
|
33
|
+
const categoryChecks = {};
|
|
34
|
+
for (const check of report.checks) {
|
|
35
|
+
if (check.status === "skipped") continue;
|
|
36
|
+
if (!categoryChecks[check.category]) categoryChecks[check.category] = [];
|
|
37
|
+
categoryChecks[check.category].push(check.score);
|
|
38
|
+
}
|
|
39
|
+
for (const [cat, scores] of Object.entries(categoryChecks)) categoryScores[cat] = Math.round(scores.reduce((a, b) => a + b, 0) / scores.length);
|
|
40
|
+
existing.entries.push({
|
|
41
|
+
timestamp: report.timestamp,
|
|
42
|
+
overallScore: report.overallScore,
|
|
43
|
+
categoryScores,
|
|
44
|
+
summary: { ...report.summary },
|
|
45
|
+
checksRun: report.checks.filter((c) => c.status !== "skipped").length
|
|
46
|
+
});
|
|
47
|
+
if (existing.entries.length > 100) existing.entries = existing.entries.slice(-100);
|
|
48
|
+
writeFileSync(filePath, JSON.stringify(existing, null, 2));
|
|
49
|
+
}
|
|
50
|
+
function saveLastReport(report) {
|
|
51
|
+
mkdirSync(join(report.projectPath, ".sickbay"), { recursive: true });
|
|
52
|
+
writeFileSync(join(report.projectPath, ".sickbay", "last-report.json"), JSON.stringify(report, null, 2));
|
|
53
|
+
}
|
|
54
|
+
function saveDepTree(projectPath, tree) {
|
|
55
|
+
mkdirSync(join(projectPath, ".sickbay"), { recursive: true });
|
|
56
|
+
writeFileSync(join(projectPath, ".sickbay", "dep-tree.json"), JSON.stringify(tree, null, 2));
|
|
57
|
+
}
|
|
58
|
+
function detectRegressions(entries) {
|
|
59
|
+
if (entries.length < 2) return [];
|
|
60
|
+
const latest = entries[entries.length - 1];
|
|
61
|
+
const previous = entries[entries.length - 2];
|
|
62
|
+
const regressions = [];
|
|
63
|
+
if (latest.overallScore < previous.overallScore - 5) regressions.push({
|
|
64
|
+
category: "overall",
|
|
65
|
+
drop: previous.overallScore - latest.overallScore,
|
|
66
|
+
from: previous.overallScore,
|
|
67
|
+
to: latest.overallScore
|
|
68
|
+
});
|
|
69
|
+
for (const [cat, score] of Object.entries(latest.categoryScores)) {
|
|
70
|
+
const prevScore = previous.categoryScores[cat];
|
|
71
|
+
if (prevScore !== void 0 && score < prevScore - 5) regressions.push({
|
|
72
|
+
category: cat,
|
|
73
|
+
drop: prevScore - score,
|
|
74
|
+
from: prevScore,
|
|
75
|
+
to: score
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return regressions;
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
export { saveEntry as i, history_exports as n, loadHistory as r, detectRegressions as t };
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=history-DVegAwFp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-DVegAwFp.js","names":[],"sources":["../src/lib/history.ts"],"sourcesContent":["import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport { join } from 'path';\n\nimport type { SickbayReport } from 'sickbay-core';\n\nexport interface TrendEntry {\n timestamp: string;\n overallScore: number;\n categoryScores: Record<string, number>;\n summary: { critical: number; warnings: number; info: number };\n checksRun: number;\n}\n\nexport interface TrendHistory {\n projectPath: string;\n projectName: string;\n entries: TrendEntry[];\n}\n\nfunction historyFilePath(projectPath: string): string {\n return join(projectPath, '.sickbay', 'history.json');\n}\n\nexport function loadHistory(projectPath: string): TrendHistory | null {\n const filePath = historyFilePath(projectPath);\n if (!existsSync(filePath)) return null;\n try {\n return JSON.parse(readFileSync(filePath, 'utf-8'));\n } catch {\n return null;\n }\n}\n\nexport function saveEntry(report: SickbayReport): void {\n mkdirSync(join(report.projectPath, '.sickbay'), { recursive: true });\n\n const filePath = historyFilePath(report.projectPath);\n const existing = loadHistory(report.projectPath) ?? {\n projectPath: report.projectPath,\n projectName: report.projectInfo.name,\n entries: [],\n };\n\n const categoryScores: Record<string, number> = {};\n const categoryChecks: Record<string, number[]> = {};\n for (const check of report.checks) {\n if (check.status === 'skipped') continue;\n if (!categoryChecks[check.category]) categoryChecks[check.category] = [];\n categoryChecks[check.category].push(check.score);\n }\n for (const [cat, scores] of Object.entries(categoryChecks)) {\n categoryScores[cat] = Math.round(scores.reduce((a, b) => a + b, 0) / scores.length);\n }\n\n existing.entries.push({\n timestamp: report.timestamp,\n overallScore: report.overallScore,\n categoryScores,\n summary: { ...report.summary },\n checksRun: report.checks.filter((c) => c.status !== 'skipped').length,\n });\n\n if (existing.entries.length > 100) {\n existing.entries = existing.entries.slice(-100);\n }\n\n writeFileSync(filePath, JSON.stringify(existing, null, 2));\n}\n\nexport function saveLastReport(report: SickbayReport): void {\n mkdirSync(join(report.projectPath, '.sickbay'), { recursive: true });\n writeFileSync(\n join(report.projectPath, '.sickbay', 'last-report.json'),\n JSON.stringify(report, null, 2),\n );\n}\n\nexport function saveDepTree(projectPath: string, tree: unknown): void {\n mkdirSync(join(projectPath, '.sickbay'), { recursive: true });\n writeFileSync(join(projectPath, '.sickbay', 'dep-tree.json'), JSON.stringify(tree, null, 2));\n}\n\nexport function detectRegressions(\n entries: TrendEntry[],\n): Array<{ category: string; drop: number; from: number; to: number }> {\n if (entries.length < 2) return [];\n const latest = entries[entries.length - 1];\n const previous = entries[entries.length - 2];\n\n const regressions: Array<{\n category: string;\n drop: number;\n from: number;\n to: number;\n }> = [];\n\n if (latest.overallScore < previous.overallScore - 5) {\n regressions.push({\n category: 'overall',\n drop: previous.overallScore - latest.overallScore,\n from: previous.overallScore,\n to: latest.overallScore,\n });\n }\n\n for (const [cat, score] of Object.entries(latest.categoryScores)) {\n const prevScore = previous.categoryScores[cat];\n if (prevScore !== undefined && score < prevScore - 5) {\n regressions.push({\n category: cat,\n drop: prevScore - score,\n from: prevScore,\n to: score,\n });\n }\n }\n\n return regressions;\n}\n"],"mappings":";;;;;;;;;;;AAmBA,SAAS,gBAAgB,aAA6B;AACpD,QAAO,KAAK,aAAa,YAAY,eAAe;;AAGtD,SAAgB,YAAY,aAA0C;CACpE,MAAM,WAAW,gBAAgB,YAAY;AAC7C,KAAI,CAAC,WAAW,SAAS,CAAE,QAAO;AAClC,KAAI;AACF,SAAO,KAAK,MAAM,aAAa,UAAU,QAAQ,CAAC;SAC5C;AACN,SAAO;;;AAIX,SAAgB,UAAU,QAA6B;AACrD,WAAU,KAAK,OAAO,aAAa,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;CAEpE,MAAM,WAAW,gBAAgB,OAAO,YAAY;CACpD,MAAM,WAAW,YAAY,OAAO,YAAY,IAAI;EAClD,aAAa,OAAO;EACpB,aAAa,OAAO,YAAY;EAChC,SAAS,EAAE;EACZ;CAED,MAAM,iBAAyC,EAAE;CACjD,MAAM,iBAA2C,EAAE;AACnD,MAAK,MAAM,SAAS,OAAO,QAAQ;AACjC,MAAI,MAAM,WAAW,UAAW;AAChC,MAAI,CAAC,eAAe,MAAM,UAAW,gBAAe,MAAM,YAAY,EAAE;AACxE,iBAAe,MAAM,UAAU,KAAK,MAAM,MAAM;;AAElD,MAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,eAAe,CACxD,gBAAe,OAAO,KAAK,MAAM,OAAO,QAAQ,GAAG,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,OAAO;AAGrF,UAAS,QAAQ,KAAK;EACpB,WAAW,OAAO;EAClB,cAAc,OAAO;EACrB;EACA,SAAS,EAAE,GAAG,OAAO,SAAS;EAC9B,WAAW,OAAO,OAAO,QAAQ,MAAM,EAAE,WAAW,UAAU,CAAC;EAChE,CAAC;AAEF,KAAI,SAAS,QAAQ,SAAS,IAC5B,UAAS,UAAU,SAAS,QAAQ,MAAM,KAAK;AAGjD,eAAc,UAAU,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;AAG5D,SAAgB,eAAe,QAA6B;AAC1D,WAAU,KAAK,OAAO,aAAa,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;AACpE,eACE,KAAK,OAAO,aAAa,YAAY,mBAAmB,EACxD,KAAK,UAAU,QAAQ,MAAM,EAAE,CAChC;;AAGH,SAAgB,YAAY,aAAqB,MAAqB;AACpE,WAAU,KAAK,aAAa,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;AAC7D,eAAc,KAAK,aAAa,YAAY,gBAAgB,EAAE,KAAK,UAAU,MAAM,MAAM,EAAE,CAAC;;AAG9F,SAAgB,kBACd,SACqE;AACrE,KAAI,QAAQ,SAAS,EAAG,QAAO,EAAE;CACjC,MAAM,SAAS,QAAQ,QAAQ,SAAS;CACxC,MAAM,WAAW,QAAQ,QAAQ,SAAS;CAE1C,MAAM,cAKD,EAAE;AAEP,KAAI,OAAO,eAAe,SAAS,eAAe,EAChD,aAAY,KAAK;EACf,UAAU;EACV,MAAM,SAAS,eAAe,OAAO;EACrC,MAAM,SAAS;EACf,IAAI,OAAO;EACZ,CAAC;AAGJ,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,eAAe,EAAE;EAChE,MAAM,YAAY,SAAS,eAAe;AAC1C,MAAI,cAAc,KAAA,KAAa,QAAQ,YAAY,EACjD,aAAY,KAAK;GACf,UAAU;GACV,MAAM,YAAY;GAClB,MAAM;GACN,IAAI;GACL,CAAC;;AAIN,QAAO"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export { };
|