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,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClawSQL CLI - OpenClaw Integration
|
|
4
|
+
*
|
|
5
|
+
* Integrates with OpenClaw gateway for AI-powered operations.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.OpenClawAgent = void 0;
|
|
9
|
+
exports.isOpenClawAvailable = isOpenClawAvailable;
|
|
10
|
+
exports.sendToOpenClaw = sendToOpenClaw;
|
|
11
|
+
exports.sendToOpenClawStream = sendToOpenClawStream;
|
|
12
|
+
exports.scheduleCron = scheduleCron;
|
|
13
|
+
exports.sendNotification = sendNotification;
|
|
14
|
+
exports.writeToMemory = writeToMemory;
|
|
15
|
+
exports.createOpenClawAgent = createOpenClawAgent;
|
|
16
|
+
const child_process_1 = require("child_process");
|
|
17
|
+
/**
|
|
18
|
+
* Check if OpenClaw gateway is running
|
|
19
|
+
* Note: The status command may show "unreachable" due to internal scope issues,
|
|
20
|
+
* but the agent can still work. We check if OpenClaw is installed and try to use it.
|
|
21
|
+
*/
|
|
22
|
+
async function isOpenClawAvailable() {
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
const proc = (0, child_process_1.spawn)('openclaw', ['status', '--json'], {
|
|
25
|
+
timeout: 5000,
|
|
26
|
+
stdio: ['ignore', 'pipe', 'pipe'], // Don't inherit stdin
|
|
27
|
+
});
|
|
28
|
+
let output = '';
|
|
29
|
+
proc.stdout?.on('data', (data) => {
|
|
30
|
+
output += data.toString();
|
|
31
|
+
});
|
|
32
|
+
proc.on('close', (code) => {
|
|
33
|
+
if (code === 0) {
|
|
34
|
+
try {
|
|
35
|
+
const result = JSON.parse(output);
|
|
36
|
+
// Gateway is configured if we have a mode and URL, even if status shows unreachable
|
|
37
|
+
// The agent can still work despite "missing scope: operator.read" errors
|
|
38
|
+
const hasGateway = result.gateway?.mode === 'local' && !!result.gateway?.url;
|
|
39
|
+
resolve(hasGateway);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
resolve(false);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
resolve(false);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
proc.on('error', () => {
|
|
50
|
+
resolve(false);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Send a message to OpenClaw agent
|
|
56
|
+
*/
|
|
57
|
+
async function sendToOpenClaw(message, options) {
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
// Use a fixed session ID for ClawSQL interactions
|
|
60
|
+
const args = [
|
|
61
|
+
'agent',
|
|
62
|
+
'--session-id', 'clawsql-session',
|
|
63
|
+
'--message', message,
|
|
64
|
+
'--thinking', 'minimal'
|
|
65
|
+
];
|
|
66
|
+
if (options?.gatewayUrl) {
|
|
67
|
+
args.push('--gateway', options.gatewayUrl);
|
|
68
|
+
}
|
|
69
|
+
const proc = (0, child_process_1.spawn)('openclaw', args, {
|
|
70
|
+
timeout: options?.timeout || 120000,
|
|
71
|
+
stdio: ['ignore', 'pipe', 'pipe'], // Don't inherit stdin
|
|
72
|
+
});
|
|
73
|
+
let stdout = '';
|
|
74
|
+
let stderr = '';
|
|
75
|
+
// Handle abort signal - use SIGKILL for immediate termination
|
|
76
|
+
const abortHandler = () => {
|
|
77
|
+
proc.kill('SIGKILL');
|
|
78
|
+
reject(new DOMException('The operation was aborted', 'AbortError'));
|
|
79
|
+
};
|
|
80
|
+
if (options?.signal) {
|
|
81
|
+
options.signal.addEventListener('abort', abortHandler);
|
|
82
|
+
proc.on('close', () => {
|
|
83
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
proc.stdout?.on('data', (data) => {
|
|
87
|
+
stdout += data.toString();
|
|
88
|
+
});
|
|
89
|
+
proc.stderr?.on('data', (data) => {
|
|
90
|
+
stderr += data.toString();
|
|
91
|
+
});
|
|
92
|
+
proc.on('close', (code) => {
|
|
93
|
+
if (options?.signal) {
|
|
94
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
95
|
+
}
|
|
96
|
+
if (code === 0) {
|
|
97
|
+
resolve(stdout.trim());
|
|
98
|
+
}
|
|
99
|
+
else if (code === null) {
|
|
100
|
+
// Process was killed by signal (e.g., SIGKILL during abort)
|
|
101
|
+
reject(new DOMException('The operation was aborted', 'AbortError'));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
reject(new Error(`OpenClaw agent failed: ${stderr || stdout}`));
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
proc.on('error', (err) => {
|
|
108
|
+
if (options?.signal) {
|
|
109
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
110
|
+
}
|
|
111
|
+
reject(new Error(`Failed to run openclaw: ${err.message}`));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Send a message to OpenClaw agent with streaming output
|
|
117
|
+
* Calls onChunk callback for each chunk of output as it arrives
|
|
118
|
+
*
|
|
119
|
+
* NOTE: OpenClaw's agent command outputs all at once after processing completes,
|
|
120
|
+
* not incrementally. The streaming callback will typically receive one large chunk.
|
|
121
|
+
* This is a limitation of OpenClaw's internal output handling, not Node.js buffering.
|
|
122
|
+
*/
|
|
123
|
+
async function sendToOpenClawStream(message, onChunk, options) {
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
// Use a fixed session ID for ClawSQL interactions
|
|
126
|
+
const args = [
|
|
127
|
+
'agent',
|
|
128
|
+
'--session-id', 'clawsql-session',
|
|
129
|
+
'--message', message,
|
|
130
|
+
'--thinking', 'minimal' // Reduce verbose thinking output
|
|
131
|
+
];
|
|
132
|
+
if (options?.gatewayUrl) {
|
|
133
|
+
args.push('--gateway', options.gatewayUrl);
|
|
134
|
+
}
|
|
135
|
+
const proc = (0, child_process_1.spawn)('openclaw', args, {
|
|
136
|
+
timeout: options?.timeout || 120000,
|
|
137
|
+
stdio: ['ignore', 'pipe', 'pipe'], // Don't inherit stdin
|
|
138
|
+
});
|
|
139
|
+
// Check if already aborted before we started
|
|
140
|
+
if (options?.signal?.aborted) {
|
|
141
|
+
proc.kill('SIGKILL');
|
|
142
|
+
reject(new DOMException('The operation was aborted', 'AbortError'));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
let fullOutput = '';
|
|
146
|
+
let stderr = '';
|
|
147
|
+
// Handle abort signal - use SIGKILL for immediate termination
|
|
148
|
+
const abortHandler = () => {
|
|
149
|
+
proc.kill('SIGKILL');
|
|
150
|
+
reject(new DOMException('The operation was aborted', 'AbortError'));
|
|
151
|
+
};
|
|
152
|
+
if (options?.signal) {
|
|
153
|
+
options.signal.addEventListener('abort', abortHandler);
|
|
154
|
+
proc.on('close', () => {
|
|
155
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// Stream stdout chunks immediately
|
|
159
|
+
proc.stdout?.on('data', (data) => {
|
|
160
|
+
const chunk = data.toString();
|
|
161
|
+
fullOutput += chunk;
|
|
162
|
+
onChunk(chunk);
|
|
163
|
+
});
|
|
164
|
+
proc.stderr?.on('data', (data) => {
|
|
165
|
+
stderr += data.toString();
|
|
166
|
+
});
|
|
167
|
+
proc.on('close', (code) => {
|
|
168
|
+
if (options?.signal) {
|
|
169
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
170
|
+
}
|
|
171
|
+
if (code === 0) {
|
|
172
|
+
resolve(fullOutput.trim());
|
|
173
|
+
}
|
|
174
|
+
else if (code === null) {
|
|
175
|
+
// Process was killed by signal (e.g., SIGKILL during abort)
|
|
176
|
+
reject(new DOMException('The operation was aborted', 'AbortError'));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
reject(new Error(`OpenClaw agent failed: ${stderr || fullOutput}`));
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
proc.on('error', (err) => {
|
|
183
|
+
if (options?.signal) {
|
|
184
|
+
options.signal.removeEventListener('abort', abortHandler);
|
|
185
|
+
}
|
|
186
|
+
reject(new Error(`Failed to run openclaw: ${err.message}`));
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Schedule a cron job via OpenClaw
|
|
192
|
+
*/
|
|
193
|
+
async function scheduleCron(name, schedule, prompt) {
|
|
194
|
+
return new Promise((resolve, reject) => {
|
|
195
|
+
const proc = (0, child_process_1.spawn)('openclaw', [
|
|
196
|
+
'cron', 'add',
|
|
197
|
+
'--name', name,
|
|
198
|
+
'--schedule', schedule,
|
|
199
|
+
'--prompt', prompt,
|
|
200
|
+
], {
|
|
201
|
+
timeout: 10000,
|
|
202
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
203
|
+
});
|
|
204
|
+
let stdout = '';
|
|
205
|
+
let stderr = '';
|
|
206
|
+
proc.stdout?.on('data', (data) => {
|
|
207
|
+
stdout += data.toString();
|
|
208
|
+
});
|
|
209
|
+
proc.stderr?.on('data', (data) => {
|
|
210
|
+
stderr += data.toString();
|
|
211
|
+
});
|
|
212
|
+
proc.on('close', (code) => {
|
|
213
|
+
if (code === 0) {
|
|
214
|
+
resolve(stdout.trim());
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
reject(new Error(`Failed to schedule cron: ${stderr || stdout}`));
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
proc.on('error', (err) => {
|
|
221
|
+
reject(new Error(`Failed to run openclaw: ${err.message}`));
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Send a notification via OpenClaw channels
|
|
227
|
+
*/
|
|
228
|
+
async function sendNotification(to, message) {
|
|
229
|
+
return new Promise((resolve, reject) => {
|
|
230
|
+
const proc = (0, child_process_1.spawn)('openclaw', [
|
|
231
|
+
'message', 'send',
|
|
232
|
+
'--to', to,
|
|
233
|
+
'--message', message,
|
|
234
|
+
], {
|
|
235
|
+
timeout: 30000,
|
|
236
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
237
|
+
});
|
|
238
|
+
let stdout = '';
|
|
239
|
+
let stderr = '';
|
|
240
|
+
proc.stdout?.on('data', (data) => {
|
|
241
|
+
stdout += data.toString();
|
|
242
|
+
});
|
|
243
|
+
proc.stderr?.on('data', (data) => {
|
|
244
|
+
stderr += data.toString();
|
|
245
|
+
});
|
|
246
|
+
proc.on('close', (code) => {
|
|
247
|
+
if (code === 0) {
|
|
248
|
+
resolve(stdout.trim());
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
reject(new Error(`Failed to send message: ${stderr || stdout}`));
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
proc.on('error', (err) => {
|
|
255
|
+
reject(new Error(`Failed to run openclaw: ${err.message}`));
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Write to OpenClaw memory
|
|
261
|
+
*/
|
|
262
|
+
async function writeToMemory(content, filename = 'clawsql-cluster-state.md') {
|
|
263
|
+
const fs = await import('fs');
|
|
264
|
+
const path = await import('path');
|
|
265
|
+
const os = await import('os');
|
|
266
|
+
const memoryDir = path.join(os.homedir(), '.openclaw', 'memory');
|
|
267
|
+
try {
|
|
268
|
+
await fs.promises.mkdir(memoryDir, { recursive: true });
|
|
269
|
+
const filePath = path.join(memoryDir, filename);
|
|
270
|
+
await fs.promises.appendFile(filePath, `\n\n---\n\n${content}`);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
// Memory write is optional - don't fail the operation
|
|
274
|
+
console.error('Failed to write to OpenClaw memory:', error);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* OpenClaw-backed AI agent
|
|
279
|
+
*/
|
|
280
|
+
class OpenClawAgent {
|
|
281
|
+
context;
|
|
282
|
+
available = null;
|
|
283
|
+
constructor(ctx) {
|
|
284
|
+
this.context = ctx;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Check if OpenClaw is available
|
|
288
|
+
*/
|
|
289
|
+
async isAvailable() {
|
|
290
|
+
if (this.available === null) {
|
|
291
|
+
this.available = await isOpenClawAvailable();
|
|
292
|
+
}
|
|
293
|
+
return this.available;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Process a natural language query
|
|
297
|
+
*/
|
|
298
|
+
async process(input) {
|
|
299
|
+
if (!(await this.isAvailable())) {
|
|
300
|
+
throw new Error('OpenClaw gateway is not running. Start it with: openclaw gateway');
|
|
301
|
+
}
|
|
302
|
+
// Build context for the agent
|
|
303
|
+
const contextPrompt = this.buildContextPrompt();
|
|
304
|
+
const fullMessage = `${contextPrompt}\n\nUser query: ${input}`;
|
|
305
|
+
return sendToOpenClaw(fullMessage);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Build context prompt with current cluster state
|
|
309
|
+
*/
|
|
310
|
+
buildContextPrompt() {
|
|
311
|
+
const settings = this.context.settings;
|
|
312
|
+
return `You are the ClawSQL assistant. You have access to MySQL cluster management tools.
|
|
313
|
+
|
|
314
|
+
Current configuration:
|
|
315
|
+
- Orchestrator: ${settings.orchestrator.url}
|
|
316
|
+
- ProxySQL: ${settings.proxysql.host}:${settings.proxysql.adminPort}
|
|
317
|
+
- Auto-failover: ${settings.failover.autoFailoverEnabled ? 'enabled' : 'disabled'}
|
|
318
|
+
|
|
319
|
+
Use the clawsql skill commands to answer questions about the MySQL cluster.`;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Schedule periodic health checks
|
|
323
|
+
*/
|
|
324
|
+
async scheduleHealthCheck(schedule = '0 * * * *') {
|
|
325
|
+
return scheduleCron('clawsql:health-check', schedule, 'Check MySQL cluster health using clawsql skill. Report any issues with instances, replication lag, or failover status.');
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Send an alert through configured channels
|
|
329
|
+
*/
|
|
330
|
+
async alert(channel, message) {
|
|
331
|
+
return sendNotification(channel, `🦞 ClawSQL Alert: ${message}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
exports.OpenClawAgent = OpenClawAgent;
|
|
335
|
+
/**
|
|
336
|
+
* Create an OpenClaw agent instance
|
|
337
|
+
*/
|
|
338
|
+
function createOpenClawAgent(ctx) {
|
|
339
|
+
return new OpenClawAgent(ctx);
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=openclaw-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-integration.js","sourceRoot":"","sources":["../../../src/cli/agent/openclaw-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawSQL CLI - Anthropic Provider
|
|
3
|
+
*
|
|
4
|
+
* LLM provider implementation for Anthropic Claude API.
|
|
5
|
+
*/
|
|
6
|
+
import { LLMProvider, ChatMessage, ChatResponse, AgentTool } from './base.js';
|
|
7
|
+
/**
|
|
8
|
+
* Anthropic Claude provider
|
|
9
|
+
*/
|
|
10
|
+
export declare class AnthropicProvider implements LLMProvider {
|
|
11
|
+
readonly name = "anthropic";
|
|
12
|
+
private apiKey;
|
|
13
|
+
private model;
|
|
14
|
+
private baseUrl;
|
|
15
|
+
constructor();
|
|
16
|
+
isConfigured(): boolean;
|
|
17
|
+
chat(messages: ChatMessage[], tools: AgentTool[], options?: {
|
|
18
|
+
maxTokens?: number;
|
|
19
|
+
temperature?: number;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}): Promise<ChatResponse>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the Anthropic provider instance
|
|
25
|
+
*/
|
|
26
|
+
export declare function getAnthropicProvider(): LLMProvider;
|
|
27
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EAGV,MAAM,WAAW,CAAC;AA4BnB;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAkC;;IAQjD,YAAY,IAAI,OAAO;IAIjB,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC3E,OAAO,CAAC,YAAY,CAAC;CAiFzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAElD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClawSQL CLI - Anthropic Provider
|
|
4
|
+
*
|
|
5
|
+
* LLM provider implementation for Anthropic Claude API.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AnthropicProvider = void 0;
|
|
9
|
+
exports.getAnthropicProvider = getAnthropicProvider;
|
|
10
|
+
const base_js_1 = require("./base.js");
|
|
11
|
+
/**
|
|
12
|
+
* Anthropic Claude provider
|
|
13
|
+
*/
|
|
14
|
+
class AnthropicProvider {
|
|
15
|
+
name = 'anthropic';
|
|
16
|
+
apiKey;
|
|
17
|
+
model;
|
|
18
|
+
baseUrl = 'https://api.anthropic.com/v1';
|
|
19
|
+
constructor() {
|
|
20
|
+
const config = (0, base_js_1.loadAIConfig)();
|
|
21
|
+
this.apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
22
|
+
this.model = config.model || 'claude-sonnet-4-6-20250514';
|
|
23
|
+
}
|
|
24
|
+
isConfigured() {
|
|
25
|
+
return !!this.apiKey;
|
|
26
|
+
}
|
|
27
|
+
async chat(messages, tools, options) {
|
|
28
|
+
if (!this.apiKey) {
|
|
29
|
+
throw new Error('ANTHROPIC_API_KEY not configured. Set the environment variable to enable AI features.');
|
|
30
|
+
}
|
|
31
|
+
// Convert messages to Anthropic format
|
|
32
|
+
const anthropicMessages = [];
|
|
33
|
+
let systemPrompt = '';
|
|
34
|
+
for (const msg of messages) {
|
|
35
|
+
if (msg.role === 'system') {
|
|
36
|
+
systemPrompt = msg.content;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
anthropicMessages.push({
|
|
40
|
+
role: msg.role,
|
|
41
|
+
content: msg.content,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Convert tools to Anthropic format
|
|
46
|
+
const anthropicTools = tools.map(tool => ({
|
|
47
|
+
name: tool.name,
|
|
48
|
+
description: tool.description,
|
|
49
|
+
input_schema: {
|
|
50
|
+
type: 'object',
|
|
51
|
+
properties: tool.parameters.properties || {},
|
|
52
|
+
required: tool.parameters.required,
|
|
53
|
+
},
|
|
54
|
+
}));
|
|
55
|
+
const response = await fetch(`${this.baseUrl}/messages`, {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: {
|
|
58
|
+
'Content-Type': 'application/json',
|
|
59
|
+
'x-api-key': this.apiKey,
|
|
60
|
+
'anthropic-version': '2023-06-01',
|
|
61
|
+
},
|
|
62
|
+
body: JSON.stringify({
|
|
63
|
+
model: this.model,
|
|
64
|
+
max_tokens: options?.maxTokens || 4096,
|
|
65
|
+
temperature: options?.temperature ?? 0.7,
|
|
66
|
+
system: systemPrompt || undefined,
|
|
67
|
+
messages: anthropicMessages,
|
|
68
|
+
tools: anthropicTools.length > 0 ? anthropicTools : undefined,
|
|
69
|
+
}),
|
|
70
|
+
signal: options?.signal,
|
|
71
|
+
});
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
const error = await response.text();
|
|
74
|
+
throw new Error(`Anthropic API error: ${response.status} - ${error}`);
|
|
75
|
+
}
|
|
76
|
+
const data = await response.json();
|
|
77
|
+
// Extract text and tool use from response
|
|
78
|
+
let textContent = '';
|
|
79
|
+
const toolUse = [];
|
|
80
|
+
for (const block of data.content) {
|
|
81
|
+
if (block.type === 'text' && block.text) {
|
|
82
|
+
textContent += block.text;
|
|
83
|
+
}
|
|
84
|
+
else if (block.type === 'tool_use' && block.id && block.name) {
|
|
85
|
+
toolUse.push({
|
|
86
|
+
id: block.id,
|
|
87
|
+
name: block.name,
|
|
88
|
+
input: block.input || {},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
content: textContent,
|
|
94
|
+
toolUse: toolUse.length > 0 ? toolUse : undefined,
|
|
95
|
+
stopReason: data.stop_reason,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.AnthropicProvider = AnthropicProvider;
|
|
100
|
+
/**
|
|
101
|
+
* Get the Anthropic provider instance
|
|
102
|
+
*/
|
|
103
|
+
function getAnthropicProvider() {
|
|
104
|
+
return new AnthropicProvider();
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/cli/agent/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawSQL CLI - AI Agent Base Provider
|
|
3
|
+
*
|
|
4
|
+
* Defines the interface for LLM providers.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Chat message
|
|
8
|
+
*/
|
|
9
|
+
export interface ChatMessage {
|
|
10
|
+
role: 'system' | 'user' | 'assistant';
|
|
11
|
+
content: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Tool parameter schema (JSON Schema subset)
|
|
15
|
+
*/
|
|
16
|
+
export interface ToolParameterSchema {
|
|
17
|
+
type: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
enum?: string[];
|
|
20
|
+
properties?: Record<string, ToolParameterSchema>;
|
|
21
|
+
required?: string[];
|
|
22
|
+
items?: ToolParameterSchema;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Agent tool definition
|
|
26
|
+
*/
|
|
27
|
+
export interface AgentTool {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
parameters: ToolParameterSchema;
|
|
31
|
+
execute: (params: Record<string, unknown>, context: unknown) => Promise<unknown>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tool use request from the LLM
|
|
35
|
+
*/
|
|
36
|
+
export interface ToolUseRequest {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
input: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Tool use result
|
|
43
|
+
*/
|
|
44
|
+
export interface ToolUseResult {
|
|
45
|
+
tool_use_id: string;
|
|
46
|
+
content: string;
|
|
47
|
+
is_error?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Chat response from the LLM
|
|
51
|
+
*/
|
|
52
|
+
export interface ChatResponse {
|
|
53
|
+
content: string;
|
|
54
|
+
toolUse?: ToolUseRequest[];
|
|
55
|
+
stopReason: 'end_turn' | 'tool_use' | 'max_tokens' | 'stop';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* LLM Provider interface
|
|
59
|
+
*/
|
|
60
|
+
export interface LLMProvider {
|
|
61
|
+
/** Provider name */
|
|
62
|
+
readonly name: string;
|
|
63
|
+
/**
|
|
64
|
+
* Check if the provider is properly configured
|
|
65
|
+
*/
|
|
66
|
+
isConfigured(): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Send a chat request to the LLM
|
|
69
|
+
*/
|
|
70
|
+
chat(messages: ChatMessage[], tools: AgentTool[], options?: {
|
|
71
|
+
maxTokens?: number;
|
|
72
|
+
temperature?: number;
|
|
73
|
+
signal?: AbortSignal;
|
|
74
|
+
}): Promise<ChatResponse>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* AI Agent configuration
|
|
78
|
+
*/
|
|
79
|
+
export interface AIAgentConfig {
|
|
80
|
+
enabled: boolean;
|
|
81
|
+
provider: 'anthropic' | 'openai' | 'openclaw';
|
|
82
|
+
model?: string;
|
|
83
|
+
apiKey?: string;
|
|
84
|
+
maxTokens?: number;
|
|
85
|
+
temperature?: number;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Load AI configuration from settings and environment
|
|
89
|
+
*/
|
|
90
|
+
export declare function loadAIConfig(): AIAgentConfig;
|
|
91
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/providers/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC;IAExB;;OAEG;IACH,IAAI,CACF,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GACA,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAU5C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClawSQL CLI - AI Agent Base Provider
|
|
4
|
+
*
|
|
5
|
+
* Defines the interface for LLM providers.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.loadAIConfig = loadAIConfig;
|
|
9
|
+
const settings_js_1 = require("../../../config/settings.js");
|
|
10
|
+
/**
|
|
11
|
+
* Load AI configuration from settings and environment
|
|
12
|
+
*/
|
|
13
|
+
function loadAIConfig() {
|
|
14
|
+
const settings = (0, settings_js_1.getSettings)();
|
|
15
|
+
return {
|
|
16
|
+
enabled: settings.ai.enabled,
|
|
17
|
+
provider: settings.ai.provider,
|
|
18
|
+
model: settings.ai.model,
|
|
19
|
+
apiKey: process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY,
|
|
20
|
+
maxTokens: settings.ai.maxTokens,
|
|
21
|
+
temperature: settings.ai.temperature,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/cli/agent/providers/base.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAsGH,oCAUC;AA9GD,6DAA0D;AAiG1D;;GAEG;AACH,SAAgB,YAAY;IAC1B,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;IAC/B,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO;QAC5B,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ;QAC9B,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK;QACxB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QACnE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS;QAChC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawSQL CLI - OpenAI Provider
|
|
3
|
+
*
|
|
4
|
+
* LLM provider implementation for OpenAI API.
|
|
5
|
+
*/
|
|
6
|
+
import { LLMProvider, ChatMessage, ChatResponse, AgentTool } from './base.js';
|
|
7
|
+
/**
|
|
8
|
+
* OpenAI provider
|
|
9
|
+
*/
|
|
10
|
+
export declare class OpenAIProvider implements LLMProvider {
|
|
11
|
+
readonly name = "openai";
|
|
12
|
+
private apiKey;
|
|
13
|
+
private model;
|
|
14
|
+
private baseUrl;
|
|
15
|
+
constructor();
|
|
16
|
+
isConfigured(): boolean;
|
|
17
|
+
chat(messages: ChatMessage[], tools: AgentTool[], options?: {
|
|
18
|
+
maxTokens?: number;
|
|
19
|
+
temperature?: number;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}): Promise<ChatResponse>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the OpenAI provider instance
|
|
25
|
+
*/
|
|
26
|
+
export declare function getOpenAIProvider(): LLMProvider;
|
|
27
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EAGV,MAAM,WAAW,CAAC;AAkCnB;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAA+B;;IAQ9C,YAAY,IAAI,OAAO;IAIjB,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC3E,OAAO,CAAC,YAAY,CAAC;CA+EzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}
|