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
package/dist/cli/repl.js
ADDED
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClawSQL CLI - Interactive REPL
|
|
4
|
+
*
|
|
5
|
+
* Read-Eval-Print Loop for interactive CLI sessions.
|
|
6
|
+
* Features: Real-time suggestions, keyboard navigation, professional UI.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.REPL = void 0;
|
|
43
|
+
exports.startREPL = startREPL;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const os = __importStar(require("os"));
|
|
47
|
+
const registry_js_1 = require("./registry.js");
|
|
48
|
+
const index_js_1 = require("./agent/index.js");
|
|
49
|
+
const completer_js_1 = require("./completer.js");
|
|
50
|
+
const formatter_js_1 = require("./formatter.js");
|
|
51
|
+
const raw_input_js_1 = require("./raw-input.js");
|
|
52
|
+
const components_js_1 = require("./ui/components.js");
|
|
53
|
+
/**
|
|
54
|
+
* Default REPL configuration
|
|
55
|
+
*/
|
|
56
|
+
const DEFAULT_CONFIG = {
|
|
57
|
+
prompt: 'clawsql> ',
|
|
58
|
+
historyFile: path.join(os.homedir(), '.clawsql', 'history'),
|
|
59
|
+
historySize: 1000,
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Interactive REPL session
|
|
63
|
+
*/
|
|
64
|
+
class REPL {
|
|
65
|
+
config;
|
|
66
|
+
context;
|
|
67
|
+
running = false;
|
|
68
|
+
history = [];
|
|
69
|
+
agent = null;
|
|
70
|
+
keepAlive = null;
|
|
71
|
+
completer = null;
|
|
72
|
+
currentContext = '';
|
|
73
|
+
orchestratorConnected = false;
|
|
74
|
+
rawInputHandler = null;
|
|
75
|
+
constructor(config) {
|
|
76
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
77
|
+
this.context = (0, registry_js_1.createCLIContext)();
|
|
78
|
+
this.loadHistory();
|
|
79
|
+
this.initAgent();
|
|
80
|
+
this.initCompleter();
|
|
81
|
+
this.rawInputHandler = new raw_input_js_1.RawInputHandler(this.getPrompt());
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Initialize the completer
|
|
85
|
+
*/
|
|
86
|
+
initCompleter() {
|
|
87
|
+
this.completer = (0, completer_js_1.createCompleter)();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check orchestrator connection
|
|
91
|
+
*/
|
|
92
|
+
async checkOrchestratorConnection() {
|
|
93
|
+
try {
|
|
94
|
+
return await this.context.orchestrator.healthCheck();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Initialize AI agent
|
|
102
|
+
*/
|
|
103
|
+
initAgent() {
|
|
104
|
+
const aiConfig = (0, index_js_1.loadAIConfig)();
|
|
105
|
+
// Always create agent - it will try OpenClaw first, then fall back to LLM
|
|
106
|
+
this.agent = (0, index_js_1.createAIAgent)(this.context, {
|
|
107
|
+
enabled: aiConfig.enabled || true, // Default enabled
|
|
108
|
+
provider: aiConfig.provider,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Start the REPL session
|
|
113
|
+
*/
|
|
114
|
+
start() {
|
|
115
|
+
this.running = true;
|
|
116
|
+
// Keep the process alive for async operations
|
|
117
|
+
this.keepAlive = setInterval(() => { }, 10000);
|
|
118
|
+
// Check orchestrator connection in background
|
|
119
|
+
void this.checkOrchestratorConnection().then(connected => {
|
|
120
|
+
this.orchestratorConnected = connected;
|
|
121
|
+
});
|
|
122
|
+
// Print welcome banner
|
|
123
|
+
this.printBanner();
|
|
124
|
+
// Start the main input loop with raw input handler
|
|
125
|
+
void this.runInputLoop();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Main input loop using RawInputHandler for real-time suggestions
|
|
129
|
+
*/
|
|
130
|
+
async runInputLoop() {
|
|
131
|
+
while (this.running) {
|
|
132
|
+
try {
|
|
133
|
+
// Show prompt and get input with real-time suggestions
|
|
134
|
+
process.stdout.write(this.getPrompt());
|
|
135
|
+
const result = await this.rawInputHandler.readLine();
|
|
136
|
+
// Ctrl+D - exit requested
|
|
137
|
+
if (result.exitRequested) {
|
|
138
|
+
this.stop();
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Ctrl+C - cancel current input, continue
|
|
142
|
+
if (result.cancelled) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const input = result.value.trim();
|
|
146
|
+
// Skip empty input
|
|
147
|
+
if (!input) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// Add to history
|
|
151
|
+
this.addToHistory(input);
|
|
152
|
+
// Handle special commands
|
|
153
|
+
if (input === '/exit' || input === '/quit' || input === '/q') {
|
|
154
|
+
// Move up one line (console.log moved us down), clear, and show goodbye
|
|
155
|
+
process.stdout.write('\x1B[1A\r\x1B[K');
|
|
156
|
+
process.stdout.write(this.getPrompt() + input + ' ' + components_js_1.theme.primary('Goodbye!') + '\n');
|
|
157
|
+
this.stop(false);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Clear screen command
|
|
161
|
+
if (input === '/clear' || input === '/cls') {
|
|
162
|
+
(0, components_js_1.clearScreen)();
|
|
163
|
+
this.printBanner();
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Parse and execute command
|
|
167
|
+
const parsed = (0, registry_js_1.parseInput)(input);
|
|
168
|
+
if (parsed) {
|
|
169
|
+
if (parsed.command) {
|
|
170
|
+
// Check if command exists
|
|
171
|
+
const cmd = (0, registry_js_1.getCommand)(parsed.command);
|
|
172
|
+
if (!cmd) {
|
|
173
|
+
// Command not found - show suggestions
|
|
174
|
+
if (this.completer) {
|
|
175
|
+
const similar = this.completer.findSimilar(parsed.command);
|
|
176
|
+
console.log((0, components_js_1.createDidYouMean)(`/${parsed.command}`, similar));
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.log(this.context.formatter.error(`Unknown command: /${parsed.command}`));
|
|
180
|
+
console.log(this.context.formatter.info('Type /help to see available commands.'));
|
|
181
|
+
}
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
await (0, registry_js_1.executeCommand)(parsed.command, parsed.args, this.context);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// No command prefix - treat as natural language
|
|
188
|
+
await this.handleNaturalLanguage(input);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
console.error('Command error:', err);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Stop the REPL session
|
|
199
|
+
*/
|
|
200
|
+
stop(printGoodbye = true) {
|
|
201
|
+
// Set running to false immediately to prevent prompt from showing
|
|
202
|
+
this.running = false;
|
|
203
|
+
// Cleanup raw input handler (disable bracketed paste mode)
|
|
204
|
+
if (this.rawInputHandler) {
|
|
205
|
+
this.rawInputHandler.cleanup();
|
|
206
|
+
}
|
|
207
|
+
if (this.keepAlive) {
|
|
208
|
+
clearInterval(this.keepAlive);
|
|
209
|
+
this.keepAlive = null;
|
|
210
|
+
}
|
|
211
|
+
this.saveHistory();
|
|
212
|
+
if (printGoodbye) {
|
|
213
|
+
process.stdout.write(' ' + components_js_1.theme.primary('Goodbye!\n'));
|
|
214
|
+
}
|
|
215
|
+
process.exit(0);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Handle natural language input using AI agent
|
|
219
|
+
*/
|
|
220
|
+
async handleNaturalLanguage(input) {
|
|
221
|
+
const processor = new formatter_js_1.StreamingMarkdownProcessor();
|
|
222
|
+
let gotFirstChunk = false;
|
|
223
|
+
let spinnerInterval = null;
|
|
224
|
+
const startTime = Date.now();
|
|
225
|
+
// AbortController for cancelling the AI request
|
|
226
|
+
const abortController = new AbortController();
|
|
227
|
+
let wasAborted = false;
|
|
228
|
+
// Start thinking spinner
|
|
229
|
+
const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
230
|
+
const thinkingMessages = [
|
|
231
|
+
'Thinking...',
|
|
232
|
+
'Consulting the cluster...',
|
|
233
|
+
'Querying the depths...',
|
|
234
|
+
'Processing your request...',
|
|
235
|
+
'Analyzing topology...',
|
|
236
|
+
'Connecting the dots...',
|
|
237
|
+
'Parsing SQL mysteries...',
|
|
238
|
+
'Asking the replicas nicely...',
|
|
239
|
+
'Waking up the primary...',
|
|
240
|
+
'Counting rows in background...',
|
|
241
|
+
'Optimizing queries in my head...',
|
|
242
|
+
'Checking for runaway transactions...',
|
|
243
|
+
'Petitioning the binlogs...',
|
|
244
|
+
'Synchronizing brain cells...',
|
|
245
|
+
'Consulting the MySQL oracle...',
|
|
246
|
+
'Herding the clusters...',
|
|
247
|
+
'Decoding network packets...',
|
|
248
|
+
'Channeling database vibes...',
|
|
249
|
+
'Asking nicely for permission...',
|
|
250
|
+
'Negotiating with ProxySQL...',
|
|
251
|
+
];
|
|
252
|
+
let frameIndex = 0;
|
|
253
|
+
let msgIndex = 0;
|
|
254
|
+
spinnerInterval = setInterval(() => {
|
|
255
|
+
const frame = spinnerFrames[frameIndex % spinnerFrames.length];
|
|
256
|
+
const msg = thinkingMessages[msgIndex % thinkingMessages.length];
|
|
257
|
+
// Clear line before writing to handle shorter messages after longer ones
|
|
258
|
+
process.stdout.write(`\r\x1b[K${frame} ${msg} ${components_js_1.theme.muted('(double tap ESC to stop)')}`);
|
|
259
|
+
frameIndex++;
|
|
260
|
+
if (frameIndex % 20 === 0)
|
|
261
|
+
msgIndex++; // Change message every ~2s
|
|
262
|
+
}, 100);
|
|
263
|
+
// Set up ESC key listener to abort AI thinking
|
|
264
|
+
// Require double-ESC to abort: two ESC presses within 500ms
|
|
265
|
+
// This prevents spurious terminal-generated ESC events from triggering abort
|
|
266
|
+
let lastEscTime = 0;
|
|
267
|
+
const doubleEscThresholdMs = 500;
|
|
268
|
+
let abortResolve = null;
|
|
269
|
+
const abortPromise = new Promise((resolve) => {
|
|
270
|
+
abortResolve = resolve;
|
|
271
|
+
});
|
|
272
|
+
const escListener = (data) => {
|
|
273
|
+
// Ignore if not ESC
|
|
274
|
+
if (data !== '\x1B') {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const now = Date.now();
|
|
278
|
+
// Check for double-ESC (two ESCs within threshold)
|
|
279
|
+
if (now - lastEscTime < doubleEscThresholdMs && !wasAborted) {
|
|
280
|
+
// Double-ESC detected - abort!
|
|
281
|
+
wasAborted = true;
|
|
282
|
+
abortController.abort();
|
|
283
|
+
process.stdin.off('data', escListener);
|
|
284
|
+
// Clean up spinner
|
|
285
|
+
if (spinnerInterval) {
|
|
286
|
+
clearInterval(spinnerInterval);
|
|
287
|
+
spinnerInterval = null;
|
|
288
|
+
}
|
|
289
|
+
// Show stopped message
|
|
290
|
+
const elapsed = ((now - startTime) / 1000).toFixed(1);
|
|
291
|
+
process.stdout.write(`\r\x1b[K${components_js_1.theme.warning('⏹ Stopped')} (${elapsed}s)\n`);
|
|
292
|
+
// Immediately resolve the abort promise to unblock the main flow
|
|
293
|
+
// This ensures the prompt appears without waiting for agent cleanup
|
|
294
|
+
if (abortResolve) {
|
|
295
|
+
abortResolve();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
// First ESC or too slow - just record the time
|
|
300
|
+
lastEscTime = now;
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
// Enable raw mode and add listener
|
|
304
|
+
const wasRaw = process.stdin.isRaw;
|
|
305
|
+
if (process.stdin.isTTY) {
|
|
306
|
+
if (wasRaw !== true) {
|
|
307
|
+
process.stdin.setRawMode(true);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
process.stdin.on('data', escListener);
|
|
311
|
+
try {
|
|
312
|
+
// Race between the agent processing and the abort promise
|
|
313
|
+
await Promise.race([
|
|
314
|
+
this.agent.process(input, (chunk) => {
|
|
315
|
+
// Ignore chunks if already aborted
|
|
316
|
+
if (wasAborted) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
// Stop spinner on first chunk
|
|
320
|
+
if (!gotFirstChunk) {
|
|
321
|
+
gotFirstChunk = true;
|
|
322
|
+
if (spinnerInterval) {
|
|
323
|
+
clearInterval(spinnerInterval);
|
|
324
|
+
spinnerInterval = null;
|
|
325
|
+
}
|
|
326
|
+
// Clear the spinner line
|
|
327
|
+
process.stdout.write('\r\x1b[K');
|
|
328
|
+
}
|
|
329
|
+
const { text, backspace } = processor.process(chunk);
|
|
330
|
+
if (backspace > 0) {
|
|
331
|
+
process.stdout.write(`\x1b[${backspace}D\x1b[K${text}`);
|
|
332
|
+
}
|
|
333
|
+
else if (text) {
|
|
334
|
+
process.stdout.write(text);
|
|
335
|
+
}
|
|
336
|
+
}, abortController.signal),
|
|
337
|
+
abortPromise,
|
|
338
|
+
]);
|
|
339
|
+
// Make sure spinner is stopped
|
|
340
|
+
if (spinnerInterval) {
|
|
341
|
+
clearInterval(spinnerInterval);
|
|
342
|
+
process.stdout.write('\r\x1b[K');
|
|
343
|
+
}
|
|
344
|
+
// Don't show remaining output if aborted
|
|
345
|
+
if (!wasAborted) {
|
|
346
|
+
const remaining = processor.flush();
|
|
347
|
+
if (remaining)
|
|
348
|
+
process.stdout.write(remaining);
|
|
349
|
+
process.stdout.write('\n\n');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
// Clean up spinner
|
|
354
|
+
if (spinnerInterval) {
|
|
355
|
+
clearInterval(spinnerInterval);
|
|
356
|
+
process.stdout.write('\r\x1b[K');
|
|
357
|
+
}
|
|
358
|
+
// Don't show error if aborted (already shown by ESC handler)
|
|
359
|
+
if (!wasAborted) {
|
|
360
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
361
|
+
console.log(this.context.formatter.error(`AI error: ${message}`));
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
finally {
|
|
365
|
+
// Clean up ESC listener and restore raw mode
|
|
366
|
+
process.stdin.off('data', escListener);
|
|
367
|
+
if (process.stdin.isTTY && wasRaw !== undefined) {
|
|
368
|
+
process.stdin.setRawMode(wasRaw);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get the prompt string
|
|
374
|
+
*/
|
|
375
|
+
getPrompt() {
|
|
376
|
+
return (0, components_js_1.createPrompt)({
|
|
377
|
+
context: this.currentContext || undefined,
|
|
378
|
+
status: 'normal',
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Print welcome banner
|
|
383
|
+
*/
|
|
384
|
+
printBanner() {
|
|
385
|
+
const version = this.context.settings.appVersion;
|
|
386
|
+
const aiProvider = this.agent?.getProviderName();
|
|
387
|
+
console.log((0, components_js_1.createBanner)({
|
|
388
|
+
version,
|
|
389
|
+
aiStatus: {
|
|
390
|
+
enabled: this.agent?.isConfigured() ?? false,
|
|
391
|
+
provider: aiProvider,
|
|
392
|
+
},
|
|
393
|
+
orchestratorStatus: this.orchestratorConnected ? 'connected' : 'unknown',
|
|
394
|
+
}));
|
|
395
|
+
console.log((0, components_js_1.formatWelcomeMessage)());
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Load command history from file
|
|
399
|
+
*/
|
|
400
|
+
loadHistory() {
|
|
401
|
+
try {
|
|
402
|
+
const historyDir = path.dirname(this.config.historyFile);
|
|
403
|
+
if (!fs.existsSync(historyDir)) {
|
|
404
|
+
fs.mkdirSync(historyDir, { recursive: true });
|
|
405
|
+
}
|
|
406
|
+
if (fs.existsSync(this.config.historyFile)) {
|
|
407
|
+
const content = fs.readFileSync(this.config.historyFile, 'utf-8');
|
|
408
|
+
this.history = content.split('\n').filter(Boolean);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
// Ignore errors loading history
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Save command history to file
|
|
417
|
+
*/
|
|
418
|
+
saveHistory() {
|
|
419
|
+
try {
|
|
420
|
+
const historyDir = path.dirname(this.config.historyFile);
|
|
421
|
+
if (!fs.existsSync(historyDir)) {
|
|
422
|
+
fs.mkdirSync(historyDir, { recursive: true });
|
|
423
|
+
}
|
|
424
|
+
fs.writeFileSync(this.config.historyFile, this.history.slice(-this.config.historySize).join('\n'), 'utf-8');
|
|
425
|
+
}
|
|
426
|
+
catch (error) {
|
|
427
|
+
// Ignore errors saving history
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Add command to history
|
|
432
|
+
*/
|
|
433
|
+
addToHistory(command) {
|
|
434
|
+
this.history.push(command);
|
|
435
|
+
// Note: readline.Interface has history property but it's not in TypeScript types
|
|
436
|
+
// We manage history separately and sync on save
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
exports.REPL = REPL;
|
|
440
|
+
/**
|
|
441
|
+
* Start an interactive REPL session
|
|
442
|
+
*/
|
|
443
|
+
function startREPL() {
|
|
444
|
+
const repl = new REPL();
|
|
445
|
+
repl.start();
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=repl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/cli/repl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClawSQL CLI - UI Components
|
|
3
|
+
*
|
|
4
|
+
* Professional UI components for the interactive CLI.
|
|
5
|
+
* Inspired by Claude Code's clean, minimal style.
|
|
6
|
+
*/
|
|
7
|
+
import { Ora } from 'ora';
|
|
8
|
+
/**
|
|
9
|
+
* Nord Theme Colors (https://www.nordtheme.com)
|
|
10
|
+
* Single source of truth for all CLI colors
|
|
11
|
+
*/
|
|
12
|
+
export declare const nord: {
|
|
13
|
+
readonly polarNight: {
|
|
14
|
+
readonly nord0: "#2E3440";
|
|
15
|
+
readonly nord1: "#3B4252";
|
|
16
|
+
readonly nord2: "#434C5E";
|
|
17
|
+
readonly nord3: "#4C566A";
|
|
18
|
+
};
|
|
19
|
+
readonly snowStorm: {
|
|
20
|
+
readonly nord4: "#D8DEE9";
|
|
21
|
+
readonly nord5: "#E5E9F0";
|
|
22
|
+
readonly nord6: "#ECEFF4";
|
|
23
|
+
};
|
|
24
|
+
readonly frost: {
|
|
25
|
+
readonly nord7: "#8FBCBB";
|
|
26
|
+
readonly nord8: "#88C0D0";
|
|
27
|
+
readonly nord9: "#81A1C1";
|
|
28
|
+
readonly nord10: "#5E81AC";
|
|
29
|
+
};
|
|
30
|
+
readonly aurora: {
|
|
31
|
+
readonly nord11: "#BF616A";
|
|
32
|
+
readonly nord12: "#D08770";
|
|
33
|
+
readonly nord13: "#EBCB8B";
|
|
34
|
+
readonly nord14: "#A3BE8C";
|
|
35
|
+
readonly nord15: "#B48EAD";
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Chalk-based theme for CLI output
|
|
40
|
+
* Use these functions for consistent colors across the CLI
|
|
41
|
+
*/
|
|
42
|
+
export declare const theme: {
|
|
43
|
+
primary: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
44
|
+
secondary: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
45
|
+
success: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
46
|
+
warning: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
47
|
+
error: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
48
|
+
info: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
49
|
+
muted: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
50
|
+
highlight: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
51
|
+
accent: import("chalk", { with: { "resolution-mode": "import" } }).ChalkInstance;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Clean status indicators (no emojis)
|
|
55
|
+
* Use these for consistent icons across the CLI
|
|
56
|
+
*/
|
|
57
|
+
export declare const indicators: {
|
|
58
|
+
success: string;
|
|
59
|
+
error: string;
|
|
60
|
+
warning: string;
|
|
61
|
+
info: string;
|
|
62
|
+
arrow: string;
|
|
63
|
+
bullet: string;
|
|
64
|
+
circle: string;
|
|
65
|
+
check: string;
|
|
66
|
+
cross: string;
|
|
67
|
+
prompt: string;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Create a professional banner with VSCode-inspired styling
|
|
71
|
+
*/
|
|
72
|
+
export declare function createBanner(options: {
|
|
73
|
+
version: string;
|
|
74
|
+
aiStatus?: {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
provider?: string;
|
|
77
|
+
};
|
|
78
|
+
orchestratorStatus?: 'connected' | 'disconnected' | 'unknown';
|
|
79
|
+
}): string;
|
|
80
|
+
/**
|
|
81
|
+
* Create a contextual prompt string
|
|
82
|
+
*/
|
|
83
|
+
export declare function createPrompt(options: {
|
|
84
|
+
context?: string;
|
|
85
|
+
status?: 'normal' | 'warning' | 'error';
|
|
86
|
+
}): string;
|
|
87
|
+
/**
|
|
88
|
+
* Create a suggestion box for command completions
|
|
89
|
+
*/
|
|
90
|
+
export declare function createSuggestionBox(suggestions: string[], hint?: string): string;
|
|
91
|
+
/**
|
|
92
|
+
* Create a "did you mean?" suggestion
|
|
93
|
+
*/
|
|
94
|
+
export declare function createDidYouMean(typed: string, suggestions: string[]): string;
|
|
95
|
+
/**
|
|
96
|
+
* Create a status bar
|
|
97
|
+
*/
|
|
98
|
+
export declare function createStatusBar(options: {
|
|
99
|
+
clusters?: number;
|
|
100
|
+
instances?: number;
|
|
101
|
+
alerts?: number;
|
|
102
|
+
}): string;
|
|
103
|
+
/**
|
|
104
|
+
* Create a keybindings help box
|
|
105
|
+
*/
|
|
106
|
+
export declare function createKeybindingsHelp(): string;
|
|
107
|
+
/**
|
|
108
|
+
* Clear the terminal screen
|
|
109
|
+
*/
|
|
110
|
+
export declare function clearScreen(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Create a spinner for async operations
|
|
113
|
+
*/
|
|
114
|
+
export declare function createSpinner(text: string): Ora;
|
|
115
|
+
/**
|
|
116
|
+
* Format a command hint
|
|
117
|
+
*/
|
|
118
|
+
export declare function formatCommandHint(command: string, description: string, usage: string): string;
|
|
119
|
+
/**
|
|
120
|
+
* Create a divider line
|
|
121
|
+
*/
|
|
122
|
+
export declare function divider(char?: string, width?: number): string;
|
|
123
|
+
/**
|
|
124
|
+
* Format a welcome message
|
|
125
|
+
*/
|
|
126
|
+
export declare function formatWelcomeMessage(): string;
|
|
127
|
+
/**
|
|
128
|
+
* Suggestion item for dropdown
|
|
129
|
+
*/
|
|
130
|
+
export interface SuggestionItem {
|
|
131
|
+
name: string;
|
|
132
|
+
description: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Format a suggestions dropdown in Claude Code style
|
|
136
|
+
* Shows command suggestions with descriptions in a formatted panel
|
|
137
|
+
*/
|
|
138
|
+
export declare function formatSuggestionsDropdown(suggestions: SuggestionItem[], selectedIndex: number, maxWidth?: number): string;
|
|
139
|
+
/**
|
|
140
|
+
* Clear the suggestions dropdown from the terminal
|
|
141
|
+
* @param numLines Number of lines to clear
|
|
142
|
+
*/
|
|
143
|
+
export declare function clearSuggestionsDropdown(numLines: number): void;
|
|
144
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/components.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;CAyBP,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;CAWtB,CAAC;AAUF;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,kBAAkB,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;CAC/D,GAAG,MAAM,CAuET;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;CACzC,GAAG,MAAM,CAkBT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAa7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAiBT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAa9C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7F;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,GAAE,MAAY,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,EAAE,EAC7B,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,MAAqC,GAC9C,MAAM,CAsCR;AAWD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO/D"}
|