nomoreide 0.1.97 → 0.1.99

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 (79) hide show
  1. package/README.md +16 -1
  2. package/dist/cli/commands.js +5 -1
  3. package/dist/cli/commands.js.map +1 -1
  4. package/dist/cli/database.d.ts +2 -0
  5. package/dist/cli/database.js +145 -0
  6. package/dist/cli/database.js.map +1 -0
  7. package/dist/core/agent-profiles/types.d.ts +6 -6
  8. package/dist/core/config-store.d.ts +16 -2
  9. package/dist/core/config-store.js +55 -2
  10. package/dist/core/config-store.js.map +1 -1
  11. package/dist/core/db/catalog.d.ts +57 -0
  12. package/dist/core/db/catalog.js +38 -0
  13. package/dist/core/db/catalog.js.map +1 -0
  14. package/dist/core/db/driver.d.ts +20 -3
  15. package/dist/core/db/driver.js +8 -0
  16. package/dist/core/db/driver.js.map +1 -1
  17. package/dist/core/db/mysql-driver.d.ts +8 -1
  18. package/dist/core/db/mysql-driver.js +167 -7
  19. package/dist/core/db/mysql-driver.js.map +1 -1
  20. package/dist/core/db/postgres-driver.d.ts +8 -1
  21. package/dist/core/db/postgres-driver.js +235 -4
  22. package/dist/core/db/postgres-driver.js.map +1 -1
  23. package/dist/core/db/sqlite-driver.d.ts +7 -1
  24. package/dist/core/db/sqlite-driver.js +123 -4
  25. package/dist/core/db/sqlite-driver.js.map +1 -1
  26. package/dist/core/db-peek.d.ts +24 -0
  27. package/dist/core/db-peek.js +120 -0
  28. package/dist/core/db-peek.js.map +1 -1
  29. package/dist/core/db-write.d.ts +11 -0
  30. package/dist/core/db-write.js +118 -0
  31. package/dist/core/db-write.js.map +1 -1
  32. package/dist/core/git-actions.d.ts +12 -0
  33. package/dist/core/git-actions.js +48 -0
  34. package/dist/core/git-actions.js.map +1 -1
  35. package/dist/core/git-manager.d.ts +4 -1
  36. package/dist/core/git-manager.js +18 -2
  37. package/dist/core/git-manager.js.map +1 -1
  38. package/dist/core/github-auth.d.ts +28 -0
  39. package/dist/core/github-auth.js +134 -0
  40. package/dist/core/github-auth.js.map +1 -0
  41. package/dist/core/github-context.d.ts +12 -0
  42. package/dist/core/github-context.js +64 -0
  43. package/dist/core/github-context.js.map +1 -0
  44. package/dist/core/github-manager.d.ts +2 -0
  45. package/dist/core/github-manager.js.map +1 -1
  46. package/dist/core/process-manager.d.ts +14 -0
  47. package/dist/core/process-manager.js +39 -16
  48. package/dist/core/process-manager.js.map +1 -1
  49. package/dist/core/tool-call-store.d.ts +1 -0
  50. package/dist/core/tool-call-store.js +10 -1
  51. package/dist/core/tool-call-store.js.map +1 -1
  52. package/dist/core/types.d.ts +13 -0
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/mcp/tools/context.js +2 -2
  56. package/dist/mcp/tools/context.js.map +1 -1
  57. package/dist/mcp/tools/database.d.ts +1 -1
  58. package/dist/mcp/tools/database.js +53 -0
  59. package/dist/mcp/tools/database.js.map +1 -1
  60. package/dist/mcp/tools/github.js +10 -20
  61. package/dist/mcp/tools/github.js.map +1 -1
  62. package/dist/mcp/tools/index.d.ts +1 -1
  63. package/dist/web/client/assets/{code-editor-Bv3tCQrj.js → code-editor-DUgkd8Vo.js} +1 -1
  64. package/dist/web/client/assets/index-BTwlXmPn.css +1 -0
  65. package/dist/web/client/assets/index-CRM7WNxX.js +308 -0
  66. package/dist/web/client/assets/{system-process-table-q3WxburN.js → system-process-table-DbxLdSLC.js} +1 -1
  67. package/dist/web/client/index.html +3 -3
  68. package/dist/web/routes/database-routes.js +93 -2
  69. package/dist/web/routes/database-routes.js.map +1 -1
  70. package/dist/web/routes/git-routes.js +61 -1
  71. package/dist/web/routes/git-routes.js.map +1 -1
  72. package/dist/web/routes/github-context.d.ts +2 -8
  73. package/dist/web/routes/github-context.js +2 -29
  74. package/dist/web/routes/github-context.js.map +1 -1
  75. package/dist/web/routes/github-routes.js +157 -9
  76. package/dist/web/routes/github-routes.js.map +1 -1
  77. package/package.json +1 -1
  78. package/dist/web/client/assets/index-BeJHDwLO.css +0 -1
  79. package/dist/web/client/assets/index-zb3rhV5y.js +0 -308
@@ -1,4 +1,5 @@
1
- import { assertSafeIdentifier, clampLimit, clampOffset, columnsFromNames, normalizeRow, prepareUserQuery, } from "./driver.js";
1
+ import { capDefinition, objectFromIdentity, } from "./catalog.js";
2
+ import { assertExpectedDeleteCount, clampLimit, clampOffset, columnsFromNames, normalizeRow, prepareUserQuery, } from "./driver.js";
2
3
  /**
3
4
  * Postgres driver. By default every statement runs inside a `READ ONLY`
4
5
  * transaction so a mistaken write is rejected by the server. A driver
@@ -64,14 +65,204 @@ export class PostgresDriver {
64
65
  }));
65
66
  });
66
67
  }
68
+ capabilities() {
69
+ return {
70
+ objectKinds: ["table", "view", "materializedView", "function", "procedure", "sequence"],
71
+ tableDetails: ["columns", "indexes", "constraints", "triggers"],
72
+ };
73
+ }
74
+ async listSchemas() {
75
+ return this.withReadOnly(async (client) => {
76
+ const { rows } = await client.query(`SELECT schema_name AS name
77
+ FROM information_schema.schemata
78
+ WHERE schema_name <> 'information_schema'
79
+ AND schema_name NOT LIKE 'pg_%'
80
+ ORDER BY schema_name`);
81
+ return rows;
82
+ });
83
+ }
84
+ async listObjects(schema, kinds) {
85
+ const allowed = new Set(kinds ?? this.capabilities().objectKinds);
86
+ return this.withReadOnly(async (client) => {
87
+ const objects = [];
88
+ const { rows: relations } = await client.query(`SELECT c.relname AS name, c.relkind, c.oid::text AS oid
89
+ FROM pg_catalog.pg_class c
90
+ JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
91
+ WHERE n.nspname = $1 AND c.relkind IN ('r', 'p', 'v', 'm', 'S')
92
+ ORDER BY c.relname`, [schema]);
93
+ const kindFor = (relkind) => relkind === "v" ? "view" : relkind === "m" ? "materializedView" : relkind === "S" ? "sequence" : "table";
94
+ for (const relation of relations) {
95
+ const kind = kindFor(relation.relkind);
96
+ if (allowed.has(kind)) {
97
+ objects.push(objectFromIdentity({ schema, name: relation.name, kind, nativeId: relation.oid }));
98
+ }
99
+ }
100
+ const routineKinds = [...allowed].filter((kind) => kind === "function" || kind === "procedure");
101
+ if (routineKinds.length) {
102
+ const { rows: routines } = await client.query(`SELECT p.proname AS name, p.prokind, p.oid::text AS oid,
103
+ pg_get_function_identity_arguments(p.oid) AS arguments
104
+ FROM pg_catalog.pg_proc p
105
+ JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
106
+ WHERE n.nspname = $1 AND p.prokind IN ('f', 'p')
107
+ ORDER BY p.proname, arguments`, [schema]);
108
+ for (const routine of routines) {
109
+ const kind = routine.prokind === "p" ? "procedure" : "function";
110
+ if (!allowed.has(kind))
111
+ continue;
112
+ objects.push(objectFromIdentity({
113
+ schema,
114
+ name: `${routine.name}(${routine.arguments})`,
115
+ kind,
116
+ nativeId: routine.oid,
117
+ }));
118
+ }
119
+ }
120
+ return objects;
121
+ });
122
+ }
123
+ async describeObject(object) {
124
+ const live = await this.listObjects(object.schema, [object.kind]);
125
+ const resolved = live.find((candidate) => candidate.key === object.key);
126
+ if (!resolved)
127
+ throw new Error("Database object was not found in the live catalog.");
128
+ return this.withReadOnly(async (client) => {
129
+ const relationName = resolved.kind === "function" || resolved.kind === "procedure"
130
+ ? resolved.name.slice(0, resolved.name.indexOf("("))
131
+ : resolved.name;
132
+ const columns = ["table", "view", "materializedView"].includes(resolved.kind)
133
+ ? await this.columnsFor(client, resolved.schema, relationName)
134
+ : [];
135
+ const { rows: indexes } = await client.query(`SELECT indexname AS name, indexdef AS definition
136
+ FROM pg_catalog.pg_indexes
137
+ WHERE schemaname = $1 AND tablename = $2 ORDER BY indexname`, [resolved.schema, relationName]);
138
+ const { rows: constraints } = await client.query(`SELECT c.conname AS name, c.contype::text AS type,
139
+ pg_get_constraintdef(c.oid, true) AS definition
140
+ FROM pg_catalog.pg_constraint c
141
+ JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
142
+ JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
143
+ WHERE n.nspname = $1 AND r.relname = $2 ORDER BY c.conname`, [resolved.schema, relationName]);
144
+ const { rows: triggers } = await client.query(`SELECT t.tgname AS name, pg_get_triggerdef(t.oid, true) AS definition
145
+ FROM pg_catalog.pg_trigger t
146
+ JOIN pg_catalog.pg_class r ON r.oid = t.tgrelid
147
+ JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
148
+ WHERE NOT t.tgisinternal AND n.nspname = $1 AND r.relname = $2
149
+ ORDER BY t.tgname`, [resolved.schema, relationName]);
150
+ let definition;
151
+ if ((resolved.kind === "function" || resolved.kind === "procedure") && resolved.nativeId) {
152
+ const result = await client.query("SELECT pg_get_functiondef($1::oid) AS definition", [resolved.nativeId]);
153
+ definition = result.rows[0]?.definition;
154
+ }
155
+ else if (resolved.kind === "view" || resolved.kind === "materializedView") {
156
+ const result = await client.query("SELECT pg_get_viewdef($1::oid, true) AS definition", [resolved.nativeId]);
157
+ definition = result.rows[0]?.definition;
158
+ }
159
+ const createScript = await this.createScriptFor(client, resolved, definition, constraints, triggers);
160
+ return {
161
+ object: resolved,
162
+ columns,
163
+ indexes: indexes.map((index) => ({ ...index, definition: capDefinition(index.definition) ?? "", unique: /CREATE UNIQUE INDEX/i.test(index.definition) })),
164
+ constraints: constraints.map((constraint) => ({ ...constraint, definition: capDefinition(constraint.definition) ?? "" })),
165
+ triggers: triggers.map((trigger) => ({ ...trigger, definition: capDefinition(trigger.definition) ?? "" })),
166
+ definition: capDefinition(definition),
167
+ createScript: capDefinition(createScript),
168
+ };
169
+ });
170
+ }
171
+ async createScriptFor(client, object, definition, constraints, triggers) {
172
+ const qualifiedName = `${quoteIdentifier(object.schema)}.${quoteIdentifier(object.name)}`;
173
+ if (object.kind === "function" || object.kind === "procedure") {
174
+ return definition ? terminateStatement(definition) : undefined;
175
+ }
176
+ if (object.kind === "view" || object.kind === "materializedView") {
177
+ if (!definition)
178
+ return undefined;
179
+ const materialized = object.kind === "materializedView" ? "MATERIALIZED " : "";
180
+ return terminateStatement(`CREATE ${materialized}VIEW ${qualifiedName} AS\n${stripTerminator(definition)}`);
181
+ }
182
+ if (object.kind === "sequence") {
183
+ const result = await client.query(`SELECT format_type(s.seqtypid, NULL) AS data_type,
184
+ s.seqstart::text AS start_value,
185
+ s.seqincrement::text AS increment_by,
186
+ s.seqmin::text AS min_value,
187
+ s.seqmax::text AS max_value,
188
+ s.seqcache::text AS cache_size,
189
+ s.seqcycle AS cycle
190
+ FROM pg_catalog.pg_sequence s
191
+ WHERE s.seqrelid = $1::oid`, [object.nativeId]);
192
+ const sequence = result.rows[0];
193
+ if (!sequence)
194
+ return undefined;
195
+ return terminateStatement([
196
+ `CREATE SEQUENCE ${qualifiedName}`,
197
+ ` AS ${sequence.data_type}`,
198
+ ` INCREMENT BY ${sequence.increment_by}`,
199
+ ` MINVALUE ${sequence.min_value}`,
200
+ ` MAXVALUE ${sequence.max_value}`,
201
+ ` START WITH ${sequence.start_value}`,
202
+ ` CACHE ${sequence.cache_size}`,
203
+ sequence.cycle ? " CYCLE" : " NO CYCLE",
204
+ ].join("\n"));
205
+ }
206
+ if (object.kind !== "table" || !object.nativeId)
207
+ return undefined;
208
+ const { rows: columns } = await client.query(`SELECT a.attname AS name,
209
+ pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
210
+ pg_catalog.pg_get_expr(d.adbin, d.adrelid) AS default_value,
211
+ a.attnotnull AS not_null,
212
+ a.attidentity AS identity,
213
+ a.attgenerated AS generated
214
+ FROM pg_catalog.pg_attribute a
215
+ LEFT JOIN pg_catalog.pg_attrdef d
216
+ ON d.adrelid = a.attrelid AND d.adnum = a.attnum
217
+ WHERE a.attrelid = $1::oid AND a.attnum > 0 AND NOT a.attisdropped
218
+ ORDER BY a.attnum`, [object.nativeId]);
219
+ const columnLines = columns.map((column) => {
220
+ const parts = [quoteIdentifier(column.name), column.data_type];
221
+ if (column.generated === "s" && column.default_value) {
222
+ parts.push(`GENERATED ALWAYS AS (${column.default_value}) STORED`);
223
+ }
224
+ else if (column.identity) {
225
+ parts.push(column.identity === "a"
226
+ ? "GENERATED ALWAYS AS IDENTITY"
227
+ : "GENERATED BY DEFAULT AS IDENTITY");
228
+ }
229
+ else if (column.default_value) {
230
+ parts.push(`DEFAULT ${column.default_value}`);
231
+ }
232
+ if (column.not_null)
233
+ parts.push("NOT NULL");
234
+ return ` ${parts.join(" ")}`;
235
+ });
236
+ const constraintLines = constraints.map((constraint) => ` CONSTRAINT ${quoteIdentifier(constraint.name)} ${constraint.definition}`);
237
+ const relation = await client.query("SELECT pg_get_partkeydef($1::oid) AS partition_key", [object.nativeId]);
238
+ const createTable = [
239
+ `CREATE TABLE ${qualifiedName} (`,
240
+ [...columnLines, ...constraintLines].join(",\n"),
241
+ `)${relation.rows[0]?.partition_key ? ` PARTITION BY ${relation.rows[0].partition_key}` : ""};`,
242
+ ].join("\n");
243
+ const { rows: indexes } = await client.query(`SELECT i.indexdef AS definition
244
+ FROM pg_catalog.pg_indexes i
245
+ JOIN pg_catalog.pg_class idx ON idx.relname = i.indexname
246
+ JOIN pg_catalog.pg_namespace n ON n.oid = idx.relnamespace
247
+ WHERE i.schemaname = $1 AND i.tablename = $2 AND n.nspname = $1
248
+ AND NOT EXISTS (
249
+ SELECT 1 FROM pg_catalog.pg_constraint c WHERE c.conindid = idx.oid
250
+ )
251
+ ORDER BY i.indexname`, [object.schema, object.name]);
252
+ return [
253
+ createTable,
254
+ ...indexes.map((index) => terminateStatement(index.definition)),
255
+ ...triggers.map((trigger) => terminateStatement(trigger.definition)),
256
+ ].join("\n\n");
257
+ }
67
258
  async sampleRows(table, limit, offset) {
68
- const schema = assertSafeIdentifier(table.schema ?? "public");
69
- const name = assertSafeIdentifier(table.name);
259
+ const schema = table.schema ?? "public";
260
+ const name = table.name;
70
261
  const max = clampLimit(limit);
71
262
  const skip = clampOffset(offset);
72
263
  return this.withReadOnly(async (client) => {
73
264
  const columns = await this.columnsFor(client, schema, name);
74
- const { rows } = await client.query(`SELECT * FROM "${schema}"."${name}" LIMIT $1 OFFSET $2`, [max, skip]);
265
+ const { rows } = await client.query(`SELECT * FROM ${quoteIdentifier(schema)}.${quoteIdentifier(name)} LIMIT $1 OFFSET $2`, [max, skip]);
75
266
  return {
76
267
  columns,
77
268
  rows: rows.map((row) => normalizeRow(row)),
@@ -125,6 +316,37 @@ export class PostgresDriver {
125
316
  client.release();
126
317
  }
127
318
  }
319
+ async deleteRows(options) {
320
+ if (!this.writable)
321
+ throw new Error("This connection is read-only.");
322
+ const table = options.table.schema
323
+ ? `${quoteIdentifier(options.table.schema)}.${quoteIdentifier(options.table.name)}`
324
+ : quoteIdentifier(options.table.name);
325
+ const values = options.tuples.flatMap((tuple) => options.primaryKeys.map((column) => tuple[column]));
326
+ let parameter = 0;
327
+ const predicate = options.tuples
328
+ .map(() => `(${options.primaryKeys
329
+ .map((column) => `${quoteIdentifier(column)} = $${++parameter}`)
330
+ .join(" AND ")})`)
331
+ .join(" OR ");
332
+ const pool = await this.pool();
333
+ const client = await pool.connect();
334
+ try {
335
+ await client.query("BEGIN");
336
+ const result = await client.query(`DELETE FROM ${table} WHERE ${predicate}`, values);
337
+ const affectedRows = result.rowCount ?? 0;
338
+ assertExpectedDeleteCount(options, affectedRows);
339
+ await client.query(options.commit ? "COMMIT" : "ROLLBACK");
340
+ return { affectedRows, rows: [], columns: [], committed: options.commit };
341
+ }
342
+ catch (error) {
343
+ await client.query("ROLLBACK").catch(() => { });
344
+ throw error;
345
+ }
346
+ finally {
347
+ client.release();
348
+ }
349
+ }
128
350
  async columnsFor(client, schema, name) {
129
351
  const { rows } = await client.query(`SELECT c.column_name,
130
352
  c.data_type,
@@ -158,4 +380,13 @@ export class PostgresDriver {
158
380
  }
159
381
  }
160
382
  }
383
+ function quoteIdentifier(value) {
384
+ return `"${value.replaceAll('"', '""')}"`;
385
+ }
386
+ function stripTerminator(value) {
387
+ return value.trim().replace(/;+$/, "");
388
+ }
389
+ function terminateStatement(value) {
390
+ return `${stripTerminator(value)};`;
391
+ }
161
392
  //# sourceMappingURL=postgres-driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-driver.js","sourceRoot":"","sources":["../../../src/core/db/postgres-driver.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GAQjB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAKI;IAJpB,MAAM,GAAmB,UAAU,CAAC;IACrC,WAAW,GAAyB,IAAI,CAAC;IAChC,QAAQ,CAAU;IAEnC,YAA6B,GAAW,EAAE,UAAkC,EAAE;QAAjD,QAAG,GAAH,GAAG,CAAQ;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC;oBACjB,gBAAgB,EAAE,IAAI,CAAC,GAAG;oBAC1B,GAAG,EAAE,CAAC;oBACN,uBAAuB,EAAE,IAAI;oBAC7B,gEAAgE;oBAChE,iEAAiE;oBACjE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qCAAqC;iBAC3E,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,EAAsC;QAEtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAIjC;;;;4CAIoC,CACrC,CAAC;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,CAAC,YAAY;gBACxB,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,aAAa,EAAE,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,EAAE;aACvD,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,KAAa,EAAE,MAAe;QAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,kBAAkB,MAAM,MAAM,IAAI,sBAAsB,EACxD,CAAC,GAAG,EAAE,IAAI,CAAC,CACZ,CAAC;YACF,OAAO;gBACL,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACnE,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAe;QACzC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,wEAAwE;YACxE,qEAAqE;YACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,kBAAkB,SAAS,sBAAsB,EACjD,CAAC,GAAG,GAAG,CAAC,CAAC,CACV,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAC3C,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CACpE,CAAC,GAA4B,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CACpD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,SAAS;aACV,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAe;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7C,yEAAyE;YACzE,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CACpE,YAAY,CAAC,GAAG,CAAC,CAClB,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM;gBAC5C,IAAI;gBACJ,OAAO,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3E,SAAS,EAAE,MAAM;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,MAAkB,EAClB,MAAc,EACd,IAAY;QAEZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAMjC;;;;;;;;;;;;;;;;oCAgB8B,EAC9B,CAAC,MAAM,EAAE,IAAI,CAAC,CACf,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,WAAW;YACrB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;YACnC,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YACpC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"postgres-driver.js","sourceRoot":"","sources":["../../../src/core/db/postgres-driver.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { DatabaseEngine } from "../types.js";
2
- import { type DbDriver, type DbWriteDriver, type QueryResult, type RowSample, type TableRef, type WriteResult } from "./driver.js";
2
+ import { type DatabaseCapabilities, type DatabaseObject, type DatabaseObjectDetails, type DatabaseObjectKind, type DatabaseSchema } from "./catalog.js";
3
+ import { type DeleteRowsOptions, type DbDriver, type DbWriteDriver, type QueryResult, type RowSample, type TableRef, type WriteResult } from "./driver.js";
3
4
  /**
4
5
  * SQLite driver backed by Node's built-in `node:sqlite`. The file is opened
5
6
  * read-only, so the connection itself cannot mutate the database.
@@ -15,8 +16,13 @@ export declare class SqliteDriver implements DbDriver, DbWriteDriver {
15
16
  private db;
16
17
  testConnection(): Promise<void>;
17
18
  listTables(): Promise<TableRef[]>;
19
+ capabilities(): DatabaseCapabilities;
20
+ listSchemas(): Promise<DatabaseSchema[]>;
21
+ listObjects(schema: string, kinds?: DatabaseObjectKind[]): Promise<DatabaseObject[]>;
22
+ describeObject(object: DatabaseObject): Promise<DatabaseObjectDetails>;
18
23
  sampleRows(table: TableRef, limit: number, offset?: number): Promise<RowSample>;
19
24
  runQuery(sql: string, maxRows: number): Promise<QueryResult>;
20
25
  executeWrite(sql: string, commit: boolean): Promise<WriteResult>;
26
+ deleteRows(options: DeleteRowsOptions): Promise<WriteResult>;
21
27
  close(): Promise<void>;
22
28
  }
@@ -1,4 +1,8 @@
1
- import { assertSafeIdentifier, clampLimit, clampOffset, columnsFromNames, isReadStatement, normalizeRow, prepareUserQuery, } from "./driver.js";
1
+ import { capDefinition, objectFromIdentity, } from "./catalog.js";
2
+ import { assertExpectedDeleteCount, clampLimit, clampOffset, columnsFromNames, isReadStatement, normalizeRow, prepareUserQuery, } from "./driver.js";
3
+ function quoteIdentifier(value) {
4
+ return `"${value.replaceAll('"', '""')}"`;
5
+ }
2
6
  /**
3
7
  * SQLite driver backed by Node's built-in `node:sqlite`. The file is opened
4
8
  * read-only, so the connection itself cannot mutate the database.
@@ -42,19 +46,101 @@ export class SqliteDriver {
42
46
  .all();
43
47
  return rows.map((row) => ({ name: row.name, qualifiedName: row.name }));
44
48
  }
49
+ capabilities() {
50
+ return {
51
+ objectKinds: ["table", "view"],
52
+ tableDetails: ["columns", "indexes", "constraints", "triggers"],
53
+ };
54
+ }
55
+ async listSchemas() {
56
+ await this.testConnection();
57
+ return [{ name: "main" }];
58
+ }
59
+ async listObjects(schema, kinds) {
60
+ if (schema !== "main")
61
+ return [];
62
+ const allowed = new Set(kinds ?? this.capabilities().objectKinds);
63
+ const db = await this.db();
64
+ const rows = db.prepare(`SELECT name, type
65
+ FROM sqlite_master
66
+ WHERE type IN ('table', 'view') AND name NOT LIKE 'sqlite_%'
67
+ ORDER BY type, name`).all();
68
+ return rows.flatMap((row) => {
69
+ const kind = row.type;
70
+ return allowed.has(kind)
71
+ ? [objectFromIdentity({ schema: "main", name: row.name, kind })]
72
+ : [];
73
+ });
74
+ }
75
+ async describeObject(object) {
76
+ const live = await this.listObjects(object.schema, [object.kind]);
77
+ if (!live.some((candidate) => candidate.key === object.key)) {
78
+ throw new Error("Database object was not found in the live catalog.");
79
+ }
80
+ const db = await this.db();
81
+ const name = quoteIdentifier(object.name);
82
+ const columns = db.prepare(`PRAGMA table_info(${name})`).all().map((column) => ({
83
+ name: column.name,
84
+ dataType: column.type || "",
85
+ nullable: column.notnull === 0,
86
+ primaryKey: column.pk > 0,
87
+ }));
88
+ const indexes = db.prepare(`PRAGMA index_list(${name})`).all().map((index) => {
89
+ const row = db.prepare("SELECT sql FROM sqlite_master WHERE type = 'index' AND name = ?").get(index.name);
90
+ return {
91
+ name: index.name,
92
+ unique: index.unique === 1,
93
+ definition: capDefinition(row?.sql) ?? "",
94
+ };
95
+ });
96
+ const foreignKeys = db.prepare(`PRAGMA foreign_key_list(${name})`).all();
97
+ const constraints = foreignKeys.map((foreignKey) => ({
98
+ name: `fk_${object.name}_${foreignKey.id}`,
99
+ type: "FOREIGN KEY",
100
+ definition: `FOREIGN KEY (${foreignKey.from}) REFERENCES ${foreignKey.table} (${foreignKey.to})`,
101
+ }));
102
+ if (columns.some((column) => column.primaryKey)) {
103
+ constraints.unshift({
104
+ name: `pk_${object.name}`,
105
+ type: "PRIMARY KEY",
106
+ definition: `PRIMARY KEY (${columns.filter((column) => column.primaryKey).map((column) => column.name).join(", ")})`,
107
+ });
108
+ }
109
+ const triggers = db.prepare("SELECT name, sql FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ? ORDER BY name").all(object.name).map((trigger) => ({ name: trigger.name, definition: capDefinition(trigger.sql) ?? "" }));
110
+ const definitionRow = db.prepare("SELECT sql FROM sqlite_master WHERE name = ? AND type IN ('table', 'view')").get(object.name);
111
+ const rawDefinition = definitionRow?.sql ?? undefined;
112
+ const definition = capDefinition(rawDefinition);
113
+ const createScript = capDefinition([
114
+ rawDefinition,
115
+ ...indexes.map((index) => index.definition),
116
+ ...triggers.map((trigger) => trigger.definition),
117
+ ]
118
+ .filter((statement) => Boolean(statement))
119
+ .map(terminateStatement)
120
+ .join("\n\n"));
121
+ return {
122
+ object,
123
+ columns,
124
+ indexes,
125
+ constraints,
126
+ triggers,
127
+ definition,
128
+ createScript,
129
+ };
130
+ }
45
131
  async sampleRows(table, limit, offset) {
46
- const name = assertSafeIdentifier(table.name);
132
+ const name = table.name;
47
133
  const max = clampLimit(limit);
48
134
  const skip = clampOffset(offset);
49
135
  const db = await this.db();
50
- const columns = db.prepare(`PRAGMA table_info("${name}")`).all().map((col) => ({
136
+ const columns = db.prepare(`PRAGMA table_info(${quoteIdentifier(name)})`).all().map((col) => ({
51
137
  name: col.name,
52
138
  dataType: col.type || "",
53
139
  nullable: col.notnull === 0,
54
140
  primaryKey: col.pk > 0,
55
141
  }));
56
142
  const rows = db
57
- .prepare(`SELECT * FROM "${name}" LIMIT ? OFFSET ?`)
143
+ .prepare(`SELECT * FROM ${quoteIdentifier(name)} LIMIT ? OFFSET ?`)
58
144
  .all(max, skip);
59
145
  return {
60
146
  columns,
@@ -121,6 +207,35 @@ export class SqliteDriver {
121
207
  throw error;
122
208
  }
123
209
  }
210
+ async deleteRows(options) {
211
+ if (!this.writable)
212
+ throw new Error("This connection is read-only.");
213
+ const table = options.table.schema
214
+ ? `${quoteIdentifier(options.table.schema)}.${quoteIdentifier(options.table.name)}`
215
+ : quoteIdentifier(options.table.name);
216
+ const predicate = options.tuples
217
+ .map(() => `(${options.primaryKeys
218
+ .map((column) => `${quoteIdentifier(column)} = ?`)
219
+ .join(" AND ")})`)
220
+ .join(" OR ");
221
+ const values = options.tuples.flatMap((tuple) => options.primaryKeys.map((column) => {
222
+ const value = tuple[column];
223
+ return typeof value === "boolean" ? Number(value) : value;
224
+ }));
225
+ const db = await this.db();
226
+ db.exec("BEGIN");
227
+ try {
228
+ const info = db.prepare(`DELETE FROM ${table} WHERE ${predicate}`).run(...values);
229
+ const affectedRows = Number(info.changes);
230
+ assertExpectedDeleteCount(options, affectedRows);
231
+ db.exec(options.commit ? "COMMIT" : "ROLLBACK");
232
+ return { affectedRows, rows: [], columns: [], committed: options.commit };
233
+ }
234
+ catch (error) {
235
+ db.exec("ROLLBACK");
236
+ throw error;
237
+ }
238
+ }
124
239
  async close() {
125
240
  if (this.dbPromise) {
126
241
  const db = await this.dbPromise;
@@ -129,4 +244,8 @@ export class SqliteDriver {
129
244
  }
130
245
  }
131
246
  }
247
+ function terminateStatement(value) {
248
+ const statement = value.trim();
249
+ return statement.endsWith(";") ? statement : `${statement};`;
250
+ }
132
251
  //# sourceMappingURL=sqlite-driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-driver.js","sourceRoot":"","sources":["../../../src/core/db/sqlite-driver.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,GAQjB,MAAM,aAAa,CAAC;AASrB;;;GAGG;AACH,MAAM,OAAO,YAAY;IAKM;IAJpB,MAAM,GAAmB,QAAQ,CAAC;IACnC,SAAS,GAAiC,IAAI,CAAC;IACtC,QAAQ,CAAU;IAEnC,YAA6B,IAAY,EAAE,UAAkC,EAAE;QAAlD,SAAI,GAAJ,IAAI,CAAQ;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC3B,IAAI,YAAuD,CAAC;gBAC5D,IAAI,CAAC;oBACH,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CACb,0FAA0F,OAAO,CAAC,OAAO,6DAA6D,CACvK,CAAC;gBACJ,CAAC;gBACD,wEAAwE;gBACxE,sCAAsC;gBACtC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CACN;;wBAEgB,CACjB;aACA,GAAG,EAA6B,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,KAAa,EAAE,MAAe;QAC9D,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,OAAO,GACX,EAAE,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,GAAG,EAC/C,CAAC,GAAG,CAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;YACxB,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;YAC3B,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;SACvB,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CAAC,kBAAkB,IAAI,oBAAoB,CAAC;aACnD,GAAG,CAAC,GAAG,EAAE,IAAI,CAAmC,CAAC;QACpD,OAAO;YACL,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAe;QACzC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,wEAAwE;QACxE,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CAAC,kBAAkB,SAAS,WAAW,CAAC;aAC/C,GAAG,CAAC,GAAG,GAAG,CAAC,CAAmC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACpC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAe;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,sEAAsE;YACtE,MAAM,WAAW,GACf,eAAe,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,MAAmB,CAAC;YACxB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAoC,CAAC;gBAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,MAAM,GAAG;oBACP,YAAY,EAAE,IAAI,CAAC,MAAM;oBACzB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC1C,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;oBAChC,SAAS,EAAE,MAAM;iBAClB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;gBACzC,MAAM,GAAG;oBACP,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAClC,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,MAAM;iBAClB,CAAC;YACJ,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAChC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sqlite-driver.js","sourceRoot":"","sources":["../../../src/core/db/sqlite-driver.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ConfigStore } from "./config-store.js";
2
2
  import type { DatabaseEngine } from "./types.js";
3
3
  import type { QueryResult, RowSample, TableRef } from "./db/driver.js";
4
+ import { type DatabaseCapabilities, type DatabaseObject, type DatabaseObjectDetails, type DatabaseObjectKind, type DatabaseSchema } from "./db/catalog.js";
4
5
  export interface MaskedConnection {
5
6
  name: string;
6
7
  engine: DatabaseEngine;
@@ -35,6 +36,15 @@ export declare class DbPeek {
35
36
  constructor(options: DbPeekOptions);
36
37
  listConnections(): Promise<MaskedConnection[]>;
37
38
  listTables(name: string): Promise<TableRef[]>;
39
+ capabilities(name: string): Promise<DatabaseCapabilities>;
40
+ listSchemas(name: string): Promise<DatabaseSchema[]>;
41
+ listObjects(name: string, schema: string, kinds?: DatabaseObjectKind[]): Promise<DatabaseObject[]>;
42
+ objectDetails(name: string, key: string): Promise<DatabaseObjectDetails>;
43
+ sampleObject(name: string, key: string, limit: number, offset?: number): Promise<{
44
+ engine: DatabaseEngine;
45
+ object: DatabaseObject;
46
+ table: TableRef;
47
+ } & RowSample>;
38
48
  sampleRows(name: string, qualifiedName: string, limit: number, offset?: number): Promise<{
39
49
  engine: DatabaseEngine;
40
50
  table: TableRef;
@@ -45,6 +55,18 @@ export declare class DbPeek {
45
55
  } & QueryResult>;
46
56
  /** Test an unsaved connection without caching it. */
47
57
  test(engine: DatabaseEngine, url: string): Promise<void>;
58
+ register(input: {
59
+ name: string;
60
+ engine: DatabaseEngine;
61
+ url: string;
62
+ projectPath?: string;
63
+ replace?: boolean;
64
+ check?: boolean;
65
+ }): Promise<MaskedConnection>;
66
+ check(name: string): Promise<{
67
+ ok: true;
68
+ connection: MaskedConnection;
69
+ }>;
48
70
  /** Scan registered services' `.env` files for usable connection strings. */
49
71
  detectFromEnv(): Promise<DetectedConnection[]>;
50
72
  closeAll(): Promise<void>;
@@ -52,6 +74,7 @@ export declare class DbPeek {
52
74
  private driverFor;
53
75
  /** Only browse tables that actually exist — blocks identifier injection. */
54
76
  private resolveTable;
77
+ private resolveObject;
55
78
  }
56
79
  /** Guess an engine from a connection string or file path; null if unrecognized. */
57
80
  export declare function engineFromUrl(value: string): DatabaseEngine | null;
@@ -64,3 +87,4 @@ export declare function engineFromUrl(value: string): DatabaseEngine | null;
64
87
  export declare function mergeStoredPassword(engine: DatabaseEngine, nextUrl: string, existingUrl: string): string;
65
88
  /** Redact the password from a URL; SQLite paths are returned unchanged. */
66
89
  export declare function maskConnectionUrl(engine: DatabaseEngine, url: string): string;
90
+ export declare function redactDatabaseError(engine: DatabaseEngine, url: string, error: unknown): string;