@oasissys/sqlcl-cli 0.1.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.
- package/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/bin/oasis-sqlcl.d.ts +2 -0
- package/dist/bin/oasis-sqlcl.js +4 -0
- package/dist/bin/oasis-sqlcl.js.map +1 -0
- package/dist/src/axi.d.ts +122 -0
- package/dist/src/axi.js +406 -0
- package/dist/src/axi.js.map +1 -0
- package/dist/src/cli.d.ts +16 -0
- package/dist/src/cli.js +446 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +13 -0
- package/dist/src/config.js +20 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/session.d.ts +84 -0
- package/dist/src/session.js +270 -0
- package/dist/src/session.js.map +1 -0
- package/dist/src/storage.d.ts +22 -0
- package/dist/src/storage.js +88 -0
- package/dist/src/storage.js.map +1 -0
- package/dist/src/toon.d.ts +19 -0
- package/dist/src/toon.js +148 -0
- package/dist/src/toon.js.map +1 -0
- package/package.json +56 -0
- package/skills/sqlcl-cli/SKILL.md +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axi.js","sourceRoot":"","sources":["../../src/axi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oasis-sqlcl — AXI CLI for Oracle SQLcl (connections + SQL) on the Oasis DBs.
|
|
3
|
+
*
|
|
4
|
+
* Unlike the other Oasis CLIs there is no HTTP MCP behind this — SQLcl is a
|
|
5
|
+
* command-line tool. This reuses the dashboard's `sqlcl-session` layer, which
|
|
6
|
+
* shells out to the same `sql` binary and reads the same wallet that Oracle's
|
|
7
|
+
* own SQLcl MCP uses, so connections stay in sync across every surface.
|
|
8
|
+
*
|
|
9
|
+
* Output is TOON on stdout; diagnostics on stderr; exit codes 0/1/2.
|
|
10
|
+
* AXI standards: https://toonformat.dev/reference/spec.html
|
|
11
|
+
*/
|
|
12
|
+
export declare function main(): Promise<void>;
|
|
13
|
+
/** Entry used by bin/: run main() and convert any escaped error into an AXI error (§6). */
|
|
14
|
+
export declare function run(): void;
|
|
15
|
+
/** Single source of truth for skills/sqlcl-cli/SKILL.md (§7). */
|
|
16
|
+
export declare function skillMarkdown(): string;
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oasis-sqlcl — AXI CLI for Oracle SQLcl (connections + SQL) on the Oasis DBs.
|
|
3
|
+
*
|
|
4
|
+
* Unlike the other Oasis CLIs there is no HTTP MCP behind this — SQLcl is a
|
|
5
|
+
* command-line tool. This reuses the dashboard's `sqlcl-session` layer, which
|
|
6
|
+
* shells out to the same `sql` binary and reads the same wallet that Oracle's
|
|
7
|
+
* own SQLcl MCP uses, so connections stay in sync across every surface.
|
|
8
|
+
*
|
|
9
|
+
* Output is TOON on stdout; diagnostics on stderr; exit codes 0/1/2.
|
|
10
|
+
* AXI standards: https://toonformat.dev/reference/spec.html
|
|
11
|
+
*/
|
|
12
|
+
import { listConnections, runSql, saveConnection, deleteConnection, probeConnection, validateConnectionName, summarizeSqlError, } from "./session.js";
|
|
13
|
+
import { loadSection, saveSection } from "./storage.js";
|
|
14
|
+
import { EXIT, emit, emitRaw, fail, binPath, parseArgs, flagStr, flagBool, flagInt, renderSkillDoc, runSetup, } from "./axi.js";
|
|
15
|
+
const DESCRIPTION = "Manage Oracle SQLcl connections and run SQL against the Oasis databases";
|
|
16
|
+
const BIN = "oasis-sqlcl";
|
|
17
|
+
const ROWS_DEFAULT = 50; // result rows shown before truncation
|
|
18
|
+
function getActive() {
|
|
19
|
+
return loadSection("sqlcl").active;
|
|
20
|
+
}
|
|
21
|
+
function setActive(name) {
|
|
22
|
+
return saveSection("sqlcl", s => { s.active = name; return s; });
|
|
23
|
+
}
|
|
24
|
+
function clearActive() {
|
|
25
|
+
return saveSection("sqlcl", s => { delete s.active; return s; });
|
|
26
|
+
}
|
|
27
|
+
/** Resolve the connection to run against: --conn > active > sole connection > error. */
|
|
28
|
+
function resolveConn(parsed, conns) {
|
|
29
|
+
const explicit = flagStr(parsed, "--conn");
|
|
30
|
+
if (explicit) {
|
|
31
|
+
if (!conns.some(c => c.name === explicit)) {
|
|
32
|
+
fail(`connection '${explicit}' not found`, `Run \`${BIN} connections\` to list saved connections`);
|
|
33
|
+
}
|
|
34
|
+
return explicit;
|
|
35
|
+
}
|
|
36
|
+
const active = getActive();
|
|
37
|
+
if (active && conns.some(c => c.name === active))
|
|
38
|
+
return active;
|
|
39
|
+
if (conns.length === 1)
|
|
40
|
+
return conns[0].name;
|
|
41
|
+
if (conns.length === 0) {
|
|
42
|
+
fail("no saved connections", `Add one with \`${BIN} add <name> --host <h> --service <s> --user <u> --password <p>\``);
|
|
43
|
+
}
|
|
44
|
+
fail("no active connection selected", `Run \`${BIN} use <name>\` to pick one, or pass \`--conn <name>\``);
|
|
45
|
+
}
|
|
46
|
+
// ─── Output helpers ──────────────────────────────────────────────────
|
|
47
|
+
// eslint-disable-next-line no-control-regex -- intentionally matches the ESC byte to strip ANSI colour codes
|
|
48
|
+
const ANSI = /\x1b\[[0-9;]*m/g;
|
|
49
|
+
/** Best human error line: prefer the actual ORA-/SP2-/PLS- message over SQLcl's framing. */
|
|
50
|
+
function sqlErrorMessage(r) {
|
|
51
|
+
const lines = `${r.stdout}\n${r.stderr}`.split(/\r?\n/).map(l => l.trim()).filter(Boolean);
|
|
52
|
+
const codeLines = lines
|
|
53
|
+
.filter(l => /\b(ORA|SP2|PLS)-\d{3,5}\b/.test(l))
|
|
54
|
+
.map(l => l.replace(/^SQL Error:\s*/i, ""));
|
|
55
|
+
if (codeLines.length)
|
|
56
|
+
return [...new Set(codeLines)].slice(0, 3).join("; ");
|
|
57
|
+
return summarizeSqlError(r);
|
|
58
|
+
}
|
|
59
|
+
function hasSqlError(r) {
|
|
60
|
+
// SQLcl prints errors as a text "Error report" even in CSV mode, and the code
|
|
61
|
+
// often appears mid-line ("SQL Error: ORA-00942: ..."), so match anywhere.
|
|
62
|
+
const combined = `${r.stdout}\n${r.stderr}`;
|
|
63
|
+
return /\b(ORA|SP2|PLS)-\d{3,5}\b/.test(combined) || /\bSQL Error\b|\bError report\b/i.test(combined);
|
|
64
|
+
}
|
|
65
|
+
/** Parse SQLcl CSV output (RFC-4180-ish: double-quoted fields, "" escapes a quote). */
|
|
66
|
+
function parseCsv(text) {
|
|
67
|
+
const rows = [];
|
|
68
|
+
let row = [];
|
|
69
|
+
let field = "";
|
|
70
|
+
let inQuotes = false;
|
|
71
|
+
for (let i = 0; i < text.length; i++) {
|
|
72
|
+
const ch = text[i];
|
|
73
|
+
if (inQuotes) {
|
|
74
|
+
if (ch === '"') {
|
|
75
|
+
if (text[i + 1] === '"') {
|
|
76
|
+
field += '"';
|
|
77
|
+
i++;
|
|
78
|
+
}
|
|
79
|
+
else
|
|
80
|
+
inQuotes = false;
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
field += ch;
|
|
84
|
+
}
|
|
85
|
+
else if (ch === '"') {
|
|
86
|
+
inQuotes = true;
|
|
87
|
+
}
|
|
88
|
+
else if (ch === ",") {
|
|
89
|
+
row.push(field);
|
|
90
|
+
field = "";
|
|
91
|
+
}
|
|
92
|
+
else if (ch === "\n" || ch === "\r") {
|
|
93
|
+
if (ch === "\r" && text[i + 1] === "\n")
|
|
94
|
+
i++;
|
|
95
|
+
row.push(field);
|
|
96
|
+
field = "";
|
|
97
|
+
if (row.length > 1 || row[0] !== "")
|
|
98
|
+
rows.push(row);
|
|
99
|
+
row = [];
|
|
100
|
+
}
|
|
101
|
+
else
|
|
102
|
+
field += ch;
|
|
103
|
+
}
|
|
104
|
+
if (field !== "" || row.length) {
|
|
105
|
+
row.push(field);
|
|
106
|
+
if (row.length > 1 || row[0] !== "")
|
|
107
|
+
rows.push(row);
|
|
108
|
+
}
|
|
109
|
+
return rows;
|
|
110
|
+
}
|
|
111
|
+
// ─── Commands ───────────────────────────────────────────────────────
|
|
112
|
+
function connRows(conns) {
|
|
113
|
+
return conns.map(c => ({ name: c.name, user: c.user, host: c.host, service: c.service }));
|
|
114
|
+
}
|
|
115
|
+
async function cmdHome() {
|
|
116
|
+
const conns = listConnections();
|
|
117
|
+
const active = getActive();
|
|
118
|
+
const doc = {
|
|
119
|
+
bin: binPath(),
|
|
120
|
+
description: DESCRIPTION,
|
|
121
|
+
active: active && conns.some(c => c.name === active) ? active : (conns.length === 1 ? `${conns[0].name} (only connection)` : "none"),
|
|
122
|
+
count: conns.length,
|
|
123
|
+
};
|
|
124
|
+
if (conns.length === 0) {
|
|
125
|
+
doc.connections = [];
|
|
126
|
+
emit(doc);
|
|
127
|
+
emitRaw("connections: 0 saved connections");
|
|
128
|
+
emit({ help: [`Run \`${BIN} add <name> --host <h> --service <s> --user <u> --password <p>\` to add one`] });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
doc.connections = connRows(conns);
|
|
132
|
+
doc.help = [
|
|
133
|
+
`Run \`${BIN} run "SELECT ..." \` to query the active connection`,
|
|
134
|
+
`Run \`${BIN} use <name>\` to switch the active connection`,
|
|
135
|
+
`Run \`${BIN} run "<sql>" --conn <name>\` to target a specific one`,
|
|
136
|
+
];
|
|
137
|
+
emit(doc);
|
|
138
|
+
}
|
|
139
|
+
async function cmdConnections() {
|
|
140
|
+
const conns = listConnections();
|
|
141
|
+
const active = getActive();
|
|
142
|
+
if (conns.length === 0) {
|
|
143
|
+
emit({ connections: [] });
|
|
144
|
+
emitRaw("connections: 0 saved connections");
|
|
145
|
+
emit({ help: [`Run \`${BIN} add <name> --host <h> --service <s> --user <u> --password <p>\` to add one`] });
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
emit({
|
|
149
|
+
active: active && conns.some(c => c.name === active) ? active : "none",
|
|
150
|
+
count: conns.length,
|
|
151
|
+
connections: connRows(conns),
|
|
152
|
+
help: [`Run \`${BIN} use <name>\` to set the active connection`],
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async function cmdUse(parsed) {
|
|
156
|
+
const name = parsed.positionals[0];
|
|
157
|
+
if (!name)
|
|
158
|
+
fail("connection name is required", `${BIN} use <name>`, EXIT.USAGE);
|
|
159
|
+
const conns = listConnections();
|
|
160
|
+
if (!conns.some(c => c.name === name)) {
|
|
161
|
+
fail(`connection '${name}' not found`, `Run \`${BIN} connections\` to list saved connections`);
|
|
162
|
+
}
|
|
163
|
+
if (getActive() === name) {
|
|
164
|
+
emit({ active: name, note: "already active (no-op)" });
|
|
165
|
+
return; // idempotent — exit 0
|
|
166
|
+
}
|
|
167
|
+
await setActive(name);
|
|
168
|
+
emit({ active: name });
|
|
169
|
+
}
|
|
170
|
+
async function cmdAdd(parsed) {
|
|
171
|
+
const name = parsed.positionals[0];
|
|
172
|
+
if (!name)
|
|
173
|
+
fail("connection name is required", `${BIN} add <name> --host <h> --service <s> --user <u> --password <p>`, EXIT.USAGE);
|
|
174
|
+
const nameErr = validateConnectionName(name);
|
|
175
|
+
if (nameErr)
|
|
176
|
+
fail(nameErr, undefined, EXIT.USAGE);
|
|
177
|
+
const host = flagStr(parsed, "--host");
|
|
178
|
+
const service = flagStr(parsed, "--service");
|
|
179
|
+
const user = flagStr(parsed, "--user");
|
|
180
|
+
const password = flagStr(parsed, "--password");
|
|
181
|
+
const port = flagInt(parsed, "--port") ?? 1521;
|
|
182
|
+
const missing = [!host && "--host", !service && "--service", !user && "--user", !password && "--password"].filter(Boolean);
|
|
183
|
+
if (missing.length) {
|
|
184
|
+
fail(`missing required flag(s): ${missing.join(", ")}`, `${BIN} add ${name} --host <h> --service <s> --user <u> --password <p> [--port ${port}]`, EXIT.USAGE);
|
|
185
|
+
}
|
|
186
|
+
const result = await saveConnection({ name, host: host, port, service: service, user: user, password: password });
|
|
187
|
+
if (!result.ok) {
|
|
188
|
+
fail(`could not save '${name}': ${result.message}`, "Check host/port/service/user/password and that the DB is reachable");
|
|
189
|
+
}
|
|
190
|
+
// First connection becomes active automatically.
|
|
191
|
+
if (!getActive())
|
|
192
|
+
await setActive(name);
|
|
193
|
+
emit({ added: name, user, host, service, active: getActive() === name });
|
|
194
|
+
}
|
|
195
|
+
async function cmdRm(parsed) {
|
|
196
|
+
const name = parsed.positionals[0];
|
|
197
|
+
if (!name)
|
|
198
|
+
fail("connection name is required", `${BIN} rm <name>`, EXIT.USAGE);
|
|
199
|
+
const existed = listConnections().some(c => c.name === name);
|
|
200
|
+
if (!existed) {
|
|
201
|
+
emit({ removed: name, note: "not found (no-op)" });
|
|
202
|
+
return; // idempotent — desired state (absent) already holds
|
|
203
|
+
}
|
|
204
|
+
const r = await deleteConnection(name);
|
|
205
|
+
if (r.code !== 0)
|
|
206
|
+
fail(`could not remove '${name}': ${summarizeSqlError(r)}`);
|
|
207
|
+
if (getActive() === name)
|
|
208
|
+
await clearActive();
|
|
209
|
+
emit({ removed: name });
|
|
210
|
+
}
|
|
211
|
+
async function cmdTest(parsed) {
|
|
212
|
+
const host = flagStr(parsed, "--host");
|
|
213
|
+
const service = flagStr(parsed, "--service");
|
|
214
|
+
const user = flagStr(parsed, "--user");
|
|
215
|
+
const password = flagStr(parsed, "--password");
|
|
216
|
+
const port = flagInt(parsed, "--port") ?? 1521;
|
|
217
|
+
const missing = [!host && "--host", !service && "--service", !user && "--user", !password && "--password"].filter(Boolean);
|
|
218
|
+
if (missing.length) {
|
|
219
|
+
fail(`missing required flag(s): ${missing.join(", ")}`, `${BIN} test --host <h> --service <s> --user <u> --password <p> [--port ${port}]`, EXIT.USAGE);
|
|
220
|
+
}
|
|
221
|
+
const result = await probeConnection({ name: "probe", host: host, port, service: service, user: user, password: password });
|
|
222
|
+
if (!result.ok)
|
|
223
|
+
fail(`connection failed: ${result.message}`, "Check host/port/service/user/password and DB reachability");
|
|
224
|
+
emit({ test: "ok", host, port, service, user });
|
|
225
|
+
}
|
|
226
|
+
async function cmdRun(parsed) {
|
|
227
|
+
const sql = parsed.positionals.join(" ").trim();
|
|
228
|
+
if (!sql)
|
|
229
|
+
fail("a SQL statement is required", `${BIN} run "SELECT * FROM dual"`, EXIT.USAGE);
|
|
230
|
+
const conns = listConnections();
|
|
231
|
+
const conn = resolveConn(parsed, conns);
|
|
232
|
+
const raw = flagBool(parsed, "--raw");
|
|
233
|
+
const limit = flagInt(parsed, "--limit") ?? ROWS_DEFAULT;
|
|
234
|
+
const r = await runSql(conn, sql, { format: raw ? "ansiconsole" : "csv", timeoutMs: 60_000 });
|
|
235
|
+
// --raw dumps SQLcl output verbatim (errors included) — that is its purpose.
|
|
236
|
+
if (raw) {
|
|
237
|
+
emit({ conn });
|
|
238
|
+
emitRaw("");
|
|
239
|
+
emitRaw(r.stdout.replace(ANSI, "").replace(/\s+$/, "") || "(no output)");
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (r.code !== 0 && !r.stdout) {
|
|
243
|
+
fail(`sqlcl failed: ${sqlErrorMessage(r)}`);
|
|
244
|
+
}
|
|
245
|
+
if (hasSqlError(r)) {
|
|
246
|
+
fail(sqlErrorMessage(r), `Run \`${BIN} run "<sql>" --raw\` to see full SQLcl output`);
|
|
247
|
+
}
|
|
248
|
+
const records = parseCsv(r.stdout.trim());
|
|
249
|
+
if (records.length === 0) {
|
|
250
|
+
emit({ conn, result: "statement executed (no rows returned)" });
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const [header, ...dataRows] = records;
|
|
254
|
+
if (dataRows.length === 0) {
|
|
255
|
+
emit({ conn, columns: header.join(","), rows: 0 });
|
|
256
|
+
emitRaw("rows: 0 rows");
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const shown = dataRows.slice(0, limit);
|
|
260
|
+
const truncated = dataRows.length > limit;
|
|
261
|
+
emit({
|
|
262
|
+
conn,
|
|
263
|
+
count: truncated ? `${shown.length} of ${dataRows.length}` : dataRows.length,
|
|
264
|
+
rows: shown.map(row => Object.fromEntries(header.map((h, i) => [h, row[i] ?? ""]))),
|
|
265
|
+
...(truncated ? { help: [`Run with \`--limit ${dataRows.length}\` or refine the query to see all rows`] } : {}),
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
// ─── Ambient (SessionStart) ─────────────────────────────────────────
|
|
269
|
+
/**
|
|
270
|
+
* Ambient snapshot (AXI §7): saved connections + which is active. Reads the
|
|
271
|
+
* local wallet only (no DB round-trip), so it is instant and safe to run every
|
|
272
|
+
* session. Silent when there are no connections.
|
|
273
|
+
*/
|
|
274
|
+
async function cmdAmbient() {
|
|
275
|
+
let conns;
|
|
276
|
+
try {
|
|
277
|
+
conns = listConnections();
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (conns.length === 0)
|
|
283
|
+
return;
|
|
284
|
+
const active = getActive();
|
|
285
|
+
const bin = binPath();
|
|
286
|
+
emitRaw(`oasis-sqlcl CLI ready — invoke: ${bin} (append \`help\` for all commands)`);
|
|
287
|
+
emit({
|
|
288
|
+
active: active && conns.some(c => c.name === active) ? active : (conns.length === 1 ? conns[0].name : "none"),
|
|
289
|
+
connections: connRows(conns),
|
|
290
|
+
help: [`Run \`${bin} run "<sql>"\` to query, \`${bin} use <name>\` to switch`],
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// ─── Help ───────────────────────────────────────────────────────────
|
|
294
|
+
const HELP = {
|
|
295
|
+
connections: [`${BIN} connections — list saved SQLcl connections and the active one`, "", "examples:", ` ${BIN} connections`].join("\n"),
|
|
296
|
+
use: [`${BIN} use <name> — set the active connection`, "", "examples:", ` ${BIN} use oasisdev`].join("\n"),
|
|
297
|
+
add: [
|
|
298
|
+
`${BIN} add <name> — save a connection into the SQLcl wallet (verifies it first)`,
|
|
299
|
+
"",
|
|
300
|
+
"flags:",
|
|
301
|
+
" --host <h> required",
|
|
302
|
+
" --service <s> required (service name / SID)",
|
|
303
|
+
" --user <u> required",
|
|
304
|
+
" --password <p> required",
|
|
305
|
+
" --port <n> default 1521",
|
|
306
|
+
"",
|
|
307
|
+
"examples:",
|
|
308
|
+
` ${BIN} add oasisdev --host db.internal --service ORCLPDB1 --user app --password secret`,
|
|
309
|
+
].join("\n"),
|
|
310
|
+
rm: [`${BIN} rm <name> — remove a connection from the wallet`, "", "examples:", ` ${BIN} rm oasisdev`].join("\n"),
|
|
311
|
+
test: [
|
|
312
|
+
`${BIN} test — verify credentials without saving`,
|
|
313
|
+
"",
|
|
314
|
+
"flags: --host --service --user --password [--port 1521] (all required except port)",
|
|
315
|
+
"",
|
|
316
|
+
"examples:",
|
|
317
|
+
` ${BIN} test --host db.internal --service ORCLPDB1 --user app --password secret`,
|
|
318
|
+
].join("\n"),
|
|
319
|
+
run: [
|
|
320
|
+
`${BIN} run <SQL> — run SQL against the active (or --conn) connection`,
|
|
321
|
+
"",
|
|
322
|
+
"flags:",
|
|
323
|
+
" --conn <name> target a specific connection instead of the active one",
|
|
324
|
+
" --limit <n> max result rows to print (default 50)",
|
|
325
|
+
" --raw print raw SQLcl output (for DML feedback, DESCRIBE, PL/SQL)",
|
|
326
|
+
"",
|
|
327
|
+
"examples:",
|
|
328
|
+
` ${BIN} run "SELECT * FROM dual"`,
|
|
329
|
+
` ${BIN} run "SELECT id, name FROM patients WHERE rownum <= 10" --conn oasisdev`,
|
|
330
|
+
` ${BIN} run "UPDATE t SET x = 1 WHERE id = 5" --raw`,
|
|
331
|
+
].join("\n"),
|
|
332
|
+
};
|
|
333
|
+
function topHelp() {
|
|
334
|
+
return [
|
|
335
|
+
`${BIN} — ${DESCRIPTION}`,
|
|
336
|
+
`bin: ${binPath()}`,
|
|
337
|
+
"",
|
|
338
|
+
"commands:",
|
|
339
|
+
" (no args) live view: saved connections + active",
|
|
340
|
+
" connections list saved connections",
|
|
341
|
+
" use <name> set the active connection",
|
|
342
|
+
" add <name> save a connection (--host --service --user --password)",
|
|
343
|
+
" rm <name> remove a connection",
|
|
344
|
+
" test verify credentials without saving",
|
|
345
|
+
" run <SQL> run SQL (--conn, --limit, --raw)",
|
|
346
|
+
" setup register ambient context for Codex + OpenCode",
|
|
347
|
+
"",
|
|
348
|
+
`Run \`${BIN} <command> --help\` for flags and examples.`,
|
|
349
|
+
].join("\n");
|
|
350
|
+
}
|
|
351
|
+
const SKILL_SPEC = {
|
|
352
|
+
name: "sqlcl-cli",
|
|
353
|
+
binName: BIN,
|
|
354
|
+
description: "Manage Oracle SQLcl connections and run SQL against the Oasis databases from the shell — list/add/remove/switch saved connections and execute queries or DML. Use when the user asks about Oracle DB connections, running SQL/queries, checking data, or SQLcl on the Oasis databases.",
|
|
355
|
+
intro: `Shell CLI over Oracle SQLcl (same \`sql\` binary + wallet as the SQLcl MCP). Requires Oracle SQLcl (\`sql\`) installed: ~/.oasis/sqlcl/bin, $SQLCL_PATH, or on PATH.`,
|
|
356
|
+
extra: [
|
|
357
|
+
"## Connections",
|
|
358
|
+
"",
|
|
359
|
+
"Connections live in SQLcl's wallet (`~/.dbtools/connections`). The active",
|
|
360
|
+
"connection (a pointer in `~/.oasis.json`) is used by `run` unless `--conn` is given.",
|
|
361
|
+
],
|
|
362
|
+
commands: [
|
|
363
|
+
{ cmd: "(no args)", summary: "live view: saved connections + which is active" },
|
|
364
|
+
{ cmd: "connections", summary: "list saved connections" },
|
|
365
|
+
{ cmd: "use <name>", summary: "set the active connection" },
|
|
366
|
+
{ cmd: "add <name> --host <h> --service <s> --user <u> --password <p>", summary: "save + verify a connection" },
|
|
367
|
+
{ cmd: "rm <name>", summary: "remove a connection" },
|
|
368
|
+
{ cmd: "test --host <h> --service <s> --user <u> --password <p>", summary: "verify credentials without saving" },
|
|
369
|
+
{ cmd: "run <SQL> [--conn <n>] [--limit <n>] [--raw]", summary: "run SQL; results as a TOON table (--raw for DML/PLSQL output)" },
|
|
370
|
+
],
|
|
371
|
+
examples: [
|
|
372
|
+
"# See connections, pick one, query",
|
|
373
|
+
`${BIN}`,
|
|
374
|
+
`${BIN} use oasisdev`,
|
|
375
|
+
`${BIN} run "SELECT id, name FROM patients WHERE rownum <= 10"`,
|
|
376
|
+
"",
|
|
377
|
+
"# Target a specific connection, or run DML with raw feedback",
|
|
378
|
+
`${BIN} run "SELECT * FROM dual" --conn oasisqa`,
|
|
379
|
+
`${BIN} run "UPDATE t SET x = 1 WHERE id = 5" --raw`,
|
|
380
|
+
],
|
|
381
|
+
notes: [
|
|
382
|
+
"`run`: SELECT → TOON table (50 rows, `--limit`); `--raw` for DML/DESCRIBE/PL-SQL output.",
|
|
383
|
+
"`add`/`test` connect to verify (fail with the ORA-… error). First connection becomes active.",
|
|
384
|
+
],
|
|
385
|
+
};
|
|
386
|
+
// ─── Dispatch ───────────────────────────────────────────────────────
|
|
387
|
+
const COMMAND_FLAGS = {
|
|
388
|
+
connections: {},
|
|
389
|
+
use: {},
|
|
390
|
+
add: { "--host": "value", "--service": "value", "--user": "value", "--password": "value", "--port": "value" },
|
|
391
|
+
rm: {},
|
|
392
|
+
test: { "--host": "value", "--service": "value", "--user": "value", "--password": "value", "--port": "value" },
|
|
393
|
+
run: { "--conn": "value", "--limit": "value", "--raw": "bool" },
|
|
394
|
+
};
|
|
395
|
+
export async function main() {
|
|
396
|
+
const [, , command, ...rest] = process.argv;
|
|
397
|
+
if (command === "--ambient") {
|
|
398
|
+
await cmdAmbient().catch(() => { });
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
if (command === "--skill-doc") {
|
|
402
|
+
emitRaw(renderSkillDoc(SKILL_SPEC));
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
if (command === "setup") {
|
|
406
|
+
runSetup(BIN);
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (command === undefined) {
|
|
410
|
+
await cmdHome();
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (command === "help" || command === "--help" || command === "-h") {
|
|
414
|
+
const topic = rest[0];
|
|
415
|
+
emitRaw(topic && HELP[topic] ? HELP[topic] : topHelp());
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
if (!(command in COMMAND_FLAGS)) {
|
|
419
|
+
fail(`unknown command '${command}'`, `valid commands: ${Object.keys(COMMAND_FLAGS).join(", ")} (run \`${BIN} help\`)`, EXIT.USAGE);
|
|
420
|
+
}
|
|
421
|
+
const known = COMMAND_FLAGS[command];
|
|
422
|
+
const parsed = parseArgs(rest, known, `${BIN} ${command}`);
|
|
423
|
+
if (flagBool(parsed, "--help")) {
|
|
424
|
+
emitRaw(HELP[command] ?? topHelp());
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
switch (command) {
|
|
428
|
+
case "connections": return cmdConnections();
|
|
429
|
+
case "use": return cmdUse(parsed);
|
|
430
|
+
case "add": return cmdAdd(parsed);
|
|
431
|
+
case "rm": return cmdRm(parsed);
|
|
432
|
+
case "test": return cmdTest(parsed);
|
|
433
|
+
case "run": return cmdRun(parsed);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/** Entry used by bin/: run main() and convert any escaped error into an AXI error (§6). */
|
|
437
|
+
export function run() {
|
|
438
|
+
main().catch(err => {
|
|
439
|
+
fail(err instanceof Error ? err.message : String(err));
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
/** Single source of truth for skills/sqlcl-cli/SKILL.md (§7). */
|
|
443
|
+
export function skillMarkdown() {
|
|
444
|
+
return renderSkillDoc(SKILL_SPEC);
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service identity + base URL for this CLI.
|
|
3
|
+
*
|
|
4
|
+
* The ServiceId union spans every Oasis service so credential sections in the
|
|
5
|
+
* shared ~/.oasis.json keep their canonical keys — this CLI only ever passes
|
|
6
|
+
* SERVICE, but the harness (axi.ts) stays byte-identical across all five
|
|
7
|
+
* standalone CLI repos.
|
|
8
|
+
*/
|
|
9
|
+
export type ServiceId = "jira" | "bitbucket" | "jenkins" | "sqlcl" | "k8s";
|
|
10
|
+
export declare const SERVICE: ServiceId;
|
|
11
|
+
export declare const SERVICE_LABEL = "SQLcl";
|
|
12
|
+
/** Resolve the base URL for a service, honouring a user-supplied override in creds. */
|
|
13
|
+
export declare function getServiceBaseUrl(service: ServiceId, credsUrl?: string): string | undefined;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service identity + base URL for this CLI.
|
|
3
|
+
*
|
|
4
|
+
* The ServiceId union spans every Oasis service so credential sections in the
|
|
5
|
+
* shared ~/.oasis.json keep their canonical keys — this CLI only ever passes
|
|
6
|
+
* SERVICE, but the harness (axi.ts) stays byte-identical across all five
|
|
7
|
+
* standalone CLI repos.
|
|
8
|
+
*/
|
|
9
|
+
export const SERVICE = "sqlcl";
|
|
10
|
+
export const SERVICE_LABEL = "SQLcl";
|
|
11
|
+
const BASE_URLS = {
|
|
12
|
+
jira: "https://support.oasisapp.services/",
|
|
13
|
+
bitbucket: "https://jedbucket.oasisapp.services",
|
|
14
|
+
jenkins: "https://jenkins.oasisapp.services/",
|
|
15
|
+
};
|
|
16
|
+
/** Resolve the base URL for a service, honouring a user-supplied override in creds. */
|
|
17
|
+
export function getServiceBaseUrl(service, credsUrl) {
|
|
18
|
+
return credsUrl || BASE_URLS[service];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,OAAO,GAAc,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,MAAM,SAAS,GAAuC;IACpD,IAAI,EAAE,oCAAoC;IAC1C,SAAS,EAAE,qCAAqC;IAChD,OAAO,EAAE,oCAAoC;CAC9C,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,OAAkB,EAAE,QAAiB;IACrE,OAAO,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLcl runner — talks to Oracle's SQLcl for everything.
|
|
3
|
+
*
|
|
4
|
+
* Storage model: all named connections live in SQLcl's own wallet
|
|
5
|
+
* (`%APPDATA%/dbtools/connections/` on Windows, `~/.dbtools/connections/`
|
|
6
|
+
* on Mac/Linux). Same store the official SQLcl MCP reads, so the dashboard
|
|
7
|
+
* and Claude's MCP tools are always in sync — no parallel state in
|
|
8
|
+
* ~/.oasis.json.
|
|
9
|
+
*
|
|
10
|
+
* The only thing we keep in ~/.oasis.json is `sqlcl.active` (just a name),
|
|
11
|
+
* because SQLcl itself is stateless between invocations and has no concept
|
|
12
|
+
* of a "currently selected" connection.
|
|
13
|
+
*
|
|
14
|
+
* Commands used:
|
|
15
|
+
* - `sql -L -S -name <N>` to run SQL against a saved connection
|
|
16
|
+
* - `sql -S /nolog` + `conn -savepwd -save …` (add)
|
|
17
|
+
* - `sql -S /nolog` + `connmgr delete -conn …` (remove)
|
|
18
|
+
*/
|
|
19
|
+
export interface Connection {
|
|
20
|
+
name: string;
|
|
21
|
+
host: string;
|
|
22
|
+
port: number;
|
|
23
|
+
service: string;
|
|
24
|
+
user: string;
|
|
25
|
+
}
|
|
26
|
+
export interface RunResult {
|
|
27
|
+
stdout: string;
|
|
28
|
+
stderr: string;
|
|
29
|
+
code: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* List saved connections by reading each subdirectory's `dbtools.properties`.
|
|
33
|
+
* Simpler + faster than shelling out and parsing `connmgr list` (which has
|
|
34
|
+
* ANSI codes and no machine-friendly output).
|
|
35
|
+
*/
|
|
36
|
+
export declare function listConnections(): Connection[];
|
|
37
|
+
/**
|
|
38
|
+
* Run SQL against a saved connection by name (wallet-backed, no creds on cmdline).
|
|
39
|
+
*
|
|
40
|
+
* `longBytes` controls `SET LONG` / `SET LONGCHUNKSIZE` — unlike the MCP pool
|
|
41
|
+
* path (which gets `SP2-0738` restricted-command errors), direct spawn lets us
|
|
42
|
+
* lift the LOB cap freely. Used by /api/sqlcl/lob-full to fetch full values.
|
|
43
|
+
*/
|
|
44
|
+
export declare function runSql(connectionName: string, sql: string, opts?: {
|
|
45
|
+
timeoutMs?: number;
|
|
46
|
+
format?: "ansiconsole" | "csv";
|
|
47
|
+
longBytes?: number;
|
|
48
|
+
}): Promise<RunResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Run a raw SQLcl script against a saved connection, verbatim — no trailing-`;`
|
|
51
|
+
* rewriting, no format prelude. Caller owns the entire script including
|
|
52
|
+
* `SET …`, PL/SQL blocks ending with `/`, and `EXIT`.
|
|
53
|
+
*
|
|
54
|
+
* Used for `DBMS_SQL.describe_columns` which is a PL/SQL block terminated by
|
|
55
|
+
* `/` on its own line — the default runSql() strips that.
|
|
56
|
+
*/
|
|
57
|
+
export declare function runSqlclScript(connectionName: string, script: string, opts?: {
|
|
58
|
+
timeoutMs?: number;
|
|
59
|
+
}): Promise<RunResult>;
|
|
60
|
+
export declare function validateConnectionName(name: string): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Save a named connection into the SQLcl wallet. The save-and-connect happens
|
|
63
|
+
* in a single `conn -savepwd -save` command — SQLcl only persists the wallet
|
|
64
|
+
* entry if auth actually succeeds, so a successful return means the creds are
|
|
65
|
+
* verified.
|
|
66
|
+
*/
|
|
67
|
+
export declare function saveConnection(c: Connection & {
|
|
68
|
+
password: string;
|
|
69
|
+
}): Promise<{
|
|
70
|
+
ok: boolean;
|
|
71
|
+
message: string;
|
|
72
|
+
}>;
|
|
73
|
+
export declare function deleteConnection(name: string): Promise<RunResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Verify credentials without persisting them — save under a throwaway name,
|
|
76
|
+
* check if the wallet gained an entry, then remove it regardless.
|
|
77
|
+
*/
|
|
78
|
+
export declare function probeConnection(c: Connection & {
|
|
79
|
+
password: string;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
ok: boolean;
|
|
82
|
+
message: string;
|
|
83
|
+
}>;
|
|
84
|
+
export declare function summarizeSqlError(r: RunResult): string;
|