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.
- package/.env.example +97 -0
- package/README.md +372 -0
- package/dist/__tests__/config/settings.test.d.ts +5 -0
- package/dist/__tests__/config/settings.test.d.ts.map +1 -0
- package/dist/__tests__/config/settings.test.js +154 -0
- package/dist/__tests__/config/settings.test.js.map +1 -0
- package/dist/__tests__/core/discovery/topology.test.d.ts +5 -0
- package/dist/__tests__/core/discovery/topology.test.d.ts.map +1 -0
- package/dist/__tests__/core/discovery/topology.test.js +191 -0
- package/dist/__tests__/core/discovery/topology.test.js.map +1 -0
- package/dist/__tests__/core/failover/executor.test.d.ts +5 -0
- package/dist/__tests__/core/failover/executor.test.d.ts.map +1 -0
- package/dist/__tests__/core/failover/executor.test.js +256 -0
- package/dist/__tests__/core/failover/executor.test.js.map +1 -0
- package/dist/__tests__/core/monitoring/collector.test.d.ts +5 -0
- package/dist/__tests__/core/monitoring/collector.test.d.ts.map +1 -0
- package/dist/__tests__/core/monitoring/collector.test.js +131 -0
- package/dist/__tests__/core/monitoring/collector.test.js.map +1 -0
- package/dist/__tests__/core/monitoring/exporters.test.d.ts +5 -0
- package/dist/__tests__/core/monitoring/exporters.test.d.ts.map +1 -0
- package/dist/__tests__/core/monitoring/exporters.test.js +90 -0
- package/dist/__tests__/core/monitoring/exporters.test.js.map +1 -0
- package/dist/__tests__/core/routing/proxysql-manager.test.d.ts +5 -0
- package/dist/__tests__/core/routing/proxysql-manager.test.d.ts.map +1 -0
- package/dist/__tests__/core/routing/proxysql-manager.test.js +155 -0
- package/dist/__tests__/core/routing/proxysql-manager.test.js.map +1 -0
- package/dist/__tests__/types/index.test.d.ts +5 -0
- package/dist/__tests__/types/index.test.d.ts.map +1 -0
- package/dist/__tests__/types/index.test.js +290 -0
- package/dist/__tests__/types/index.test.js.map +1 -0
- package/dist/__tests__/utils/exceptions.test.d.ts +5 -0
- package/dist/__tests__/utils/exceptions.test.d.ts.map +1 -0
- package/dist/__tests__/utils/exceptions.test.js +142 -0
- package/dist/__tests__/utils/exceptions.test.js.map +1 -0
- package/dist/api/routes/clusters.d.ts +7 -0
- package/dist/api/routes/clusters.d.ts.map +1 -0
- package/dist/api/routes/clusters.js +123 -0
- package/dist/api/routes/clusters.js.map +1 -0
- package/dist/api/routes/config.d.ts +7 -0
- package/dist/api/routes/config.d.ts.map +1 -0
- package/dist/api/routes/config.js +65 -0
- package/dist/api/routes/config.js.map +1 -0
- package/dist/api/routes/failover.d.ts +7 -0
- package/dist/api/routes/failover.d.ts.map +1 -0
- package/dist/api/routes/failover.js +100 -0
- package/dist/api/routes/failover.js.map +1 -0
- package/dist/api/routes/instances.d.ts +11 -0
- package/dist/api/routes/instances.d.ts.map +1 -0
- package/dist/api/routes/instances.js +315 -0
- package/dist/api/routes/instances.js.map +1 -0
- package/dist/api/routes/monitoring.d.ts +7 -0
- package/dist/api/routes/monitoring.d.ts.map +1 -0
- package/dist/api/routes/monitoring.js +72 -0
- package/dist/api/routes/monitoring.js.map +1 -0
- package/dist/api/routes/webhooks.d.ts +12 -0
- package/dist/api/routes/webhooks.d.ts.map +1 -0
- package/dist/api/routes/webhooks.js +232 -0
- package/dist/api/routes/webhooks.js.map +1 -0
- package/dist/api/schemas/index.d.ts +965 -0
- package/dist/api/schemas/index.d.ts.map +1 -0
- package/dist/api/schemas/index.js +171 -0
- package/dist/api/schemas/index.js.map +1 -0
- package/dist/app.d.ts +13 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +197 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/clawsql.d.ts +12 -0
- package/dist/bin/clawsql.d.ts.map +1 -0
- package/dist/bin/clawsql.js +43 -0
- package/dist/bin/clawsql.js.map +1 -0
- package/dist/cli/agent/handler.d.ts +73 -0
- package/dist/cli/agent/handler.d.ts.map +1 -0
- package/dist/cli/agent/handler.js +258 -0
- package/dist/cli/agent/handler.js.map +1 -0
- package/dist/cli/agent/index.d.ts +14 -0
- package/dist/cli/agent/index.d.ts.map +1 -0
- package/dist/cli/agent/index.js +30 -0
- package/dist/cli/agent/index.js.map +1 -0
- package/dist/cli/agent/openclaw-integration.d.ts +81 -0
- package/dist/cli/agent/openclaw-integration.d.ts.map +1 -0
- package/dist/cli/agent/openclaw-integration.js +341 -0
- package/dist/cli/agent/openclaw-integration.js.map +1 -0
- package/dist/cli/agent/providers/anthropic.d.ts +27 -0
- package/dist/cli/agent/providers/anthropic.d.ts.map +1 -0
- package/dist/cli/agent/providers/anthropic.js +106 -0
- package/dist/cli/agent/providers/anthropic.js.map +1 -0
- package/dist/cli/agent/providers/base.d.ts +91 -0
- package/dist/cli/agent/providers/base.d.ts.map +1 -0
- package/dist/cli/agent/providers/base.js +24 -0
- package/dist/cli/agent/providers/base.js.map +1 -0
- package/dist/cli/agent/providers/openai.d.ts +27 -0
- package/dist/cli/agent/providers/openai.d.ts.map +1 -0
- package/dist/cli/agent/providers/openai.js +98 -0
- package/dist/cli/agent/providers/openai.js.map +1 -0
- package/dist/cli/agent/tools/index.d.ts +32 -0
- package/dist/cli/agent/tools/index.d.ts.map +1 -0
- package/dist/cli/agent/tools/index.js +263 -0
- package/dist/cli/agent/tools/index.js.map +1 -0
- package/dist/cli/commands/cleanup.d.ts +12 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/cleanup.js +205 -0
- package/dist/cli/commands/cleanup.js.map +1 -0
- package/dist/cli/commands/clusters.d.ts +12 -0
- package/dist/cli/commands/clusters.d.ts.map +1 -0
- package/dist/cli/commands/clusters.js +468 -0
- package/dist/cli/commands/clusters.js.map +1 -0
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +406 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/cron.d.ts +12 -0
- package/dist/cli/commands/cron.d.ts.map +1 -0
- package/dist/cli/commands/cron.js +215 -0
- package/dist/cli/commands/cron.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +13 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +687 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/failover.d.ts +16 -0
- package/dist/cli/commands/failover.d.ts.map +1 -0
- package/dist/cli/commands/failover.js +333 -0
- package/dist/cli/commands/failover.js.map +1 -0
- package/dist/cli/commands/health.d.ts +12 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +125 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/help.d.ts +12 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +52 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/instances.d.ts +12 -0
- package/dist/cli/commands/instances.d.ts.map +1 -0
- package/dist/cli/commands/instances.js +801 -0
- package/dist/cli/commands/instances.js.map +1 -0
- package/dist/cli/commands/notify.d.ts +12 -0
- package/dist/cli/commands/notify.d.ts.map +1 -0
- package/dist/cli/commands/notify.js +43 -0
- package/dist/cli/commands/notify.js.map +1 -0
- package/dist/cli/commands/sql.d.ts +12 -0
- package/dist/cli/commands/sql.d.ts.map +1 -0
- package/dist/cli/commands/sql.js +90 -0
- package/dist/cli/commands/sql.js.map +1 -0
- package/dist/cli/commands/start.d.ts +12 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +174 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +12 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +218 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +12 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +128 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/topology.d.ts +12 -0
- package/dist/cli/commands/topology.d.ts.map +1 -0
- package/dist/cli/commands/topology.js +106 -0
- package/dist/cli/commands/topology.js.map +1 -0
- package/dist/cli/completer.d.ts +47 -0
- package/dist/cli/completer.d.ts.map +1 -0
- package/dist/cli/completer.js +332 -0
- package/dist/cli/completer.js.map +1 -0
- package/dist/cli/formatter.d.ts +165 -0
- package/dist/cli/formatter.d.ts.map +1 -0
- package/dist/cli/formatter.js +408 -0
- package/dist/cli/formatter.js.map +1 -0
- package/dist/cli/index.d.ts +21 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +79 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/raw-input.d.ts +97 -0
- package/dist/cli/raw-input.d.ts.map +1 -0
- package/dist/cli/raw-input.js +493 -0
- package/dist/cli/raw-input.js.map +1 -0
- package/dist/cli/registry.d.ts +103 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +205 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/repl.d.ts +83 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +447 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli/ui/components.d.ts +144 -0
- package/dist/cli/ui/components.d.ts.map +1 -0
- package/dist/cli/ui/components.js +331 -0
- package/dist/cli/ui/components.js.map +1 -0
- package/dist/cli/ui/index.d.ts +7 -0
- package/dist/cli/ui/index.d.ts.map +1 -0
- package/dist/cli/ui/index.js +23 -0
- package/dist/cli/ui/index.js.map +1 -0
- package/dist/cli/utils/docker-files.d.ts +39 -0
- package/dist/cli/utils/docker-files.d.ts.map +1 -0
- package/dist/cli/utils/docker-files.js +223 -0
- package/dist/cli/utils/docker-files.js.map +1 -0
- package/dist/cli/utils/docker-prereq.d.ts +48 -0
- package/dist/cli/utils/docker-prereq.d.ts.map +1 -0
- package/dist/cli/utils/docker-prereq.js +203 -0
- package/dist/cli/utils/docker-prereq.js.map +1 -0
- package/dist/config/settings.d.ts +594 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +250 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/core/discovery/cluster-view.d.ts +50 -0
- package/dist/core/discovery/cluster-view.d.ts.map +1 -0
- package/dist/core/discovery/cluster-view.js +235 -0
- package/dist/core/discovery/cluster-view.js.map +1 -0
- package/dist/core/discovery/scanner.d.ts +70 -0
- package/dist/core/discovery/scanner.d.ts.map +1 -0
- package/dist/core/discovery/scanner.js +197 -0
- package/dist/core/discovery/scanner.js.map +1 -0
- package/dist/core/discovery/topology.d.ts +118 -0
- package/dist/core/discovery/topology.d.ts.map +1 -0
- package/dist/core/discovery/topology.js +550 -0
- package/dist/core/discovery/topology.js.map +1 -0
- package/dist/core/failover/candidate-selector.d.ts +46 -0
- package/dist/core/failover/candidate-selector.d.ts.map +1 -0
- package/dist/core/failover/candidate-selector.js +70 -0
- package/dist/core/failover/candidate-selector.js.map +1 -0
- package/dist/core/failover/executor.d.ts +104 -0
- package/dist/core/failover/executor.d.ts.map +1 -0
- package/dist/core/failover/executor.js +248 -0
- package/dist/core/failover/executor.js.map +1 -0
- package/dist/core/failover/operation-builder.d.ts +71 -0
- package/dist/core/failover/operation-builder.d.ts.map +1 -0
- package/dist/core/failover/operation-builder.js +157 -0
- package/dist/core/failover/operation-builder.js.map +1 -0
- package/dist/core/failover/operation-runner.d.ts +75 -0
- package/dist/core/failover/operation-runner.d.ts.map +1 -0
- package/dist/core/failover/operation-runner.js +191 -0
- package/dist/core/failover/operation-runner.js.map +1 -0
- package/dist/core/failover/promoter.d.ts +33 -0
- package/dist/core/failover/promoter.d.ts.map +1 -0
- package/dist/core/failover/promoter.js +97 -0
- package/dist/core/failover/promoter.js.map +1 -0
- package/dist/core/failover/recovery-manager.d.ts +47 -0
- package/dist/core/failover/recovery-manager.d.ts.map +1 -0
- package/dist/core/failover/recovery-manager.js +145 -0
- package/dist/core/failover/recovery-manager.js.map +1 -0
- package/dist/core/failover/types.d.ts +54 -0
- package/dist/core/failover/types.d.ts.map +1 -0
- package/dist/core/failover/types.js +8 -0
- package/dist/core/failover/types.js.map +1 -0
- package/dist/core/monitoring/collector.d.ts +25 -0
- package/dist/core/monitoring/collector.d.ts.map +1 -0
- package/dist/core/monitoring/collector.js +115 -0
- package/dist/core/monitoring/collector.js.map +1 -0
- package/dist/core/monitoring/exporters.d.ts +49 -0
- package/dist/core/monitoring/exporters.d.ts.map +1 -0
- package/dist/core/monitoring/exporters.js +126 -0
- package/dist/core/monitoring/exporters.js.map +1 -0
- package/dist/core/routing/proxysql-manager.d.ts +213 -0
- package/dist/core/routing/proxysql-manager.d.ts.map +1 -0
- package/dist/core/routing/proxysql-manager.js +632 -0
- package/dist/core/routing/proxysql-manager.js.map +1 -0
- package/dist/core/sync/replica-recovery.d.ts +40 -0
- package/dist/core/sync/replica-recovery.d.ts.map +1 -0
- package/dist/core/sync/replica-recovery.js +134 -0
- package/dist/core/sync/replica-recovery.js.map +1 -0
- package/dist/core/sync/sync-coordinator.d.ts +83 -0
- package/dist/core/sync/sync-coordinator.d.ts.map +1 -0
- package/dist/core/sync/sync-coordinator.js +254 -0
- package/dist/core/sync/sync-coordinator.js.map +1 -0
- package/dist/core/sync/topology-watcher.d.ts +76 -0
- package/dist/core/sync/topology-watcher.d.ts.map +1 -0
- package/dist/core/sync/topology-watcher.js +222 -0
- package/dist/core/sync/topology-watcher.js.map +1 -0
- package/dist/core/sync/types.d.ts +85 -0
- package/dist/core/sync/types.d.ts.map +1 -0
- package/dist/core/sync/types.js +8 -0
- package/dist/core/sync/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +212 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +153 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/database.d.ts +62 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +257 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/exceptions.d.ts +69 -0
- package/dist/utils/exceptions.d.ts.map +1 -0
- package/dist/utils/exceptions.js +121 -0
- package/dist/utils/exceptions.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +90 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mysql-client.d.ts +43 -0
- package/dist/utils/mysql-client.d.ts.map +1 -0
- package/dist/utils/mysql-client.js +125 -0
- package/dist/utils/mysql-client.js.map +1 -0
- package/docker/Dockerfile +61 -0
- package/docker/Dockerfile.node +41 -0
- package/docker/grafana/dashboards/clawsql.json +212 -0
- package/docker/grafana/provisioning/dashboards/dashboards.yml +13 -0
- package/docker/grafana/provisioning/datasources/datasources.yml +12 -0
- package/docker/init/primary.sql +26 -0
- package/docker/init/replica.sql +16 -0
- package/docker/orchestrator/orchestrator.conf.json +98 -0
- package/docker/prometheus/prometheus.yml +45 -0
- package/docker/proxysql/entrypoint.sh +8 -0
- package/docker/proxysql/init.sql.demo +30 -0
- package/docker/proxysql/proxysql.cnf +38 -0
- package/docker-compose.demo.yml +115 -0
- package/docker-compose.yml +217 -0
- package/init/primary.sql +19 -0
- package/init/replica.sql +13 -0
- 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"}
|