clawsql 0.2.0 → 0.2.2

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 (63) hide show
  1. package/README.md +25 -5
  2. package/dist/bin/clawsql.d.ts +1 -0
  3. package/dist/bin/clawsql.d.ts.map +1 -1
  4. package/dist/bin/clawsql.js +18 -2
  5. package/dist/bin/clawsql.js.map +1 -1
  6. package/dist/cli/agent/handler.d.ts +13 -31
  7. package/dist/cli/agent/handler.d.ts.map +1 -1
  8. package/dist/cli/agent/handler.js +107 -149
  9. package/dist/cli/agent/handler.js.map +1 -1
  10. package/dist/cli/agent/index.d.ts +2 -1
  11. package/dist/cli/agent/index.d.ts.map +1 -1
  12. package/dist/cli/agent/index.js +7 -1
  13. package/dist/cli/agent/index.js.map +1 -1
  14. package/dist/cli/agent/openclaw-integration.d.ts +83 -25
  15. package/dist/cli/agent/openclaw-integration.d.ts.map +1 -1
  16. package/dist/cli/agent/openclaw-integration.js +305 -194
  17. package/dist/cli/agent/openclaw-integration.js.map +1 -1
  18. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  19. package/dist/cli/commands/cleanup.js +26 -15
  20. package/dist/cli/commands/cleanup.js.map +1 -1
  21. package/dist/cli/commands/doctor.d.ts +0 -4
  22. package/dist/cli/commands/doctor.d.ts.map +1 -1
  23. package/dist/cli/commands/doctor.js +330 -469
  24. package/dist/cli/commands/doctor.js.map +1 -1
  25. package/dist/cli/commands/install.d.ts +13 -0
  26. package/dist/cli/commands/install.d.ts.map +1 -0
  27. package/dist/cli/commands/install.js +286 -0
  28. package/dist/cli/commands/install.js.map +1 -0
  29. package/dist/cli/commands/openclaw.d.ts +9 -0
  30. package/dist/cli/commands/openclaw.d.ts.map +1 -0
  31. package/dist/cli/commands/openclaw.js +236 -0
  32. package/dist/cli/commands/openclaw.js.map +1 -0
  33. package/dist/cli/commands/start.d.ts.map +1 -1
  34. package/dist/cli/commands/start.js +342 -16
  35. package/dist/cli/commands/start.js.map +1 -1
  36. package/dist/cli/commands/status.d.ts.map +1 -1
  37. package/dist/cli/commands/status.js +71 -25
  38. package/dist/cli/commands/status.js.map +1 -1
  39. package/dist/cli/index.d.ts.map +1 -1
  40. package/dist/cli/index.js +4 -0
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/repl.js +1 -1
  43. package/dist/cli/repl.js.map +1 -1
  44. package/dist/cli/utils/ai-config.d.ts +32 -0
  45. package/dist/cli/utils/ai-config.d.ts.map +1 -0
  46. package/dist/cli/utils/ai-config.js +78 -0
  47. package/dist/cli/utils/ai-config.js.map +1 -0
  48. package/dist/cli/utils/command-executor.d.ts.map +1 -1
  49. package/dist/cli/utils/command-executor.js +60 -23
  50. package/dist/cli/utils/command-executor.js.map +1 -1
  51. package/dist/cli/utils/docker-files.d.ts.map +1 -1
  52. package/dist/cli/utils/docker-files.js +2 -0
  53. package/dist/cli/utils/docker-files.js.map +1 -1
  54. package/dist/cli/utils/docker-prereq.d.ts +23 -0
  55. package/dist/cli/utils/docker-prereq.d.ts.map +1 -1
  56. package/dist/cli/utils/docker-prereq.js +70 -1
  57. package/dist/cli/utils/docker-prereq.js.map +1 -1
  58. package/docker/openclaw/entrypoint.sh +102 -0
  59. package/docker/openclaw/openclaw.json +4 -1
  60. package/docker/orchestrator/orchestrator-schema.sql +837 -0
  61. package/docker-compose.yml +22 -14
  62. package/init/metadata.sql +14 -2
  63. package/package.json +1 -1
package/README.md CHANGED
@@ -42,6 +42,13 @@ npm run build
42
42
  Start with a pre-configured demo MySQL cluster:
43
43
 
44
44
  ```bash
45
+ # Install ClawSQL
46
+ npm install -g clawsql
47
+
48
+ # Pull required Docker images (do this once)
49
+ clawsql install --demo
50
+
51
+ # Start the platform
45
52
  clawsql
46
53
  > /start --demo
47
54
  ```
@@ -71,6 +78,12 @@ After starting, register the instances using your host IP:
71
78
  Start the platform and connect to your existing MySQL instances:
72
79
 
73
80
  ```bash
81
+ # Install ClawSQL
82
+ npm install -g clawsql
83
+
84
+ # Pull required Docker images
85
+ clawsql install
86
+
74
87
  # Start the interactive CLI
75
88
  clawsql
76
89
 
@@ -133,11 +146,18 @@ When started with `--demo`, MySQL containers use host networking to simulate rea
133
146
  ### Platform Lifecycle
134
147
 
135
148
  ```bash
136
- /start [--demo] # Start ClawSQL platform
137
- /stop # Stop all services
138
- /status # Show platform status
139
- /cleanup # Remove all containers and data
140
- /doctor # Run diagnostics and suggest fixes
149
+ /install [--demo] # Pull Docker images (required before first start)
150
+ # --demo: Include MySQL demo cluster images
151
+ # --detail: Show verbose output
152
+
153
+ /start [--demo] # Start ClawSQL platform
154
+ # --demo: Start with demo MySQL cluster
155
+ # --pull: Force pull missing images
156
+
157
+ /stop # Stop all services
158
+ /status # Show platform status (images, containers, services)
159
+ /cleanup # Remove all containers and data
160
+ /doctor # Run diagnostics and suggest fixes
141
161
  ```
142
162
 
143
163
  ### Configuration
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * Usage:
6
6
  * clawsql Start interactive CLI
7
+ * clawsql install Pull all required Docker images
7
8
  * clawsql --server Start HTTP API server
8
9
  * clawsql -c "/topology" Execute single command
9
10
  * clawsql --help Show help
@@ -1 +1 @@
1
- {"version":3,"file":"clawsql.d.ts","sourceRoot":"","sources":["../../src/bin/clawsql.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"clawsql.d.ts","sourceRoot":"","sources":["../../src/bin/clawsql.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -5,6 +5,7 @@
5
5
  *
6
6
  * Usage:
7
7
  * clawsql Start interactive CLI
8
+ * clawsql install Pull all required Docker images
8
9
  * clawsql --server Start HTTP API server
9
10
  * clawsql -c "/topology" Execute single command
10
11
  * clawsql --help Show help
@@ -17,6 +18,19 @@ const index_js_1 = require("../cli/index.js");
17
18
  const app_js_1 = require("../app.js");
18
19
  const settings_js_1 = require("../config/settings.js");
19
20
  const settings = (0, settings_js_1.getSettings)();
21
+ // Create install command as a standalone subcommand
22
+ const installCmd = new commander_1.Command('install')
23
+ .description('Pull all required Docker images')
24
+ .option('--demo', 'Include demo MySQL cluster images')
25
+ .option('--detail', 'Show detailed output')
26
+ .action(async (options) => {
27
+ const args = [];
28
+ if (options.demo)
29
+ args.push('--demo');
30
+ if (options.detail)
31
+ args.push('--detail');
32
+ await (0, index_js_1.executeSingleCommand)(`/install ${args.join(' ')}`);
33
+ });
20
34
  commander_1.program
21
35
  .name('clawsql')
22
36
  .description('MySQL Cluster Automation and Operations Management CLI')
@@ -38,6 +52,8 @@ commander_1.program
38
52
  // Start interactive CLI
39
53
  (0, index_js_1.startCLI)();
40
54
  }
41
- })
42
- .parse();
55
+ });
56
+ // Add install as a subcommand
57
+ commander_1.program.addCommand(installCmd);
58
+ commander_1.program.parse();
43
59
  //# sourceMappingURL=clawsql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clawsql.js","sourceRoot":"","sources":["../../src/bin/clawsql.ts"],"names":[],"mappings":";;AACA;;;;;;;;GAQG;;AAEH,sCAAsC;AACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAEtC,yCAAoC;AACpC,8CAAiE;AACjE,sCAAwC;AACxC,uDAAoD;AAEpD,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;AAE/B,mBAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;KAC5B,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,OAA+D,EAAE,EAAE;IAChF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,IAAA,oBAAW,GAAE,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,yBAAyB;QACzB,MAAM,IAAA,+BAAoB,EAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,IAAA,mBAAQ,GAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"clawsql.js","sourceRoot":"","sources":["../../src/bin/clawsql.ts"],"names":[],"mappings":";;AACA;;;;;;;;;GASG;;AAEH,sCAAsC;AACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAEtC,yCAA6C;AAC7C,8CAAiE;AACjE,sCAAwC;AACxC,uDAAoD;AAEpD,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;AAE/B,oDAAoD;AACpD,MAAM,UAAU,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACtC,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;KACrD,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAA,+BAAoB,EAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEL,mBAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;KAC5B,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,OAA+D,EAAE,EAAE;IAChF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,IAAA,oBAAW,GAAE,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,yBAAyB;QACzB,MAAM,IAAA,+BAAoB,EAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,IAAA,mBAAQ,GAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,8BAA8B;AAC9B,mBAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,mBAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -4,17 +4,11 @@
4
4
  * Handles natural language input via OpenClaw or direct LLM calls.
5
5
  */
6
6
  import { CLIContext } from '../registry.js';
7
- /**
8
- * Agent configuration
9
- */
10
7
  export interface AgentConfig {
11
8
  enabled: boolean;
12
9
  provider: 'anthropic' | 'openai' | 'openclaw';
13
10
  maxIterations: number;
14
11
  }
15
- /**
16
- * Streaming callback type
17
- */
18
12
  export type StreamCallback = (chunk: string) => void;
19
13
  /**
20
14
  * AI Agent for ClawSQL CLI
@@ -22,52 +16,40 @@ export type StreamCallback = (chunk: string) => void;
22
16
  export declare class AIAgent {
23
17
  private provider;
24
18
  private tools;
25
- private conversationHistory;
19
+ private history;
26
20
  private config;
27
- private openclawAvailable;
21
+ private openclawReady;
28
22
  constructor(ctx: CLIContext, config?: Partial<AgentConfig>);
29
- /**
30
- * Create the LLM provider based on configuration
31
- */
32
- private createProvider;
33
- /**
34
- * Check if the agent is properly configured
35
- */
36
23
  isConfigured(): boolean;
37
- /**
38
- * Get the provider name
39
- */
40
24
  getProviderName(): string;
41
25
  /**
42
- * Process a natural language input
43
- * @param input The user's natural language input
44
- * @param onChunk Optional callback for streaming output chunks
45
- * @param signal Optional AbortSignal to cancel the operation
26
+ * Process natural language input
46
27
  */
47
28
  process(input: string, onChunk?: StreamCallback, signal?: AbortSignal): Promise<string>;
48
29
  /**
49
- * Process using direct LLM call
30
+ * Try processing via OpenClaw gateway
50
31
  */
51
- private processWithLLM;
32
+ private tryOpenClaw;
52
33
  /**
53
- * Build context for OpenClaw
34
+ * Process via direct LLM provider
54
35
  */
55
- private buildOpenClawContext;
36
+ private processWithLLM;
56
37
  /**
57
- * Send a chat request to the LLM
38
+ * Send chat request to LLM
58
39
  */
59
- private sendChat;
40
+ private chat;
60
41
  /**
61
42
  * Execute tool calls
62
43
  */
63
44
  private executeTools;
45
+ /**
46
+ * Create LLM provider instance
47
+ */
48
+ private createProvider;
64
49
  /**
65
50
  * Clear conversation history
66
51
  */
67
52
  reset(): void;
68
53
  }
69
- /**
70
- * Create an AI agent instance
71
- */
72
54
  export declare function createAIAgent(ctx: CLIContext, config?: Partial<AgentConfig>): AIAgent;
73
55
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAuBrD;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAe1D;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,OAAO;IAOvB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAuC7F;;OAEG;YACW,cAAc;IA4D5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;YACW,YAAY;IAmC1B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAErF"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAW5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAmDrD;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAwB;gBAEjC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAU1D,YAAY,IAAI,OAAO;IAKvB,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB7F;;OAEG;YACW,WAAW;IA2BzB;;OAEG;YACW,cAAc;IAwC5B;;OAEG;YACW,IAAI;IAYlB;;OAEG;YACW,YAAY;IAyB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAMD,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAErF"}
@@ -10,9 +10,15 @@ exports.createAIAgent = createAIAgent;
10
10
  const anthropic_js_1 = require("./providers/anthropic.js");
11
11
  const openai_js_1 = require("./providers/openai.js");
12
12
  const index_js_1 = require("./tools/index.js");
13
- /**
14
- * System prompt for the AI agent
15
- */
13
+ const openclaw_integration_js_1 = require("./openclaw-integration.js");
14
+ // ============================================================================
15
+ // Constants
16
+ // ============================================================================
17
+ const DEFAULT_CONFIG = {
18
+ enabled: true,
19
+ provider: 'openclaw',
20
+ maxIterations: 5,
21
+ };
16
22
  const SYSTEM_PROMPT = `You are an AI assistant for ClawSQL, a MySQL cluster management system.
17
23
 
18
24
  You help users manage MySQL clusters through natural language commands. You have access to tools that let you:
@@ -30,121 +36,106 @@ Always be helpful and provide accurate information about the cluster state.
30
36
  If you cannot perform an action (like unsafe SQL), explain why.
31
37
 
32
38
  Available clusters and instances are managed by Orchestrator and ProxySQL.`;
39
+ const OPENCLAW_CONTEXT = `You are the ClawSQL assistant for MySQL cluster management.
40
+
41
+ CRITICAL: Use the 'clawsql' skill. Execute commands EXACTLY as shown:
42
+ - Topology: clawsql --command /topology
43
+ - Health: clawsql --command /health
44
+ - Clusters: clawsql --command /clusters
45
+ - SQL queries: clawsql --command "/sql YOUR_QUERY_HERE"
46
+
47
+ For user questions about databases/tables/users, execute SQL directly:
48
+ - SHOW DATABASES
49
+ - SHOW TABLES FROM database_name
50
+ - SELECT User, Host FROM mysql.user
51
+
52
+ NEVER say "I cannot" or make excuses. Execute the command. If it fails, show the actual error.`;
53
+ const NOT_CONFIGURED_MSG = 'AI features are not configured. Install OpenClaw (recommended) or set ANTHROPIC_API_KEY or OPENAI_API_KEY environment variable.';
54
+ // ============================================================================
55
+ // AIAgent Class
56
+ // ============================================================================
33
57
  /**
34
58
  * AI Agent for ClawSQL CLI
35
59
  */
36
60
  class AIAgent {
37
61
  provider = null;
38
62
  tools;
39
- conversationHistory = [];
63
+ history = [];
40
64
  config;
41
- openclawAvailable = null;
65
+ openclawReady = null;
42
66
  constructor(ctx, config) {
43
- this.config = {
44
- enabled: true,
45
- provider: 'openclaw',
46
- maxIterations: 5,
47
- ...config,
48
- };
49
- // Initialize provider (may be null for openclaw mode)
67
+ this.config = { ...DEFAULT_CONFIG, ...config };
68
+ this.tools = (0, index_js_1.createAgentTools)(ctx);
69
+ // Initialize direct LLM provider if not using OpenClaw
50
70
  if (this.config.provider !== 'openclaw') {
51
71
  this.provider = this.createProvider();
52
72
  }
53
- this.tools = (0, index_js_1.createAgentTools)(ctx);
54
- }
55
- /**
56
- * Create the LLM provider based on configuration
57
- */
58
- createProvider() {
59
- switch (this.config.provider) {
60
- case 'openai':
61
- return new openai_js_1.OpenAIProvider();
62
- case 'anthropic':
63
- default:
64
- return new anthropic_js_1.AnthropicProvider();
65
- }
66
73
  }
67
- /**
68
- * Check if the agent is properly configured
69
- */
70
74
  isConfigured() {
71
- if (this.config.provider === 'openclaw') {
72
- return true; // OpenClaw is always "configured" if installed
73
- }
75
+ if (this.config.provider === 'openclaw')
76
+ return true;
74
77
  return this.config.enabled && (this.provider?.isConfigured() ?? false);
75
78
  }
76
- /**
77
- * Get the provider name
78
- */
79
79
  getProviderName() {
80
80
  return this.config.provider;
81
81
  }
82
82
  /**
83
- * Process a natural language input
84
- * @param input The user's natural language input
85
- * @param onChunk Optional callback for streaming output chunks
86
- * @param signal Optional AbortSignal to cancel the operation
83
+ * Process natural language input
87
84
  */
88
85
  async process(input, onChunk, signal) {
89
- // Try OpenClaw first if configured
86
+ // Try OpenClaw first
90
87
  if (this.config.provider === 'openclaw') {
91
- try {
92
- const { isOpenClawAvailable, sendToOpenClaw, sendToOpenClawStream } = await import('./openclaw-integration.js');
93
- if (this.openclawAvailable === null) {
94
- this.openclawAvailable = await isOpenClawAvailable();
95
- }
96
- if (this.openclawAvailable) {
97
- const contextPrompt = this.buildOpenClawContext();
98
- // Use streaming if callback provided
99
- if (onChunk) {
100
- return await sendToOpenClawStream(`${contextPrompt}\n\nUser query: ${input}`, onChunk, { signal });
101
- }
102
- else {
103
- return await sendToOpenClaw(`${contextPrompt}\n\nUser query: ${input}`, { signal });
104
- }
105
- }
106
- }
107
- catch (error) {
108
- // Check if it was aborted
109
- if (error instanceof Error && error.name === 'AbortError') {
110
- throw error;
111
- }
112
- // Fall through to direct LLM
113
- const msg = error instanceof Error ? error.message : String(error);
114
- console.error('OpenClaw not available, falling back to direct LLM:', msg);
88
+ const response = await this.tryOpenClaw(input, onChunk, signal);
89
+ if (response !== null)
90
+ return response;
91
+ }
92
+ // Fall back to direct LLM
93
+ if (!this.provider?.isConfigured()) {
94
+ onChunk?.(NOT_CONFIGURED_MSG);
95
+ return NOT_CONFIGURED_MSG;
96
+ }
97
+ const response = await this.processWithLLM(input, signal);
98
+ onChunk?.(response);
99
+ return response;
100
+ }
101
+ /**
102
+ * Try processing via OpenClaw gateway
103
+ */
104
+ async tryOpenClaw(input, onChunk, signal) {
105
+ try {
106
+ if (this.openclawReady === null) {
107
+ this.openclawReady = await (0, openclaw_integration_js_1.isOpenClawAvailable)();
115
108
  }
109
+ if (!this.openclawReady)
110
+ return null;
111
+ const prompt = `${OPENCLAW_CONTEXT}\n\nUser query: ${input}`;
112
+ const options = { signal };
113
+ return onChunk
114
+ ? await (0, openclaw_integration_js_1.sendToOpenClawStream)(prompt, onChunk, options)
115
+ : await (0, openclaw_integration_js_1.sendToOpenClaw)(prompt, options);
116
116
  }
117
- // Fall back to direct LLM calls
118
- if (!this.provider || !this.provider.isConfigured()) {
119
- return 'AI features are not configured. Install OpenClaw (recommended) or set ANTHROPIC_API_KEY or OPENAI_API_KEY environment variable.';
117
+ catch (error) {
118
+ if (error instanceof Error && error.name === 'AbortError')
119
+ throw error;
120
+ const msg = error instanceof Error ? error.message : String(error);
121
+ console.error('OpenClaw unavailable, falling back:', msg);
122
+ return null;
120
123
  }
121
- return this.processWithLLM(input, signal);
122
124
  }
123
125
  /**
124
- * Process using direct LLM call
126
+ * Process via direct LLM provider
125
127
  */
126
128
  async processWithLLM(input, signal) {
127
- // Add user message to history
128
- this.conversationHistory.push({
129
- role: 'user',
130
- content: input,
131
- });
129
+ this.history.push({ role: 'user', content: input });
132
130
  try {
133
- let iteration = 0;
134
- let response = await this.sendChat(signal);
135
- // Handle tool use loop
136
- while (response.toolUse && iteration < this.config.maxIterations) {
137
- iteration++;
138
- // Execute tool calls
139
- const toolResults = await this.executeTools(response.toolUse);
140
- // Add assistant message with tool use
141
- this.conversationHistory.push({
142
- role: 'assistant',
143
- content: response.content || '',
144
- });
145
- // Add tool results
146
- for (const result of toolResults) {
147
- this.conversationHistory.push({
131
+ let response = await this.chat(signal);
132
+ let iterations = 0;
133
+ while (response.toolUse && iterations < this.config.maxIterations) {
134
+ iterations++;
135
+ const results = await this.executeTools(response.toolUse);
136
+ this.history.push({ role: 'assistant', content: response.content ?? '' });
137
+ for (const result of results) {
138
+ this.history.push({
148
139
  role: 'user',
149
140
  content: JSON.stringify({
150
141
  type: 'tool_result',
@@ -154,104 +145,71 @@ class AIAgent {
154
145
  }),
155
146
  });
156
147
  }
157
- // Get next response
158
- response = await this.sendChat(signal);
148
+ response = await this.chat(signal);
159
149
  }
160
- // Add final assistant response to history
161
150
  if (response.content) {
162
- this.conversationHistory.push({
163
- role: 'assistant',
164
- content: response.content,
165
- });
151
+ this.history.push({ role: 'assistant', content: response.content });
166
152
  }
167
- return response.content || 'No response generated.';
153
+ return response.content ?? 'No response generated.';
168
154
  }
169
155
  catch (error) {
170
- // Re-throw abort errors
171
- if (error instanceof Error && error.name === 'AbortError') {
156
+ if (error instanceof Error && error.name === 'AbortError')
172
157
  throw error;
173
- }
174
- const message = error instanceof Error ? error.message : String(error);
175
- return `Error: ${message}`;
158
+ return `Error: ${error instanceof Error ? error.message : String(error)}`;
176
159
  }
177
160
  }
178
161
  /**
179
- * Build context for OpenClaw
180
- */
181
- buildOpenClawContext() {
182
- return `You are the ClawSQL assistant for MySQL cluster management.
183
-
184
- CRITICAL: Use the 'clawsql' skill. Execute commands EXACTLY as shown:
185
- - Topology: clawsql --command /topology
186
- - Health: clawsql --command /health
187
- - Clusters: clawsql --command /clusters
188
- - SQL queries: clawsql --command "/sql YOUR_QUERY_HERE"
189
-
190
- For user questions about databases/tables/users, execute SQL directly:
191
- - SHOW DATABASES
192
- - SHOW TABLES FROM database_name
193
- - SELECT User, Host FROM mysql.user
194
-
195
- NEVER say "I cannot" or make excuses. Execute the command. If it fails, show the actual error.`;
196
- }
197
- /**
198
- * Send a chat request to the LLM
162
+ * Send chat request to LLM
199
163
  */
200
- async sendChat(signal) {
201
- if (!this.provider) {
164
+ async chat(signal) {
165
+ if (!this.provider)
202
166
  throw new Error('No LLM provider configured');
203
- }
204
- const response = await this.provider.chat([{ role: 'system', content: SYSTEM_PROMPT }, ...this.conversationHistory], this.tools, { signal });
205
- return {
206
- content: response.content,
207
- toolUse: response.toolUse,
208
- };
167
+ const response = await this.provider.chat([{ role: 'system', content: SYSTEM_PROMPT }, ...this.history], this.tools, { signal });
168
+ return { content: response.content, toolUse: response.toolUse };
209
169
  }
210
170
  /**
211
171
  * Execute tool calls
212
172
  */
213
173
  async executeTools(toolUse) {
214
- const results = [];
215
- for (const tool of toolUse) {
174
+ return Promise.all(toolUse.map(async (tool) => {
216
175
  const toolDef = this.tools.find(t => t.name === tool.name);
217
176
  if (!toolDef) {
218
- results.push({
177
+ return {
219
178
  tool_use_id: tool.id,
220
179
  content: JSON.stringify({ error: `Unknown tool: ${tool.name}` }),
221
180
  is_error: true,
222
- });
223
- continue;
181
+ };
224
182
  }
225
183
  try {
226
184
  const result = await toolDef.execute(tool.input, null);
227
- results.push({
228
- tool_use_id: tool.id,
229
- content: JSON.stringify(result),
230
- });
185
+ return { tool_use_id: tool.id, content: JSON.stringify(result) };
231
186
  }
232
187
  catch (error) {
233
- results.push({
188
+ return {
234
189
  tool_use_id: tool.id,
235
- content: JSON.stringify({
236
- error: error instanceof Error ? error.message : String(error),
237
- }),
190
+ content: JSON.stringify({ error: error instanceof Error ? error.message : String(error) }),
238
191
  is_error: true,
239
- });
192
+ };
240
193
  }
241
- }
242
- return results;
194
+ }));
195
+ }
196
+ /**
197
+ * Create LLM provider instance
198
+ */
199
+ createProvider() {
200
+ return this.config.provider === 'openai' ? new openai_js_1.OpenAIProvider() : new anthropic_js_1.AnthropicProvider();
243
201
  }
244
202
  /**
245
203
  * Clear conversation history
246
204
  */
247
205
  reset() {
248
- this.conversationHistory = [];
206
+ this.history = [];
249
207
  }
250
208
  }
251
209
  exports.AIAgent = AIAgent;
252
- /**
253
- * Create an AI agent instance
254
- */
210
+ // ============================================================================
211
+ // Factory
212
+ // ============================================================================
255
213
  function createAIAgent(ctx, config) {
256
214
  return new AIAgent(ctx, config);
257
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cli/agent/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cli/agent/handler.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,6 @@ export { loadAIConfig } from './providers/base.js';
10
10
  export { AnthropicProvider, getAnthropicProvider } from './providers/anthropic.js';
11
11
  export { OpenAIProvider, getOpenAIProvider } from './providers/openai.js';
12
12
  export { createAgentTools } from './tools/index.js';
13
- export { OpenClawAgent, createOpenClawAgent, isOpenClawAvailable, isDockerOpenClawAvailable, isLocalOpenClawAvailable, isGatewayHealthy, getOpenClawStatus, ensureOpenClawRunning, sendToOpenClaw, scheduleCron, sendNotification, writeToMemory, } from './openclaw-integration.js';
13
+ export { OpenClawAgent, createOpenClawAgent, isOpenClawAvailable, isDockerOpenClawAvailable, isLocalOpenClawAvailable, isGatewayHealthy, getOpenClawStatus, ensureOpenClawRunning, sendToOpenClaw, sendToOpenClawStream, scheduleCron, sendNotification, writeToMemory, getModelProviderInfo, configureModelProvider, testOpenClawConnection, getDetailedOpenClawStatus, SUPPORTED_PROVIDERS, } from './openclaw-integration.js';
14
+ export type { ModelProviderInfo, OpenClawOptions, OpenClawStatus } from './openclaw-integration.js';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACd,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Exports for the AI agent system.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.writeToMemory = exports.sendNotification = exports.scheduleCron = exports.sendToOpenClaw = exports.ensureOpenClawRunning = exports.getOpenClawStatus = exports.isGatewayHealthy = exports.isLocalOpenClawAvailable = exports.isDockerOpenClawAvailable = exports.isOpenClawAvailable = exports.createOpenClawAgent = exports.OpenClawAgent = exports.createAgentTools = exports.getOpenAIProvider = exports.OpenAIProvider = exports.getAnthropicProvider = exports.AnthropicProvider = exports.loadAIConfig = exports.createAIAgent = exports.AIAgent = void 0;
8
+ exports.SUPPORTED_PROVIDERS = exports.getDetailedOpenClawStatus = exports.testOpenClawConnection = exports.configureModelProvider = exports.getModelProviderInfo = exports.writeToMemory = exports.sendNotification = exports.scheduleCron = exports.sendToOpenClawStream = exports.sendToOpenClaw = exports.ensureOpenClawRunning = exports.getOpenClawStatus = exports.isGatewayHealthy = exports.isLocalOpenClawAvailable = exports.isDockerOpenClawAvailable = exports.isOpenClawAvailable = exports.createOpenClawAgent = exports.OpenClawAgent = exports.createAgentTools = exports.getOpenAIProvider = exports.OpenAIProvider = exports.getAnthropicProvider = exports.AnthropicProvider = exports.loadAIConfig = exports.createAIAgent = exports.AIAgent = void 0;
9
9
  var handler_js_1 = require("./handler.js");
10
10
  Object.defineProperty(exports, "AIAgent", { enumerable: true, get: function () { return handler_js_1.AIAgent; } });
11
11
  Object.defineProperty(exports, "createAIAgent", { enumerable: true, get: function () { return handler_js_1.createAIAgent; } });
@@ -29,7 +29,13 @@ Object.defineProperty(exports, "isGatewayHealthy", { enumerable: true, get: func
29
29
  Object.defineProperty(exports, "getOpenClawStatus", { enumerable: true, get: function () { return openclaw_integration_js_1.getOpenClawStatus; } });
30
30
  Object.defineProperty(exports, "ensureOpenClawRunning", { enumerable: true, get: function () { return openclaw_integration_js_1.ensureOpenClawRunning; } });
31
31
  Object.defineProperty(exports, "sendToOpenClaw", { enumerable: true, get: function () { return openclaw_integration_js_1.sendToOpenClaw; } });
32
+ Object.defineProperty(exports, "sendToOpenClawStream", { enumerable: true, get: function () { return openclaw_integration_js_1.sendToOpenClawStream; } });
32
33
  Object.defineProperty(exports, "scheduleCron", { enumerable: true, get: function () { return openclaw_integration_js_1.scheduleCron; } });
33
34
  Object.defineProperty(exports, "sendNotification", { enumerable: true, get: function () { return openclaw_integration_js_1.sendNotification; } });
34
35
  Object.defineProperty(exports, "writeToMemory", { enumerable: true, get: function () { return openclaw_integration_js_1.writeToMemory; } });
36
+ Object.defineProperty(exports, "getModelProviderInfo", { enumerable: true, get: function () { return openclaw_integration_js_1.getModelProviderInfo; } });
37
+ Object.defineProperty(exports, "configureModelProvider", { enumerable: true, get: function () { return openclaw_integration_js_1.configureModelProvider; } });
38
+ Object.defineProperty(exports, "testOpenClawConnection", { enumerable: true, get: function () { return openclaw_integration_js_1.testOpenClawConnection; } });
39
+ Object.defineProperty(exports, "getDetailedOpenClawStatus", { enumerable: true, get: function () { return openclaw_integration_js_1.getDetailedOpenClawStatus; } });
40
+ Object.defineProperty(exports, "SUPPORTED_PROVIDERS", { enumerable: true, get: function () { return openclaw_integration_js_1.SUPPORTED_PROVIDERS; } });
35
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/agent/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,2CAAsD;AAA7C,qGAAA,OAAO,OAAA;AAAE,2GAAA,aAAa,OAAA;AAG/B,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AACrB,yDAAmF;AAA1E,iHAAA,iBAAiB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAChD,mDAA0E;AAAjE,2GAAA,cAAc,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAC1C,6CAAoD;AAA3C,4GAAA,gBAAgB,OAAA;AACzB,qEAamC;AAZjC,wHAAA,aAAa,OAAA;AACb,8HAAA,mBAAmB,OAAA;AACnB,8HAAA,mBAAmB,OAAA;AACnB,oIAAA,yBAAyB,OAAA;AACzB,mIAAA,wBAAwB,OAAA;AACxB,2HAAA,gBAAgB,OAAA;AAChB,4HAAA,iBAAiB,OAAA;AACjB,gIAAA,qBAAqB,OAAA;AACrB,yHAAA,cAAc,OAAA;AACd,uHAAA,YAAY,OAAA;AACZ,2HAAA,gBAAgB,OAAA;AAChB,wHAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/agent/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,2CAAsD;AAA7C,qGAAA,OAAO,OAAA;AAAE,2GAAA,aAAa,OAAA;AAG/B,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AACrB,yDAAmF;AAA1E,iHAAA,iBAAiB,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAChD,mDAA0E;AAAjE,2GAAA,cAAc,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAC1C,6CAAoD;AAA3C,4GAAA,gBAAgB,OAAA;AACzB,qEAmBmC;AAlBjC,wHAAA,aAAa,OAAA;AACb,8HAAA,mBAAmB,OAAA;AACnB,8HAAA,mBAAmB,OAAA;AACnB,oIAAA,yBAAyB,OAAA;AACzB,mIAAA,wBAAwB,OAAA;AACxB,2HAAA,gBAAgB,OAAA;AAChB,4HAAA,iBAAiB,OAAA;AACjB,gIAAA,qBAAqB,OAAA;AACrB,yHAAA,cAAc,OAAA;AACd,+HAAA,oBAAoB,OAAA;AACpB,uHAAA,YAAY,OAAA;AACZ,2HAAA,gBAAgB,OAAA;AAChB,wHAAA,aAAa,OAAA;AACb,+HAAA,oBAAoB,OAAA;AACpB,iIAAA,sBAAsB,OAAA;AACtB,iIAAA,sBAAsB,OAAA;AACtB,oIAAA,yBAAyB,OAAA;AACzB,8HAAA,mBAAmB,OAAA"}