kastell 2.1.0 → 2.2.1

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 (501) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +39 -0
  3. package/CHANGELOG.md +1266 -1216
  4. package/LICENSE +201 -201
  5. package/NOTICE +5 -5
  6. package/README.md +1 -1
  7. package/README.tr.md +1 -1
  8. package/bin/kastell +2 -2
  9. package/bin/kastell-mcp +5 -5
  10. package/dist/adapters/coolify.js +92 -92
  11. package/dist/adapters/dokploy.js +99 -99
  12. package/dist/adapters/shared.d.ts.map +1 -1
  13. package/dist/adapters/shared.js +4 -2
  14. package/dist/adapters/shared.js.map +1 -1
  15. package/dist/commands/add.d.ts.map +1 -1
  16. package/dist/commands/add.js +6 -9
  17. package/dist/commands/add.js.map +1 -1
  18. package/dist/commands/auth.d.ts.map +1 -1
  19. package/dist/commands/auth.js +12 -12
  20. package/dist/commands/auth.js.map +1 -1
  21. package/dist/commands/doctor.d.ts +1 -0
  22. package/dist/commands/doctor.d.ts.map +1 -1
  23. package/dist/commands/doctor.js +23 -8
  24. package/dist/commands/doctor.js.map +1 -1
  25. package/dist/commands/evidence.d.ts.map +1 -1
  26. package/dist/commands/evidence.js +8 -9
  27. package/dist/commands/evidence.js.map +1 -1
  28. package/dist/commands/fix.d.ts +1 -0
  29. package/dist/commands/fix.d.ts.map +1 -1
  30. package/dist/commands/fix.js +24 -5
  31. package/dist/commands/fix.js.map +1 -1
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +4 -7
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/interactive/backup-maintenance.d.ts +8 -0
  36. package/dist/commands/interactive/backup-maintenance.d.ts.map +1 -0
  37. package/dist/commands/interactive/backup-maintenance.js +120 -0
  38. package/dist/commands/interactive/backup-maintenance.js.map +1 -0
  39. package/dist/commands/interactive/index.d.ts +4 -0
  40. package/dist/commands/interactive/index.d.ts.map +1 -0
  41. package/dist/commands/interactive/index.js +94 -0
  42. package/dist/commands/interactive/index.js.map +1 -0
  43. package/dist/commands/interactive/menu.d.ts +23 -0
  44. package/dist/commands/interactive/menu.d.ts.map +1 -0
  45. package/dist/commands/interactive/menu.js +121 -0
  46. package/dist/commands/interactive/menu.js.map +1 -0
  47. package/dist/commands/interactive/monitoring.d.ts +5 -0
  48. package/dist/commands/interactive/monitoring.d.ts.map +1 -0
  49. package/dist/commands/interactive/monitoring.js +96 -0
  50. package/dist/commands/interactive/monitoring.js.map +1 -0
  51. package/dist/commands/interactive/plugins.d.ts +2 -0
  52. package/dist/commands/interactive/plugins.d.ts.map +1 -0
  53. package/dist/commands/interactive/plugins.js +30 -0
  54. package/dist/commands/interactive/plugins.js.map +1 -0
  55. package/dist/commands/interactive/security.d.ts +9 -0
  56. package/dist/commands/interactive/security.d.ts.map +1 -0
  57. package/dist/commands/interactive/security.js +535 -0
  58. package/dist/commands/interactive/security.js.map +1 -0
  59. package/dist/commands/interactive/server-management.d.ts +5 -0
  60. package/dist/commands/interactive/server-management.d.ts.map +1 -0
  61. package/dist/commands/interactive/server-management.js +79 -0
  62. package/dist/commands/interactive/server-management.js.map +1 -0
  63. package/dist/commands/interactive/shared.d.ts +12 -0
  64. package/dist/commands/interactive/shared.d.ts.map +1 -0
  65. package/dist/commands/interactive/shared.js +30 -0
  66. package/dist/commands/interactive/shared.js.map +1 -0
  67. package/dist/commands/interactive.d.ts.map +1 -1
  68. package/dist/commands/interactive.js +29 -0
  69. package/dist/commands/interactive.js.map +1 -1
  70. package/dist/commands/lock.js +1 -1
  71. package/dist/commands/lock.js.map +1 -1
  72. package/dist/commands/plugin.d.ts +8 -0
  73. package/dist/commands/plugin.d.ts.map +1 -0
  74. package/dist/commands/plugin.js +87 -0
  75. package/dist/commands/plugin.js.map +1 -0
  76. package/dist/commands/regression.d.ts.map +1 -1
  77. package/dist/commands/regression.js +1 -2
  78. package/dist/commands/regression.js.map +1 -1
  79. package/dist/commands/restart.d.ts.map +1 -1
  80. package/dist/commands/restart.js +3 -2
  81. package/dist/commands/restart.js.map +1 -1
  82. package/dist/commands/schedule.js +2 -2
  83. package/dist/commands/schedule.js.map +1 -1
  84. package/dist/core/audit/checkIds.d.ts +516 -0
  85. package/dist/core/audit/checkIds.d.ts.map +1 -0
  86. package/dist/core/audit/checkIds.js +515 -0
  87. package/dist/core/audit/checkIds.js.map +1 -0
  88. package/dist/core/audit/checks/accounts.d.ts.map +1 -1
  89. package/dist/core/audit/checks/accounts.js +23 -22
  90. package/dist/core/audit/checks/accounts.js.map +1 -1
  91. package/dist/core/audit/checks/auth.d.ts.map +1 -1
  92. package/dist/core/audit/checks/auth.js +23 -22
  93. package/dist/core/audit/checks/auth.js.map +1 -1
  94. package/dist/core/audit/checks/backup.d.ts.map +1 -1
  95. package/dist/core/audit/checks/backup.js +9 -8
  96. package/dist/core/audit/checks/backup.js.map +1 -1
  97. package/dist/core/audit/checks/banners.d.ts.map +1 -1
  98. package/dist/core/audit/checks/banners.js +7 -6
  99. package/dist/core/audit/checks/banners.js.map +1 -1
  100. package/dist/core/audit/checks/boot.d.ts.map +1 -1
  101. package/dist/core/audit/checks/boot.js +12 -11
  102. package/dist/core/audit/checks/boot.js.map +1 -1
  103. package/dist/core/audit/checks/cloudmeta.d.ts.map +1 -1
  104. package/dist/core/audit/checks/cloudmeta.js +7 -6
  105. package/dist/core/audit/checks/cloudmeta.js.map +1 -1
  106. package/dist/core/audit/checks/crypto.d.ts +0 -5
  107. package/dist/core/audit/checks/crypto.d.ts.map +1 -1
  108. package/dist/core/audit/checks/crypto.js +20 -19
  109. package/dist/core/audit/checks/crypto.js.map +1 -1
  110. package/dist/core/audit/checks/ddos.d.ts.map +1 -1
  111. package/dist/core/audit/checks/ddos.js +9 -8
  112. package/dist/core/audit/checks/ddos.js.map +1 -1
  113. package/dist/core/audit/checks/dns.d.ts.map +1 -1
  114. package/dist/core/audit/checks/dns.js +9 -8
  115. package/dist/core/audit/checks/dns.js.map +1 -1
  116. package/dist/core/audit/checks/docker.d.ts.map +1 -1
  117. package/dist/core/audit/checks/docker.js +65 -64
  118. package/dist/core/audit/checks/docker.js.map +1 -1
  119. package/dist/core/audit/checks/fileintegrity.d.ts.map +1 -1
  120. package/dist/core/audit/checks/fileintegrity.js +11 -10
  121. package/dist/core/audit/checks/fileintegrity.js.map +1 -1
  122. package/dist/core/audit/checks/filesystem.d.ts.map +1 -1
  123. package/dist/core/audit/checks/filesystem.js +21 -20
  124. package/dist/core/audit/checks/filesystem.js.map +1 -1
  125. package/dist/core/audit/checks/firewall.d.ts.map +1 -1
  126. package/dist/core/audit/checks/firewall.js +18 -17
  127. package/dist/core/audit/checks/firewall.js.map +1 -1
  128. package/dist/core/audit/checks/httpHeaders.d.ts.map +1 -1
  129. package/dist/core/audit/checks/httpHeaders.js +7 -6
  130. package/dist/core/audit/checks/httpHeaders.js.map +1 -1
  131. package/dist/core/audit/checks/incidentready.d.ts.map +1 -1
  132. package/dist/core/audit/checks/incidentready.js +13 -12
  133. package/dist/core/audit/checks/incidentready.js.map +1 -1
  134. package/dist/core/audit/checks/kernel.d.ts.map +1 -1
  135. package/dist/core/audit/checks/kernel.js +32 -31
  136. package/dist/core/audit/checks/kernel.js.map +1 -1
  137. package/dist/core/audit/checks/logging.d.ts.map +1 -1
  138. package/dist/core/audit/checks/logging.js +21 -20
  139. package/dist/core/audit/checks/logging.js.map +1 -1
  140. package/dist/core/audit/checks/mac.d.ts.map +1 -1
  141. package/dist/core/audit/checks/mac.js +11 -10
  142. package/dist/core/audit/checks/mac.js.map +1 -1
  143. package/dist/core/audit/checks/malware.d.ts.map +1 -1
  144. package/dist/core/audit/checks/malware.js +12 -11
  145. package/dist/core/audit/checks/malware.js.map +1 -1
  146. package/dist/core/audit/checks/memory.d.ts.map +1 -1
  147. package/dist/core/audit/checks/memory.js +12 -11
  148. package/dist/core/audit/checks/memory.js.map +1 -1
  149. package/dist/core/audit/checks/network.d.ts.map +1 -1
  150. package/dist/core/audit/checks/network.js +22 -21
  151. package/dist/core/audit/checks/network.js.map +1 -1
  152. package/dist/core/audit/checks/nginx.d.ts.map +1 -1
  153. package/dist/core/audit/checks/nginx.js +17 -16
  154. package/dist/core/audit/checks/nginx.js.map +1 -1
  155. package/dist/core/audit/checks/resourcelimits.d.ts.map +1 -1
  156. package/dist/core/audit/checks/resourcelimits.js +9 -8
  157. package/dist/core/audit/checks/resourcelimits.js.map +1 -1
  158. package/dist/core/audit/checks/scheduling.d.ts.map +1 -1
  159. package/dist/core/audit/checks/scheduling.js +13 -12
  160. package/dist/core/audit/checks/scheduling.js.map +1 -1
  161. package/dist/core/audit/checks/secrets.d.ts.map +1 -1
  162. package/dist/core/audit/checks/secrets.js +16 -15
  163. package/dist/core/audit/checks/secrets.js.map +1 -1
  164. package/dist/core/audit/checks/services.d.ts.map +1 -1
  165. package/dist/core/audit/checks/services.js +26 -25
  166. package/dist/core/audit/checks/services.js.map +1 -1
  167. package/dist/core/audit/checks/ssh.d.ts.map +1 -1
  168. package/dist/core/audit/checks/ssh.js +23 -22
  169. package/dist/core/audit/checks/ssh.js.map +1 -1
  170. package/dist/core/audit/checks/supplychain.d.ts.map +1 -1
  171. package/dist/core/audit/checks/supplychain.js +13 -12
  172. package/dist/core/audit/checks/supplychain.js.map +1 -1
  173. package/dist/core/audit/checks/time.d.ts.map +1 -1
  174. package/dist/core/audit/checks/time.js +10 -9
  175. package/dist/core/audit/checks/time.js.map +1 -1
  176. package/dist/core/audit/checks/tls.d.ts.map +1 -1
  177. package/dist/core/audit/checks/tls.js +9 -8
  178. package/dist/core/audit/checks/tls.js.map +1 -1
  179. package/dist/core/audit/checks/updates.d.ts.map +1 -1
  180. package/dist/core/audit/checks/updates.js +12 -11
  181. package/dist/core/audit/checks/updates.js.map +1 -1
  182. package/dist/core/audit/compliance/categories/index.d.ts +3 -0
  183. package/dist/core/audit/compliance/categories/index.d.ts.map +1 -0
  184. package/dist/core/audit/compliance/categories/index.js +737 -0
  185. package/dist/core/audit/compliance/categories/index.js.map +1 -0
  186. package/dist/core/audit/compliance/helpers.d.ts +17 -0
  187. package/dist/core/audit/compliance/helpers.d.ts.map +1 -0
  188. package/dist/core/audit/compliance/helpers.js +40 -0
  189. package/dist/core/audit/compliance/helpers.js.map +1 -0
  190. package/dist/core/audit/compliance/mapper.d.ts +4 -16
  191. package/dist/core/audit/compliance/mapper.d.ts.map +1 -1
  192. package/dist/core/audit/compliance/mapper.js +3 -776
  193. package/dist/core/audit/compliance/mapper.js.map +1 -1
  194. package/dist/core/audit/fix-history.d.ts +16 -7
  195. package/dist/core/audit/fix-history.d.ts.map +1 -1
  196. package/dist/core/audit/fix-history.js +25 -2
  197. package/dist/core/audit/fix-history.js.map +1 -1
  198. package/dist/core/audit/fix.d.ts +17 -2
  199. package/dist/core/audit/fix.d.ts.map +1 -1
  200. package/dist/core/audit/fix.js +115 -42
  201. package/dist/core/audit/fix.js.map +1 -1
  202. package/dist/core/audit/formatters/badge.js +20 -20
  203. package/dist/core/audit/index.d.ts.map +1 -1
  204. package/dist/core/audit/index.js +3 -2
  205. package/dist/core/audit/index.js.map +1 -1
  206. package/dist/core/audit/snapshot.d.ts.map +1 -1
  207. package/dist/core/audit/snapshot.js +6 -2
  208. package/dist/core/audit/snapshot.js.map +1 -1
  209. package/dist/core/audit/types.d.ts +11 -1
  210. package/dist/core/audit/types.d.ts.map +1 -1
  211. package/dist/core/audit/watch.d.ts.map +1 -1
  212. package/dist/core/audit/watch.js +3 -2
  213. package/dist/core/audit/watch.js.map +1 -1
  214. package/dist/core/backup.d.ts.map +1 -1
  215. package/dist/core/backup.js +10 -5
  216. package/dist/core/backup.js.map +1 -1
  217. package/dist/core/bot/handlers.d.ts.map +1 -1
  218. package/dist/core/bot/handlers.js +2 -17
  219. package/dist/core/bot/handlers.js.map +1 -1
  220. package/dist/core/completions.d.ts.map +1 -1
  221. package/dist/core/completions.js +632 -610
  222. package/dist/core/completions.js.map +1 -1
  223. package/dist/core/deploy.d.ts.map +1 -1
  224. package/dist/core/deploy.js +7 -4
  225. package/dist/core/deploy.js.map +1 -1
  226. package/dist/core/doctor-fix.d.ts +1 -1
  227. package/dist/core/doctor-fix.d.ts.map +1 -1
  228. package/dist/core/doctor-fix.js +17 -2
  229. package/dist/core/doctor-fix.js.map +1 -1
  230. package/dist/core/doctor.d.ts.map +1 -1
  231. package/dist/core/doctor.js +2 -1
  232. package/dist/core/doctor.js.map +1 -1
  233. package/dist/core/firewall.d.ts +0 -1
  234. package/dist/core/firewall.d.ts.map +1 -1
  235. package/dist/core/firewall.js +2 -13
  236. package/dist/core/firewall.js.map +1 -1
  237. package/dist/core/lock/auth.d.ts +7 -0
  238. package/dist/core/lock/auth.d.ts.map +1 -0
  239. package/dist/core/lock/auth.js +59 -0
  240. package/dist/core/lock/auth.js.map +1 -0
  241. package/dist/core/lock/docker.d.ts +4 -0
  242. package/dist/core/lock/docker.d.ts.map +1 -0
  243. package/dist/core/lock/docker.js +28 -0
  244. package/dist/core/lock/docker.js.map +1 -0
  245. package/dist/core/lock/index.d.ts +11 -0
  246. package/dist/core/lock/index.d.ts.map +1 -0
  247. package/dist/core/lock/index.js +247 -0
  248. package/dist/core/lock/index.js.map +1 -0
  249. package/dist/core/lock/monitoring.d.ts +4 -0
  250. package/dist/core/lock/monitoring.d.ts.map +1 -0
  251. package/dist/core/lock/monitoring.js +55 -0
  252. package/dist/core/lock/monitoring.js.map +1 -0
  253. package/dist/core/lock/network.d.ts +6 -0
  254. package/dist/core/lock/network.d.ts.map +1 -0
  255. package/dist/core/lock/network.js +59 -0
  256. package/dist/core/lock/network.js.map +1 -0
  257. package/dist/core/lock/ssh.d.ts +5 -0
  258. package/dist/core/lock/ssh.d.ts.map +1 -0
  259. package/dist/core/lock/ssh.js +49 -0
  260. package/dist/core/lock/ssh.js.map +1 -0
  261. package/dist/core/lock/system.d.ts +9 -0
  262. package/dist/core/lock/system.d.ts.map +1 -0
  263. package/dist/core/lock/system.js +80 -0
  264. package/dist/core/lock/system.js.map +1 -0
  265. package/dist/core/lock/types.d.ts +41 -0
  266. package/dist/core/lock/types.d.ts.map +1 -0
  267. package/dist/core/lock/types.js +2 -0
  268. package/dist/core/lock/types.js.map +1 -0
  269. package/dist/core/maintain.d.ts.map +1 -1
  270. package/dist/core/maintain.js +3 -1
  271. package/dist/core/maintain.js.map +1 -1
  272. package/dist/core/manage.d.ts.map +1 -1
  273. package/dist/core/manage.js +7 -4
  274. package/dist/core/manage.js.map +1 -1
  275. package/dist/core/notify.d.ts.map +1 -1
  276. package/dist/core/notify.js +2 -1
  277. package/dist/core/notify.js.map +1 -1
  278. package/dist/core/notifyStore.d.ts.map +1 -1
  279. package/dist/core/notifyStore.js +3 -1
  280. package/dist/core/notifyStore.js.map +1 -1
  281. package/dist/core/plugin.d.ts +23 -0
  282. package/dist/core/plugin.d.ts.map +1 -0
  283. package/dist/core/plugin.js +107 -0
  284. package/dist/core/plugin.js.map +1 -0
  285. package/dist/core/provision.d.ts.map +1 -1
  286. package/dist/core/provision.js +9 -4
  287. package/dist/core/provision.js.map +1 -1
  288. package/dist/core/scheduleManager.d.ts +2 -1
  289. package/dist/core/scheduleManager.d.ts.map +1 -1
  290. package/dist/core/scheduleManager.js +13 -7
  291. package/dist/core/scheduleManager.js.map +1 -1
  292. package/dist/index.js +34 -2
  293. package/dist/index.js.map +1 -1
  294. package/dist/mcp/index.js +5 -9
  295. package/dist/mcp/index.js.map +1 -1
  296. package/dist/mcp/schemas/audit.d.ts +34 -0
  297. package/dist/mcp/schemas/audit.d.ts.map +1 -0
  298. package/dist/mcp/schemas/audit.js +23 -0
  299. package/dist/mcp/schemas/audit.js.map +1 -0
  300. package/dist/mcp/schemas/common.d.ts +16 -0
  301. package/dist/mcp/schemas/common.d.ts.map +1 -0
  302. package/dist/mcp/schemas/common.js +14 -0
  303. package/dist/mcp/schemas/common.js.map +1 -0
  304. package/dist/mcp/schemas/health.d.ts +14 -0
  305. package/dist/mcp/schemas/health.d.ts.map +1 -0
  306. package/dist/mcp/schemas/health.js +13 -0
  307. package/dist/mcp/schemas/health.js.map +1 -0
  308. package/dist/mcp/schemas/index.d.ts +5 -0
  309. package/dist/mcp/schemas/index.d.ts.map +1 -0
  310. package/dist/mcp/schemas/index.js +5 -0
  311. package/dist/mcp/schemas/index.js.map +1 -0
  312. package/dist/mcp/schemas/server.d.ts +18 -0
  313. package/dist/mcp/schemas/server.d.ts.map +1 -0
  314. package/dist/mcp/schemas/server.js +16 -0
  315. package/dist/mcp/schemas/server.js.map +1 -0
  316. package/dist/mcp/server.d.ts.map +1 -1
  317. package/dist/mcp/server.js +71 -40
  318. package/dist/mcp/server.js.map +1 -1
  319. package/dist/mcp/tools/serverAudit.d.ts +63 -1
  320. package/dist/mcp/tools/serverAudit.d.ts.map +1 -1
  321. package/dist/mcp/tools/serverAudit.js +63 -6
  322. package/dist/mcp/tools/serverAudit.js.map +1 -1
  323. package/dist/mcp/tools/serverBackup.d.ts +100 -2
  324. package/dist/mcp/tools/serverBackup.d.ts.map +1 -1
  325. package/dist/mcp/tools/serverBackup.handlers.d.ts.map +1 -1
  326. package/dist/mcp/tools/serverBackup.handlers.js +9 -0
  327. package/dist/mcp/tools/serverBackup.handlers.js.map +1 -1
  328. package/dist/mcp/tools/serverBackup.js +74 -0
  329. package/dist/mcp/tools/serverBackup.js.map +1 -1
  330. package/dist/mcp/tools/serverCompare.d.ts +33 -0
  331. package/dist/mcp/tools/serverCompare.d.ts.map +1 -1
  332. package/dist/mcp/tools/serverCompare.js +45 -2
  333. package/dist/mcp/tools/serverCompare.js.map +1 -1
  334. package/dist/mcp/tools/serverDoctor.d.ts +14 -0
  335. package/dist/mcp/tools/serverDoctor.d.ts.map +1 -1
  336. package/dist/mcp/tools/serverDoctor.js +16 -1
  337. package/dist/mcp/tools/serverDoctor.js.map +1 -1
  338. package/dist/mcp/tools/serverEvidence.d.ts +13 -0
  339. package/dist/mcp/tools/serverEvidence.d.ts.map +1 -1
  340. package/dist/mcp/tools/serverEvidence.js +17 -2
  341. package/dist/mcp/tools/serverEvidence.js.map +1 -1
  342. package/dist/mcp/tools/serverExplain.d.ts +17 -0
  343. package/dist/mcp/tools/serverExplain.d.ts.map +1 -1
  344. package/dist/mcp/tools/serverExplain.js +33 -1
  345. package/dist/mcp/tools/serverExplain.js.map +1 -1
  346. package/dist/mcp/tools/serverFix.d.ts +78 -0
  347. package/dist/mcp/tools/serverFix.d.ts.map +1 -1
  348. package/dist/mcp/tools/serverFix.js +87 -0
  349. package/dist/mcp/tools/serverFix.js.map +1 -1
  350. package/dist/mcp/tools/serverFleet.d.ts +24 -1
  351. package/dist/mcp/tools/serverFleet.d.ts.map +1 -1
  352. package/dist/mcp/tools/serverFleet.js +24 -1
  353. package/dist/mcp/tools/serverFleet.js.map +1 -1
  354. package/dist/mcp/tools/serverGuard.d.ts +12 -0
  355. package/dist/mcp/tools/serverGuard.d.ts.map +1 -1
  356. package/dist/mcp/tools/serverGuard.js +16 -0
  357. package/dist/mcp/tools/serverGuard.js.map +1 -1
  358. package/dist/mcp/tools/serverInfo.d.ts +77 -1
  359. package/dist/mcp/tools/serverInfo.d.ts.map +1 -1
  360. package/dist/mcp/tools/serverInfo.js +77 -4
  361. package/dist/mcp/tools/serverInfo.js.map +1 -1
  362. package/dist/mcp/tools/serverLock.d.ts +10 -0
  363. package/dist/mcp/tools/serverLock.d.ts.map +1 -1
  364. package/dist/mcp/tools/serverLock.js +15 -3
  365. package/dist/mcp/tools/serverLock.js.map +1 -1
  366. package/dist/mcp/tools/serverLogs.d.ts +43 -0
  367. package/dist/mcp/tools/serverLogs.d.ts.map +1 -1
  368. package/dist/mcp/tools/serverLogs.js +28 -0
  369. package/dist/mcp/tools/serverLogs.js.map +1 -1
  370. package/dist/mcp/tools/serverMaintain.d.ts +47 -0
  371. package/dist/mcp/tools/serverMaintain.d.ts.map +1 -1
  372. package/dist/mcp/tools/serverMaintain.js +75 -41
  373. package/dist/mcp/tools/serverMaintain.js.map +1 -1
  374. package/dist/mcp/tools/serverManage.d.ts +50 -0
  375. package/dist/mcp/tools/serverManage.d.ts.map +1 -1
  376. package/dist/mcp/tools/serverManage.js +49 -0
  377. package/dist/mcp/tools/serverManage.js.map +1 -1
  378. package/dist/mcp/tools/serverPlugin.d.ts +30 -0
  379. package/dist/mcp/tools/serverPlugin.d.ts.map +1 -0
  380. package/dist/mcp/tools/serverPlugin.js +47 -0
  381. package/dist/mcp/tools/serverPlugin.js.map +1 -0
  382. package/dist/mcp/tools/serverProvision.d.ts +22 -0
  383. package/dist/mcp/tools/serverProvision.d.ts.map +1 -1
  384. package/dist/mcp/tools/serverProvision.js +22 -2
  385. package/dist/mcp/tools/serverProvision.js.map +1 -1
  386. package/dist/mcp/tools/serverSecure.d.ts +120 -0
  387. package/dist/mcp/tools/serverSecure.d.ts.map +1 -1
  388. package/dist/mcp/tools/serverSecure.handlers.d.ts.map +1 -1
  389. package/dist/mcp/tools/serverSecure.handlers.js +39 -98
  390. package/dist/mcp/tools/serverSecure.handlers.js.map +1 -1
  391. package/dist/mcp/tools/serverSecure.js +101 -0
  392. package/dist/mcp/tools/serverSecure.js.map +1 -1
  393. package/dist/mcp/utils.d.ts +1 -0
  394. package/dist/mcp/utils.d.ts.map +1 -1
  395. package/dist/mcp/utils.js +5 -1
  396. package/dist/mcp/utils.js.map +1 -1
  397. package/dist/plugin/loader.d.ts +10 -0
  398. package/dist/plugin/loader.d.ts.map +1 -0
  399. package/dist/plugin/loader.js +88 -0
  400. package/dist/plugin/loader.js.map +1 -0
  401. package/dist/plugin/registry.d.ts +16 -0
  402. package/dist/plugin/registry.d.ts.map +1 -0
  403. package/dist/plugin/registry.js +101 -0
  404. package/dist/plugin/registry.js.map +1 -0
  405. package/dist/plugin/sdk/constants.d.ts +3 -0
  406. package/dist/plugin/sdk/constants.d.ts.map +1 -0
  407. package/dist/plugin/sdk/constants.js +3 -0
  408. package/dist/plugin/sdk/constants.js.map +1 -0
  409. package/dist/plugin/sdk/types.d.ts +29 -0
  410. package/dist/plugin/sdk/types.d.ts.map +1 -0
  411. package/dist/plugin/sdk/types.js +2 -0
  412. package/dist/plugin/sdk/types.js.map +1 -0
  413. package/dist/plugin/validate.d.ts +3 -0
  414. package/dist/plugin/validate.d.ts.map +1 -0
  415. package/dist/plugin/validate.js +31 -0
  416. package/dist/plugin/validate.js.map +1 -0
  417. package/dist/providers/base.d.ts.map +1 -1
  418. package/dist/providers/base.js +2 -1
  419. package/dist/providers/base.js.map +1 -1
  420. package/dist/providers/linode.d.ts +1 -0
  421. package/dist/providers/linode.d.ts.map +1 -1
  422. package/dist/providers/linode.js +4 -0
  423. package/dist/providers/linode.js.map +1 -1
  424. package/dist/utils/cloudInit.js +58 -58
  425. package/dist/utils/config.d.ts +3 -0
  426. package/dist/utils/config.d.ts.map +1 -1
  427. package/dist/utils/config.js +11 -6
  428. package/dist/utils/config.js.map +1 -1
  429. package/dist/utils/encryption.d.ts.map +1 -1
  430. package/dist/utils/encryption.js +4 -1
  431. package/dist/utils/encryption.js.map +1 -1
  432. package/dist/utils/errorMapper.d.ts.map +1 -1
  433. package/dist/utils/errorMapper.js +2 -1
  434. package/dist/utils/errorMapper.js.map +1 -1
  435. package/dist/utils/errors.d.ts +1 -0
  436. package/dist/utils/errors.d.ts.map +1 -1
  437. package/dist/utils/errors.js +3 -0
  438. package/dist/utils/errors.js.map +1 -1
  439. package/dist/utils/migration.d.ts.map +1 -1
  440. package/dist/utils/migration.js +25 -14
  441. package/dist/utils/migration.js.map +1 -1
  442. package/dist/utils/paths.d.ts +4 -0
  443. package/dist/utils/paths.d.ts.map +1 -1
  444. package/dist/utils/paths.js +4 -0
  445. package/dist/utils/paths.js.map +1 -1
  446. package/dist/utils/safeMode.d.ts.map +1 -1
  447. package/dist/utils/safeMode.js +3 -2
  448. package/dist/utils/safeMode.js.map +1 -1
  449. package/dist/utils/secureWrite.d.ts.map +1 -1
  450. package/dist/utils/secureWrite.js +2 -1
  451. package/dist/utils/secureWrite.js.map +1 -1
  452. package/dist/utils/securityLogger.d.ts.map +1 -1
  453. package/dist/utils/securityLogger.js +7 -3
  454. package/dist/utils/securityLogger.js.map +1 -1
  455. package/dist/utils/version.d.ts +4 -0
  456. package/dist/utils/version.d.ts.map +1 -0
  457. package/dist/utils/version.js +22 -0
  458. package/dist/utils/version.js.map +1 -0
  459. package/dist/utils/yamlConfig.d.ts.map +1 -1
  460. package/dist/utils/yamlConfig.js +3 -2
  461. package/dist/utils/yamlConfig.js.map +1 -1
  462. package/kastell-plugin/.claude-plugin/plugin.json +20 -0
  463. package/kastell-plugin/.mcp.json +8 -0
  464. package/kastell-plugin/README.md +113 -0
  465. package/kastell-plugin/agents/.gitkeep +0 -0
  466. package/kastell-plugin/agents/kastell-auditor.md +77 -0
  467. package/kastell-plugin/agents/scripts/bucket_mapper.sh +101 -0
  468. package/kastell-plugin/agents/scripts/trend_report.sh +91 -0
  469. package/kastell-plugin/hooks/destroy-block.cjs +31 -0
  470. package/kastell-plugin/hooks/hooks.json +57 -0
  471. package/kastell-plugin/hooks/pre-commit-audit-guard.cjs +75 -0
  472. package/kastell-plugin/hooks/session-audit.cjs +86 -0
  473. package/kastell-plugin/hooks/session-log.cjs +56 -0
  474. package/kastell-plugin/hooks/stop-quality-check.cjs +72 -0
  475. package/kastell-plugin/skills/.gitkeep +0 -0
  476. package/kastell-plugin/skills/kastell-careful/SKILL.md +64 -0
  477. package/kastell-plugin/skills/kastell-ops/SKILL.md +139 -0
  478. package/kastell-plugin/skills/kastell-ops/references/commands.md +45 -0
  479. package/kastell-plugin/skills/kastell-ops/references/mcp-tools.md +50 -0
  480. package/kastell-plugin/skills/kastell-ops/references/patterns.md +145 -0
  481. package/kastell-plugin/skills/kastell-ops/references/pitfalls.md +136 -0
  482. package/kastell-plugin/skills/kastell-ops/scripts/check_coverage.sh +101 -0
  483. package/kastell-plugin/skills/kastell-ops/scripts/fleet_report.sh +73 -0
  484. package/kastell-plugin/skills/kastell-ops/scripts/parse_audit.sh +76 -0
  485. package/kastell-plugin/skills/kastell-research/SKILL.md +90 -0
  486. package/kastell-plugin/skills/kastell-scaffold/SKILL.md +104 -0
  487. package/kastell-plugin/skills/kastell-scaffold/references/template-audit-check.md +150 -0
  488. package/kastell-plugin/skills/kastell-scaffold/references/template-command.md +80 -0
  489. package/kastell-plugin/skills/kastell-scaffold/references/template-mcp-tool.md +72 -0
  490. package/kastell-plugin/skills/kastell-scaffold/references/template-provider.md +67 -0
  491. package/kastell-plugin/skills/kastell-scaffold/scripts/scaffold.sh +180 -0
  492. package/kastell-plugin/skills/kastell-scaffold/templates/check-test.ts.tpl +27 -0
  493. package/kastell-plugin/skills/kastell-scaffold/templates/check.ts.tpl +50 -0
  494. package/kastell-plugin/skills/kastell-scaffold/templates/command-core.ts.tpl +18 -0
  495. package/kastell-plugin/skills/kastell-scaffold/templates/command-test.ts.tpl +17 -0
  496. package/kastell-plugin/skills/kastell-scaffold/templates/command.ts.tpl +25 -0
  497. package/kastell-plugin/skills/kastell-scaffold/templates/mcp-tool-test.ts.tpl +30 -0
  498. package/kastell-plugin/skills/kastell-scaffold/templates/mcp-tool.ts.tpl +29 -0
  499. package/kastell-plugin/skills/kastell-scaffold/templates/provider-test.ts.tpl +34 -0
  500. package/kastell-plugin/skills/kastell-scaffold/templates/provider.ts.tpl +32 -0
  501. package/package.json +122 -113
@@ -0,0 +1,535 @@
1
+ import inquirer from "inquirer";
2
+ import { promptList, validateRequired, validateScore, validateColonPair } from "./shared.js";
3
+ import { listAllProfileNames } from "../../core/audit/profiles.js";
4
+ import { isValidPort } from "../../core/firewall.js";
5
+ export async function promptFirewall() {
6
+ const sub = await promptList("Firewall action:", [
7
+ { name: "Show current rules", value: "status" },
8
+ { name: "Initial firewall setup", value: "setup" },
9
+ { name: "Add a port rule", value: "add" },
10
+ { name: "Remove a port rule", value: "remove" },
11
+ ]);
12
+ if (!sub)
13
+ return null;
14
+ if (sub === "add" || sub === "remove") {
15
+ const answers = await inquirer.prompt([
16
+ {
17
+ type: "input",
18
+ name: "port",
19
+ message: "Port number:",
20
+ validate: (v) => isValidPort(Number(v)) || "Enter a valid port (1-65535)",
21
+ },
22
+ ]);
23
+ const protocol = await promptList("Protocol:", [
24
+ { name: "TCP", value: "tcp" },
25
+ { name: "UDP", value: "udp" },
26
+ ]);
27
+ if (!protocol)
28
+ return null;
29
+ return ["firewall", sub, "--port", answers.port, "--protocol", protocol];
30
+ }
31
+ return ["firewall", sub];
32
+ }
33
+ export async function promptSecure() {
34
+ const sub = await promptList("Security action:", [
35
+ { name: "Harden SSH + install fail2ban", value: "setup" },
36
+ { name: "Run security audit", value: "audit" },
37
+ { name: "Show security status", value: "status" },
38
+ ]);
39
+ if (!sub)
40
+ return null;
41
+ return ["secure", sub];
42
+ }
43
+ export async function promptDomain() {
44
+ const sub = await promptList("Domain action:", [
45
+ { name: "Show current domain info", value: "info" },
46
+ { name: "List domains", value: "list" },
47
+ { name: "Set a custom domain", value: "add" },
48
+ { name: "Check DNS for a domain", value: "check" },
49
+ { name: "Remove domain", value: "remove" },
50
+ ]);
51
+ if (!sub)
52
+ return null;
53
+ if (sub === "add" || sub === "check") {
54
+ const { domain } = await inquirer.prompt([
55
+ {
56
+ type: "input",
57
+ name: "domain",
58
+ message: "Domain name (e.g. panel.example.com):",
59
+ validate: (v) => (v.includes(".") ? true : "Enter a valid domain"),
60
+ },
61
+ ]);
62
+ const args = ["domain", sub, "--domain", domain];
63
+ if (sub === "add") {
64
+ const { ssl } = await inquirer.prompt([
65
+ { type: "confirm", name: "ssl", message: "Enable SSL (HTTPS)?", default: true },
66
+ ]);
67
+ if (!ssl)
68
+ args.push("--no-ssl");
69
+ }
70
+ return args;
71
+ }
72
+ return ["domain", sub];
73
+ }
74
+ export async function promptAuth() {
75
+ const sub = await promptList("Auth action:", [
76
+ { name: "List stored tokens", value: "list" },
77
+ { name: "Store a provider token", value: "set" },
78
+ { name: "Remove a provider token", value: "remove" },
79
+ ]);
80
+ if (!sub)
81
+ return null;
82
+ if (sub === "set" || sub === "remove") {
83
+ const provider = await promptList("Provider:", [
84
+ { name: "Hetzner Cloud", value: "hetzner" },
85
+ { name: "DigitalOcean", value: "digitalocean" },
86
+ { name: "Vultr", value: "vultr" },
87
+ { name: "Linode", value: "linode" },
88
+ ]);
89
+ if (!provider)
90
+ return null;
91
+ return ["auth", sub, provider];
92
+ }
93
+ return ["auth", sub];
94
+ }
95
+ export async function promptAudit() {
96
+ const mode = await promptList("Audit mode:", [
97
+ { name: "Run full audit", value: "run" },
98
+ { name: "Run with --explain (show fixes)", value: "explain" },
99
+ { name: "Compare two snapshots (diff)", value: "diff" },
100
+ { name: "Interactive fix mode", value: "fix" },
101
+ { name: "List all checks (no scan)", value: "list-checks" },
102
+ { name: "Explain a specific check (deep-dive)", value: "explain-check" },
103
+ { name: "Run with compliance profile", value: "profile" },
104
+ { name: "Compliance framework report", value: "compliance" },
105
+ { name: "Save snapshot", value: "snapshot" },
106
+ { name: "List saved snapshots", value: "snapshots" },
107
+ { name: "Compare two servers", value: "compare" },
108
+ { name: "Score trend over time", value: "trend" },
109
+ { name: "Watch mode (auto-refresh)", value: "watch" },
110
+ { name: "Audit unregistered server by IP", value: "host" },
111
+ { name: "CI gate (exit 1 if below threshold)", value: "threshold" },
112
+ { name: "Generate report (HTML/Markdown)", value: "report" },
113
+ ]);
114
+ if (!mode)
115
+ return null;
116
+ if (mode === "explain")
117
+ return ["audit", "--explain"];
118
+ if (mode === "diff") {
119
+ const { diffRef } = await inquirer.prompt([
120
+ {
121
+ type: "input",
122
+ name: "diffRef",
123
+ message: "Diff reference (e.g. pre-upgrade:latest or pre-upgrade:post-upgrade):",
124
+ validate: validateColonPair("Format: before:after (e.g. pre-upgrade:latest)"),
125
+ },
126
+ ]);
127
+ return ["audit", "--diff", diffRef];
128
+ }
129
+ if (mode === "fix") {
130
+ const dryRun = await promptList("Fix mode:", [
131
+ { name: "Execute fixes interactively", value: "live" },
132
+ { name: "Dry run (show commands only)", value: "dry-run" },
133
+ ]);
134
+ if (!dryRun)
135
+ return null;
136
+ const args = ["audit", "--fix"];
137
+ if (dryRun === "dry-run")
138
+ args.push("--dry-run");
139
+ return args;
140
+ }
141
+ if (mode === "list-checks")
142
+ return ["audit", "--list-checks"];
143
+ if (mode === "explain-check") {
144
+ const { checkId } = await inquirer.prompt([
145
+ {
146
+ type: "input",
147
+ name: "checkId",
148
+ message: "Enter check ID (e.g. SSH-PASSWORD-AUTH):",
149
+ },
150
+ ]);
151
+ if (!checkId?.trim())
152
+ return null;
153
+ return ["explain", checkId.trim()];
154
+ }
155
+ if (mode === "snapshot") {
156
+ const { snapName } = await inquirer.prompt([
157
+ { type: "input", name: "snapName", message: "Snapshot name (leave empty for auto):", default: "" },
158
+ ]);
159
+ return snapName ? ["audit", "--snapshot", snapName] : ["audit", "--snapshot"];
160
+ }
161
+ if (mode === "snapshots")
162
+ return ["audit", "--snapshots"];
163
+ if (mode === "compare") {
164
+ const { compareRef } = await inquirer.prompt([
165
+ {
166
+ type: "input",
167
+ name: "compareRef",
168
+ message: "Compare (server1:server2):",
169
+ validate: validateColonPair("Format: server1:server2"),
170
+ },
171
+ ]);
172
+ const compareMode = await promptList("Compare mode:", [
173
+ { name: "Category summary (default)", value: "summary" },
174
+ { name: "Check-level diff (detailed)", value: "detail" },
175
+ ]);
176
+ if (!compareMode)
177
+ return null;
178
+ const args = ["audit", "--compare", compareRef];
179
+ if (compareMode === "detail")
180
+ args.push("--detail");
181
+ return args;
182
+ }
183
+ if (mode === "trend") {
184
+ const days = await promptList("Time range:", [
185
+ { name: "Last 7 days", value: "7" },
186
+ { name: "Last 30 days", value: "30" },
187
+ { name: "All time", value: "0" },
188
+ ]);
189
+ if (!days)
190
+ return null;
191
+ return days === "0" ? ["audit", "--trend"] : ["audit", "--trend", "--days", days];
192
+ }
193
+ if (mode === "watch") {
194
+ const interval = await promptList("Refresh interval:", [
195
+ { name: "30 seconds", value: "30" },
196
+ { name: "60 seconds", value: "60" },
197
+ { name: "300 seconds (5 min)", value: "300" },
198
+ ]);
199
+ if (!interval)
200
+ return null;
201
+ return ["audit", "--watch", interval];
202
+ }
203
+ if (mode === "host") {
204
+ const { hostAddr } = await inquirer.prompt([
205
+ {
206
+ type: "input",
207
+ name: "hostAddr",
208
+ message: "Server address (user@ip):",
209
+ validate: (v) => (v.includes("@") ? true : "Format: user@ip"),
210
+ },
211
+ ]);
212
+ return ["audit", "--host", hostAddr];
213
+ }
214
+ if (mode === "threshold") {
215
+ const { thresholdScore } = await inquirer.prompt([
216
+ {
217
+ type: "input",
218
+ name: "thresholdScore",
219
+ message: "Minimum score (exit 1 if below):",
220
+ validate: validateScore,
221
+ },
222
+ ]);
223
+ return ["audit", "--threshold", thresholdScore];
224
+ }
225
+ if (mode === "report") {
226
+ const reportFormat = await promptList("Report format:", [
227
+ { name: "Markdown (.md)", value: "md" },
228
+ { name: "HTML (.html)", value: "html" },
229
+ ]);
230
+ if (!reportFormat)
231
+ return null;
232
+ return ["audit", "--report", reportFormat];
233
+ }
234
+ if (mode === "profile") {
235
+ const profile = await promptList("Compliance profile:", [
236
+ { name: "CIS Level 1 (essential)", value: "cis-level1" },
237
+ { name: "CIS Level 2 (advanced)", value: "cis-level2" },
238
+ { name: "PCI-DSS (payment)", value: "pci-dss" },
239
+ { name: "HIPAA (healthcare)", value: "hipaa" },
240
+ ]);
241
+ if (!profile)
242
+ return null;
243
+ const format = await promptList("Output format:", [
244
+ { name: "Dashboard summary", value: "summary" },
245
+ { name: "JSON output", value: "json" },
246
+ { name: "Score only", value: "score-only" },
247
+ ]);
248
+ if (!format)
249
+ return null;
250
+ const args = ["audit", "--profile", profile];
251
+ if (format === "json")
252
+ args.push("--json");
253
+ else if (format === "score-only")
254
+ args.push("--score-only");
255
+ else
256
+ args.push("--summary");
257
+ return args;
258
+ }
259
+ if (mode === "compliance") {
260
+ const { frameworks } = await inquirer.prompt([
261
+ {
262
+ type: "checkbox",
263
+ name: "frameworks",
264
+ message: "Select compliance frameworks:",
265
+ choices: [
266
+ { name: "CIS Benchmark", value: "cis" },
267
+ { name: "PCI-DSS", value: "pci-dss" },
268
+ { name: "HIPAA", value: "hipaa" },
269
+ ],
270
+ validate: (v) => (v.length > 0 ? true : "Select at least one framework"),
271
+ },
272
+ ]);
273
+ return ["audit", "--compliance", frameworks.join(",")];
274
+ }
275
+ // mode === "run" — standard audit
276
+ const format = await promptList("Output format:", [
277
+ { name: "Dashboard summary", value: "summary" },
278
+ { name: "JSON output", value: "json" },
279
+ { name: "Score only", value: "score-only" },
280
+ { name: "SVG badge", value: "badge" },
281
+ { name: "Show score trend", value: "trend" },
282
+ ]);
283
+ if (!format)
284
+ return null;
285
+ const args = ["audit"];
286
+ if (format === "summary")
287
+ args.push("--summary");
288
+ else if (format === "json")
289
+ args.push("--json");
290
+ else if (format === "score-only")
291
+ args.push("--score-only");
292
+ else if (format === "badge")
293
+ args.push("--badge");
294
+ else if (format === "trend")
295
+ args.push("--trend");
296
+ // Optional category/severity filters (AUX-01, AUX-02)
297
+ const filter = await promptList("Filter results?", [
298
+ { name: "No filter (show all)", value: "none" },
299
+ { name: "Filter by category", value: "category" },
300
+ { name: "Filter by severity", value: "severity" },
301
+ { name: "Filter by both", value: "both" },
302
+ ]);
303
+ if (!filter)
304
+ return null;
305
+ if (filter === "category" || filter === "both") {
306
+ const TOP_CATEGORIES = [
307
+ { name: "SSH", value: "ssh" },
308
+ { name: "Firewall", value: "firewall" },
309
+ { name: "Updates", value: "updates" },
310
+ { name: "Auth", value: "auth" },
311
+ { name: "Docker", value: "docker" },
312
+ { name: "Network", value: "network" },
313
+ { name: "Kernel", value: "kernel" },
314
+ { name: "Logging", value: "logging" },
315
+ ];
316
+ const ALL_CATEGORIES = [
317
+ ...TOP_CATEGORIES,
318
+ { name: "Filesystem", value: "filesystem" },
319
+ { name: "Accounts", value: "accounts" },
320
+ { name: "Services", value: "services" },
321
+ { name: "Boot", value: "boot" },
322
+ { name: "Scheduling", value: "scheduling" },
323
+ { name: "Time", value: "time" },
324
+ { name: "Banners", value: "banners" },
325
+ { name: "Crypto", value: "crypto" },
326
+ { name: "File Integrity", value: "file integrity" },
327
+ { name: "Malware", value: "malware" },
328
+ { name: "MAC", value: "mac" },
329
+ { name: "Memory", value: "memory" },
330
+ { name: "Secrets", value: "secrets" },
331
+ { name: "Cloud Metadata", value: "cloud metadata" },
332
+ { name: "Supply Chain", value: "supply chain" },
333
+ { name: "Backup Hygiene", value: "backup hygiene" },
334
+ { name: "Resource Limits", value: "resource limits" },
335
+ { name: "Incident Readiness", value: "incident readiness" },
336
+ { name: "DNS Security", value: "dns security" },
337
+ ];
338
+ const category = await promptList("Category:", [
339
+ ...TOP_CATEGORIES,
340
+ { name: "Show all 31 categories...", value: "__all__" },
341
+ ]);
342
+ if (!category)
343
+ return null;
344
+ if (category === "__all__") {
345
+ const fullCategory = await promptList("Category:", ALL_CATEGORIES);
346
+ if (!fullCategory)
347
+ return null;
348
+ args.push("--category", fullCategory);
349
+ }
350
+ else {
351
+ args.push("--category", category);
352
+ }
353
+ }
354
+ if (filter === "severity" || filter === "both") {
355
+ const severity = await promptList("Severity:", [
356
+ { name: "Critical only", value: "critical" },
357
+ { name: "Warning", value: "warning" },
358
+ { name: "Info", value: "info" },
359
+ ]);
360
+ if (!severity)
361
+ return null;
362
+ args.push("--severity", severity);
363
+ }
364
+ return args;
365
+ }
366
+ export async function promptLock() {
367
+ const mode = await promptList("Lock mode:", [
368
+ { name: "Dry run (preview changes)", value: "dry-run" },
369
+ { name: "Apply production hardening", value: "production" },
370
+ { name: "Apply production (skip confirmation)", value: "production-force" },
371
+ ]);
372
+ if (!mode)
373
+ return null;
374
+ const args = ["lock"];
375
+ if (mode === "dry-run")
376
+ args.push("--dry-run");
377
+ else if (mode === "production-force")
378
+ args.push("--production", "--force");
379
+ else
380
+ args.push("--production");
381
+ return args;
382
+ }
383
+ export async function promptFix() {
384
+ const group = await promptList("Fix options:", [
385
+ { name: "Apply fixes", value: "apply" },
386
+ { name: "Fix history", value: "history" },
387
+ ]);
388
+ if (!group)
389
+ return null;
390
+ if (group === "apply") {
391
+ const mode = await promptList("Apply mode:", [
392
+ { name: "Dry run (preview safe fixes)", value: "dry-run" },
393
+ { name: "Apply safe fixes (backup + fix + verify)", value: "apply" },
394
+ { name: "Apply with profile filter", value: "profile" },
395
+ { name: "Apply with category filter", value: "category" },
396
+ { name: "Apply top N fixes by impact", value: "top" },
397
+ { name: "Apply until target score", value: "target" },
398
+ { name: "Apply with diff preview", value: "diff" },
399
+ { name: "Apply and generate report", value: "report" },
400
+ ]);
401
+ if (!mode)
402
+ return null;
403
+ if (mode === "dry-run")
404
+ return ["fix", "--safe", "--dry-run"];
405
+ if (mode === "apply")
406
+ return ["fix", "--safe"];
407
+ if (mode === "diff")
408
+ return ["fix", "--safe", "--diff"];
409
+ if (mode === "report")
410
+ return ["fix", "--safe", "--report"];
411
+ if (mode === "profile") {
412
+ const profileNames = listAllProfileNames();
413
+ const choices = profileNames.map((p) => ({ name: p, value: p }));
414
+ const profile = await promptList("Fix profile:", choices);
415
+ if (!profile)
416
+ return null;
417
+ return ["fix", "--safe", "--profile", profile];
418
+ }
419
+ if (mode === "category") {
420
+ const { cats } = await inquirer.prompt([{
421
+ type: "input",
422
+ name: "cats",
423
+ message: "Category filter (comma-separated, e.g. Auth,Kernel):",
424
+ validate: validateRequired("Enter at least one category"),
425
+ }]);
426
+ return ["fix", "--safe", "--category", cats];
427
+ }
428
+ if (mode === "top") {
429
+ const { n } = await inquirer.prompt([{
430
+ type: "input",
431
+ name: "n",
432
+ message: "Number of fixes to apply:",
433
+ validate: (v) => {
434
+ const num = Number(v);
435
+ return num >= 1 && Number.isInteger(num) ? true : "Enter a positive integer";
436
+ },
437
+ }]);
438
+ return ["fix", "--safe", "--top", n];
439
+ }
440
+ if (mode === "target") {
441
+ const { score } = await inquirer.prompt([{
442
+ type: "input",
443
+ name: "score",
444
+ message: "Target score (0-100):",
445
+ validate: validateScore,
446
+ }]);
447
+ return ["fix", "--safe", "--target", score];
448
+ }
449
+ }
450
+ if (group === "history") {
451
+ const action = await promptList("History action:", [
452
+ { name: "View fix history", value: "view" },
453
+ { name: "Rollback a specific fix", value: "rollback" },
454
+ { name: "Rollback all fixes", value: "rollback-all" },
455
+ { name: "Rollback down to a specific fix", value: "rollback-to" },
456
+ ]);
457
+ if (!action)
458
+ return null;
459
+ if (action === "view")
460
+ return ["fix", "--history"];
461
+ if (action === "rollback-all")
462
+ return ["fix", "--rollback-all"];
463
+ if (action === "rollback-to") {
464
+ const { fixId } = await inquirer.prompt([{
465
+ type: "input",
466
+ name: "fixId",
467
+ message: "Rollback down to fix ID:",
468
+ validate: validateRequired("Fix ID required"),
469
+ }]);
470
+ return ["fix", "--rollback-to", fixId];
471
+ }
472
+ if (action === "rollback") {
473
+ const { fixId } = await inquirer.prompt([{
474
+ type: "input",
475
+ name: "fixId",
476
+ message: "Fix ID (or 'last'):",
477
+ validate: validateRequired("Fix ID required"),
478
+ }]);
479
+ return ["fix", "--rollback", fixId];
480
+ }
481
+ }
482
+ return null;
483
+ }
484
+ export async function promptEvidence() {
485
+ const action = await promptList("Evidence collection:", [
486
+ { name: "Collect with default label", value: "default" },
487
+ { name: "Collect with custom label", value: "custom" },
488
+ { name: "Collect (overwrite existing)", value: "force" },
489
+ { name: "Collect (JSON manifest output)", value: "json" },
490
+ ]);
491
+ if (!action)
492
+ return null;
493
+ const args = ["evidence"];
494
+ if (action === "force")
495
+ args.push("--force");
496
+ if (action === "json")
497
+ args.push("--json");
498
+ if (action === "custom") {
499
+ const { name } = await inquirer.prompt([
500
+ {
501
+ type: "input",
502
+ name: "name",
503
+ message: "Evidence label (e.g. pre-incident, weekly-check):",
504
+ default: "manual",
505
+ },
506
+ ]);
507
+ args.push("--name", name);
508
+ }
509
+ else {
510
+ args.push("--name", "manual");
511
+ }
512
+ const options = await promptList("Collection options:", [
513
+ { name: "Full collection (default)", value: "full" },
514
+ { name: "Skip Docker data", value: "no-docker" },
515
+ { name: "Skip system info", value: "no-sysinfo" },
516
+ { name: "Skip Docker + system info", value: "no-both" },
517
+ ]);
518
+ if (!options)
519
+ return null;
520
+ if (options === "no-docker" || options === "no-both")
521
+ args.push("--no-docker");
522
+ if (options === "no-sysinfo" || options === "no-both")
523
+ args.push("--no-sysinfo");
524
+ const lines = await promptList("Log lines to collect:", [
525
+ { name: "100 lines", value: "100" },
526
+ { name: "500 lines (default)", value: "500" },
527
+ { name: "1000 lines", value: "1000" },
528
+ ]);
529
+ if (!lines)
530
+ return null;
531
+ if (lines !== "500")
532
+ args.push("--lines", lines);
533
+ return args;
534
+ }
535
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/commands/interactive/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function promptInit(): Promise<string[] | null>;
2
+ export declare function promptStatus(): Promise<string[] | null>;
3
+ export declare function promptSsh(): Promise<string[] | null>;
4
+ export declare function promptFleet(): Promise<string[] | null>;
5
+ //# sourceMappingURL=server-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-management.d.ts","sourceRoot":"","sources":["../../../src/commands/interactive/server-management.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA2B3D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAW7D;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAc1D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAa5D"}
@@ -0,0 +1,79 @@
1
+ import inquirer from "inquirer";
2
+ import { promptList } from "./shared.js";
3
+ export async function promptInit() {
4
+ const mode = await promptList("Server mode:", [
5
+ { name: "Coolify (auto-install panel)", value: "coolify" },
6
+ { name: "Dokploy (auto-install panel)", value: "dokploy" },
7
+ { name: "Bare (generic VPS, no panel)", value: "bare" },
8
+ ]);
9
+ if (!mode)
10
+ return null;
11
+ const template = await promptList("Server template:", [
12
+ { name: "Starter (cheapest option)", value: "starter" },
13
+ { name: "Production (more resources)", value: "production" },
14
+ { name: "Dev (development)", value: "dev" },
15
+ ]);
16
+ if (!template)
17
+ return null;
18
+ const { fullSetup } = await inquirer.prompt([
19
+ {
20
+ type: "confirm",
21
+ name: "fullSetup",
22
+ message: "Run full setup after deploy? (firewall + SSH hardening)",
23
+ default: true,
24
+ },
25
+ ]);
26
+ const args = ["init", "--mode", mode, "--template", template];
27
+ if (fullSetup)
28
+ args.push("--full-setup");
29
+ return args;
30
+ }
31
+ export async function promptStatus() {
32
+ const mode = await promptList("Status check:", [
33
+ { name: "Single server", value: "single" },
34
+ { name: "All servers at once", value: "all" },
35
+ { name: "With auto-restart if platform is down", value: "autostart" },
36
+ ]);
37
+ if (!mode)
38
+ return null;
39
+ const args = ["status"];
40
+ if (mode === "all")
41
+ args.push("--all");
42
+ if (mode === "autostart")
43
+ args.push("--autostart");
44
+ return args;
45
+ }
46
+ export async function promptSsh() {
47
+ const mode = await promptList("SSH mode:", [
48
+ { name: "Open interactive SSH session", value: "interactive" },
49
+ { name: "Run a single command", value: "command" },
50
+ ]);
51
+ if (!mode)
52
+ return null;
53
+ if (mode === "command") {
54
+ const { command } = await inquirer.prompt([
55
+ { type: "input", name: "command", message: "Command to execute:" },
56
+ ]);
57
+ return ["ssh", "--command", command];
58
+ }
59
+ return ["ssh"];
60
+ }
61
+ export async function promptFleet() {
62
+ const mode = await promptList("Fleet output:", [
63
+ { name: "Dashboard (default)", value: "default" },
64
+ { name: "JSON output", value: "json" },
65
+ { name: "Sort by score", value: "sort-score" },
66
+ { name: "Sort by provider", value: "sort-provider" },
67
+ ]);
68
+ if (!mode)
69
+ return null;
70
+ const args = ["fleet"];
71
+ if (mode === "json")
72
+ args.push("--json");
73
+ if (mode === "sort-score")
74
+ args.push("--sort", "score");
75
+ if (mode === "sort-provider")
76
+ args.push("--sort", "provider");
77
+ return args;
78
+ }
79
+ //# sourceMappingURL=server-management.js.map