@nifrajs/mcp-db 4.0.2 → 5.0.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/README.md +2 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/pg-exec.d.ts +4 -7
- package/dist/internal/pg-exec.d.ts.map +1 -1
- package/dist/internal/pg-exec.js +13 -9
- package/dist/internal/pg-exec.js.map +1 -1
- package/dist/internal/shared.d.ts +22 -2
- package/dist/internal/shared.d.ts.map +1 -1
- package/dist/internal/shared.js +67 -4
- package/dist/internal/shared.js.map +1 -1
- package/dist/internal/sqlite-session.d.ts +11 -2
- package/dist/internal/sqlite-session.d.ts.map +1 -1
- package/dist/internal/sqlite-session.js +69 -15
- package/dist/internal/sqlite-session.js.map +1 -1
- package/dist/postgres.d.ts +4 -4
- package/dist/postgres.d.ts.map +1 -1
- package/dist/postgres.js +9 -14
- package/dist/postgres.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +47 -8
- package/src/internal/pg-exec.ts +17 -9
- package/src/internal/shared.ts +87 -7
- package/src/internal/sqlite-session.ts +89 -19
- package/src/postgres.ts +16 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-session.d.ts","sourceRoot":"","sources":["../../src/internal/sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"sqlite-session.d.ts","sourceRoot":"","sources":["../../src/internal/sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEvE,qBAAa,iBAAkB,SAAQ,KAAK;;CAK3C;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAED,mGAAmG;AACnG,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACtD,8FAA8F;IAC9F,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IAClE,gGAAgG;IAChG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAgTD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAIrE"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* in-process lane for one that cannot be reopened. Not part of the public engine - the CLI's database
|
|
4
4
|
* tool runs each query in its own subprocess instead, which bounds the work by killing the process.
|
|
5
5
|
*/
|
|
6
|
+
import { ROW_BYTES_COLUMN } from "./shared.js";
|
|
6
7
|
export class QueryTimeoutError extends Error {
|
|
7
8
|
constructor() {
|
|
8
9
|
super("query exceeded the time limit");
|
|
@@ -19,7 +20,7 @@ const SQLITE_WORKER_SOURCE = `
|
|
|
19
20
|
const { Database } = require("bun:sqlite")
|
|
20
21
|
let db
|
|
21
22
|
self.onmessage = (event) => {
|
|
22
|
-
const { id, filename, sql, type } = event.data
|
|
23
|
+
const { id, filename, sql, type, maxBytes } = event.data
|
|
23
24
|
if (type === "close") {
|
|
24
25
|
let response
|
|
25
26
|
try {
|
|
@@ -44,7 +45,30 @@ self.onmessage = (event) => {
|
|
|
44
45
|
db = new Database(filename, { readonly: true })
|
|
45
46
|
db.run("PRAGMA query_only = ON")
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
const statement = db.prepare(sql)
|
|
49
|
+
if (type === "columns") {
|
|
50
|
+
const rows = statement.columnNames
|
|
51
|
+
statement.finalize()
|
|
52
|
+
self.postMessage({ id, ok: true, rows })
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
if (type === "read") {
|
|
56
|
+
const rows = []
|
|
57
|
+
let bytes = 0
|
|
58
|
+
let cut = false
|
|
59
|
+
for (const { ${ROW_BYTES_COLUMN}: size, ...row } of statement.iterate()) {
|
|
60
|
+
rows.push(row)
|
|
61
|
+
bytes += Number(size)
|
|
62
|
+
if (bytes > maxBytes) {
|
|
63
|
+
cut = true
|
|
64
|
+
break
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
statement.finalize()
|
|
68
|
+
self.postMessage({ id, ok: true, rows, cut })
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
self.postMessage({ id, ok: true, rows: statement.all() })
|
|
48
72
|
} catch (error) {
|
|
49
73
|
self.postMessage({ id, ok: false, error: String(error) })
|
|
50
74
|
}
|
|
@@ -108,7 +132,7 @@ function workerSession(filename) {
|
|
|
108
132
|
sourceUrl = URL.createObjectURL(new Blob([SQLITE_WORKER_SOURCE], { type: "text/javascript" }));
|
|
109
133
|
const spawned = new Worker(sourceUrl);
|
|
110
134
|
spawned.onmessage = (event) => {
|
|
111
|
-
const { id, ok, rows, error } = event.data;
|
|
135
|
+
const { id, ok, rows, cut, error } = event.data;
|
|
112
136
|
if (typeof id !== "number")
|
|
113
137
|
return;
|
|
114
138
|
if (event.data.closed === true) {
|
|
@@ -128,7 +152,7 @@ function workerSession(filename) {
|
|
|
128
152
|
}
|
|
129
153
|
pending.delete(id);
|
|
130
154
|
if (ok === true)
|
|
131
|
-
waiter.resolve(rows ?? []);
|
|
155
|
+
waiter.resolve({ rows: rows ?? [], cut: cut === true });
|
|
132
156
|
else
|
|
133
157
|
waiter.reject(new Error(error ?? "query failed in worker"));
|
|
134
158
|
};
|
|
@@ -137,7 +161,7 @@ function workerSession(filename) {
|
|
|
137
161
|
worker = spawned;
|
|
138
162
|
return spawned;
|
|
139
163
|
};
|
|
140
|
-
const dispatch = (
|
|
164
|
+
const dispatch = (query, deadline) => {
|
|
141
165
|
if (closed)
|
|
142
166
|
return Promise.reject(new Error("query session is closed"));
|
|
143
167
|
const active = ensureWorker();
|
|
@@ -151,9 +175,9 @@ function workerSession(filename) {
|
|
|
151
175
|
const timer = setTimeout(() => discard(new QueryTimeoutError()), remaining);
|
|
152
176
|
pending.set(id, {
|
|
153
177
|
deadline,
|
|
154
|
-
resolve: (
|
|
178
|
+
resolve: (result) => {
|
|
155
179
|
clearTimeout(timer);
|
|
156
|
-
resolve(
|
|
180
|
+
resolve(result);
|
|
157
181
|
},
|
|
158
182
|
reject: (error) => {
|
|
159
183
|
clearTimeout(timer);
|
|
@@ -161,7 +185,7 @@ function workerSession(filename) {
|
|
|
161
185
|
},
|
|
162
186
|
});
|
|
163
187
|
try {
|
|
164
|
-
active.postMessage({ id, filename,
|
|
188
|
+
active.postMessage({ id, filename, ...query });
|
|
165
189
|
}
|
|
166
190
|
catch (error) {
|
|
167
191
|
pending.delete(id);
|
|
@@ -170,14 +194,17 @@ function workerSession(filename) {
|
|
|
170
194
|
}
|
|
171
195
|
});
|
|
172
196
|
};
|
|
197
|
+
// One worker owns the connection, so overlapping calls queue behind each other rather than
|
|
198
|
+
// interleaving statements on it.
|
|
199
|
+
const queue = (query, deadline) => {
|
|
200
|
+
const result = lane.then(() => dispatch(query, deadline));
|
|
201
|
+
lane = result.catch(() => undefined);
|
|
202
|
+
return result;
|
|
203
|
+
};
|
|
173
204
|
return {
|
|
174
|
-
run(sql, deadline) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const result = lane.then(() => dispatch(sql, deadline));
|
|
178
|
-
lane = result.catch(() => undefined);
|
|
179
|
-
return result;
|
|
180
|
-
},
|
|
205
|
+
run: async (sql, deadline) => (await queue({ sql }, deadline)).rows,
|
|
206
|
+
columns: async (sql, deadline) => (await queue({ sql, type: "columns" }, deadline)).rows.filter((name) => typeof name === "string"),
|
|
207
|
+
read: (sql, deadline, maxBytes) => queue({ sql, type: "read", maxBytes }, deadline),
|
|
181
208
|
close() {
|
|
182
209
|
if (closePromise !== undefined)
|
|
183
210
|
return closePromise;
|
|
@@ -237,6 +264,33 @@ function inProcessSession(db) {
|
|
|
237
264
|
throw new QueryTimeoutError();
|
|
238
265
|
return rows;
|
|
239
266
|
},
|
|
267
|
+
async columns(sql, deadline) {
|
|
268
|
+
if (Date.now() >= deadline)
|
|
269
|
+
throw new QueryTimeoutError();
|
|
270
|
+
return db.prepare(sql).columnNames ?? [];
|
|
271
|
+
},
|
|
272
|
+
async read(sql, deadline, maxBytes) {
|
|
273
|
+
if (Date.now() >= deadline)
|
|
274
|
+
throw new QueryTimeoutError();
|
|
275
|
+
const statement = db.prepare(sql);
|
|
276
|
+
const rows = [];
|
|
277
|
+
let bytes = 0;
|
|
278
|
+
let cut = false;
|
|
279
|
+
for (const row of statement.iterate?.() ?? statement.all()) {
|
|
280
|
+
if (typeof row !== "object" || row === null)
|
|
281
|
+
continue;
|
|
282
|
+
bytes += Number(Reflect.get(row, ROW_BYTES_COLUMN));
|
|
283
|
+
Reflect.deleteProperty(row, ROW_BYTES_COLUMN);
|
|
284
|
+
rows.push(row);
|
|
285
|
+
if (bytes > maxBytes) {
|
|
286
|
+
cut = true;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (Date.now() > deadline)
|
|
291
|
+
throw new QueryTimeoutError();
|
|
292
|
+
return { rows, cut };
|
|
293
|
+
},
|
|
240
294
|
async close() { },
|
|
241
295
|
};
|
|
242
296
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-session.js","sourceRoot":"","sources":["../../src/internal/sqlite-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"sqlite-session.js","sourceRoot":"","sources":["../../src/internal/sqlite-session.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres.d.ts
CHANGED
|
@@ -139,10 +139,10 @@ export interface PostgresRoleSql {
|
|
|
139
139
|
readonly statements: readonly string[];
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
142
|
-
* Write the SQL for a login role that can read the allowed schemas and nothing else: `
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
142
|
+
* Write the SQL for a login role that can read the allowed schemas and nothing else: `GRANT SELECT`
|
|
143
|
+
* per schema plus default privileges, and a `REVOKE` for each excluded table and its partitions.
|
|
144
|
+
* `pg_read_all_data` is never used: it reaches every schema, present and future, and overrides a
|
|
145
|
+
* REVOKE. Nothing is executed.
|
|
146
146
|
*/
|
|
147
147
|
export declare function postgresRoleSql(client: PostgresClient, options: PostgresRoleSqlOptions): Promise<PostgresRoleSql | DbRefusal>;
|
|
148
148
|
//# sourceMappingURL=postgres.d.ts.map
|
package/dist/postgres.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/postgres.js
CHANGED
|
@@ -360,7 +360,7 @@ function prunePlan(node, depth) {
|
|
|
360
360
|
export async function explainPostgres(client, sql, options) {
|
|
361
361
|
const explained = await gated(client, sql, options, (connection, statement) => explainThroughServer(connection, statement, {
|
|
362
362
|
analyze: options.analyze === true,
|
|
363
|
-
scope: checkScope(options),
|
|
363
|
+
scope: checkScope(options, options.redaction?.column),
|
|
364
364
|
}));
|
|
365
365
|
if (isDbRefusal(explained))
|
|
366
366
|
return explained;
|
|
@@ -524,10 +524,10 @@ export async function readPostgresSchema(client, options) {
|
|
|
524
524
|
}
|
|
525
525
|
const quoteIdent = (name) => `"${name.replaceAll('"', '""')}"`;
|
|
526
526
|
/**
|
|
527
|
-
* Write the SQL for a login role that can read the allowed schemas and nothing else: `
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
*
|
|
527
|
+
* Write the SQL for a login role that can read the allowed schemas and nothing else: `GRANT SELECT`
|
|
528
|
+
* per schema plus default privileges, and a `REVOKE` for each excluded table and its partitions.
|
|
529
|
+
* `pg_read_all_data` is never used: it reaches every schema, present and future, and overrides a
|
|
530
|
+
* REVOKE. Nothing is executed.
|
|
531
531
|
*/
|
|
532
532
|
export async function postgresRoleSql(client, options) {
|
|
533
533
|
const role = options.role ?? "nifra_dev_reader";
|
|
@@ -563,16 +563,11 @@ export async function postgresRoleSql(client, options) {
|
|
|
563
563
|
`ALTER ROLE ${who} SET default_transaction_read_only = on;`,
|
|
564
564
|
`GRANT CONNECT ON DATABASE ${quoteIdent(database)} TO ${who};`,
|
|
565
565
|
];
|
|
566
|
-
|
|
567
|
-
statements.push(`GRANT
|
|
566
|
+
for (const schema of schemas) {
|
|
567
|
+
statements.push(`GRANT USAGE ON SCHEMA ${quoteIdent(schema)} TO ${who};`, `GRANT SELECT ON ALL TABLES IN SCHEMA ${quoteIdent(schema)} TO ${who};`, `ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdent(schema)} GRANT SELECT ON TABLES TO ${who};`);
|
|
568
568
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
statements.push(`GRANT USAGE ON SCHEMA ${quoteIdent(schema)} TO ${who};`, `GRANT SELECT ON ALL TABLES IN SCHEMA ${quoteIdent(schema)} TO ${who};`, `ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdent(schema)} GRANT SELECT ON TABLES TO ${who};`);
|
|
572
|
-
}
|
|
573
|
-
for (const row of excluded) {
|
|
574
|
-
statements.push(`REVOKE SELECT ON TABLE ${quoteIdent(String(row.schema))}.${quoteIdent(String(row.name))} FROM ${who};`);
|
|
575
|
-
}
|
|
569
|
+
for (const row of excluded) {
|
|
570
|
+
statements.push(`REVOKE SELECT ON TABLE ${quoteIdent(String(row.schema))}.${quoteIdent(String(row.name))} FROM ${who};`);
|
|
576
571
|
}
|
|
577
572
|
return { role, database, serverVersionNum: version, statements };
|
|
578
573
|
});
|
package/dist/postgres.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/mcp-db",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Serve a SQLite database as a fail-closed MCP server - allowlisted schema tools by default, opt-in read-only queries with plan verification.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@nifrajs/mcp": "
|
|
51
|
+
"@nifrajs/mcp": "5.0.0"
|
|
52
52
|
},
|
|
53
53
|
"repository": {
|
|
54
54
|
"type": "git",
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Read-only is enforced in layers, not promised: `PRAGMA query_only = ON` on the connection
|
|
10
10
|
* (SQLite rejects every write at the engine), a single-statement gate, a SELECT/WITH-only gate,
|
|
11
|
-
* and
|
|
11
|
+
* and verification of the compiled statement that a query reads ONLY allowlisted tables. Results are
|
|
12
12
|
* capped by rows and bytes (an LLM does not need 100k rows; a transport does not want them) with
|
|
13
13
|
* an explicit `truncated` marker.
|
|
14
14
|
*
|
|
@@ -26,11 +26,13 @@
|
|
|
26
26
|
import { createMcpServer, defineMcpTool, type JsonRpcResponse, type McpServer } from "@nifrajs/mcp"
|
|
27
27
|
import {
|
|
28
28
|
boundedSqliteQuery,
|
|
29
|
+
cellBoundedSqliteQuery,
|
|
29
30
|
countSqliteQuery,
|
|
30
31
|
fitToBytes,
|
|
31
32
|
gateSqliteStatement,
|
|
32
33
|
type SqliteDatabaseLike,
|
|
33
34
|
unexposedPlanRelation,
|
|
35
|
+
unexposedProgramRelation,
|
|
34
36
|
} from "./internal/shared.ts"
|
|
35
37
|
import {
|
|
36
38
|
openQuerySession,
|
|
@@ -56,7 +58,11 @@ export interface RunQueryOptions {
|
|
|
56
58
|
readonly authorize: (context: McpDbAuthorizeContext) => boolean | Promise<boolean>
|
|
57
59
|
/** Max rows returned per query (default 100). */
|
|
58
60
|
readonly maxRows?: number
|
|
59
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Max serialized result size in bytes (default 100 KB). It also bounds what is read: a text or
|
|
63
|
+
* blob cell longer than this arrives as `"<n bytes>"`, and rows stop being read once their cells
|
|
64
|
+
* pass it, so a query cannot make the server hold more than about one row past the budget.
|
|
65
|
+
*/
|
|
60
66
|
readonly maxResultBytes?: number
|
|
61
67
|
/**
|
|
62
68
|
* Maximum wall-clock time for planning, execution, and optional counting (default 5 seconds).
|
|
@@ -252,7 +258,22 @@ export function serveDatabaseAsMcp(
|
|
|
252
258
|
if (error instanceof QueryTimeoutError) return { isError: true, text: error.message }
|
|
253
259
|
return { isError: true, text: `query failed to plan: ${String(error)}` }
|
|
254
260
|
}
|
|
255
|
-
|
|
261
|
+
let catalog: unknown[]
|
|
262
|
+
let program: unknown[]
|
|
263
|
+
try {
|
|
264
|
+
catalog = await querySession.run(
|
|
265
|
+
"SELECT tbl_name, rootpage FROM sqlite_master WHERE rootpage > 0",
|
|
266
|
+
deadline,
|
|
267
|
+
)
|
|
268
|
+
program = await querySession.run(`EXPLAIN ${query}`, deadline)
|
|
269
|
+
} catch (error) {
|
|
270
|
+
if (error instanceof QueryTimeoutError) return { isError: true, text: error.message }
|
|
271
|
+
return { isError: true, text: `query failed to plan: ${String(error)}` }
|
|
272
|
+
}
|
|
273
|
+
// The plan names a scan by its alias; the program names the table by its root page.
|
|
274
|
+
const unexposed =
|
|
275
|
+
unexposedPlanRelation(planRows, (relation) => allowlist.has(relation)) ??
|
|
276
|
+
unexposedProgramRelation(program, catalog, (relation) => allowlist.has(relation))
|
|
256
277
|
if (unexposed !== undefined) {
|
|
257
278
|
return {
|
|
258
279
|
isError: true,
|
|
@@ -261,16 +282,30 @@ export function serveDatabaseAsMcp(
|
|
|
261
282
|
}
|
|
262
283
|
|
|
263
284
|
let limitedRows: unknown[]
|
|
285
|
+
let cut = false
|
|
264
286
|
try {
|
|
265
|
-
// Fetch at most one row beyond the advertised cap
|
|
266
|
-
//
|
|
267
|
-
|
|
287
|
+
// Fetch at most one row beyond the advertised cap, so `SELECT * FROM a_huge_table`
|
|
288
|
+
// cannot make the driver materialize every row. Where the driver names the columns,
|
|
289
|
+
// oversized cells and rows past the byte budget are never copied out either.
|
|
290
|
+
const bounded = boundedSqliteQuery(query, maxRows)
|
|
291
|
+
const columns = await querySession.columns(bounded, deadline)
|
|
292
|
+
if (columns.length === 0) {
|
|
293
|
+
limitedRows = await querySession.run(bounded, deadline)
|
|
294
|
+
} else {
|
|
295
|
+
const read = await querySession.read(
|
|
296
|
+
cellBoundedSqliteQuery(query, columns, maxRows, maxResultBytes),
|
|
297
|
+
deadline,
|
|
298
|
+
maxResultBytes,
|
|
299
|
+
)
|
|
300
|
+
limitedRows = read.rows
|
|
301
|
+
cut = read.cut
|
|
302
|
+
}
|
|
268
303
|
} catch (error) {
|
|
269
304
|
if (error instanceof QueryTimeoutError) return { isError: true, text: error.message }
|
|
270
305
|
return { isError: true, text: `query failed: ${String(error)}` }
|
|
271
306
|
}
|
|
272
307
|
|
|
273
|
-
const wasLimited = limitedRows.length > maxRows
|
|
308
|
+
const wasLimited = limitedRows.length > maxRows || cut
|
|
274
309
|
let total: number | null = limitedRows.length
|
|
275
310
|
if (wasLimited && options.runQuery?.exactTotal === true) {
|
|
276
311
|
try {
|
|
@@ -279,7 +314,11 @@ export function serveDatabaseAsMcp(
|
|
|
279
314
|
deadline,
|
|
280
315
|
)) as Array<{ __nifra_total?: unknown }>
|
|
281
316
|
const count = countRows[0]?.__nifra_total
|
|
282
|
-
if (
|
|
317
|
+
if (
|
|
318
|
+
typeof count !== "number" ||
|
|
319
|
+
!Number.isSafeInteger(count) ||
|
|
320
|
+
count < limitedRows.length
|
|
321
|
+
) {
|
|
283
322
|
return { isError: true, text: "query failed: invalid row count" }
|
|
284
323
|
}
|
|
285
324
|
total = count
|
package/src/internal/pg-exec.ts
CHANGED
|
@@ -328,20 +328,26 @@ export interface CursorOptions {
|
|
|
328
328
|
readonly scope: ScopeCheck
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
+
/**
|
|
332
|
+
* The caller's query as a subquery whose rows also carry the result's column names: Bun returns array
|
|
333
|
+
* rows without names, and object rows lose a duplicated name. The first column is a JSON array of the
|
|
334
|
+
* names. It is also what the scope check plans: a plan over one relation leaves its column names
|
|
335
|
+
* unqualified (`password_hash`, not `users.password_hash`), and the subquery makes every one qualified.
|
|
336
|
+
*/
|
|
337
|
+
const withColumnNames = (sql: string): string =>
|
|
338
|
+
`SELECT (SELECT json_agg(nifra_k)::text FROM json_object_keys(row_to_json(nifra_q)) AS nifra_k) AS nifra_columns, nifra_q.* FROM (\n${sql}\n) AS nifra_q`
|
|
339
|
+
|
|
331
340
|
/**
|
|
332
341
|
* Declare the caller's query as a NO SCROLL cursor (the server accepts only SELECT/VALUES there and
|
|
333
|
-
* refuses a data-modifying WITH), check the plan's relations, then FETCH at most `maxRows + 1` rows
|
|
334
|
-
*
|
|
335
|
-
* The query is wrapped as a subquery so each row also carries the result's column names: Bun returns
|
|
336
|
-
* array rows without names, and object rows lose a duplicated name. The wrapper's first column is a
|
|
337
|
-
* JSON array of the names, read from the first row.
|
|
342
|
+
* refuses a data-modifying WITH), check the plan's relations, then FETCH at most `maxRows + 1` rows,
|
|
343
|
+
* the column names read from the first row (see {@link withColumnNames}).
|
|
338
344
|
*/
|
|
339
345
|
export async function fetchThroughCursor(
|
|
340
346
|
connection: PgConnection,
|
|
341
347
|
sql: string,
|
|
342
348
|
options: CursorOptions,
|
|
343
349
|
): Promise<{ readonly columns: string[]; readonly rows: unknown[][] } | DbRefusal> {
|
|
344
|
-
const wrapped =
|
|
350
|
+
const wrapped = withColumnNames(sql)
|
|
345
351
|
await extended(connection, `DECLARE nifra_c NO SCROLL CURSOR FOR ${wrapped}`)
|
|
346
352
|
const plan = planDocument(await extended(connection, `EXPLAIN (VERBOSE, FORMAT JSON) ${wrapped}`))
|
|
347
353
|
const refusal = await options.scope(connection, planReads(plan))
|
|
@@ -368,8 +374,8 @@ export interface ExplainOptions {
|
|
|
368
374
|
|
|
369
375
|
/**
|
|
370
376
|
* Plan the caller's query. The cursor declaration runs first purely as the statement gate (then is
|
|
371
|
-
* closed), the VERBOSE plan feeds the scope check, and the returned plan
|
|
372
|
-
* with `analyze`, executed inside the same read-only transaction and timeout.
|
|
377
|
+
* closed), the VERBOSE plan of {@link withColumnNames} feeds the scope check, and the returned plan
|
|
378
|
+
* is plain `FORMAT JSON` - with `analyze`, executed inside the same read-only transaction and timeout.
|
|
373
379
|
*/
|
|
374
380
|
export async function explainThroughServer(
|
|
375
381
|
connection: PgConnection,
|
|
@@ -378,7 +384,9 @@ export async function explainThroughServer(
|
|
|
378
384
|
): Promise<{ readonly plan: unknown } | DbRefusal> {
|
|
379
385
|
await extended(connection, `DECLARE nifra_c NO SCROLL CURSOR FOR ${sql}`)
|
|
380
386
|
await connection.unsafe("CLOSE nifra_c")
|
|
381
|
-
const verbose = planDocument(
|
|
387
|
+
const verbose = planDocument(
|
|
388
|
+
await extended(connection, `EXPLAIN (VERBOSE, FORMAT JSON) ${withColumnNames(sql)}`),
|
|
389
|
+
)
|
|
382
390
|
const refusal = await options.scope(connection, planReads(verbose))
|
|
383
391
|
if (refusal !== undefined) return refusal
|
|
384
392
|
const mode = options.analyze ? "ANALYZE, FORMAT JSON" : "FORMAT JSON"
|