clawsql 0.1.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 (311) hide show
  1. package/.env.example +97 -0
  2. package/README.md +372 -0
  3. package/dist/__tests__/config/settings.test.d.ts +5 -0
  4. package/dist/__tests__/config/settings.test.d.ts.map +1 -0
  5. package/dist/__tests__/config/settings.test.js +154 -0
  6. package/dist/__tests__/config/settings.test.js.map +1 -0
  7. package/dist/__tests__/core/discovery/topology.test.d.ts +5 -0
  8. package/dist/__tests__/core/discovery/topology.test.d.ts.map +1 -0
  9. package/dist/__tests__/core/discovery/topology.test.js +191 -0
  10. package/dist/__tests__/core/discovery/topology.test.js.map +1 -0
  11. package/dist/__tests__/core/failover/executor.test.d.ts +5 -0
  12. package/dist/__tests__/core/failover/executor.test.d.ts.map +1 -0
  13. package/dist/__tests__/core/failover/executor.test.js +256 -0
  14. package/dist/__tests__/core/failover/executor.test.js.map +1 -0
  15. package/dist/__tests__/core/monitoring/collector.test.d.ts +5 -0
  16. package/dist/__tests__/core/monitoring/collector.test.d.ts.map +1 -0
  17. package/dist/__tests__/core/monitoring/collector.test.js +131 -0
  18. package/dist/__tests__/core/monitoring/collector.test.js.map +1 -0
  19. package/dist/__tests__/core/monitoring/exporters.test.d.ts +5 -0
  20. package/dist/__tests__/core/monitoring/exporters.test.d.ts.map +1 -0
  21. package/dist/__tests__/core/monitoring/exporters.test.js +90 -0
  22. package/dist/__tests__/core/monitoring/exporters.test.js.map +1 -0
  23. package/dist/__tests__/core/routing/proxysql-manager.test.d.ts +5 -0
  24. package/dist/__tests__/core/routing/proxysql-manager.test.d.ts.map +1 -0
  25. package/dist/__tests__/core/routing/proxysql-manager.test.js +155 -0
  26. package/dist/__tests__/core/routing/proxysql-manager.test.js.map +1 -0
  27. package/dist/__tests__/types/index.test.d.ts +5 -0
  28. package/dist/__tests__/types/index.test.d.ts.map +1 -0
  29. package/dist/__tests__/types/index.test.js +290 -0
  30. package/dist/__tests__/types/index.test.js.map +1 -0
  31. package/dist/__tests__/utils/exceptions.test.d.ts +5 -0
  32. package/dist/__tests__/utils/exceptions.test.d.ts.map +1 -0
  33. package/dist/__tests__/utils/exceptions.test.js +142 -0
  34. package/dist/__tests__/utils/exceptions.test.js.map +1 -0
  35. package/dist/api/routes/clusters.d.ts +7 -0
  36. package/dist/api/routes/clusters.d.ts.map +1 -0
  37. package/dist/api/routes/clusters.js +123 -0
  38. package/dist/api/routes/clusters.js.map +1 -0
  39. package/dist/api/routes/config.d.ts +7 -0
  40. package/dist/api/routes/config.d.ts.map +1 -0
  41. package/dist/api/routes/config.js +65 -0
  42. package/dist/api/routes/config.js.map +1 -0
  43. package/dist/api/routes/failover.d.ts +7 -0
  44. package/dist/api/routes/failover.d.ts.map +1 -0
  45. package/dist/api/routes/failover.js +100 -0
  46. package/dist/api/routes/failover.js.map +1 -0
  47. package/dist/api/routes/instances.d.ts +11 -0
  48. package/dist/api/routes/instances.d.ts.map +1 -0
  49. package/dist/api/routes/instances.js +315 -0
  50. package/dist/api/routes/instances.js.map +1 -0
  51. package/dist/api/routes/monitoring.d.ts +7 -0
  52. package/dist/api/routes/monitoring.d.ts.map +1 -0
  53. package/dist/api/routes/monitoring.js +72 -0
  54. package/dist/api/routes/monitoring.js.map +1 -0
  55. package/dist/api/routes/webhooks.d.ts +12 -0
  56. package/dist/api/routes/webhooks.d.ts.map +1 -0
  57. package/dist/api/routes/webhooks.js +232 -0
  58. package/dist/api/routes/webhooks.js.map +1 -0
  59. package/dist/api/schemas/index.d.ts +965 -0
  60. package/dist/api/schemas/index.d.ts.map +1 -0
  61. package/dist/api/schemas/index.js +171 -0
  62. package/dist/api/schemas/index.js.map +1 -0
  63. package/dist/app.d.ts +13 -0
  64. package/dist/app.d.ts.map +1 -0
  65. package/dist/app.js +197 -0
  66. package/dist/app.js.map +1 -0
  67. package/dist/bin/clawsql.d.ts +12 -0
  68. package/dist/bin/clawsql.d.ts.map +1 -0
  69. package/dist/bin/clawsql.js +43 -0
  70. package/dist/bin/clawsql.js.map +1 -0
  71. package/dist/cli/agent/handler.d.ts +73 -0
  72. package/dist/cli/agent/handler.d.ts.map +1 -0
  73. package/dist/cli/agent/handler.js +258 -0
  74. package/dist/cli/agent/handler.js.map +1 -0
  75. package/dist/cli/agent/index.d.ts +14 -0
  76. package/dist/cli/agent/index.d.ts.map +1 -0
  77. package/dist/cli/agent/index.js +30 -0
  78. package/dist/cli/agent/index.js.map +1 -0
  79. package/dist/cli/agent/openclaw-integration.d.ts +81 -0
  80. package/dist/cli/agent/openclaw-integration.d.ts.map +1 -0
  81. package/dist/cli/agent/openclaw-integration.js +341 -0
  82. package/dist/cli/agent/openclaw-integration.js.map +1 -0
  83. package/dist/cli/agent/providers/anthropic.d.ts +27 -0
  84. package/dist/cli/agent/providers/anthropic.d.ts.map +1 -0
  85. package/dist/cli/agent/providers/anthropic.js +106 -0
  86. package/dist/cli/agent/providers/anthropic.js.map +1 -0
  87. package/dist/cli/agent/providers/base.d.ts +91 -0
  88. package/dist/cli/agent/providers/base.d.ts.map +1 -0
  89. package/dist/cli/agent/providers/base.js +24 -0
  90. package/dist/cli/agent/providers/base.js.map +1 -0
  91. package/dist/cli/agent/providers/openai.d.ts +27 -0
  92. package/dist/cli/agent/providers/openai.d.ts.map +1 -0
  93. package/dist/cli/agent/providers/openai.js +98 -0
  94. package/dist/cli/agent/providers/openai.js.map +1 -0
  95. package/dist/cli/agent/tools/index.d.ts +32 -0
  96. package/dist/cli/agent/tools/index.d.ts.map +1 -0
  97. package/dist/cli/agent/tools/index.js +263 -0
  98. package/dist/cli/agent/tools/index.js.map +1 -0
  99. package/dist/cli/commands/cleanup.d.ts +12 -0
  100. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  101. package/dist/cli/commands/cleanup.js +205 -0
  102. package/dist/cli/commands/cleanup.js.map +1 -0
  103. package/dist/cli/commands/clusters.d.ts +12 -0
  104. package/dist/cli/commands/clusters.d.ts.map +1 -0
  105. package/dist/cli/commands/clusters.js +468 -0
  106. package/dist/cli/commands/clusters.js.map +1 -0
  107. package/dist/cli/commands/config.d.ts +12 -0
  108. package/dist/cli/commands/config.d.ts.map +1 -0
  109. package/dist/cli/commands/config.js +406 -0
  110. package/dist/cli/commands/config.js.map +1 -0
  111. package/dist/cli/commands/cron.d.ts +12 -0
  112. package/dist/cli/commands/cron.d.ts.map +1 -0
  113. package/dist/cli/commands/cron.js +215 -0
  114. package/dist/cli/commands/cron.js.map +1 -0
  115. package/dist/cli/commands/doctor.d.ts +13 -0
  116. package/dist/cli/commands/doctor.d.ts.map +1 -0
  117. package/dist/cli/commands/doctor.js +687 -0
  118. package/dist/cli/commands/doctor.js.map +1 -0
  119. package/dist/cli/commands/failover.d.ts +16 -0
  120. package/dist/cli/commands/failover.d.ts.map +1 -0
  121. package/dist/cli/commands/failover.js +333 -0
  122. package/dist/cli/commands/failover.js.map +1 -0
  123. package/dist/cli/commands/health.d.ts +12 -0
  124. package/dist/cli/commands/health.d.ts.map +1 -0
  125. package/dist/cli/commands/health.js +125 -0
  126. package/dist/cli/commands/health.js.map +1 -0
  127. package/dist/cli/commands/help.d.ts +12 -0
  128. package/dist/cli/commands/help.d.ts.map +1 -0
  129. package/dist/cli/commands/help.js +52 -0
  130. package/dist/cli/commands/help.js.map +1 -0
  131. package/dist/cli/commands/instances.d.ts +12 -0
  132. package/dist/cli/commands/instances.d.ts.map +1 -0
  133. package/dist/cli/commands/instances.js +801 -0
  134. package/dist/cli/commands/instances.js.map +1 -0
  135. package/dist/cli/commands/notify.d.ts +12 -0
  136. package/dist/cli/commands/notify.d.ts.map +1 -0
  137. package/dist/cli/commands/notify.js +43 -0
  138. package/dist/cli/commands/notify.js.map +1 -0
  139. package/dist/cli/commands/sql.d.ts +12 -0
  140. package/dist/cli/commands/sql.d.ts.map +1 -0
  141. package/dist/cli/commands/sql.js +90 -0
  142. package/dist/cli/commands/sql.js.map +1 -0
  143. package/dist/cli/commands/start.d.ts +12 -0
  144. package/dist/cli/commands/start.d.ts.map +1 -0
  145. package/dist/cli/commands/start.js +174 -0
  146. package/dist/cli/commands/start.js.map +1 -0
  147. package/dist/cli/commands/status.d.ts +12 -0
  148. package/dist/cli/commands/status.d.ts.map +1 -0
  149. package/dist/cli/commands/status.js +218 -0
  150. package/dist/cli/commands/status.js.map +1 -0
  151. package/dist/cli/commands/stop.d.ts +12 -0
  152. package/dist/cli/commands/stop.d.ts.map +1 -0
  153. package/dist/cli/commands/stop.js +128 -0
  154. package/dist/cli/commands/stop.js.map +1 -0
  155. package/dist/cli/commands/topology.d.ts +12 -0
  156. package/dist/cli/commands/topology.d.ts.map +1 -0
  157. package/dist/cli/commands/topology.js +106 -0
  158. package/dist/cli/commands/topology.js.map +1 -0
  159. package/dist/cli/completer.d.ts +47 -0
  160. package/dist/cli/completer.d.ts.map +1 -0
  161. package/dist/cli/completer.js +332 -0
  162. package/dist/cli/completer.js.map +1 -0
  163. package/dist/cli/formatter.d.ts +165 -0
  164. package/dist/cli/formatter.d.ts.map +1 -0
  165. package/dist/cli/formatter.js +408 -0
  166. package/dist/cli/formatter.js.map +1 -0
  167. package/dist/cli/index.d.ts +21 -0
  168. package/dist/cli/index.d.ts.map +1 -0
  169. package/dist/cli/index.js +79 -0
  170. package/dist/cli/index.js.map +1 -0
  171. package/dist/cli/raw-input.d.ts +97 -0
  172. package/dist/cli/raw-input.d.ts.map +1 -0
  173. package/dist/cli/raw-input.js +493 -0
  174. package/dist/cli/raw-input.js.map +1 -0
  175. package/dist/cli/registry.d.ts +103 -0
  176. package/dist/cli/registry.d.ts.map +1 -0
  177. package/dist/cli/registry.js +205 -0
  178. package/dist/cli/registry.js.map +1 -0
  179. package/dist/cli/repl.d.ts +83 -0
  180. package/dist/cli/repl.d.ts.map +1 -0
  181. package/dist/cli/repl.js +447 -0
  182. package/dist/cli/repl.js.map +1 -0
  183. package/dist/cli/ui/components.d.ts +144 -0
  184. package/dist/cli/ui/components.d.ts.map +1 -0
  185. package/dist/cli/ui/components.js +331 -0
  186. package/dist/cli/ui/components.js.map +1 -0
  187. package/dist/cli/ui/index.d.ts +7 -0
  188. package/dist/cli/ui/index.d.ts.map +1 -0
  189. package/dist/cli/ui/index.js +23 -0
  190. package/dist/cli/ui/index.js.map +1 -0
  191. package/dist/cli/utils/docker-files.d.ts +39 -0
  192. package/dist/cli/utils/docker-files.d.ts.map +1 -0
  193. package/dist/cli/utils/docker-files.js +223 -0
  194. package/dist/cli/utils/docker-files.js.map +1 -0
  195. package/dist/cli/utils/docker-prereq.d.ts +48 -0
  196. package/dist/cli/utils/docker-prereq.d.ts.map +1 -0
  197. package/dist/cli/utils/docker-prereq.js +203 -0
  198. package/dist/cli/utils/docker-prereq.js.map +1 -0
  199. package/dist/config/settings.d.ts +594 -0
  200. package/dist/config/settings.d.ts.map +1 -0
  201. package/dist/config/settings.js +250 -0
  202. package/dist/config/settings.js.map +1 -0
  203. package/dist/core/discovery/cluster-view.d.ts +50 -0
  204. package/dist/core/discovery/cluster-view.d.ts.map +1 -0
  205. package/dist/core/discovery/cluster-view.js +235 -0
  206. package/dist/core/discovery/cluster-view.js.map +1 -0
  207. package/dist/core/discovery/scanner.d.ts +70 -0
  208. package/dist/core/discovery/scanner.d.ts.map +1 -0
  209. package/dist/core/discovery/scanner.js +197 -0
  210. package/dist/core/discovery/scanner.js.map +1 -0
  211. package/dist/core/discovery/topology.d.ts +118 -0
  212. package/dist/core/discovery/topology.d.ts.map +1 -0
  213. package/dist/core/discovery/topology.js +550 -0
  214. package/dist/core/discovery/topology.js.map +1 -0
  215. package/dist/core/failover/candidate-selector.d.ts +46 -0
  216. package/dist/core/failover/candidate-selector.d.ts.map +1 -0
  217. package/dist/core/failover/candidate-selector.js +70 -0
  218. package/dist/core/failover/candidate-selector.js.map +1 -0
  219. package/dist/core/failover/executor.d.ts +104 -0
  220. package/dist/core/failover/executor.d.ts.map +1 -0
  221. package/dist/core/failover/executor.js +248 -0
  222. package/dist/core/failover/executor.js.map +1 -0
  223. package/dist/core/failover/operation-builder.d.ts +71 -0
  224. package/dist/core/failover/operation-builder.d.ts.map +1 -0
  225. package/dist/core/failover/operation-builder.js +157 -0
  226. package/dist/core/failover/operation-builder.js.map +1 -0
  227. package/dist/core/failover/operation-runner.d.ts +75 -0
  228. package/dist/core/failover/operation-runner.d.ts.map +1 -0
  229. package/dist/core/failover/operation-runner.js +191 -0
  230. package/dist/core/failover/operation-runner.js.map +1 -0
  231. package/dist/core/failover/promoter.d.ts +33 -0
  232. package/dist/core/failover/promoter.d.ts.map +1 -0
  233. package/dist/core/failover/promoter.js +97 -0
  234. package/dist/core/failover/promoter.js.map +1 -0
  235. package/dist/core/failover/recovery-manager.d.ts +47 -0
  236. package/dist/core/failover/recovery-manager.d.ts.map +1 -0
  237. package/dist/core/failover/recovery-manager.js +145 -0
  238. package/dist/core/failover/recovery-manager.js.map +1 -0
  239. package/dist/core/failover/types.d.ts +54 -0
  240. package/dist/core/failover/types.d.ts.map +1 -0
  241. package/dist/core/failover/types.js +8 -0
  242. package/dist/core/failover/types.js.map +1 -0
  243. package/dist/core/monitoring/collector.d.ts +25 -0
  244. package/dist/core/monitoring/collector.d.ts.map +1 -0
  245. package/dist/core/monitoring/collector.js +115 -0
  246. package/dist/core/monitoring/collector.js.map +1 -0
  247. package/dist/core/monitoring/exporters.d.ts +49 -0
  248. package/dist/core/monitoring/exporters.d.ts.map +1 -0
  249. package/dist/core/monitoring/exporters.js +126 -0
  250. package/dist/core/monitoring/exporters.js.map +1 -0
  251. package/dist/core/routing/proxysql-manager.d.ts +213 -0
  252. package/dist/core/routing/proxysql-manager.d.ts.map +1 -0
  253. package/dist/core/routing/proxysql-manager.js +632 -0
  254. package/dist/core/routing/proxysql-manager.js.map +1 -0
  255. package/dist/core/sync/replica-recovery.d.ts +40 -0
  256. package/dist/core/sync/replica-recovery.d.ts.map +1 -0
  257. package/dist/core/sync/replica-recovery.js +134 -0
  258. package/dist/core/sync/replica-recovery.js.map +1 -0
  259. package/dist/core/sync/sync-coordinator.d.ts +83 -0
  260. package/dist/core/sync/sync-coordinator.d.ts.map +1 -0
  261. package/dist/core/sync/sync-coordinator.js +254 -0
  262. package/dist/core/sync/sync-coordinator.js.map +1 -0
  263. package/dist/core/sync/topology-watcher.d.ts +76 -0
  264. package/dist/core/sync/topology-watcher.d.ts.map +1 -0
  265. package/dist/core/sync/topology-watcher.js +222 -0
  266. package/dist/core/sync/topology-watcher.js.map +1 -0
  267. package/dist/core/sync/types.d.ts +85 -0
  268. package/dist/core/sync/types.d.ts.map +1 -0
  269. package/dist/core/sync/types.js +8 -0
  270. package/dist/core/sync/types.js.map +1 -0
  271. package/dist/index.d.ts +5 -0
  272. package/dist/index.d.ts.map +1 -0
  273. package/dist/index.js +9 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/types/index.d.ts +212 -0
  276. package/dist/types/index.d.ts.map +1 -0
  277. package/dist/types/index.js +153 -0
  278. package/dist/types/index.js.map +1 -0
  279. package/dist/utils/database.d.ts +62 -0
  280. package/dist/utils/database.d.ts.map +1 -0
  281. package/dist/utils/database.js +257 -0
  282. package/dist/utils/database.js.map +1 -0
  283. package/dist/utils/exceptions.d.ts +69 -0
  284. package/dist/utils/exceptions.d.ts.map +1 -0
  285. package/dist/utils/exceptions.js +121 -0
  286. package/dist/utils/exceptions.js.map +1 -0
  287. package/dist/utils/logger.d.ts +20 -0
  288. package/dist/utils/logger.d.ts.map +1 -0
  289. package/dist/utils/logger.js +90 -0
  290. package/dist/utils/logger.js.map +1 -0
  291. package/dist/utils/mysql-client.d.ts +43 -0
  292. package/dist/utils/mysql-client.d.ts.map +1 -0
  293. package/dist/utils/mysql-client.js +125 -0
  294. package/dist/utils/mysql-client.js.map +1 -0
  295. package/docker/Dockerfile +61 -0
  296. package/docker/Dockerfile.node +41 -0
  297. package/docker/grafana/dashboards/clawsql.json +212 -0
  298. package/docker/grafana/provisioning/dashboards/dashboards.yml +13 -0
  299. package/docker/grafana/provisioning/datasources/datasources.yml +12 -0
  300. package/docker/init/primary.sql +26 -0
  301. package/docker/init/replica.sql +16 -0
  302. package/docker/orchestrator/orchestrator.conf.json +98 -0
  303. package/docker/prometheus/prometheus.yml +45 -0
  304. package/docker/proxysql/entrypoint.sh +8 -0
  305. package/docker/proxysql/init.sql.demo +30 -0
  306. package/docker/proxysql/proxysql.cnf +38 -0
  307. package/docker-compose.demo.yml +115 -0
  308. package/docker-compose.yml +217 -0
  309. package/init/primary.sql +19 -0
  310. package/init/replica.sql +13 -0
  311. package/package.json +84 -0
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - UI Components
4
+ *
5
+ * Professional UI components for the interactive CLI.
6
+ * Inspired by Claude Code's clean, minimal style.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.indicators = exports.theme = exports.nord = void 0;
13
+ exports.createBanner = createBanner;
14
+ exports.createPrompt = createPrompt;
15
+ exports.createSuggestionBox = createSuggestionBox;
16
+ exports.createDidYouMean = createDidYouMean;
17
+ exports.createStatusBar = createStatusBar;
18
+ exports.createKeybindingsHelp = createKeybindingsHelp;
19
+ exports.clearScreen = clearScreen;
20
+ exports.createSpinner = createSpinner;
21
+ exports.formatCommandHint = formatCommandHint;
22
+ exports.divider = divider;
23
+ exports.formatWelcomeMessage = formatWelcomeMessage;
24
+ exports.formatSuggestionsDropdown = formatSuggestionsDropdown;
25
+ exports.clearSuggestionsDropdown = clearSuggestionsDropdown;
26
+ const chalk_1 = __importDefault(require("chalk"));
27
+ const ora_1 = __importDefault(require("ora"));
28
+ /**
29
+ * Nord Theme Colors (https://www.nordtheme.com)
30
+ * Single source of truth for all CLI colors
31
+ */
32
+ exports.nord = {
33
+ polarNight: {
34
+ nord0: '#2E3440',
35
+ nord1: '#3B4252',
36
+ nord2: '#434C5E',
37
+ nord3: '#4C566A',
38
+ },
39
+ snowStorm: {
40
+ nord4: '#D8DEE9',
41
+ nord5: '#E5E9F0',
42
+ nord6: '#ECEFF4',
43
+ },
44
+ frost: {
45
+ nord7: '#8FBCBB',
46
+ nord8: '#88C0D0',
47
+ nord9: '#81A1C1',
48
+ nord10: '#5E81AC',
49
+ },
50
+ aurora: {
51
+ nord11: '#BF616A',
52
+ nord12: '#D08770',
53
+ nord13: '#EBCB8B',
54
+ nord14: '#A3BE8C',
55
+ nord15: '#B48EAD',
56
+ },
57
+ };
58
+ /**
59
+ * Chalk-based theme for CLI output
60
+ * Use these functions for consistent colors across the CLI
61
+ */
62
+ exports.theme = {
63
+ primary: chalk_1.default.hex(exports.nord.frost.nord8), // Cyan
64
+ secondary: chalk_1.default.hex(exports.nord.frost.nord9), // Blue
65
+ success: chalk_1.default.hex(exports.nord.aurora.nord14), // Green
66
+ warning: chalk_1.default.hex(exports.nord.aurora.nord13), // Yellow
67
+ error: chalk_1.default.hex(exports.nord.aurora.nord11), // Red
68
+ info: chalk_1.default.hex(exports.nord.frost.nord7), // Teal
69
+ muted: chalk_1.default.hex(exports.nord.polarNight.nord3), // Muted gray
70
+ highlight: chalk_1.default.hex(exports.nord.snowStorm.nord4), // Bright
71
+ accent: chalk_1.default.hex(exports.nord.aurora.nord15), // Purple
72
+ };
73
+ /**
74
+ * Clean status indicators (no emojis)
75
+ * Use these for consistent icons across the CLI
76
+ */
77
+ exports.indicators = {
78
+ success: '●',
79
+ error: '○',
80
+ warning: '◆',
81
+ info: '○',
82
+ arrow: '→',
83
+ bullet: '●',
84
+ circle: '○',
85
+ check: '✓',
86
+ cross: '✗',
87
+ prompt: '›',
88
+ };
89
+ /**
90
+ * Strip ANSI escape codes and get visible string length
91
+ */
92
+ function visibleLength(str) {
93
+ // eslint-disable-next-line no-control-regex
94
+ return str.replace(/\x1B\[[0-9;]*m/g, '').length;
95
+ }
96
+ /**
97
+ * Create a professional banner with VSCode-inspired styling
98
+ */
99
+ function createBanner(options) {
100
+ const lines = [];
101
+ const width = 52;
102
+ // Top border
103
+ lines.push(exports.theme.primary('┌' + '─'.repeat(width - 2) + '┐'));
104
+ // Title line
105
+ const title = `ClawSQL v${options.version}`;
106
+ const titlePadding = Math.floor((width - title.length - 2) / 2);
107
+ lines.push(exports.theme.primary('│') +
108
+ ' '.repeat(titlePadding) +
109
+ exports.theme.highlight.bold(title) +
110
+ ' '.repeat(width - title.length - titlePadding - 2) +
111
+ exports.theme.primary('│'));
112
+ // Subtitle
113
+ const subtitle = 'MySQL Cluster Management';
114
+ const subtitlePadding = Math.floor((width - subtitle.length - 2) / 2);
115
+ lines.push(exports.theme.primary('│') +
116
+ ' '.repeat(subtitlePadding) +
117
+ exports.theme.secondary(subtitle) +
118
+ ' '.repeat(width - subtitle.length - subtitlePadding - 2) +
119
+ exports.theme.primary('│'));
120
+ // Status line
121
+ const statusParts = [];
122
+ if (options.aiStatus) {
123
+ const icon = options.aiStatus.enabled ? exports.indicators.success : exports.indicators.circle;
124
+ const label = `${icon} AI: ${options.aiStatus.provider || (options.aiStatus.enabled ? 'on' : 'off')}`;
125
+ statusParts.push(options.aiStatus.enabled ? exports.theme.accent(label) : exports.theme.muted(label));
126
+ }
127
+ if (options.orchestratorStatus) {
128
+ const icon = options.orchestratorStatus === 'connected'
129
+ ? exports.indicators.success
130
+ : options.orchestratorStatus === 'disconnected'
131
+ ? exports.indicators.error
132
+ : exports.indicators.circle;
133
+ const label = `${icon} Orchestrator`;
134
+ statusParts.push(options.orchestratorStatus === 'connected'
135
+ ? exports.theme.success(label)
136
+ : options.orchestratorStatus === 'disconnected'
137
+ ? exports.theme.error(label)
138
+ : exports.theme.muted(label));
139
+ }
140
+ if (statusParts.length > 0) {
141
+ const statusText = statusParts.join(' ');
142
+ const visibleLen = visibleLength(statusText);
143
+ const statusPadding = Math.floor((width - visibleLen - 2) / 2);
144
+ lines.push(exports.theme.primary('│') +
145
+ ' '.repeat(Math.max(1, statusPadding)) +
146
+ statusText +
147
+ ' '.repeat(Math.max(1, width - visibleLen - statusPadding - 2)) +
148
+ exports.theme.primary('│'));
149
+ }
150
+ // Bottom border
151
+ lines.push(exports.theme.primary('└' + '─'.repeat(width - 2) + '┘'));
152
+ return lines.join('\n');
153
+ }
154
+ /**
155
+ * Create a contextual prompt string
156
+ */
157
+ function createPrompt(options) {
158
+ const { context, status = 'normal' } = options;
159
+ const statusColor = status === 'error'
160
+ ? exports.theme.error
161
+ : status === 'warning'
162
+ ? exports.theme.warning
163
+ : exports.theme.primary;
164
+ let prompt = statusColor('clawsql');
165
+ if (context) {
166
+ prompt += exports.theme.muted(` (${context})`);
167
+ }
168
+ prompt += ' ' + statusColor(exports.indicators.prompt) + ' ';
169
+ return prompt;
170
+ }
171
+ /**
172
+ * Create a suggestion box for command completions
173
+ */
174
+ function createSuggestionBox(suggestions, hint) {
175
+ if (suggestions.length === 0)
176
+ return '';
177
+ const lines = [];
178
+ lines.push(exports.theme.muted(' Suggestions:'));
179
+ for (const suggestion of suggestions.slice(0, 5)) {
180
+ lines.push(exports.theme.info(` ${exports.indicators.arrow} ${suggestion}`));
181
+ }
182
+ if (suggestions.length > 5) {
183
+ lines.push(exports.theme.muted(` ... and ${suggestions.length - 5} more`));
184
+ }
185
+ if (hint) {
186
+ lines.push(exports.theme.secondary(' ' + hint));
187
+ }
188
+ return lines.join('\n');
189
+ }
190
+ /**
191
+ * Create a "did you mean?" suggestion
192
+ */
193
+ function createDidYouMean(typed, suggestions) {
194
+ if (suggestions.length === 0)
195
+ return '';
196
+ if (suggestions.length === 1) {
197
+ return exports.theme.error(`Unknown: ${typed}`) + ' ' + exports.theme.info(`Did you mean: /${suggestions[0]}?`);
198
+ }
199
+ const lines = [exports.theme.error(`Unknown: ${typed}`), exports.theme.info('Did you mean one of these?')];
200
+ for (const suggestion of suggestions) {
201
+ lines.push(exports.theme.muted(` /${suggestion}`));
202
+ }
203
+ return lines.join('\n');
204
+ }
205
+ /**
206
+ * Create a status bar
207
+ */
208
+ function createStatusBar(options) {
209
+ const parts = [];
210
+ if (options.clusters !== undefined) {
211
+ parts.push(`${exports.theme.info(exports.indicators.bullet)} Clusters: ${options.clusters}`);
212
+ }
213
+ if (options.instances !== undefined) {
214
+ parts.push(`${exports.theme.success(exports.indicators.bullet)} Instances: ${options.instances}`);
215
+ }
216
+ if (options.alerts !== undefined) {
217
+ const alertColor = options.alerts > 0 ? exports.theme.warning : exports.theme.success;
218
+ parts.push(`${alertColor(exports.indicators.bullet)} Alerts: ${options.alerts}`);
219
+ }
220
+ return parts.join(' ');
221
+ }
222
+ /**
223
+ * Create a keybindings help box
224
+ */
225
+ function createKeybindingsHelp() {
226
+ const lines = [
227
+ exports.theme.muted('─'.repeat(40)),
228
+ exports.theme.secondary(' Keyboard Shortcuts:'),
229
+ exports.theme.muted(' Tab ') + 'Auto-complete',
230
+ exports.theme.muted(' Ctrl+L ') + 'Clear screen',
231
+ exports.theme.muted(' Ctrl+C ') + 'Cancel input',
232
+ exports.theme.muted(' Ctrl+D ') + 'Exit',
233
+ exports.theme.muted(' Up/Down ') + 'History navigation',
234
+ exports.theme.muted('─'.repeat(40)),
235
+ ];
236
+ return lines.join('\n');
237
+ }
238
+ /**
239
+ * Clear the terminal screen
240
+ */
241
+ function clearScreen() {
242
+ process.stdout.write('\x1B[2J\x1B[0f');
243
+ }
244
+ /**
245
+ * Create a spinner for async operations
246
+ */
247
+ function createSpinner(text) {
248
+ return (0, ora_1.default)({
249
+ text,
250
+ spinner: 'dots',
251
+ color: 'cyan',
252
+ });
253
+ }
254
+ /**
255
+ * Format a command hint
256
+ */
257
+ function formatCommandHint(command, description, usage) {
258
+ return [
259
+ exports.theme.primary(`/${command}`) + exports.theme.muted(' - ') + description,
260
+ exports.theme.muted(' Usage: ') + usage,
261
+ ].join('\n');
262
+ }
263
+ /**
264
+ * Create a divider line
265
+ */
266
+ function divider(char = '─', width = 60) {
267
+ return exports.theme.muted(char.repeat(width));
268
+ }
269
+ /**
270
+ * Format a welcome message
271
+ */
272
+ function formatWelcomeMessage() {
273
+ return exports.theme.muted('Type /help for commands, /exit to quit.');
274
+ }
275
+ /**
276
+ * Format a suggestions dropdown in Claude Code style
277
+ * Shows command suggestions with descriptions in a formatted panel
278
+ */
279
+ function formatSuggestionsDropdown(suggestions, selectedIndex, maxWidth = process.stdout.columns || 80) {
280
+ if (suggestions.length === 0)
281
+ return '';
282
+ const lines = [];
283
+ // Calculate column widths
284
+ const nameWidth = Math.max(...suggestions.map(s => s.name.length)) + 2;
285
+ const descWidth = maxWidth - nameWidth - 4;
286
+ // Top border
287
+ lines.push(exports.theme.muted('─'.repeat(Math.min(maxWidth, 100))));
288
+ // Suggestions
289
+ suggestions.forEach((suggestion, index) => {
290
+ const isSelected = index === selectedIndex;
291
+ const name = suggestion.name.padEnd(nameWidth);
292
+ const desc = truncateText(suggestion.description, descWidth);
293
+ if (isSelected) {
294
+ // Highlight selected item
295
+ lines.push(exports.theme.primary('› ') +
296
+ exports.theme.primary.bold(name) +
297
+ exports.theme.muted(desc));
298
+ }
299
+ else {
300
+ lines.push(' ' +
301
+ exports.theme.info(name) +
302
+ exports.theme.muted(desc));
303
+ }
304
+ });
305
+ // Bottom border
306
+ lines.push(exports.theme.muted('─'.repeat(Math.min(maxWidth, 100))));
307
+ return lines.join('\n');
308
+ }
309
+ /**
310
+ * Truncate text to fit within maxWidth, adding ellipsis if needed
311
+ */
312
+ function truncateText(text, maxWidth) {
313
+ if (text.length <= maxWidth)
314
+ return text;
315
+ if (maxWidth <= 3)
316
+ return '...';
317
+ return text.slice(0, maxWidth - 3) + '...';
318
+ }
319
+ /**
320
+ * Clear the suggestions dropdown from the terminal
321
+ * @param numLines Number of lines to clear
322
+ */
323
+ function clearSuggestionsDropdown(numLines) {
324
+ // Move cursor up and clear each line
325
+ for (let i = 0; i < numLines; i++) {
326
+ process.stdout.write('\x1B[1A'); // Move up one line
327
+ process.stdout.write('\x1B[2K'); // Clear entire line
328
+ }
329
+ process.stdout.write('\x1B[0G'); // Move cursor to beginning of line
330
+ }
331
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/cli/ui/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ClawSQL CLI - UI Module
3
+ *
4
+ * Export all UI components.
5
+ */
6
+ export * from './components.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - UI Module
4
+ *
5
+ * Export all UI components.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./components.js"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,kDAAgC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ClawSQL CLI - Docker Files Manager
3
+ *
4
+ * Manages extraction and versioning of bundled Docker configuration files.
5
+ * This enables `npm install -g clawsql` to work without cloning the repo.
6
+ */
7
+ /**
8
+ * Get the ClawSQL home directory (~/.clawsql/)
9
+ */
10
+ export declare function getClawSQLHome(): string;
11
+ /**
12
+ * Get the docker files directory (~/.clawsql/docker/)
13
+ */
14
+ export declare function getDockerFilesDir(): string;
15
+ /**
16
+ * Check if Docker files need to be extracted
17
+ */
18
+ export declare function needsExtraction(): boolean;
19
+ /**
20
+ * Extract Docker files from npm package to ~/.clawsql/docker/
21
+ */
22
+ export declare function ensureDockerFiles(): Promise<string>;
23
+ /**
24
+ * Get docker-compose.yml path
25
+ */
26
+ export declare function getDockerComposePath(): string;
27
+ /**
28
+ * Get docker-compose.demo.yml path
29
+ */
30
+ export declare function getDockerComposeDemoPath(): string;
31
+ /**
32
+ * Get .env.example path
33
+ */
34
+ export declare function getEnvExamplePath(): string;
35
+ /**
36
+ * Ensure .env file exists in the docker directory
37
+ */
38
+ export declare function ensureEnvFile(): Promise<string>;
39
+ //# sourceMappingURL=docker-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-files.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/docker-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AASD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAsBzC;AAyCD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAsDzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAyBrD"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - Docker Files Manager
4
+ *
5
+ * Manages extraction and versioning of bundled Docker configuration files.
6
+ * This enables `npm install -g clawsql` to work without cloning the repo.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getClawSQLHome = getClawSQLHome;
43
+ exports.getDockerFilesDir = getDockerFilesDir;
44
+ exports.needsExtraction = needsExtraction;
45
+ exports.ensureDockerFiles = ensureDockerFiles;
46
+ exports.getDockerComposePath = getDockerComposePath;
47
+ exports.getDockerComposeDemoPath = getDockerComposeDemoPath;
48
+ exports.getEnvExamplePath = getEnvExamplePath;
49
+ exports.ensureEnvFile = ensureEnvFile;
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const os = __importStar(require("os"));
53
+ const settings_js_1 = require("../../config/settings.js");
54
+ /**
55
+ * Get the ClawSQL home directory (~/.clawsql/)
56
+ */
57
+ function getClawSQLHome() {
58
+ const homeDir = os.homedir();
59
+ return path.join(homeDir, '.clawsql');
60
+ }
61
+ /**
62
+ * Get the docker files directory (~/.clawsql/docker/)
63
+ */
64
+ function getDockerFilesDir() {
65
+ return path.join(getClawSQLHome(), 'docker');
66
+ }
67
+ /**
68
+ * Get the version file path
69
+ */
70
+ function getVersionFilePath() {
71
+ return path.join(getDockerFilesDir(), '.version');
72
+ }
73
+ /**
74
+ * Check if Docker files need to be extracted
75
+ */
76
+ function needsExtraction() {
77
+ const dockerDir = getDockerFilesDir();
78
+ const versionFile = getVersionFilePath();
79
+ // Check if directory exists
80
+ if (!fs.existsSync(dockerDir)) {
81
+ return true;
82
+ }
83
+ // Check if version file exists
84
+ if (!fs.existsSync(versionFile)) {
85
+ return true;
86
+ }
87
+ // Compare versions
88
+ try {
89
+ const storedVersion = fs.readFileSync(versionFile, 'utf-8').trim();
90
+ const currentVersion = (0, settings_js_1.getSettings)().appVersion;
91
+ return storedVersion !== currentVersion;
92
+ }
93
+ catch {
94
+ return true;
95
+ }
96
+ }
97
+ /**
98
+ * Recursively copy a directory
99
+ */
100
+ function copyDirRecursive(src, dest) {
101
+ // Create destination directory
102
+ if (!fs.existsSync(dest)) {
103
+ fs.mkdirSync(dest, { recursive: true });
104
+ }
105
+ const entries = fs.readdirSync(src, { withFileTypes: true });
106
+ for (const entry of entries) {
107
+ const srcPath = path.join(src, entry.name);
108
+ const destPath = path.join(dest, entry.name);
109
+ if (entry.isDirectory()) {
110
+ copyDirRecursive(srcPath, destPath);
111
+ }
112
+ else {
113
+ fs.copyFileSync(srcPath, destPath);
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Get the bundled docker files path (from npm package)
119
+ */
120
+ function getBundledDockerPath() {
121
+ // When running from npm install, files are relative to dist/cli/utils/
122
+ return path.join(__dirname, '..', '..', '..', 'docker');
123
+ }
124
+ /**
125
+ * Get the bundled docker-compose files path
126
+ */
127
+ function getBundledDockerComposePath() {
128
+ // docker-compose.yml is at the root of the npm package
129
+ return path.join(__dirname, '..', '..', '..');
130
+ }
131
+ /**
132
+ * Extract Docker files from npm package to ~/.clawsql/docker/
133
+ */
134
+ async function ensureDockerFiles() {
135
+ const dockerDir = getDockerFilesDir();
136
+ // Check if extraction is needed
137
+ if (!needsExtraction()) {
138
+ return dockerDir;
139
+ }
140
+ console.log('Extracting Docker configuration files...');
141
+ // Create directory structure
142
+ if (!fs.existsSync(dockerDir)) {
143
+ fs.mkdirSync(dockerDir, { recursive: true });
144
+ }
145
+ // Get bundled paths
146
+ const bundledDockerPath = getBundledDockerPath();
147
+ const bundledRootPath = getBundledDockerComposePath();
148
+ // Check if bundled files exist
149
+ if (!fs.existsSync(bundledDockerPath)) {
150
+ throw new Error('Docker configuration files not found. ' +
151
+ 'Please ensure clawsql is installed correctly.');
152
+ }
153
+ // Copy docker/ directory
154
+ copyDirRecursive(bundledDockerPath, dockerDir);
155
+ // Copy docker-compose.yml files
156
+ const composeFiles = ['docker-compose.yml', 'docker-compose.demo.yml'];
157
+ for (const file of composeFiles) {
158
+ const srcPath = path.join(bundledRootPath, file);
159
+ const destPath = path.join(dockerDir, file);
160
+ if (fs.existsSync(srcPath)) {
161
+ fs.copyFileSync(srcPath, destPath);
162
+ }
163
+ }
164
+ // Copy init/ directory (MySQL init scripts)
165
+ const bundledInitPath = path.join(bundledRootPath, 'init');
166
+ const destInitPath = path.join(dockerDir, 'init');
167
+ if (fs.existsSync(bundledInitPath)) {
168
+ copyDirRecursive(bundledInitPath, destInitPath);
169
+ }
170
+ // Write version file
171
+ const version = (0, settings_js_1.getSettings)().appVersion;
172
+ fs.writeFileSync(getVersionFilePath(), version);
173
+ console.log(`Docker files extracted to: ${dockerDir}`);
174
+ return dockerDir;
175
+ }
176
+ /**
177
+ * Get docker-compose.yml path
178
+ */
179
+ function getDockerComposePath() {
180
+ return path.join(getDockerFilesDir(), 'docker-compose.yml');
181
+ }
182
+ /**
183
+ * Get docker-compose.demo.yml path
184
+ */
185
+ function getDockerComposeDemoPath() {
186
+ return path.join(getDockerFilesDir(), 'docker-compose.demo.yml');
187
+ }
188
+ /**
189
+ * Get .env.example path
190
+ */
191
+ function getEnvExamplePath() {
192
+ const bundledRootPath = getBundledDockerComposePath();
193
+ return path.join(bundledRootPath, '.env.example');
194
+ }
195
+ /**
196
+ * Ensure .env file exists in the docker directory
197
+ */
198
+ async function ensureEnvFile() {
199
+ const dockerDir = getDockerFilesDir();
200
+ const envPath = path.join(dockerDir, '.env');
201
+ const envExamplePath = path.join(dockerDir, '.env.example');
202
+ if (!fs.existsSync(envPath)) {
203
+ // Try to copy from example
204
+ if (fs.existsSync(envExamplePath)) {
205
+ fs.copyFileSync(envExamplePath, envPath);
206
+ }
207
+ else {
208
+ // Create minimal .env
209
+ const minimalEnv = `# ClawSQL Configuration
210
+ # Generated by ClawSQL CLI
211
+
212
+ API_TOKEN_SECRET=change-me-in-production
213
+ MYSQL_ADMIN_USER=clawsql
214
+ MYSQL_ADMIN_PASSWORD=clawsql_password
215
+ MYSQL_REPLICATION_USER=repl
216
+ MYSQL_REPLICATION_PASSWORD=repl_password
217
+ `;
218
+ fs.writeFileSync(envPath, minimalEnv);
219
+ }
220
+ }
221
+ return envPath;
222
+ }
223
+ //# sourceMappingURL=docker-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-files.js","sourceRoot":"","sources":["../../../src/cli/utils/docker-files.ts"],"names":[],"mappings":"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"}