kastell 2.0.0 → 2.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.
Files changed (333) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +1 -1
  3. package/README.tr.md +1 -1
  4. package/dist/commands/audit.d.ts +3 -0
  5. package/dist/commands/audit.d.ts.map +1 -1
  6. package/dist/commands/audit.js +61 -32
  7. package/dist/commands/audit.js.map +1 -1
  8. package/dist/commands/config.js +1 -1
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/doctor.d.ts +1 -0
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +25 -7
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/explain.d.ts +6 -0
  15. package/dist/commands/explain.d.ts.map +1 -0
  16. package/dist/commands/explain.js +28 -0
  17. package/dist/commands/explain.js.map +1 -0
  18. package/dist/commands/fix.d.ts +2 -0
  19. package/dist/commands/fix.d.ts.map +1 -1
  20. package/dist/commands/fix.js +54 -15
  21. package/dist/commands/fix.js.map +1 -1
  22. package/dist/commands/fleet.d.ts.map +1 -1
  23. package/dist/commands/fleet.js +1 -0
  24. package/dist/commands/fleet.js.map +1 -1
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +175 -1
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/interactive.d.ts.map +1 -1
  29. package/dist/commands/interactive.js +59 -1
  30. package/dist/commands/interactive.js.map +1 -1
  31. package/dist/commands/plugin.d.ts +8 -0
  32. package/dist/commands/plugin.d.ts.map +1 -0
  33. package/dist/commands/plugin.js +87 -0
  34. package/dist/commands/plugin.js.map +1 -0
  35. package/dist/commands/regression.d.ts +5 -0
  36. package/dist/commands/regression.d.ts.map +1 -0
  37. package/dist/commands/regression.js +40 -0
  38. package/dist/commands/regression.js.map +1 -0
  39. package/dist/core/audit/checkIds.d.ts +516 -0
  40. package/dist/core/audit/checkIds.d.ts.map +1 -0
  41. package/dist/core/audit/checkIds.js +515 -0
  42. package/dist/core/audit/checkIds.js.map +1 -0
  43. package/dist/core/audit/checks/accounts.d.ts.map +1 -1
  44. package/dist/core/audit/checks/accounts.js +23 -22
  45. package/dist/core/audit/checks/accounts.js.map +1 -1
  46. package/dist/core/audit/checks/auth.d.ts.map +1 -1
  47. package/dist/core/audit/checks/auth.js +23 -22
  48. package/dist/core/audit/checks/auth.js.map +1 -1
  49. package/dist/core/audit/checks/backup.d.ts.map +1 -1
  50. package/dist/core/audit/checks/backup.js +9 -8
  51. package/dist/core/audit/checks/backup.js.map +1 -1
  52. package/dist/core/audit/checks/banners.d.ts.map +1 -1
  53. package/dist/core/audit/checks/banners.js +7 -6
  54. package/dist/core/audit/checks/banners.js.map +1 -1
  55. package/dist/core/audit/checks/boot.d.ts.map +1 -1
  56. package/dist/core/audit/checks/boot.js +12 -11
  57. package/dist/core/audit/checks/boot.js.map +1 -1
  58. package/dist/core/audit/checks/cloudmeta.d.ts.map +1 -1
  59. package/dist/core/audit/checks/cloudmeta.js +7 -6
  60. package/dist/core/audit/checks/cloudmeta.js.map +1 -1
  61. package/dist/core/audit/checks/crypto.d.ts +0 -5
  62. package/dist/core/audit/checks/crypto.d.ts.map +1 -1
  63. package/dist/core/audit/checks/crypto.js +20 -19
  64. package/dist/core/audit/checks/crypto.js.map +1 -1
  65. package/dist/core/audit/checks/ddos.d.ts.map +1 -1
  66. package/dist/core/audit/checks/ddos.js +9 -8
  67. package/dist/core/audit/checks/ddos.js.map +1 -1
  68. package/dist/core/audit/checks/dns.d.ts.map +1 -1
  69. package/dist/core/audit/checks/dns.js +9 -8
  70. package/dist/core/audit/checks/dns.js.map +1 -1
  71. package/dist/core/audit/checks/docker.d.ts.map +1 -1
  72. package/dist/core/audit/checks/docker.js +65 -64
  73. package/dist/core/audit/checks/docker.js.map +1 -1
  74. package/dist/core/audit/checks/fileintegrity.d.ts.map +1 -1
  75. package/dist/core/audit/checks/fileintegrity.js +11 -10
  76. package/dist/core/audit/checks/fileintegrity.js.map +1 -1
  77. package/dist/core/audit/checks/filesystem.d.ts.map +1 -1
  78. package/dist/core/audit/checks/filesystem.js +21 -20
  79. package/dist/core/audit/checks/filesystem.js.map +1 -1
  80. package/dist/core/audit/checks/firewall.d.ts.map +1 -1
  81. package/dist/core/audit/checks/firewall.js +18 -17
  82. package/dist/core/audit/checks/firewall.js.map +1 -1
  83. package/dist/core/audit/checks/httpHeaders.d.ts.map +1 -1
  84. package/dist/core/audit/checks/httpHeaders.js +7 -6
  85. package/dist/core/audit/checks/httpHeaders.js.map +1 -1
  86. package/dist/core/audit/checks/incidentready.d.ts.map +1 -1
  87. package/dist/core/audit/checks/incidentready.js +13 -12
  88. package/dist/core/audit/checks/incidentready.js.map +1 -1
  89. package/dist/core/audit/checks/kernel.d.ts.map +1 -1
  90. package/dist/core/audit/checks/kernel.js +32 -31
  91. package/dist/core/audit/checks/kernel.js.map +1 -1
  92. package/dist/core/audit/checks/logging.d.ts.map +1 -1
  93. package/dist/core/audit/checks/logging.js +21 -20
  94. package/dist/core/audit/checks/logging.js.map +1 -1
  95. package/dist/core/audit/checks/mac.d.ts.map +1 -1
  96. package/dist/core/audit/checks/mac.js +11 -10
  97. package/dist/core/audit/checks/mac.js.map +1 -1
  98. package/dist/core/audit/checks/malware.d.ts.map +1 -1
  99. package/dist/core/audit/checks/malware.js +12 -11
  100. package/dist/core/audit/checks/malware.js.map +1 -1
  101. package/dist/core/audit/checks/memory.d.ts.map +1 -1
  102. package/dist/core/audit/checks/memory.js +12 -11
  103. package/dist/core/audit/checks/memory.js.map +1 -1
  104. package/dist/core/audit/checks/network.d.ts.map +1 -1
  105. package/dist/core/audit/checks/network.js +22 -21
  106. package/dist/core/audit/checks/network.js.map +1 -1
  107. package/dist/core/audit/checks/nginx.d.ts.map +1 -1
  108. package/dist/core/audit/checks/nginx.js +17 -16
  109. package/dist/core/audit/checks/nginx.js.map +1 -1
  110. package/dist/core/audit/checks/resourcelimits.d.ts.map +1 -1
  111. package/dist/core/audit/checks/resourcelimits.js +9 -8
  112. package/dist/core/audit/checks/resourcelimits.js.map +1 -1
  113. package/dist/core/audit/checks/scheduling.d.ts.map +1 -1
  114. package/dist/core/audit/checks/scheduling.js +13 -12
  115. package/dist/core/audit/checks/scheduling.js.map +1 -1
  116. package/dist/core/audit/checks/secrets.d.ts.map +1 -1
  117. package/dist/core/audit/checks/secrets.js +16 -15
  118. package/dist/core/audit/checks/secrets.js.map +1 -1
  119. package/dist/core/audit/checks/services.d.ts.map +1 -1
  120. package/dist/core/audit/checks/services.js +26 -25
  121. package/dist/core/audit/checks/services.js.map +1 -1
  122. package/dist/core/audit/checks/ssh.d.ts.map +1 -1
  123. package/dist/core/audit/checks/ssh.js +23 -22
  124. package/dist/core/audit/checks/ssh.js.map +1 -1
  125. package/dist/core/audit/checks/supplychain.d.ts.map +1 -1
  126. package/dist/core/audit/checks/supplychain.js +13 -12
  127. package/dist/core/audit/checks/supplychain.js.map +1 -1
  128. package/dist/core/audit/checks/time.d.ts.map +1 -1
  129. package/dist/core/audit/checks/time.js +10 -9
  130. package/dist/core/audit/checks/time.js.map +1 -1
  131. package/dist/core/audit/checks/tls.d.ts.map +1 -1
  132. package/dist/core/audit/checks/tls.js +9 -8
  133. package/dist/core/audit/checks/tls.js.map +1 -1
  134. package/dist/core/audit/checks/updates.d.ts.map +1 -1
  135. package/dist/core/audit/checks/updates.js +12 -11
  136. package/dist/core/audit/checks/updates.js.map +1 -1
  137. package/dist/core/audit/compliance/categories/index.d.ts +3 -0
  138. package/dist/core/audit/compliance/categories/index.d.ts.map +1 -0
  139. package/dist/core/audit/compliance/categories/index.js +737 -0
  140. package/dist/core/audit/compliance/categories/index.js.map +1 -0
  141. package/dist/core/audit/compliance/helpers.d.ts +17 -0
  142. package/dist/core/audit/compliance/helpers.d.ts.map +1 -0
  143. package/dist/core/audit/compliance/helpers.js +40 -0
  144. package/dist/core/audit/compliance/helpers.js.map +1 -0
  145. package/dist/core/audit/compliance/mapper.d.ts +4 -16
  146. package/dist/core/audit/compliance/mapper.d.ts.map +1 -1
  147. package/dist/core/audit/compliance/mapper.js +3 -776
  148. package/dist/core/audit/compliance/mapper.js.map +1 -1
  149. package/dist/core/audit/diff.d.ts +12 -1
  150. package/dist/core/audit/diff.d.ts.map +1 -1
  151. package/dist/core/audit/diff.js +121 -0
  152. package/dist/core/audit/diff.js.map +1 -1
  153. package/dist/core/audit/explainCheck.d.ts +26 -0
  154. package/dist/core/audit/explainCheck.d.ts.map +1 -0
  155. package/dist/core/audit/explainCheck.js +165 -0
  156. package/dist/core/audit/explainCheck.js.map +1 -0
  157. package/dist/core/audit/fix-history.d.ts +16 -7
  158. package/dist/core/audit/fix-history.d.ts.map +1 -1
  159. package/dist/core/audit/fix-history.js +25 -2
  160. package/dist/core/audit/fix-history.js.map +1 -1
  161. package/dist/core/audit/fix.d.ts +21 -6
  162. package/dist/core/audit/fix.d.ts.map +1 -1
  163. package/dist/core/audit/fix.js +139 -49
  164. package/dist/core/audit/fix.js.map +1 -1
  165. package/dist/core/audit/history.d.ts.map +1 -1
  166. package/dist/core/audit/history.js +2 -1
  167. package/dist/core/audit/history.js.map +1 -1
  168. package/dist/core/audit/index.d.ts.map +1 -1
  169. package/dist/core/audit/index.js +3 -2
  170. package/dist/core/audit/index.js.map +1 -1
  171. package/dist/core/audit/listChecks.d.ts +7 -0
  172. package/dist/core/audit/listChecks.d.ts.map +1 -1
  173. package/dist/core/audit/listChecks.js +1 -1
  174. package/dist/core/audit/listChecks.js.map +1 -1
  175. package/dist/core/audit/regression.d.ts +15 -0
  176. package/dist/core/audit/regression.d.ts.map +1 -0
  177. package/dist/core/audit/regression.js +149 -0
  178. package/dist/core/audit/regression.js.map +1 -0
  179. package/dist/core/audit/snapshot.d.ts.map +1 -1
  180. package/dist/core/audit/snapshot.js +91 -29
  181. package/dist/core/audit/snapshot.js.map +1 -1
  182. package/dist/core/audit/types.d.ts +63 -1
  183. package/dist/core/audit/types.d.ts.map +1 -1
  184. package/dist/core/audit/watch.d.ts.map +1 -1
  185. package/dist/core/audit/watch.js +3 -2
  186. package/dist/core/audit/watch.js.map +1 -1
  187. package/dist/core/bot/handlers.d.ts.map +1 -1
  188. package/dist/core/bot/handlers.js +9 -18
  189. package/dist/core/bot/handlers.js.map +1 -1
  190. package/dist/core/completions.d.ts.map +1 -1
  191. package/dist/core/completions.js +24 -2
  192. package/dist/core/completions.js.map +1 -1
  193. package/dist/core/defaults.d.ts +4 -0
  194. package/dist/core/defaults.d.ts.map +1 -0
  195. package/dist/core/defaults.js +34 -0
  196. package/dist/core/defaults.js.map +1 -0
  197. package/dist/core/doctor-fix.d.ts +1 -1
  198. package/dist/core/doctor-fix.d.ts.map +1 -1
  199. package/dist/core/doctor-fix.js +17 -2
  200. package/dist/core/doctor-fix.js.map +1 -1
  201. package/dist/core/doctor.d.ts +4 -0
  202. package/dist/core/doctor.d.ts.map +1 -1
  203. package/dist/core/doctor.js +26 -2
  204. package/dist/core/doctor.js.map +1 -1
  205. package/dist/core/firewall.d.ts +1 -4
  206. package/dist/core/firewall.d.ts.map +1 -1
  207. package/dist/core/firewall.js +19 -25
  208. package/dist/core/firewall.js.map +1 -1
  209. package/dist/core/fleet.d.ts +8 -0
  210. package/dist/core/fleet.d.ts.map +1 -1
  211. package/dist/core/fleet.js +49 -5
  212. package/dist/core/fleet.js.map +1 -1
  213. package/dist/core/manage.d.ts +9 -6
  214. package/dist/core/manage.d.ts.map +1 -1
  215. package/dist/core/manage.js +2 -1
  216. package/dist/core/manage.js.map +1 -1
  217. package/dist/core/notify.d.ts.map +1 -1
  218. package/dist/core/notify.js +2 -1
  219. package/dist/core/notify.js.map +1 -1
  220. package/dist/core/plugin.d.ts +23 -0
  221. package/dist/core/plugin.d.ts.map +1 -0
  222. package/dist/core/plugin.js +107 -0
  223. package/dist/core/plugin.js.map +1 -0
  224. package/dist/core/scheduleManager.d.ts +2 -1
  225. package/dist/core/scheduleManager.d.ts.map +1 -1
  226. package/dist/core/scheduleManager.js +8 -5
  227. package/dist/core/scheduleManager.js.map +1 -1
  228. package/dist/core/status.d.ts +1 -0
  229. package/dist/core/status.d.ts.map +1 -1
  230. package/dist/core/status.js +20 -6
  231. package/dist/core/status.js.map +1 -1
  232. package/dist/index.js +65 -2
  233. package/dist/index.js.map +1 -1
  234. package/dist/mcp/index.js +5 -9
  235. package/dist/mcp/index.js.map +1 -1
  236. package/dist/mcp/server.d.ts.map +1 -1
  237. package/dist/mcp/server.js +44 -2
  238. package/dist/mcp/server.js.map +1 -1
  239. package/dist/mcp/tools/serverAudit.d.ts.map +1 -1
  240. package/dist/mcp/tools/serverAudit.js +15 -0
  241. package/dist/mcp/tools/serverAudit.js.map +1 -1
  242. package/dist/mcp/tools/serverCompare.d.ts +15 -0
  243. package/dist/mcp/tools/serverCompare.d.ts.map +1 -0
  244. package/dist/mcp/tools/serverCompare.js +43 -0
  245. package/dist/mcp/tools/serverCompare.js.map +1 -0
  246. package/dist/mcp/tools/serverDoctor.d.ts.map +1 -1
  247. package/dist/mcp/tools/serverDoctor.js +2 -1
  248. package/dist/mcp/tools/serverDoctor.js.map +1 -1
  249. package/dist/mcp/tools/serverExplain.d.ts +8 -0
  250. package/dist/mcp/tools/serverExplain.d.ts.map +1 -0
  251. package/dist/mcp/tools/serverExplain.js +14 -0
  252. package/dist/mcp/tools/serverExplain.js.map +1 -0
  253. package/dist/mcp/tools/serverFix.d.ts +2 -0
  254. package/dist/mcp/tools/serverFix.d.ts.map +1 -1
  255. package/dist/mcp/tools/serverFix.js +40 -2
  256. package/dist/mcp/tools/serverFix.js.map +1 -1
  257. package/dist/mcp/tools/serverFleet.d.ts +2 -0
  258. package/dist/mcp/tools/serverFleet.d.ts.map +1 -1
  259. package/dist/mcp/tools/serverFleet.js +10 -1
  260. package/dist/mcp/tools/serverFleet.js.map +1 -1
  261. package/dist/mcp/tools/serverManage.d.ts.map +1 -1
  262. package/dist/mcp/tools/serverManage.js +10 -9
  263. package/dist/mcp/tools/serverManage.js.map +1 -1
  264. package/dist/mcp/tools/serverPlugin.d.ts +12 -0
  265. package/dist/mcp/tools/serverPlugin.d.ts.map +1 -0
  266. package/dist/mcp/tools/serverPlugin.js +22 -0
  267. package/dist/mcp/tools/serverPlugin.js.map +1 -0
  268. package/dist/plugin/loader.d.ts +10 -0
  269. package/dist/plugin/loader.d.ts.map +1 -0
  270. package/dist/plugin/loader.js +88 -0
  271. package/dist/plugin/loader.js.map +1 -0
  272. package/dist/plugin/registry.d.ts +16 -0
  273. package/dist/plugin/registry.d.ts.map +1 -0
  274. package/dist/plugin/registry.js +99 -0
  275. package/dist/plugin/registry.js.map +1 -0
  276. package/dist/plugin/sdk/constants.d.ts +3 -0
  277. package/dist/plugin/sdk/constants.d.ts.map +1 -0
  278. package/dist/plugin/sdk/constants.js +3 -0
  279. package/dist/plugin/sdk/constants.js.map +1 -0
  280. package/dist/plugin/sdk/types.d.ts +29 -0
  281. package/dist/plugin/sdk/types.d.ts.map +1 -0
  282. package/dist/plugin/sdk/types.js +2 -0
  283. package/dist/plugin/sdk/types.js.map +1 -0
  284. package/dist/plugin/validate.d.ts +3 -0
  285. package/dist/plugin/validate.d.ts.map +1 -0
  286. package/dist/plugin/validate.js +31 -0
  287. package/dist/plugin/validate.js.map +1 -0
  288. package/dist/providers/base.d.ts.map +1 -1
  289. package/dist/providers/base.js +2 -1
  290. package/dist/providers/base.js.map +1 -1
  291. package/dist/types/index.d.ts +8 -1
  292. package/dist/types/index.d.ts.map +1 -1
  293. package/dist/types/index.js +1 -1
  294. package/dist/types/index.js.map +1 -1
  295. package/dist/utils/dates.d.ts +3 -0
  296. package/dist/utils/dates.d.ts.map +1 -0
  297. package/dist/utils/dates.js +10 -0
  298. package/dist/utils/dates.js.map +1 -0
  299. package/dist/utils/errorMapper.d.ts.map +1 -1
  300. package/dist/utils/errorMapper.js +2 -1
  301. package/dist/utils/errorMapper.js.map +1 -1
  302. package/dist/utils/errors.d.ts +1 -0
  303. package/dist/utils/errors.d.ts.map +1 -1
  304. package/dist/utils/errors.js +3 -0
  305. package/dist/utils/errors.js.map +1 -1
  306. package/dist/utils/migration.d.ts.map +1 -1
  307. package/dist/utils/migration.js +2 -1
  308. package/dist/utils/migration.js.map +1 -1
  309. package/dist/utils/paths.d.ts +4 -0
  310. package/dist/utils/paths.d.ts.map +1 -1
  311. package/dist/utils/paths.js +4 -0
  312. package/dist/utils/paths.js.map +1 -1
  313. package/dist/utils/prompts.d.ts +6 -0
  314. package/dist/utils/prompts.d.ts.map +1 -1
  315. package/dist/utils/prompts.js +11 -0
  316. package/dist/utils/prompts.js.map +1 -1
  317. package/dist/utils/{defaults.d.ts → providerConfig.d.ts} +1 -1
  318. package/dist/utils/providerConfig.d.ts.map +1 -0
  319. package/dist/utils/{defaults.js → providerConfig.js} +1 -1
  320. package/dist/utils/providerConfig.js.map +1 -0
  321. package/dist/utils/secureWrite.d.ts.map +1 -1
  322. package/dist/utils/secureWrite.js +2 -1
  323. package/dist/utils/secureWrite.js.map +1 -1
  324. package/dist/utils/version.d.ts +4 -0
  325. package/dist/utils/version.d.ts.map +1 -0
  326. package/dist/utils/version.js +22 -0
  327. package/dist/utils/version.js.map +1 -0
  328. package/dist/utils/yamlConfig.d.ts.map +1 -1
  329. package/dist/utils/yamlConfig.js +3 -2
  330. package/dist/utils/yamlConfig.js.map +1 -1
  331. package/package.json +3 -1
  332. package/dist/utils/defaults.d.ts.map +0 -1
  333. package/dist/utils/defaults.js.map +0 -1
@@ -3,27 +3,12 @@
3
3
  * Registers /status, /audit, /health, /doctor, /help commands.
4
4
  * All commands read local data only — zero SSH (D-07).
5
5
  */
6
- import { readFileSync } from "fs";
7
- import { join } from "path";
8
6
  import { findServer, getServers } from "../../utils/config.js";
9
7
  import { listSnapshots, loadSnapshot } from "../audit/snapshot.js";
10
8
  import { getGuardStates } from "../guard.js";
11
- import { loadMetricsHistory } from "../doctor.js";
9
+ import { loadMetricsHistory, DOCTOR_SEVERITY_WEIGHTS } from "../doctor.js";
10
+ import { KASTELL_VERSION } from "../../utils/version.js";
12
11
  import { formatAuditMessage, formatStatusMessage, formatHealthMessage, formatDoctorMessage, } from "./formatter.js";
13
- let cachedVersion = null;
14
- function getVersion() {
15
- if (cachedVersion !== null)
16
- return cachedVersion;
17
- try {
18
- const pkg = JSON.parse(readFileSync(join(process.cwd(), "package.json"), "utf-8"));
19
- cachedVersion = pkg.version;
20
- return cachedVersion;
21
- }
22
- catch {
23
- cachedVersion = "0.0.0";
24
- return cachedVersion;
25
- }
26
- }
27
12
  /** Register all bot command handlers on the given Bot instance. */
28
13
  export function registerHandlers(bot) {
29
14
  // /audit <server> — D-06: server name mandatory
@@ -126,6 +111,7 @@ export function registerHandlers(bot) {
126
111
  severity: "critical",
127
112
  description: `Disk usage high: ${latest.diskPct}%`,
128
113
  command: "df -h /",
114
+ weight: DOCTOR_SEVERITY_WEIGHTS["critical"],
129
115
  });
130
116
  }
131
117
  else if (latest.diskPct >= 80) {
@@ -134,6 +120,7 @@ export function registerHandlers(bot) {
134
120
  severity: "warning",
135
121
  description: `Disk usage: ${latest.diskPct}%`,
136
122
  command: "df -h /",
123
+ weight: DOCTOR_SEVERITY_WEIGHTS["warning"],
137
124
  });
138
125
  }
139
126
  if (latest.ramPct >= 90) {
@@ -142,6 +129,7 @@ export function registerHandlers(bot) {
142
129
  severity: "critical",
143
130
  description: `RAM usage high: ${latest.ramPct}%`,
144
131
  command: "free -h",
132
+ weight: DOCTOR_SEVERITY_WEIGHTS["critical"],
145
133
  });
146
134
  }
147
135
  else if (latest.ramPct >= 80) {
@@ -150,6 +138,7 @@ export function registerHandlers(bot) {
150
138
  severity: "warning",
151
139
  description: `RAM usage: ${latest.ramPct}%`,
152
140
  command: "free -h",
141
+ weight: DOCTOR_SEVERITY_WEIGHTS["warning"],
153
142
  });
154
143
  }
155
144
  const loadPerCpu = latest.cpuLoad1 / (latest.ncpu || 1);
@@ -159,6 +148,7 @@ export function registerHandlers(bot) {
159
148
  severity: "critical",
160
149
  description: `CPU load high: ${latest.cpuLoad1} (${latest.ncpu} cores)`,
161
150
  command: "uptime",
151
+ weight: DOCTOR_SEVERITY_WEIGHTS["critical"],
162
152
  });
163
153
  }
164
154
  else if (loadPerCpu >= 1) {
@@ -167,6 +157,7 @@ export function registerHandlers(bot) {
167
157
  severity: "warning",
168
158
  description: `CPU load: ${latest.cpuLoad1} (${latest.ncpu} cores)`,
169
159
  command: "uptime",
160
+ weight: DOCTOR_SEVERITY_WEIGHTS["warning"],
170
161
  });
171
162
  }
172
163
  await ctx.reply(formatDoctorMessage(serverName, findings));
@@ -182,7 +173,7 @@ export function registerHandlers(bot) {
182
173
  "/doctor <server> -- Doctor findings (cached)",
183
174
  "/help -- This message",
184
175
  "",
185
- `Kastell v${getVersion()} | 4 commands`,
176
+ `Kastell v${KASTELL_VERSION} | 4 commands`,
186
177
  ];
187
178
  await ctx.reply(lines.join("\n"));
188
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/core/bot/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/core/bot/handlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,uBAAuB,IAAI,MAAM,CA6JhD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CA2P/C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA+MhD"}
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,uBAAuB,IAAI,MAAM,CAiKhD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAoQ/C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAwNhD"}
@@ -12,7 +12,7 @@ _kastell() {
12
12
  COMPREPLY=()
13
13
  cur="\${COMP_WORDS[COMP_CWORD]}"
14
14
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
15
- commands="init list status destroy config ssh update restart logs monitor health doctor firewall domain secure backup restore export import add remove maintain snapshot completions guard lock audit evidence fleet notify"
15
+ commands="init list status destroy config ssh update restart logs monitor health doctor firewall domain secure backup restore export import add remove maintain snapshot completions guard lock audit evidence fleet notify plugin"
16
16
 
17
17
  # Subcommand completions
18
18
  case "\${prev}" in
@@ -48,6 +48,10 @@ _kastell() {
48
48
  COMPREPLY=( $(compgen -W "add test" -- "\${cur}") )
49
49
  return 0
50
50
  ;;
51
+ plugin)
52
+ COMPREPLY=( $(compgen -W "install remove list validate --force --ver" -- "\${cur}") )
53
+ return 0
54
+ ;;
51
55
  esac
52
56
 
53
57
  # Per-command option completions
@@ -199,6 +203,7 @@ _kastell() {
199
203
  'evidence:Collect forensic evidence package from a server'
200
204
  'fleet:Show health and security posture of all registered servers'
201
205
  'notify:Manage notification channels'
206
+ 'plugin:Manage kastell plugins'
202
207
  )
203
208
 
204
209
  _arguments -C \\
@@ -406,6 +411,14 @@ _kastell() {
406
411
  '--webhook-url[Discord or Slack webhook URL]:url:' \\
407
412
  '--force[Skip interactive prompts]'
408
413
  ;;
414
+ plugin)
415
+ local -a subcommands
416
+ subcommands=('install:Install a plugin from npm registry' 'remove:Remove an installed plugin' 'list:List installed plugins' 'validate:Validate plugin manifest and entry point')
417
+ _describe 'subcommand' subcommands
418
+ _arguments \\
419
+ '--ver[Specific version to install]:version:' \\
420
+ '--force[Skip confirmation prompt]'
421
+ ;;
409
422
  esac
410
423
  ;;
411
424
  esac
@@ -463,6 +476,7 @@ complete -c kastell -n '__kastell_no_subcommand' -a 'audit' -d 'Run a security a
463
476
  complete -c kastell -n '__kastell_no_subcommand' -a 'evidence' -d 'Collect forensic evidence'
464
477
  complete -c kastell -n '__kastell_no_subcommand' -a 'fleet' -d 'Show fleet health and security'
465
478
  complete -c kastell -n '__kastell_no_subcommand' -a 'notify' -d 'Manage notification channels'
479
+ complete -c kastell -n '__kastell_no_subcommand' -a 'plugin' -d 'Manage kastell plugins'
466
480
 
467
481
  # init options
468
482
  complete -c kastell -n '__kastell_using_subcommand init' -l provider -d 'Cloud provider'
@@ -619,6 +633,14 @@ complete -c kastell -n '__kastell_using_subcommand notify' -a 'add test'
619
633
  complete -c kastell -n '__kastell_using_subcommand notify' -l bot-token -d 'Telegram bot token'
620
634
  complete -c kastell -n '__kastell_using_subcommand notify' -l chat-id -d 'Telegram chat ID'
621
635
  complete -c kastell -n '__kastell_using_subcommand notify' -l webhook-url -d 'Discord or Slack webhook URL'
622
- complete -c kastell -n '__kastell_using_subcommand notify' -l force -d 'Skip interactive prompts'`;
636
+ complete -c kastell -n '__kastell_using_subcommand notify' -l force -d 'Skip interactive prompts'
637
+
638
+ # plugin subcommands and options
639
+ complete -c kastell -n '__kastell_using_subcommand plugin' -a 'install' -d 'Install a plugin from npm registry'
640
+ complete -c kastell -n '__kastell_using_subcommand plugin' -a 'remove' -d 'Remove an installed plugin'
641
+ complete -c kastell -n '__kastell_using_subcommand plugin' -a 'list' -d 'List installed plugins'
642
+ complete -c kastell -n '__kastell_using_subcommand plugin' -a 'validate' -d 'Validate plugin manifest'
643
+ complete -c kastell -n '__kastell_using_subcommand plugin' -l force -d 'Skip confirmation prompt'
644
+ complete -c kastell -n '__kastell_using_subcommand plugin' -l ver -d 'Specific version to install' -r`;
623
645
  }
624
646
  //# sourceMappingURL=completions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA2JoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAyPA,CAAC;AACV,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kGA6MyF,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/core/completions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA+JoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkQA,CAAC;AACV,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGAsN6F,CAAC;AACvG,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DefaultsConfig } from "../types/index.js";
2
+ export declare function loadDefaults(): DefaultsConfig;
3
+ export declare function saveDefaults(config: DefaultsConfig): void;
4
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWxD,wBAAgB,YAAY,IAAI,cAAc,CAe7C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAGzD"}
@@ -0,0 +1,34 @@
1
+ import { readFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { z } from "zod";
4
+ import { KASTELL_DIR } from "../utils/paths.js";
5
+ import { secureMkdirSync, secureWriteFileSync } from "../utils/secureWrite.js";
6
+ const DEFAULTS_FILE = join(KASTELL_DIR, "defaults.json");
7
+ const DefaultsSchema = z.object({
8
+ threshold: z.number().int().min(0).max(100).optional(),
9
+ framework: z
10
+ .enum(["cis-level1", "cis-level2", "pci-dss", "hipaa"])
11
+ .optional(),
12
+ }).strip();
13
+ export function loadDefaults() {
14
+ let raw;
15
+ try {
16
+ raw = readFileSync(DEFAULTS_FILE, "utf-8");
17
+ }
18
+ catch {
19
+ return {};
20
+ }
21
+ try {
22
+ const parsed = JSON.parse(raw);
23
+ const result = DefaultsSchema.safeParse(parsed);
24
+ return result.success ? result.data : {};
25
+ }
26
+ catch {
27
+ return {};
28
+ }
29
+ }
30
+ export function saveDefaults(config) {
31
+ secureMkdirSync(KASTELL_DIR, { recursive: true });
32
+ secureWriteFileSync(DEFAULTS_FILE, JSON.stringify(config, null, 2));
33
+ }
34
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/core/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG/E,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtD,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SACtD,QAAQ,EAAE;CACd,CAAC,CAAC,KAAK,EAAE,CAAC;AAEX,MAAM,UAAU,YAAY;IAC1B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,eAAe,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -28,5 +28,5 @@ export interface DoctorFixResult {
28
28
  * Throws synchronously if `ip` is invalid (from assertValidIp).
29
29
  * All handler errors are caught and recorded in `failed` — never rethrown.
30
30
  */
31
- export declare function runDoctorFix(ip: string, findings: DoctorFinding[], options: DoctorFixOptions): Promise<DoctorFixResult>;
31
+ export declare function runDoctorFix(ip: string, findings: DoctorFinding[], options: DoctorFixOptions, serverName?: string): Promise<DoctorFixResult>;
32
32
  //# sourceMappingURL=doctor-fix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-fix.d.ts","sourceRoot":"","sources":["../../src/core/doctor-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAyD1B"}
1
+ {"version":3,"file":"doctor-fix.d.ts","sourceRoot":"","sources":["../../src/core/doctor-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAuE1B"}
@@ -12,6 +12,8 @@
12
12
  import inquirer from "inquirer";
13
13
  import { assertValidIp } from "../utils/ssh.js";
14
14
  import { resolveHandlerChain, executeHandlerChain } from "./audit/handlers/index.js";
15
+ import { getErrorMessage } from "../utils/errorMapper.js";
16
+ import { saveFixHistory } from "./audit/fix-history.js";
15
17
  // ─── Orchestrator ─────────────────────────────────────────────────────────────
16
18
  /**
17
19
  * Run doctor fix for a list of findings on the given server IP.
@@ -19,7 +21,7 @@ import { resolveHandlerChain, executeHandlerChain } from "./audit/handlers/index
19
21
  * Throws synchronously if `ip` is invalid (from assertValidIp).
20
22
  * All handler errors are caught and recorded in `failed` — never rethrown.
21
23
  */
22
- export async function runDoctorFix(ip, findings, options) {
24
+ export async function runDoctorFix(ip, findings, options, serverName) {
23
25
  assertValidIp(ip);
24
26
  const applied = [];
25
27
  const skipped = [];
@@ -65,10 +67,23 @@ export async function runDoctorFix(ip, findings, options) {
65
67
  }
66
68
  }
67
69
  catch (err) {
68
- const message = err instanceof Error ? err.message : String(err);
70
+ const message = getErrorMessage(err);
69
71
  failed.push(`${finding.id}: ${message}`);
70
72
  }
71
73
  }
74
+ if (applied.length > 0 && !options.dryRun) {
75
+ await saveFixHistory({
76
+ fixId: `doctor-fix-${Date.now()}`,
77
+ serverIp: ip,
78
+ serverName: serverName ?? ip,
79
+ timestamp: new Date().toISOString(),
80
+ checks: applied,
81
+ scoreBefore: 0,
82
+ scoreAfter: null,
83
+ status: "applied",
84
+ source: "doctor",
85
+ });
86
+ }
72
87
  return { applied, skipped, failed };
73
88
  }
74
89
  //# sourceMappingURL=doctor-fix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-fix.js","sourceRoot":"","sources":["../../src/core/doctor-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAmBrF,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAU,EACV,QAAyB,EACzB,OAAyB;IAEzB,aAAa,CAAC,EAAE,CAAC,CAAC;IAElB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,yDAAyD;IACzD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,8BAA8B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,oBAAoB,OAAO,CAAC,UAAU,qBAAqB;oBAC9H,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACzB,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3D,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,aAAa,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"doctor-fix.js","sourceRoot":"","sources":["../../src/core/doctor-fix.ts"],"names":[],"mappings":"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"}
@@ -7,19 +7,23 @@
7
7
  import type { MetricSnapshot, KastellResult } from "../types/index.js";
8
8
  import type { AuditHistoryEntry } from "./audit/types.js";
9
9
  export type DoctorSeverity = "critical" | "warning" | "info";
10
+ export declare const DOCTOR_SEVERITY_WEIGHTS: Record<DoctorSeverity, number>;
10
11
  export interface DoctorFinding {
11
12
  id: string;
12
13
  severity: DoctorSeverity;
13
14
  description: string;
14
15
  command: string;
15
16
  fixCommand?: string;
17
+ weight: number;
16
18
  }
19
+ export declare function computeDoctorScore(findings: DoctorFinding[]): number;
17
20
  export interface DoctorResult {
18
21
  serverName: string;
19
22
  serverIp: string;
20
23
  findings: DoctorFinding[];
21
24
  ranAt: string;
22
25
  usedFreshData: boolean;
26
+ score: number;
23
27
  }
24
28
  /** Path to the local per-server metrics history file */
25
29
  export declare function metricsHistoryPath(serverIp: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACxB;AAID,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAWrE;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAStF;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CAkCtB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgBvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmB1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAcjF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CA0BtB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CAmBtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA6B5E;AA8CD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAiFtC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIlE,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,CAMpE;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAWrE;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAStF;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CAmCtB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAiBvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoB1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAejF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CA2BtB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,aAAa,GAAG,IAAI,CAoBtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA8B5E;AA8CD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAoFtC"}
@@ -10,7 +10,22 @@ import { KASTELL_DIR } from "../utils/paths.js";
10
10
  import { secureWriteFileSync, secureMkdirSync } from "../utils/secureWrite.js";
11
11
  import { assertValidIp, sshExec } from "../utils/ssh.js";
12
12
  import { raw } from "../utils/sshCommand.js";
13
+ import { MS_PER_DAY } from "../utils/dates.js";
13
14
  import { loadAuditHistory } from "./audit/history.js";
15
+ import { extractReason } from "../utils/errors.js";
16
+ export const DOCTOR_SEVERITY_WEIGHTS = {
17
+ critical: 10,
18
+ warning: 5,
19
+ info: 1,
20
+ };
21
+ export function computeDoctorScore(findings) {
22
+ if (findings.length === 0)
23
+ return 100;
24
+ // 7 checks × max weight 10 = 70 total possible penalty
25
+ const maxPenalty = 70;
26
+ const totalPenalty = findings.reduce((sum, f) => sum + f.weight, 0);
27
+ return Math.max(0, Math.round(100 - (totalPenalty / maxPenalty) * 100));
28
+ }
14
29
  // ─── Metrics cache helpers ────────────────────────────────────────────────────
15
30
  /** Path to the local per-server metrics history file */
16
31
  export function metricsHistoryPath(serverIp) {
@@ -80,6 +95,7 @@ export function checkDiskTrend(snapshots, serverName) {
80
95
  severity,
81
96
  description: `Disk projected to reach 95% full in ~${daysRounded} day${daysRounded === 1 ? "" : "s"} at current growth rate`,
82
97
  command: `df -h / && kastell audit ${serverName}`,
98
+ weight: DOCTOR_SEVERITY_WEIGHTS[severity],
83
99
  };
84
100
  }
85
101
  /**
@@ -101,6 +117,7 @@ export function checkSwapUsage(swapOutput) {
101
117
  severity,
102
118
  description: `Swap usage is at ${pct}% — high swap can indicate memory pressure`,
103
119
  command: "free -h",
120
+ weight: DOCTOR_SEVERITY_WEIGHTS[severity],
104
121
  };
105
122
  }
106
123
  /**
@@ -123,6 +140,7 @@ export function checkStalePackages(aptOutput) {
123
140
  description: `${count} package${count === 1 ? "" : "s"} available for upgrade — keep packages updated to reduce security exposure`,
124
141
  command: "sudo apt update && sudo apt upgrade",
125
142
  fixCommand: "apt-upgrade",
143
+ weight: DOCTOR_SEVERITY_WEIGHTS[severity],
126
144
  };
127
145
  }
128
146
  /**
@@ -143,6 +161,7 @@ export function checkFail2banBanRate(fail2banOutput) {
143
161
  severity: "warning",
144
162
  description: `fail2ban has recorded ${total} total bans — review attack patterns and consider additional hardening`,
145
163
  command: "sudo fail2ban-client status",
164
+ weight: DOCTOR_SEVERITY_WEIGHTS["warning"],
146
165
  };
147
166
  }
148
167
  /**
@@ -172,6 +191,7 @@ export function checkAuditRegressionStreak(history, serverName) {
172
191
  severity: "warning",
173
192
  description: `Audit score has declined in ${maxStreak + 1} consecutive runs — security posture may be degrading`,
174
193
  command: `kastell audit ${serverName}`,
194
+ weight: DOCTOR_SEVERITY_WEIGHTS["warning"],
175
195
  };
176
196
  }
177
197
  /**
@@ -185,7 +205,7 @@ export function checkBackupAge(backupLogOutput, serverName) {
185
205
  const lastTs = Date.parse(trimmed);
186
206
  if (isNaN(lastTs))
187
207
  return null;
188
- const daysOld = (Date.now() - lastTs) / 86_400_000;
208
+ const daysOld = (Date.now() - lastTs) / MS_PER_DAY;
189
209
  if (daysOld <= 7)
190
210
  return null;
191
211
  const severity = daysOld > 30 ? "critical" : "warning";
@@ -195,6 +215,7 @@ export function checkBackupAge(backupLogOutput, serverName) {
195
215
  severity,
196
216
  description: `Last backup was ${daysRounded} day${daysRounded === 1 ? "" : "s"} ago — consider running a backup soon`,
197
217
  command: `kastell backup ${serverName}`,
218
+ weight: DOCTOR_SEVERITY_WEIGHTS[severity],
198
219
  };
199
220
  }
200
221
  /**
@@ -229,6 +250,7 @@ export function checkDockerDisk(dockerDfOutput) {
229
250
  severity,
230
251
  description: `Docker has ~${gbDisplay} GB of reclaimable disk space`,
231
252
  command: "docker system prune -a",
253
+ weight: DOCTOR_SEVERITY_WEIGHTS[severity],
232
254
  };
233
255
  }
234
256
  /** Parse a reclaimable string like "8GB (30%)" or "500MB (5%)" into gigabytes. */
@@ -280,7 +302,7 @@ export async function runServerDoctor(ip, serverName, options) {
280
302
  catch (err) {
281
303
  return {
282
304
  success: false,
283
- error: err instanceof Error ? err.message : String(err),
305
+ error: extractReason(err),
284
306
  };
285
307
  }
286
308
  const fresh = options.fresh ?? false;
@@ -334,6 +356,7 @@ export async function runServerDoctor(ip, serverName, options) {
334
356
  dockerDfOutput !== undefined ? checkDockerDisk(dockerDfOutput) : null,
335
357
  ];
336
358
  const findings = rawFindings.filter(Boolean).sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
359
+ const score = computeDoctorScore(findings);
337
360
  return {
338
361
  success: true,
339
362
  data: {
@@ -342,6 +365,7 @@ export async function runServerDoctor(ip, serverName, options) {
342
365
  findings,
343
366
  ranAt: new Date().toISOString(),
344
367
  usedFreshData: fresh,
368
+ score,
345
369
  },
346
370
  };
347
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,11 @@ import { type SshCommand } from "../utils/sshCommand.js";
2
2
  import type { FirewallStatus, FirewallProtocol } from "../types/index.js";
3
3
  import type { Platform } from "../types/index.js";
4
4
  export declare const PROTECTED_PORTS: number[];
5
- export declare const COOLIFY_PORTS: number[];
6
- export declare const DOKPLOY_PORTS: number[];
7
5
  export declare const BARE_PORTS: number[];
8
6
  export declare function isValidPort(port: number): boolean;
9
7
  export declare function isProtectedPort(port: number): boolean;
10
- export declare function getPortsForPlatform(platform?: Platform): number[];
8
+ export declare function getPortsForPlatform(platform?: Platform | "bare"): readonly number[];
11
9
  export declare function buildFirewallSetupCommand(platform?: Platform): SshCommand;
12
- export declare function buildBareFirewallSetupCommand(): SshCommand;
13
10
  export declare function buildUfwRuleCommand(action: "allow" | "delete allow", port: number, protocol?: FirewallProtocol): SshCommand;
14
11
  export declare function buildUfwStatusCommand(): SshCommand;
15
12
  export declare function parseUfwStatus(stdout: string): FirewallStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"firewall.d.ts","sourceRoot":"","sources":["../../src/core/firewall.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAgB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlD,eAAO,MAAM,eAAe,UAAO,CAAC;AACpC,eAAO,MAAM,aAAa,UAAsC,CAAC;AACjE,eAAO,MAAM,aAAa,UAA0B,CAAC;AACrD,eAAO,MAAM,UAAU,UAAY,CAAC;AAIpC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,CAGjE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAWzE;AAED,wBAAgB,6BAA6B,IAAI,UAAU,CAU1D;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,GAAG,cAAc,EAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,GACjC,UAAU,CAGZ;AAED,wBAAgB,qBAAqB,IAAI,UAAU,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAkB7D;AAgBD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB5F;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,GACjC,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,EAClC,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoBjF;AAID,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,IAAI,CAAC,CAwCf"}
1
+ {"version":3,"file":"firewall.d.ts","sourceRoot":"","sources":["../../src/core/firewall.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAgB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlD,eAAO,MAAM,eAAe,UAAO,CAAC;AACpC,eAAO,MAAM,UAAU,UAAY,CAAC;AAIpC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAGnF;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,CAWzE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,GAAG,cAAc,EAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,GACjC,UAAU,CAGZ;AAED,wBAAgB,qBAAqB,IAAI,UAAU,CAElD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAkB7D;AAuBD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB5F;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,GACjC,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,gBAAwB,EAClC,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoBjF;AAID,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,IAAI,CAAC,CAwCf"}