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,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"}