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,98 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - OpenAI Provider
4
+ *
5
+ * LLM provider implementation for OpenAI API.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.OpenAIProvider = void 0;
9
+ exports.getOpenAIProvider = getOpenAIProvider;
10
+ const base_js_1 = require("./base.js");
11
+ /**
12
+ * OpenAI provider
13
+ */
14
+ class OpenAIProvider {
15
+ name = 'openai';
16
+ apiKey;
17
+ model;
18
+ baseUrl = 'https://api.openai.com/v1';
19
+ constructor() {
20
+ const config = (0, base_js_1.loadAIConfig)();
21
+ this.apiKey = config.apiKey || process.env.OPENAI_API_KEY;
22
+ this.model = config.model || 'gpt-4o';
23
+ }
24
+ isConfigured() {
25
+ return !!this.apiKey;
26
+ }
27
+ async chat(messages, tools, options) {
28
+ if (!this.apiKey) {
29
+ throw new Error('OPENAI_API_KEY not configured. Set the environment variable to enable AI features.');
30
+ }
31
+ // Convert messages to OpenAI format
32
+ const openaiMessages = messages.map(msg => ({
33
+ role: msg.role,
34
+ content: msg.content,
35
+ }));
36
+ // Convert tools to OpenAI format
37
+ const openaiTools = tools.map(tool => ({
38
+ type: 'function',
39
+ function: {
40
+ name: tool.name,
41
+ description: tool.description,
42
+ parameters: {
43
+ type: 'object',
44
+ properties: tool.parameters.properties || {},
45
+ required: tool.parameters.required,
46
+ },
47
+ },
48
+ }));
49
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
50
+ method: 'POST',
51
+ headers: {
52
+ 'Content-Type': 'application/json',
53
+ 'Authorization': `Bearer ${this.apiKey}`,
54
+ },
55
+ body: JSON.stringify({
56
+ model: this.model,
57
+ max_tokens: options?.maxTokens || 4096,
58
+ temperature: options?.temperature ?? 0.7,
59
+ messages: openaiMessages,
60
+ tools: openaiTools.length > 0 ? openaiTools : undefined,
61
+ }),
62
+ signal: options?.signal,
63
+ });
64
+ if (!response.ok) {
65
+ const error = await response.text();
66
+ throw new Error(`OpenAI API error: ${response.status} - ${error}`);
67
+ }
68
+ const data = await response.json();
69
+ const choice = data.choices[0];
70
+ if (!choice) {
71
+ throw new Error('No response from OpenAI');
72
+ }
73
+ // Extract tool calls
74
+ const toolUse = [];
75
+ if (choice.message.tool_calls) {
76
+ for (const call of choice.message.tool_calls) {
77
+ toolUse.push({
78
+ id: call.id,
79
+ name: call.function.name,
80
+ input: JSON.parse(call.function.arguments),
81
+ });
82
+ }
83
+ }
84
+ return {
85
+ content: choice.message.content || '',
86
+ toolUse: toolUse.length > 0 ? toolUse : undefined,
87
+ stopReason: choice.finish_reason,
88
+ };
89
+ }
90
+ }
91
+ exports.OpenAIProvider = OpenAIProvider;
92
+ /**
93
+ * Get the OpenAI provider instance
94
+ */
95
+ function getOpenAIProvider() {
96
+ return new OpenAIProvider();
97
+ }
98
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../src/cli/agent/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ClawSQL CLI - Agent Tools
3
+ *
4
+ * Tool definitions for AI agent operations.
5
+ */
6
+ import { AgentTool } from '../providers/base.js';
7
+ import { CLIContext } from '../../registry.js';
8
+ /**
9
+ * Create the get_topology tool
10
+ */
11
+ export declare function createTopologyTool(ctx: CLIContext): AgentTool;
12
+ /**
13
+ * Create the get_instance_health tool
14
+ */
15
+ export declare function createInstanceHealthTool(ctx: CLIContext): AgentTool;
16
+ /**
17
+ * Create the execute_sql tool
18
+ */
19
+ export declare function createExecuteSQLTool(ctx: CLIContext): AgentTool;
20
+ /**
21
+ * Create the get_failover_status tool
22
+ */
23
+ export declare function createFailoverStatusTool(ctx: CLIContext): AgentTool;
24
+ /**
25
+ * Create the get_clusters tool
26
+ */
27
+ export declare function createClustersTool(ctx: CLIContext): AgentTool;
28
+ /**
29
+ * Create all agent tools
30
+ */
31
+ export declare function createAgentTools(ctx: CLIContext): AgentTool[];
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAmE7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CA8DnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAiD/D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CA0BnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAiC7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,EAAE,CAQ7D"}
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - Agent Tools
4
+ *
5
+ * Tool definitions for AI agent operations.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createTopologyTool = createTopologyTool;
9
+ exports.createInstanceHealthTool = createInstanceHealthTool;
10
+ exports.createExecuteSQLTool = createExecuteSQLTool;
11
+ exports.createFailoverStatusTool = createFailoverStatusTool;
12
+ exports.createClustersTool = createClustersTool;
13
+ exports.createAgentTools = createAgentTools;
14
+ /**
15
+ * Create the get_topology tool
16
+ */
17
+ function createTopologyTool(ctx) {
18
+ const parameters = {
19
+ type: 'object',
20
+ description: 'Get cluster topology information',
21
+ properties: {
22
+ clusterName: {
23
+ type: 'string',
24
+ description: 'Name of the cluster to get topology for (optional, defaults to all clusters)',
25
+ },
26
+ },
27
+ };
28
+ return {
29
+ name: 'get_topology',
30
+ description: 'Get the current MySQL cluster topology showing primary and replicas with their status',
31
+ parameters,
32
+ execute: async (params) => {
33
+ try {
34
+ const clusterName = params.clusterName;
35
+ if (clusterName) {
36
+ const cluster = await ctx.orchestrator.getTopology(clusterName);
37
+ if (!cluster) {
38
+ return { error: `Cluster '${clusterName}' not found` };
39
+ }
40
+ return {
41
+ cluster: clusterName,
42
+ primary: cluster.primary ? {
43
+ host: cluster.primary.host,
44
+ port: cluster.primary.port,
45
+ state: cluster.primary.state,
46
+ version: cluster.primary.version,
47
+ } : null,
48
+ replicas: cluster.replicas.map(r => ({
49
+ host: r.host,
50
+ port: r.port,
51
+ state: r.state,
52
+ replicationLag: r.replicationLag,
53
+ })),
54
+ };
55
+ }
56
+ else {
57
+ const clusters = await ctx.orchestrator.getClusters();
58
+ const results = [];
59
+ for (const name of clusters) {
60
+ const cluster = await ctx.orchestrator.getTopology(name);
61
+ if (cluster) {
62
+ results.push({
63
+ cluster: name,
64
+ primary: cluster.primary ? {
65
+ host: cluster.primary.host,
66
+ port: cluster.primary.port,
67
+ state: cluster.primary.state,
68
+ } : null,
69
+ replicaCount: cluster.replicas.length,
70
+ healthyReplicas: cluster.replicas.filter(r => r.state === 'online').length,
71
+ });
72
+ }
73
+ }
74
+ return { clusters: results };
75
+ }
76
+ }
77
+ catch (error) {
78
+ return { error: error instanceof Error ? error.message : String(error) };
79
+ }
80
+ },
81
+ };
82
+ }
83
+ /**
84
+ * Create the get_instance_health tool
85
+ */
86
+ function createInstanceHealthTool(ctx) {
87
+ const parameters = {
88
+ type: 'object',
89
+ description: 'Get health status of MySQL instances',
90
+ properties: {
91
+ host: {
92
+ type: 'string',
93
+ description: 'Specific host to check (optional)',
94
+ },
95
+ },
96
+ };
97
+ return {
98
+ name: 'get_instance_health',
99
+ description: 'Get health status of MySQL instances including connectivity, replication lag, and metrics',
100
+ parameters,
101
+ execute: async (params) => {
102
+ try {
103
+ const host = params.host;
104
+ const clusters = await ctx.orchestrator.getClusters();
105
+ const results = [];
106
+ for (const clusterName of clusters) {
107
+ const cluster = await ctx.orchestrator.getTopology(clusterName);
108
+ if (!cluster)
109
+ continue;
110
+ if (cluster.primary) {
111
+ if (!host || cluster.primary.host === host) {
112
+ results.push({
113
+ host: cluster.primary.host,
114
+ port: cluster.primary.port,
115
+ role: 'primary',
116
+ state: cluster.primary.state,
117
+ });
118
+ }
119
+ }
120
+ for (const replica of cluster.replicas) {
121
+ if (!host || replica.host === host) {
122
+ results.push({
123
+ host: replica.host,
124
+ port: replica.port,
125
+ role: 'replica',
126
+ state: replica.state,
127
+ replicationLag: replica.replicationLag,
128
+ });
129
+ }
130
+ }
131
+ }
132
+ return { instances: results };
133
+ }
134
+ catch (error) {
135
+ return { error: error instanceof Error ? error.message : String(error) };
136
+ }
137
+ },
138
+ };
139
+ }
140
+ /**
141
+ * Create the execute_sql tool
142
+ */
143
+ function createExecuteSQLTool(ctx) {
144
+ const parameters = {
145
+ type: 'object',
146
+ description: 'Execute SQL query via ProxySQL',
147
+ properties: {
148
+ query: {
149
+ type: 'string',
150
+ description: 'SQL query to execute (SELECT only for safety)',
151
+ },
152
+ hostgroup: {
153
+ type: 'number',
154
+ description: 'Hostgroup ID (optional, defaults to read hostgroup)',
155
+ },
156
+ },
157
+ required: ['query'],
158
+ };
159
+ return {
160
+ name: 'execute_sql',
161
+ description: 'Execute a SQL query through ProxySQL. Use for SELECT queries to inspect database state.',
162
+ parameters,
163
+ execute: async (params) => {
164
+ try {
165
+ const query = params.query;
166
+ // Safety check - only allow SELECT
167
+ const normalizedQuery = query.trim().toUpperCase();
168
+ if (!normalizedQuery.startsWith('SELECT') && !normalizedQuery.startsWith('SHOW')) {
169
+ return { error: 'Only SELECT and SHOW queries are allowed for safety' };
170
+ }
171
+ // Use MySQL connection to ProxySQL's MySQL port
172
+ const mysql = await import('mysql2/promise');
173
+ const connection = await mysql.createConnection({
174
+ host: ctx.settings.proxysql.host,
175
+ port: ctx.settings.proxysql.mysqlPort,
176
+ user: ctx.settings.mysql.adminUser,
177
+ password: ctx.settings.mysql.adminPassword,
178
+ });
179
+ const [rows] = await connection.execute(query);
180
+ await connection.end();
181
+ return { rows };
182
+ }
183
+ catch (error) {
184
+ return { error: error instanceof Error ? error.message : String(error) };
185
+ }
186
+ },
187
+ };
188
+ }
189
+ /**
190
+ * Create the get_failover_status tool
191
+ */
192
+ function createFailoverStatusTool(ctx) {
193
+ const parameters = {
194
+ type: 'object',
195
+ description: 'Get failover status and history',
196
+ properties: {},
197
+ };
198
+ return {
199
+ name: 'get_failover_status',
200
+ description: 'Get the current failover configuration and recent failover history',
201
+ parameters,
202
+ execute: async (_params) => {
203
+ try {
204
+ const settings = ctx.settings;
205
+ return {
206
+ autoFailoverEnabled: settings.failover.autoFailoverEnabled,
207
+ timeout: settings.failover.timeoutSeconds,
208
+ minReplicas: settings.failover.minReplicasForFailover,
209
+ confirmationChecks: settings.failover.confirmationChecks,
210
+ };
211
+ }
212
+ catch (error) {
213
+ return { error: error instanceof Error ? error.message : String(error) };
214
+ }
215
+ },
216
+ };
217
+ }
218
+ /**
219
+ * Create the get_clusters tool
220
+ */
221
+ function createClustersTool(ctx) {
222
+ const parameters = {
223
+ type: 'object',
224
+ description: 'List all discovered MySQL clusters',
225
+ properties: {},
226
+ };
227
+ return {
228
+ name: 'get_clusters',
229
+ description: 'List all MySQL clusters managed by ClawSQL',
230
+ parameters,
231
+ execute: async (_params) => {
232
+ try {
233
+ const clusters = await ctx.orchestrator.getClusters();
234
+ const results = await Promise.all(clusters.map(async (name) => {
235
+ const topology = await ctx.orchestrator.getTopology(name);
236
+ return {
237
+ name,
238
+ primaryHost: topology?.primary?.host || 'none',
239
+ replicaCount: topology?.replicas?.length || 0,
240
+ healthy: topology?.primary?.state === 'online',
241
+ };
242
+ }));
243
+ return { clusters: results };
244
+ }
245
+ catch (error) {
246
+ return { error: error instanceof Error ? error.message : String(error) };
247
+ }
248
+ },
249
+ };
250
+ }
251
+ /**
252
+ * Create all agent tools
253
+ */
254
+ function createAgentTools(ctx) {
255
+ return [
256
+ createTopologyTool(ctx),
257
+ createInstanceHealthTool(ctx),
258
+ createExecuteSQLTool(ctx),
259
+ createFailoverStatusTool(ctx),
260
+ createClustersTool(ctx),
261
+ ];
262
+ }
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ClawSQL CLI - Cleanup Command
3
+ *
4
+ * Remove all ClawSQL containers, volumes, and data.
5
+ */
6
+ import { Command } from '../registry.js';
7
+ /**
8
+ * Cleanup command
9
+ */
10
+ export declare const cleanupCommand: Command;
11
+ export default cleanupCommand;
12
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAc,MAAM,gBAAgB,CAAC;AAQrD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAyD5B,CAAC;AA2HF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - Cleanup Command
4
+ *
5
+ * Remove all ClawSQL containers, volumes, and data.
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.cleanupCommand = void 0;
42
+ const components_js_1 = require("../ui/components.js");
43
+ const child_process_1 = require("child_process");
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs"));
46
+ const docker_files_js_1 = require("../utils/docker-files.js");
47
+ const docker_prereq_js_1 = require("../utils/docker-prereq.js");
48
+ /**
49
+ * Cleanup command
50
+ */
51
+ exports.cleanupCommand = {
52
+ name: 'cleanup',
53
+ description: 'Remove all containers, volumes, and data',
54
+ usage: '/cleanup [--force]',
55
+ handler: async (args, ctx) => {
56
+ const force = args.includes('--force');
57
+ console.log(components_js_1.theme.error.bold('◆ WARNING: This will remove all ClawSQL containers and data!'));
58
+ console.log();
59
+ // Confirm unless --force
60
+ if (!force) {
61
+ const confirmed = await ctx.confirm('Are you sure you want to continue?');
62
+ if (!confirmed) {
63
+ console.log(components_js_1.theme.warning('Cleanup cancelled.'));
64
+ return;
65
+ }
66
+ }
67
+ // Check Docker prerequisites
68
+ const dockerInfo = await (0, docker_prereq_js_1.checkDockerPrerequisites)();
69
+ if (!dockerInfo.runtime) {
70
+ console.log(components_js_1.theme.error('No container runtime found'));
71
+ return;
72
+ }
73
+ // Get docker files path (extracts if needed, but we can still cleanup without it)
74
+ let dockerPath = null;
75
+ try {
76
+ dockerPath = await (0, docker_files_js_1.ensureDockerFiles)();
77
+ }
78
+ catch {
79
+ // Use default path
80
+ dockerPath = (0, docker_files_js_1.getDockerFilesDir)();
81
+ }
82
+ // Stop and remove containers
83
+ console.log(components_js_1.theme.secondary('Stopping containers...'));
84
+ await stopContainers(dockerInfo.runtime);
85
+ // Remove volumes
86
+ console.log(components_js_1.theme.secondary('Removing volumes...'));
87
+ await removeVolumes(dockerInfo.runtime);
88
+ // Remove images (optional)
89
+ console.log(components_js_1.theme.secondary('Removing images...'));
90
+ await removeImages(dockerInfo.runtime);
91
+ // Remove local data directories
92
+ if (dockerPath && fs.existsSync(dockerPath)) {
93
+ console.log(components_js_1.theme.secondary('Removing local data...'));
94
+ await removeLocalData(dockerPath);
95
+ }
96
+ console.log();
97
+ console.log(components_js_1.theme.success(`${components_js_1.indicators.check} Cleanup complete!`));
98
+ console.log(components_js_1.theme.muted('Run "clawsql start" to start fresh.'));
99
+ },
100
+ };
101
+ /**
102
+ * Stop all ClawSQL containers
103
+ */
104
+ async function stopContainers(runtime) {
105
+ // Get all clawsql-related containers
106
+ const result = await execCommand([runtime, 'ps', '-a', '--filter', 'name=clawsql', '--filter', 'name=orchestrator',
107
+ '--filter', 'name=proxysql', '--filter', 'name=prometheus', '--filter', 'name=grafana',
108
+ '--filter', 'name=metadata-mysql', '--filter', 'name=mysql-', '-q'], true);
109
+ if (result.success && result.stdout.trim()) {
110
+ const containerIds = result.stdout.trim().split('\n').filter(Boolean);
111
+ for (const id of containerIds) {
112
+ await execCommand([runtime, 'rm', '-f', id], false);
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Remove volumes
118
+ */
119
+ async function removeVolumes(runtime) {
120
+ const volumePatterns = [
121
+ 'clawsql',
122
+ 'metadata-mysql-data',
123
+ 'proxysql-data',
124
+ 'prometheus-data',
125
+ 'grafana-data',
126
+ ];
127
+ for (const pattern of volumePatterns) {
128
+ await execCommand([runtime, 'volume', 'rm', '-f', pattern], true);
129
+ }
130
+ // Also try to find volumes with project prefix
131
+ const listResult = await execCommand([runtime, 'volume', 'ls', '-q'], true);
132
+ if (listResult.success && listResult.stdout.trim()) {
133
+ const volumes = listResult.stdout.trim().split('\n');
134
+ for (const vol of volumes) {
135
+ if (vol.includes('clawsql') || vol.includes('metadata') || vol.includes('proxysql') ||
136
+ vol.includes('prometheus') || vol.includes('grafana')) {
137
+ await execCommand([runtime, 'volume', 'rm', '-f', vol], true);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ /**
143
+ * Remove images
144
+ */
145
+ async function removeImages(runtime) {
146
+ // Remove clawsql image (built locally)
147
+ await execCommand([runtime, 'rmi', '-f', 'clawsql'], true);
148
+ // Note: We don't remove base images (mysql, orchestrator, etc.) as they may be used by other projects
149
+ }
150
+ /**
151
+ * Remove local data directories
152
+ */
153
+ async function removeLocalData(projectRoot) {
154
+ const dataDirs = [
155
+ path.join(projectRoot, 'data'),
156
+ path.join(projectRoot, 'coverage'),
157
+ ];
158
+ for (const dir of dataDirs) {
159
+ if (fs.existsSync(dir)) {
160
+ try {
161
+ fs.rmSync(dir, { recursive: true, force: true });
162
+ }
163
+ catch {
164
+ // Ignore errors
165
+ }
166
+ }
167
+ }
168
+ // Remove .env file (optional, keep for convenience)
169
+ // const envPath = path.join(projectRoot, '.env');
170
+ // if (fs.existsSync(envPath)) {
171
+ // fs.unlinkSync(envPath);
172
+ // }
173
+ }
174
+ /**
175
+ * Execute a shell command
176
+ */
177
+ function execCommand(cmd, silent = false) {
178
+ return new Promise((resolve) => {
179
+ const proc = (0, child_process_1.spawn)(cmd[0], cmd.slice(1), {
180
+ stdio: silent ? 'pipe' : 'inherit',
181
+ });
182
+ let stdout = '';
183
+ let stderr = '';
184
+ if (silent) {
185
+ proc.stdout?.on('data', (data) => { stdout += data; });
186
+ proc.stderr?.on('data', (data) => { stderr += data; });
187
+ }
188
+ proc.on('close', (code) => {
189
+ resolve({
190
+ success: code === 0,
191
+ stdout,
192
+ stderr,
193
+ });
194
+ });
195
+ proc.on('error', () => {
196
+ resolve({
197
+ success: false,
198
+ stdout: '',
199
+ stderr: 'Failed to execute command',
200
+ });
201
+ });
202
+ });
203
+ }
204
+ exports.default = exports.cleanupCommand;
205
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ClawSQL CLI - Clusters Command
3
+ *
4
+ * Manage MySQL clusters.
5
+ */
6
+ import { Command } from '../registry.js';
7
+ /**
8
+ * Clusters command
9
+ */
10
+ export declare const clustersCommand: Command;
11
+ export default clustersCommand;
12
+ //# sourceMappingURL=clusters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clusters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAc,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OA4C7B,CAAC;AA2dF,eAAe,eAAe,CAAC"}