quicklify 1.0.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +86 -25
  3. package/README.tr.md +86 -25
  4. package/SECURITY.md +79 -17
  5. package/bin/quicklify-mcp +5 -0
  6. package/dist/commands/add.d.ts +1 -0
  7. package/dist/commands/add.d.ts.map +1 -1
  8. package/dist/commands/add.js +41 -65
  9. package/dist/commands/add.js.map +1 -1
  10. package/dist/commands/backup.d.ts +2 -11
  11. package/dist/commands/backup.d.ts.map +1 -1
  12. package/dist/commands/backup.js +113 -57
  13. package/dist/commands/backup.js.map +1 -1
  14. package/dist/commands/destroy.d.ts.map +1 -1
  15. package/dist/commands/destroy.js +58 -37
  16. package/dist/commands/destroy.js.map +1 -1
  17. package/dist/commands/domain.d.ts +2 -9
  18. package/dist/commands/domain.d.ts.map +1 -1
  19. package/dist/commands/domain.js +47 -56
  20. package/dist/commands/domain.js.map +1 -1
  21. package/dist/commands/firewall.d.ts +3 -10
  22. package/dist/commands/firewall.d.ts.map +1 -1
  23. package/dist/commands/firewall.js +28 -51
  24. package/dist/commands/firewall.js.map +1 -1
  25. package/dist/commands/health.d.ts +2 -2
  26. package/dist/commands/health.d.ts.map +1 -1
  27. package/dist/commands/health.js +77 -19
  28. package/dist/commands/health.js.map +1 -1
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +142 -24
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/interactive.d.ts +2 -0
  33. package/dist/commands/interactive.d.ts.map +1 -0
  34. package/dist/commands/interactive.js +357 -0
  35. package/dist/commands/interactive.js.map +1 -0
  36. package/dist/commands/list.d.ts.map +1 -1
  37. package/dist/commands/list.js +4 -2
  38. package/dist/commands/list.js.map +1 -1
  39. package/dist/commands/logs.d.ts +3 -2
  40. package/dist/commands/logs.d.ts.map +1 -1
  41. package/dist/commands/logs.js +15 -12
  42. package/dist/commands/logs.js.map +1 -1
  43. package/dist/commands/maintain.d.ts.map +1 -1
  44. package/dist/commands/maintain.js +28 -47
  45. package/dist/commands/maintain.js.map +1 -1
  46. package/dist/commands/monitor.d.ts +3 -9
  47. package/dist/commands/monitor.d.ts.map +1 -1
  48. package/dist/commands/monitor.js +3 -48
  49. package/dist/commands/monitor.js.map +1 -1
  50. package/dist/commands/remove.d.ts.map +1 -1
  51. package/dist/commands/remove.js +25 -0
  52. package/dist/commands/remove.js.map +1 -1
  53. package/dist/commands/restart.d.ts.map +1 -1
  54. package/dist/commands/restart.js +39 -39
  55. package/dist/commands/restart.js.map +1 -1
  56. package/dist/commands/restore.d.ts +2 -13
  57. package/dist/commands/restore.d.ts.map +1 -1
  58. package/dist/commands/restore.js +42 -54
  59. package/dist/commands/restore.js.map +1 -1
  60. package/dist/commands/secure.d.ts +2 -9
  61. package/dist/commands/secure.d.ts.map +1 -1
  62. package/dist/commands/secure.js +2 -97
  63. package/dist/commands/secure.js.map +1 -1
  64. package/dist/commands/snapshot.d.ts.map +1 -1
  65. package/dist/commands/snapshot.js +55 -67
  66. package/dist/commands/snapshot.js.map +1 -1
  67. package/dist/commands/ssh.d.ts.map +1 -1
  68. package/dist/commands/ssh.js +4 -1
  69. package/dist/commands/ssh.js.map +1 -1
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js +53 -85
  72. package/dist/commands/status.js.map +1 -1
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +23 -16
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/constants.d.ts +14 -0
  77. package/dist/constants.d.ts.map +1 -0
  78. package/dist/constants.js +23 -0
  79. package/dist/constants.js.map +1 -0
  80. package/dist/core/backup.d.ts +59 -0
  81. package/dist/core/backup.d.ts.map +1 -0
  82. package/dist/core/backup.js +417 -0
  83. package/dist/core/backup.js.map +1 -0
  84. package/dist/core/domain.d.ts +30 -0
  85. package/dist/core/domain.d.ts.map +1 -0
  86. package/dist/core/domain.js +170 -0
  87. package/dist/core/domain.js.map +1 -0
  88. package/dist/core/firewall.d.ts +27 -0
  89. package/dist/core/firewall.d.ts.map +1 -0
  90. package/dist/core/firewall.js +158 -0
  91. package/dist/core/firewall.js.map +1 -0
  92. package/dist/core/logs.d.ts +28 -0
  93. package/dist/core/logs.d.ts.map +1 -0
  94. package/dist/core/logs.js +129 -0
  95. package/dist/core/logs.js.map +1 -0
  96. package/dist/core/maintain.d.ts +41 -0
  97. package/dist/core/maintain.d.ts.map +1 -0
  98. package/dist/core/maintain.js +179 -0
  99. package/dist/core/maintain.js.map +1 -0
  100. package/dist/core/manage.d.ts +43 -0
  101. package/dist/core/manage.d.ts.map +1 -0
  102. package/dist/core/manage.js +241 -0
  103. package/dist/core/manage.js.map +1 -0
  104. package/dist/core/provision.d.ts +19 -0
  105. package/dist/core/provision.d.ts.map +1 -0
  106. package/dist/core/provision.js +192 -0
  107. package/dist/core/provision.js.map +1 -0
  108. package/dist/core/secure.d.ts +29 -0
  109. package/dist/core/secure.d.ts.map +1 -0
  110. package/dist/core/secure.js +204 -0
  111. package/dist/core/secure.js.map +1 -0
  112. package/dist/core/snapshot.d.ts +22 -0
  113. package/dist/core/snapshot.d.ts.map +1 -0
  114. package/dist/core/snapshot.js +58 -0
  115. package/dist/core/snapshot.js.map +1 -0
  116. package/dist/core/status.d.ts +12 -0
  117. package/dist/core/status.d.ts.map +1 -0
  118. package/dist/core/status.js +44 -0
  119. package/dist/core/status.js.map +1 -0
  120. package/dist/core/tokens.d.ts +4 -0
  121. package/dist/core/tokens.d.ts.map +1 -0
  122. package/dist/core/tokens.js +23 -0
  123. package/dist/core/tokens.js.map +1 -0
  124. package/dist/index.js +17 -4
  125. package/dist/index.js.map +1 -1
  126. package/dist/mcp/index.d.ts +3 -0
  127. package/dist/mcp/index.d.ts.map +1 -0
  128. package/dist/mcp/index.js +16 -0
  129. package/dist/mcp/index.js.map +1 -0
  130. package/dist/mcp/server.d.ts +3 -0
  131. package/dist/mcp/server.d.ts.map +1 -0
  132. package/dist/mcp/server.js +111 -0
  133. package/dist/mcp/server.js.map +1 -0
  134. package/dist/mcp/tools/serverBackup.d.ts +24 -0
  135. package/dist/mcp/tools/serverBackup.d.ts.map +1 -0
  136. package/dist/mcp/tools/serverBackup.js +262 -0
  137. package/dist/mcp/tools/serverBackup.js.map +1 -0
  138. package/dist/mcp/tools/serverInfo.d.ts +36 -0
  139. package/dist/mcp/tools/serverInfo.d.ts.map +1 -0
  140. package/dist/mcp/tools/serverInfo.js +283 -0
  141. package/dist/mcp/tools/serverInfo.js.map +1 -0
  142. package/dist/mcp/tools/serverLogs.d.ts +25 -0
  143. package/dist/mcp/tools/serverLogs.d.ts.map +1 -0
  144. package/dist/mcp/tools/serverLogs.js +124 -0
  145. package/dist/mcp/tools/serverLogs.js.map +1 -0
  146. package/dist/mcp/tools/serverMaintain.d.ts +17 -0
  147. package/dist/mcp/tools/serverMaintain.d.ts.map +1 -0
  148. package/dist/mcp/tools/serverMaintain.js +156 -0
  149. package/dist/mcp/tools/serverMaintain.js.map +1 -0
  150. package/dist/mcp/tools/serverManage.d.ts +38 -0
  151. package/dist/mcp/tools/serverManage.d.ts.map +1 -0
  152. package/dist/mcp/tools/serverManage.js +190 -0
  153. package/dist/mcp/tools/serverManage.js.map +1 -0
  154. package/dist/mcp/tools/serverProvision.d.ts +36 -0
  155. package/dist/mcp/tools/serverProvision.d.ts.map +1 -0
  156. package/dist/mcp/tools/serverProvision.js +116 -0
  157. package/dist/mcp/tools/serverProvision.js.map +1 -0
  158. package/dist/mcp/tools/serverSecure.d.ts +35 -0
  159. package/dist/mcp/tools/serverSecure.d.ts.map +1 -0
  160. package/dist/mcp/tools/serverSecure.js +335 -0
  161. package/dist/mcp/tools/serverSecure.js.map +1 -0
  162. package/dist/mcp/utils.d.ts +42 -0
  163. package/dist/mcp/utils.d.ts.map +1 -0
  164. package/dist/mcp/utils.js +61 -0
  165. package/dist/mcp/utils.js.map +1 -0
  166. package/dist/providers/base.d.ts +2 -2
  167. package/dist/providers/base.d.ts.map +1 -1
  168. package/dist/providers/digitalocean.d.ts +2 -2
  169. package/dist/providers/digitalocean.d.ts.map +1 -1
  170. package/dist/providers/digitalocean.js +3 -3
  171. package/dist/providers/digitalocean.js.map +1 -1
  172. package/dist/providers/hetzner.d.ts +2 -2
  173. package/dist/providers/hetzner.d.ts.map +1 -1
  174. package/dist/providers/hetzner.js +7 -4
  175. package/dist/providers/hetzner.js.map +1 -1
  176. package/dist/providers/linode.d.ts +2 -2
  177. package/dist/providers/linode.d.ts.map +1 -1
  178. package/dist/providers/linode.js +2 -2
  179. package/dist/providers/linode.js.map +1 -1
  180. package/dist/providers/vultr.d.ts +2 -2
  181. package/dist/providers/vultr.d.ts.map +1 -1
  182. package/dist/providers/vultr.js +9 -3
  183. package/dist/providers/vultr.js.map +1 -1
  184. package/dist/types/index.d.ts +11 -1
  185. package/dist/types/index.d.ts.map +1 -1
  186. package/dist/utils/cloudInit.d.ts +1 -0
  187. package/dist/utils/cloudInit.d.ts.map +1 -1
  188. package/dist/utils/cloudInit.js +62 -0
  189. package/dist/utils/cloudInit.js.map +1 -1
  190. package/dist/utils/config.js +1 -1
  191. package/dist/utils/config.js.map +1 -1
  192. package/dist/utils/errorMapper.d.ts +1 -0
  193. package/dist/utils/errorMapper.d.ts.map +1 -1
  194. package/dist/utils/errorMapper.js +25 -1
  195. package/dist/utils/errorMapper.js.map +1 -1
  196. package/dist/utils/modeGuard.d.ts +5 -0
  197. package/dist/utils/modeGuard.d.ts.map +1 -0
  198. package/dist/utils/modeGuard.js +13 -0
  199. package/dist/utils/modeGuard.js.map +1 -0
  200. package/dist/utils/openBrowser.d.ts.map +1 -1
  201. package/dist/utils/openBrowser.js +9 -2
  202. package/dist/utils/openBrowser.js.map +1 -1
  203. package/dist/utils/prompts.d.ts +2 -2
  204. package/dist/utils/prompts.d.ts.map +1 -1
  205. package/dist/utils/prompts.js +3 -3
  206. package/dist/utils/prompts.js.map +1 -1
  207. package/dist/utils/ssh.d.ts +10 -0
  208. package/dist/utils/ssh.d.ts.map +1 -1
  209. package/dist/utils/ssh.js +181 -17
  210. package/dist/utils/ssh.js.map +1 -1
  211. package/dist/utils/sshKey.d.ts.map +1 -1
  212. package/dist/utils/sshKey.js +3 -0
  213. package/dist/utils/sshKey.js.map +1 -1
  214. package/package.json +7 -4
@@ -3,103 +3,8 @@ import { resolveServer } from "../utils/serverSelect.js";
3
3
  import { checkSshAvailable, sshExec } from "../utils/ssh.js";
4
4
  import { logger, createSpinner } from "../utils/logger.js";
5
5
  import { getErrorMessage, mapSshError } from "../utils/errorMapper.js";
6
- export function parseSshdConfig(content) {
7
- const settings = [];
8
- const checks = [
9
- { key: "PasswordAuthentication", secureValue: "no" },
10
- { key: "PermitRootLogin", secureValue: "prohibit-password" },
11
- { key: "PubkeyAuthentication", secureValue: "yes" },
12
- { key: "MaxAuthTries", secureValue: "3" },
13
- ];
14
- for (const check of checks) {
15
- const regex = new RegExp(`^\\s*${check.key}\\s+(.+)`, "m");
16
- const match = content.match(regex);
17
- if (match) {
18
- const value = match[1].trim();
19
- settings.push({
20
- key: check.key,
21
- value,
22
- status: value.toLowerCase() === check.secureValue.toLowerCase() ? "secure" : "insecure",
23
- });
24
- }
25
- else {
26
- settings.push({
27
- key: check.key,
28
- value: "",
29
- status: "missing",
30
- });
31
- }
32
- }
33
- return settings;
34
- }
35
- export function parseAuditResult(stdout) {
36
- const sections = stdout.split("---SEPARATOR---");
37
- const sshdContent = sections[0] || "";
38
- const fail2banStatus = sections[1] || "";
39
- const sshdSettings = parseSshdConfig(sshdContent);
40
- // Find specific settings
41
- const passwordAuth = sshdSettings.find((s) => s.key === "PasswordAuthentication") || {
42
- key: "PasswordAuthentication",
43
- value: "",
44
- status: "missing",
45
- };
46
- const rootLogin = sshdSettings.find((s) => s.key === "PermitRootLogin") || {
47
- key: "PermitRootLogin",
48
- value: "",
49
- status: "missing",
50
- };
51
- // Parse fail2ban
52
- const fail2banInstalled = fail2banStatus.includes("active") || fail2banStatus.includes("inactive");
53
- const fail2banActive = fail2banStatus.includes("active (running)");
54
- // Parse SSH port
55
- const portMatch = sshdContent.match(/^\s*Port\s+(\d+)/m);
56
- const sshPort = portMatch ? parseInt(portMatch[1], 10) : 22;
57
- return {
58
- passwordAuth,
59
- rootLogin,
60
- fail2ban: { installed: fail2banInstalled, active: fail2banActive },
61
- sshPort,
62
- };
63
- }
64
- export function buildHardeningCommand(options) {
65
- const commands = [
66
- "cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak",
67
- `sed -i 's/^#\\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config`,
68
- `sed -i 's/^#\\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config`,
69
- `sed -i 's/^#\\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config`,
70
- `sed -i 's/^#\\?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config`,
71
- ];
72
- if (options?.port && options.port !== 22) {
73
- commands.push(`sed -i 's/^#\\?Port.*/Port ${options.port}/' /etc/ssh/sshd_config`);
74
- }
75
- // Ubuntu/Debian uses 'ssh', RHEL/CentOS uses 'sshd'
76
- commands.push("systemctl restart sshd 2>/dev/null || systemctl restart ssh");
77
- return commands.join(" && ");
78
- }
79
- export function buildFail2banCommand() {
80
- const jailContent = [
81
- "[sshd]",
82
- "enabled = true",
83
- "port = ssh",
84
- "filter = sshd",
85
- "backend = systemd",
86
- "maxretry = 5",
87
- "bantime = 3600",
88
- "findtime = 600",
89
- ].join("\\n");
90
- return [
91
- "apt-get install -y fail2ban python3-systemd",
92
- `printf '${jailContent}\\n' > /etc/fail2ban/jail.local`,
93
- "systemctl enable fail2ban",
94
- "systemctl restart fail2ban",
95
- ].join(" && ");
96
- }
97
- export function buildAuditCommand() {
98
- return `cat /etc/ssh/sshd_config && echo '---SEPARATOR---' && systemctl status fail2ban 2>&1 || true`;
99
- }
100
- export function buildKeyCheckCommand() {
101
- return "test -f /root/.ssh/authorized_keys && wc -l < /root/.ssh/authorized_keys || echo 0";
102
- }
6
+ import { parseSshdConfig, parseAuditResult, buildHardeningCommand, buildFail2banCommand, buildAuditCommand, buildKeyCheckCommand, } from "../core/secure.js";
7
+ export { parseSshdConfig, parseAuditResult, buildHardeningCommand, buildFail2banCommand, buildAuditCommand, buildKeyCheckCommand, };
103
8
  export async function secureCommand(subcommand, query, options) {
104
9
  if (!checkSshAvailable()) {
105
10
  logger.error("SSH client not found. Please install OpenSSH.");
@@ -1 +1 @@
1
- {"version":3,"file":"secure.js","sourceRoot":"","sources":["../../src/commands/secure.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGvE,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,MAAM,GAA2C;QACrD,EAAE,GAAG,EAAE,wBAAwB,EAAE,WAAW,EAAE,IAAI,EAAE;QACpD,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAC5D,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,EAAE,KAAK,EAAE;QACnD,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE;KAC1C,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK;gBACL,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;aACxF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAElD,yBAAyB;IACzB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,wBAAwB,CAAC,IAAI;QACnF,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,SAAkB;KAC3B,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,IAAI;QACzE,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,SAAkB;KAC3B,CAAC;IAEF,iBAAiB;IACjB,MAAM,iBAAiB,GACrB,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAEnE,iBAAiB;IACjB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,OAAO;QACL,YAAY;QACZ,SAAS;QACT,QAAQ,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE;QAClE,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAC/D,MAAM,QAAQ,GAAG;QACf,kDAAkD;QAClD,0FAA0F;QAC1F,2FAA2F;QAC3F,uFAAuF;QACvF,qEAAqE;KACtE,CAAC;IAEF,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;IACrF,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG;QAClB,QAAQ;QACR,gBAAgB;QAChB,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,gBAAgB;QAChB,gBAAgB;KACjB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEd,OAAO;QACL,6CAA6C;QAC7C,WAAW,WAAW,iCAAiC;QACvD,2BAA2B;QAC3B,4BAA4B;KAC7B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,8FAA8F,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,oFAAoF,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAmB,EACnB,KAAc,EACd,OAA6C;IAE7C,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,UAAU,IAAI,QAAQ,CAAC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IAExC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,OAAO;YACV,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM;IACV,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAU,EACV,IAAY,EACZ,OAA2B,EAC3B,MAAgB,EAChB,KAAe;IAEf,+BAA+B;IAC/B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5D,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,IAAI,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAE3C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,mEAAmE;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,4BAA4B,IAAI,MAAM,EAAE,+CAA+C;gBAChG,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC5C;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB,IAAI,eAAe;aACtD;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,IAAI,YAAY,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,MAAM,UAAU,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC3D,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAChE,IAAI,SAAS,CAAC,MAAM;gBAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,CACZ,yCAAyC,IAAI,iEAAiE,IAAI,EAAE,CACrH,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,iBAAiB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,IAAY;IAClD,MAAM,OAAO,GAAG,aAAa,CAAC,+BAA+B,IAAI,KAAK,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,uBAAuB,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAClC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;QAE1E,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE,CAClG,CAAC;QACF,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,EAAE,CAC5F,CAAC;QACF,MAAM,CAAC,IAAI,CACT,mBAAmB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CACvI,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,IAAY;IACjD,MAAM,OAAO,GAAG,aAAa,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;QAEtD,oBAAoB;QACpB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM;YAAE,KAAK,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;YAAE,KAAK,EAAE,CAAC;QAElC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;QAErD,kBAAkB;QAClB,MAAM,KAAK,GAAG,CAAC,EAAW,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7F,KAAK,CACH,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ,EACtC,4BAA4B,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAC5I,CAAC;QACF,KAAK,CACH,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,EACnC,eAAe,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,EAAE,CACxI,CAAC;QACF,KAAK,CACH,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,aAAa,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAC/H,CAAC;QACF,KAAK,CACH,KAAK,CAAC,OAAO,KAAK,EAAE,EACpB,aAAa,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE,CACjG,CAAC;QAEF,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"secure.js","sourceRoot":"","sources":["../../src/commands/secure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiND,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAOA,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsMD,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -1,9 +1,9 @@
1
1
  import inquirer from "inquirer";
2
2
  import { getServers } from "../utils/config.js";
3
3
  import { resolveServer, promptApiToken, collectProviderTokens } from "../utils/serverSelect.js";
4
- import { createProviderWithToken } from "../utils/providerFactory.js";
5
4
  import { logger, createSpinner } from "../utils/logger.js";
6
- import { getErrorMessage, mapProviderError } from "../utils/errorMapper.js";
5
+ import { createSnapshot, listSnapshots, deleteSnapshot } from "../core/snapshot.js";
6
+ import { createProviderWithToken } from "../utils/providerFactory.js";
7
7
  async function snapshotCreate(query, options) {
8
8
  const server = await resolveServer(query, "Select a server to snapshot:");
9
9
  if (!server)
@@ -44,21 +44,20 @@ async function snapshotCreate(query, options) {
44
44
  return;
45
45
  }
46
46
  }
47
- const snapshotName = `quicklify-${Date.now()}`;
48
- const spinner = createSpinner(`Creating snapshot "${snapshotName}"...`);
47
+ const spinner = createSpinner(`Creating snapshot...`);
49
48
  spinner.start();
50
- try {
51
- const snapshot = await provider.createSnapshot(server.id, snapshotName);
52
- spinner.succeed(`Snapshot created: ${snapshot.name} (${snapshot.id})`);
53
- logger.info(`Status: ${snapshot.status}`);
54
- logger.info(`Cost: ${snapshot.costPerMonth}`);
49
+ const result = await createSnapshot(server, apiToken);
50
+ if (result.success && result.snapshot) {
51
+ spinner.succeed(`Snapshot created: ${result.snapshot.name} (${result.snapshot.id})`);
52
+ logger.info(`Status: ${result.snapshot.status}`);
53
+ logger.info(`Cost: ${result.snapshot.costPerMonth}`);
55
54
  }
56
- catch (error) {
55
+ else {
57
56
  spinner.fail("Failed to create snapshot");
58
- logger.error(getErrorMessage(error));
59
- const hint = mapProviderError(error, server.provider);
60
- if (hint)
61
- logger.info(hint);
57
+ if (result.error)
58
+ logger.error(result.error);
59
+ if (result.hint)
60
+ logger.info(result.hint);
62
61
  }
63
62
  }
64
63
  async function snapshotList(query) {
@@ -66,27 +65,24 @@ async function snapshotList(query) {
66
65
  if (!server)
67
66
  return;
68
67
  const apiToken = await promptApiToken(server.provider);
69
- const provider = createProviderWithToken(server.provider, apiToken);
70
68
  const spinner = createSpinner(`Fetching snapshots for ${server.name}...`);
71
69
  spinner.start();
72
- try {
73
- const snapshots = await provider.listSnapshots(server.id);
74
- if (snapshots.length === 0) {
75
- spinner.succeed(`No snapshots found for ${server.name}`);
76
- return;
77
- }
78
- spinner.succeed(`${snapshots.length} snapshot(s) found for ${server.name}`);
79
- console.log();
80
- for (const snap of snapshots) {
81
- logger.step(`${snap.name} | ID: ${snap.id} | Size: ${snap.sizeGb.toFixed(1)} GB | Cost: ${snap.costPerMonth} | Created: ${snap.createdAt}`);
82
- }
83
- }
84
- catch (error) {
70
+ const result = await listSnapshots(server, apiToken);
71
+ if (result.error) {
85
72
  spinner.fail("Failed to list snapshots");
86
- logger.error(getErrorMessage(error));
87
- const hint = mapProviderError(error, server.provider);
88
- if (hint)
89
- logger.info(hint);
73
+ logger.error(result.error);
74
+ if (result.hint)
75
+ logger.info(result.hint);
76
+ return;
77
+ }
78
+ if (result.snapshots.length === 0) {
79
+ spinner.succeed(`No snapshots found for ${server.name}`);
80
+ return;
81
+ }
82
+ spinner.succeed(`${result.snapshots.length} snapshot(s) found for ${server.name}`);
83
+ console.log();
84
+ for (const snap of result.snapshots) {
85
+ logger.step(`${snap.name} | ID: ${snap.id} | Size: ${snap.sizeGb.toFixed(1)} GB | Cost: ${snap.costPerMonth} | Created: ${snap.createdAt}`);
90
86
  }
91
87
  }
92
88
  async function snapshotListAll() {
@@ -98,27 +94,23 @@ async function snapshotListAll() {
98
94
  const tokenMap = await collectProviderTokens(servers);
99
95
  for (const server of servers) {
100
96
  const token = tokenMap.get(server.provider);
101
- const provider = createProviderWithToken(server.provider, token);
102
97
  const spinner = createSpinner(`Fetching snapshots for ${server.name}...`);
103
98
  spinner.start();
104
- try {
105
- const snapshots = await provider.listSnapshots(server.id);
106
- if (snapshots.length === 0) {
107
- spinner.succeed(`${server.name}: No snapshots`);
108
- }
109
- else {
110
- spinner.succeed(`${server.name}: ${snapshots.length} snapshot(s)`);
111
- for (const snap of snapshots) {
112
- logger.step(` ${snap.name} | ID: ${snap.id} | Size: ${snap.sizeGb.toFixed(1)} GB | Cost: ${snap.costPerMonth} | Created: ${snap.createdAt}`);
113
- }
114
- }
115
- }
116
- catch (error) {
99
+ const result = await listSnapshots(server, token);
100
+ if (result.error) {
117
101
  spinner.fail(`${server.name}: Failed to list snapshots`);
118
- logger.error(getErrorMessage(error));
119
- const hint = mapProviderError(error, server.provider);
120
- if (hint)
121
- logger.info(hint);
102
+ logger.error(result.error);
103
+ if (result.hint)
104
+ logger.info(result.hint);
105
+ }
106
+ else if (result.snapshots.length === 0) {
107
+ spinner.succeed(`${server.name}: No snapshots`);
108
+ }
109
+ else {
110
+ spinner.succeed(`${server.name}: ${result.snapshots.length} snapshot(s)`);
111
+ for (const snap of result.snapshots) {
112
+ logger.step(` ${snap.name} | ID: ${snap.id} | Size: ${snap.sizeGb.toFixed(1)} GB | Cost: ${snap.costPerMonth} | Created: ${snap.createdAt}`);
113
+ }
122
114
  }
123
115
  console.log();
124
116
  }
@@ -128,22 +120,18 @@ async function snapshotDelete(query, options) {
128
120
  if (!server)
129
121
  return;
130
122
  const apiToken = await promptApiToken(server.provider);
131
- const provider = createProviderWithToken(server.provider, apiToken);
132
123
  // List snapshots to select from
133
124
  const listSpinner = createSpinner("Fetching snapshots...");
134
125
  listSpinner.start();
135
- let snapshots;
136
- try {
137
- snapshots = await provider.listSnapshots(server.id);
138
- }
139
- catch (error) {
126
+ const listResult = await listSnapshots(server, apiToken);
127
+ if (listResult.error) {
140
128
  listSpinner.fail("Failed to list snapshots");
141
- logger.error(getErrorMessage(error));
142
- const hint = mapProviderError(error, server.provider);
143
- if (hint)
144
- logger.info(hint);
129
+ logger.error(listResult.error);
130
+ if (listResult.hint)
131
+ logger.info(listResult.hint);
145
132
  return;
146
133
  }
134
+ const snapshots = listResult.snapshots;
147
135
  if (snapshots.length === 0) {
148
136
  listSpinner.succeed("No snapshots to delete");
149
137
  return;
@@ -176,16 +164,16 @@ async function snapshotDelete(query, options) {
176
164
  }
177
165
  const deleteSpinner = createSpinner("Deleting snapshot...");
178
166
  deleteSpinner.start();
179
- try {
180
- await provider.deleteSnapshot(selectedId);
167
+ const deleteResult = await deleteSnapshot(server, apiToken, selectedId);
168
+ if (deleteResult.success) {
181
169
  deleteSpinner.succeed("Snapshot deleted");
182
170
  }
183
- catch (error) {
171
+ else {
184
172
  deleteSpinner.fail("Failed to delete snapshot");
185
- logger.error(getErrorMessage(error));
186
- const hint = mapProviderError(error, server.provider);
187
- if (hint)
188
- logger.info(hint);
173
+ if (deleteResult.error)
174
+ logger.error(deleteResult.error);
175
+ if (deleteResult.hint)
176
+ logger.info(deleteResult.hint);
189
177
  }
190
178
  }
191
179
  export async function snapshotCommand(subcommand, query, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQ5E,KAAK,UAAU,cAAc,CAC3B,KAAc,EACd,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpE,oBAAoB;IACpB,MAAM,WAAW,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACjE,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,WAAW,CAAC,OAAO,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,sBAAsB,MAAM,CAAC,IAAI,sBAAsB,YAAY,GAAG;gBAC/E,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAsB,YAAY,MAAM,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxE,OAAO,CAAC,OAAO,CAAC,qBAAqB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAc;IACxC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpE,MAAM,OAAO,GAAG,aAAa,CAAC,0BAA0B,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,0BAA0B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,SAAS,EAAE,CAC/H,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,0BAA0B,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,cAAc,CAAC,CAAC;gBACnE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CACT,KAAK,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,SAAS,EAAE,CACjI,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,4BAA4B,CAAC,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAc,EACd,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpE,gCAAgC;IAChC,MAAM,WAAW,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC3D,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,WAAW,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAE7D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC3C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,SAAS,GAAG;gBAChF,KAAK,EAAE,CAAC,CAAC,EAAE;aACZ,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,mBAAmB,UAAU,0BAA0B;gBAChE,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC5D,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1C,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAmB,EACnB,KAAc,EACd,OAAyB;IAEzB,MAAM,GAAG,GAAG,UAAU,IAAI,MAAM,CAAC;IACjC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEtD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CACV,uBAAuB,GAAG,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;QACF,OAAO;IACT,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM;YACT,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;gBACjB,MAAM,eAAe,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B9F"}
1
+ {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9F"}
@@ -25,7 +25,10 @@ export async function sshCommand(query, options) {
25
25
  else {
26
26
  logger.info(`Connecting to ${server.name} (${server.ip})...`);
27
27
  const exitCode = await sshConnect(server.ip);
28
- if (exitCode !== 0) {
28
+ if (exitCode === 130) {
29
+ // Ctrl+C — normal user-initiated exit, no warning needed
30
+ }
31
+ else if (exitCode !== 0) {
29
32
  logger.warning(`SSH session ended with code ${exitCode}`);
30
33
  }
31
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAc,EAAE,OAA8B;IAC7E,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAc,EAAE,OAA8B;IAC7E,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,yDAAyD;QAC3D,CAAC;aAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAwHD,wBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE1F"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAeA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAsFD,wBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD1F"}
@@ -1,41 +1,35 @@
1
- import axios from "axios";
2
1
  import { getServers } from "../utils/config.js";
3
2
  import { resolveServer, promptApiToken, collectProviderTokens } from "../utils/serverSelect.js";
4
- import { createProviderWithToken } from "../utils/providerFactory.js";
5
3
  import { checkSshAvailable, sshExec } from "../utils/ssh.js";
6
4
  import { logger, createSpinner } from "../utils/logger.js";
7
5
  import { getErrorMessage, mapProviderError, mapSshError } from "../utils/errorMapper.js";
8
- const COOLIFY_RESTART_CMD = "cd /data/coolify/source && docker compose -f docker-compose.yml -f docker-compose.prod.yml restart coolify";
9
- async function checkSingleServer(server, apiToken) {
10
- try {
11
- let serverStatus;
12
- if (server.id.startsWith("manual-")) {
13
- serverStatus = "unknown (manual)";
14
- }
15
- else {
16
- const provider = createProviderWithToken(server.provider, apiToken);
17
- serverStatus = await provider.getServerStatus(server.id);
18
- }
19
- let coolifyStatus = "unknown";
20
- try {
21
- await axios.get(`http://${server.ip}:8000`, {
22
- timeout: 5000,
23
- validateStatus: () => true,
24
- });
25
- coolifyStatus = "running";
26
- }
27
- catch {
28
- coolifyStatus = "not reachable";
29
- }
30
- return { server, serverStatus, coolifyStatus };
6
+ import { getCloudServerStatus, checkAllServersStatus, checkCoolifyHealth, } from "../core/status.js";
7
+ import { isBareServer, getServerMode } from "../utils/modeGuard.js";
8
+ import { COOLIFY_RESTART_CMD } from "../constants.js";
9
+ function printStatusTable(results) {
10
+ const header = `${"Name".padEnd(20)} ${"IP".padEnd(16)} ${"Provider".padEnd(14)} ${"Mode".padEnd(10)} ${"Server".padEnd(12)} ${"Coolify".padEnd(14)}`;
11
+ console.log(header);
12
+ console.log("─".repeat(header.length));
13
+ for (const r of results) {
14
+ const serverStr = r.error ? "error" : r.serverStatus;
15
+ const coolifyStr = r.coolifyStatus;
16
+ const modeStr = getServerMode(r.server);
17
+ console.log(`${r.server.name.padEnd(20)} ${r.server.ip.padEnd(16)} ${r.server.provider.padEnd(14)} ${modeStr.padEnd(10)} ${serverStr.padEnd(12)} ${coolifyStr.padEnd(14)}`);
31
18
  }
32
- catch (error) {
33
- return {
34
- server,
35
- serverStatus: "error",
36
- coolifyStatus: "unknown",
37
- error: getErrorMessage(error),
38
- };
19
+ }
20
+ function printStatusSummary(results) {
21
+ const coolifyResults = results.filter((r) => !isBareServer(r.server));
22
+ const running = coolifyResults.filter((r) => r.coolifyStatus === "running").length;
23
+ const errors = results.filter((r) => r.error).length;
24
+ const bareCount = results.filter((r) => isBareServer(r.server)).length;
25
+ if (errors > 0) {
26
+ logger.warning(`${running} running, ${errors} error(s)${bareCount > 0 ? `, ${bareCount} bare` : ""}`);
27
+ }
28
+ else if (bareCount > 0 && coolifyResults.length === 0) {
29
+ logger.success(`${bareCount} bare server(s) running`);
30
+ }
31
+ else {
32
+ logger.success(`${running}/${coolifyResults.length} server(s) with Coolify running${bareCount > 0 ? `, ${bareCount} bare` : ""}`);
39
33
  }
40
34
  }
41
35
  async function statusAll() {
@@ -47,27 +41,12 @@ async function statusAll() {
47
41
  const tokenMap = await collectProviderTokens(servers);
48
42
  const spinner = createSpinner(`Checking status of ${servers.length} server(s)...`);
49
43
  spinner.start();
50
- const results = await Promise.all(servers.map((s) => checkSingleServer(s, tokenMap.get(s.provider))));
44
+ const results = await checkAllServersStatus(servers, tokenMap);
51
45
  spinner.succeed("Status check complete");
52
46
  console.log();
53
- // Table header
54
- const header = `${"Name".padEnd(20)} ${"IP".padEnd(16)} ${"Provider".padEnd(14)} ${"Server".padEnd(12)} ${"Coolify".padEnd(14)}`;
55
- console.log(header);
56
- console.log("─".repeat(header.length));
57
- for (const r of results) {
58
- const serverStr = r.error ? "error" : r.serverStatus;
59
- const coolifyStr = r.coolifyStatus;
60
- console.log(`${r.server.name.padEnd(20)} ${r.server.ip.padEnd(16)} ${r.server.provider.padEnd(14)} ${serverStr.padEnd(12)} ${coolifyStr.padEnd(14)}`);
61
- }
47
+ printStatusTable(results);
62
48
  console.log();
63
- const running = results.filter((r) => r.coolifyStatus === "running").length;
64
- const errors = results.filter((r) => r.error).length;
65
- if (errors > 0) {
66
- logger.warning(`${running} running, ${errors} error(s)`);
67
- }
68
- else {
69
- logger.success(`${running}/${results.length} server(s) with Coolify running`);
70
- }
49
+ printStatusSummary(results);
71
50
  }
72
51
  async function autostartCoolify(server) {
73
52
  if (!checkSshAvailable()) {
@@ -82,14 +61,11 @@ async function autostartCoolify(server) {
82
61
  spinner.succeed("Coolify restart command sent");
83
62
  // Wait and check again
84
63
  await new Promise((resolve) => setTimeout(resolve, 5000));
85
- try {
86
- await axios.get(`http://${server.ip}:8000`, {
87
- timeout: 5000,
88
- validateStatus: () => true,
89
- });
64
+ const healthStatus = await checkCoolifyHealth(server.ip);
65
+ if (healthStatus === "running") {
90
66
  logger.success("Coolify is now running!");
91
67
  }
92
- catch {
68
+ else {
93
69
  logger.warning("Coolify may still be starting. Check again in a moment.");
94
70
  }
95
71
  }
@@ -119,26 +95,7 @@ export async function statusCommand(query, options) {
119
95
  const spinner = createSpinner("Checking server status...");
120
96
  spinner.start();
121
97
  try {
122
- let serverStatus;
123
- if (server.id.startsWith("manual-")) {
124
- serverStatus = "unknown (manual)";
125
- }
126
- else {
127
- const provider = createProviderWithToken(server.provider, apiToken);
128
- serverStatus = await provider.getServerStatus(server.id);
129
- }
130
- // Check Coolify health
131
- let coolifyStatus = "unknown";
132
- try {
133
- await axios.get(`http://${server.ip}:8000`, {
134
- timeout: 5000,
135
- validateStatus: () => true,
136
- });
137
- coolifyStatus = "running";
138
- }
139
- catch {
140
- coolifyStatus = "not reachable";
141
- }
98
+ const serverStatus = await getCloudServerStatus(server, apiToken);
142
99
  spinner.succeed("Status retrieved");
143
100
  console.log();
144
101
  logger.info(`Name: ${server.name}`);
@@ -146,18 +103,29 @@ export async function statusCommand(query, options) {
146
103
  logger.info(`IP: ${server.ip}`);
147
104
  logger.info(`Region: ${server.region}`);
148
105
  logger.info(`Size: ${server.size}`);
106
+ logger.info(`Mode: ${getServerMode(server)}`);
149
107
  logger.info(`Server Status: ${serverStatus}`);
150
- logger.info(`Coolify Status: ${coolifyStatus}`);
151
- console.log();
152
- if (coolifyStatus === "running") {
153
- logger.success(`Access Coolify: http://${server.ip}:8000`);
154
- logger.warning("Running on HTTP. Set up a domain + SSL for production use.");
108
+ if (isBareServer(server)) {
109
+ // Bare servers: no Coolify, show SSH info
110
+ logger.info("Mode: bare (no platform installed)");
111
+ console.log();
112
+ logger.info(`SSH: ssh root@${server.ip}`);
155
113
  }
156
114
  else {
157
- logger.warning("Coolify is not reachable. It may still be installing.");
158
- // Autostart: restart Coolify if server is running but Coolify is down
159
- if (options?.autostart && serverStatus === "running") {
160
- await autostartCoolify(server);
115
+ // Coolify servers: check and display Coolify status
116
+ const coolifyStatus = await checkCoolifyHealth(server.ip);
117
+ logger.info(`Coolify Status: ${coolifyStatus}`);
118
+ console.log();
119
+ if (coolifyStatus === "running") {
120
+ logger.success(`Access Coolify: http://${server.ip}:8000`);
121
+ logger.warning("Running on HTTP. Set up a domain + SSL for production use.");
122
+ }
123
+ else {
124
+ logger.warning("Coolify is not reachable. It may still be installing.");
125
+ // Autostart: restart Coolify if server is running but Coolify is down
126
+ if (options?.autostart && serverStatus === "running") {
127
+ await autostartCoolify(server);
128
+ }
161
129
  }
162
130
  }
163
131
  }