@mcpolyglot/connector-sql 0.2.0 → 0.3.1

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 (41) hide show
  1. package/README.md +68 -8
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/dialects.integration.test.d.ts +2 -0
  4. package/dist/__tests__/dialects.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/dialects.integration.test.js +183 -0
  6. package/dist/__tests__/dialects.integration.test.js.map +1 -0
  7. package/dist/__tests__/policy.test.d.ts +2 -0
  8. package/dist/__tests__/policy.test.d.ts.map +1 -0
  9. package/dist/__tests__/policy.test.js +190 -0
  10. package/dist/__tests__/policy.test.js.map +1 -0
  11. package/dist/__tests__/sqlite.integration.test.js +182 -4
  12. package/dist/__tests__/sqlite.integration.test.js.map +1 -1
  13. package/dist/connector.d.ts +30 -2
  14. package/dist/connector.d.ts.map +1 -1
  15. package/dist/connector.js +173 -14
  16. package/dist/connector.js.map +1 -1
  17. package/dist/dialect.d.ts +26 -1
  18. package/dist/dialect.d.ts.map +1 -1
  19. package/dist/dialect.js +4 -1
  20. package/dist/dialect.js.map +1 -1
  21. package/dist/dialects/mysql.d.ts +14 -3
  22. package/dist/dialects/mysql.d.ts.map +1 -1
  23. package/dist/dialects/mysql.js +67 -6
  24. package/dist/dialects/mysql.js.map +1 -1
  25. package/dist/dialects/postgres.d.ts +14 -3
  26. package/dist/dialects/postgres.d.ts.map +1 -1
  27. package/dist/dialects/postgres.js +70 -9
  28. package/dist/dialects/postgres.js.map +1 -1
  29. package/dist/dialects/sqlite.d.ts +12 -3
  30. package/dist/dialects/sqlite.d.ts.map +1 -1
  31. package/dist/dialects/sqlite.js +31 -4
  32. package/dist/dialects/sqlite.js.map +1 -1
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/policy.d.ts +56 -0
  38. package/dist/policy.d.ts.map +1 -0
  39. package/dist/policy.js +343 -0
  40. package/dist/policy.js.map +1 -0
  41. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,34 @@
1
1
  import type { TableSchema } from '@mcpolyglot/core';
2
- import type { SqlDialect, SqlQueryResult } from '../dialect.js';
2
+ import { type PoolOptions, type SqlDialect, type SqlQueryResult } from '../dialect.js';
3
3
  export declare class PostgresDialect implements SqlDialect {
4
4
  private readonly connectionString;
5
+ private readonly poolOpts;
5
6
  readonly kind: "postgres";
6
7
  private pool?;
7
- constructor(connectionString: string);
8
- connect(): Promise<void>;
8
+ constructor(connectionString: string, poolOpts?: PoolOptions);
9
+ connect({ writable }?: {
10
+ writable?: boolean;
11
+ }): Promise<void>;
9
12
  close(): Promise<void>;
10
13
  ping(): Promise<{
11
14
  ok: boolean;
12
15
  latencyMs: number;
13
16
  details?: string;
14
17
  }>;
18
+ auditPrivileges(): Promise<string[]>;
15
19
  listTables(): Promise<TableSchema[]>;
16
20
  runReadOnly(sql: string, params: ReadonlyArray<unknown>, opts: {
17
21
  rowCap: number;
18
22
  timeoutMs: number;
19
23
  signal?: AbortSignal;
20
24
  }): Promise<SqlQueryResult>;
25
+ runWrite(sql: string, params: ReadonlyArray<unknown>, opts: {
26
+ maxRowsAffected: number;
27
+ timeoutMs: number;
28
+ signal?: AbortSignal;
29
+ }): Promise<{
30
+ rowsAffected: number;
31
+ }>;
21
32
  private requirePool;
22
33
  }
23
34
  //# sourceMappingURL=postgres.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/dialects/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,qBAAa,eAAgB,YAAW,UAAU;IAIpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAH7C,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,OAAO,CAAC,IAAI,CAAC,CAAoB;gBAEJ,gBAAgB,EAAE,MAAM;IAE/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAerE,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA0CpC,WAAW,CACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAChE,OAAO,CAAC,cAAc,CAAC;IAuC1B,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/dialects/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpG,qBAAa,eAAgB,YAAW,UAAU;IAK9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,OAAO,CAAC,IAAI,CAAC,CAAoB;gBAGd,gBAAgB,EAAE,MAAM,EACxB,QAAQ,GAAE,WAAgB;IAGvC,OAAO,CAAC,EAAE,QAAgB,EAAE,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAerE,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA4BpC,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA0CpC,WAAW,CACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAChE,OAAO,CAAC,cAAc,CAAC;IAmCpB,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACzE,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBpC,OAAO,CAAC,WAAW;CAKpB"}
@@ -1,18 +1,23 @@
1
1
  import { McpolyglotError } from '@mcpolyglot/core';
2
+ import { tooManyRows } from '../dialect.js';
2
3
  export class PostgresDialect {
3
4
  connectionString;
5
+ poolOpts;
4
6
  kind = 'postgres';
5
7
  pool;
6
- constructor(connectionString) {
8
+ constructor(connectionString, poolOpts = {}) {
7
9
  this.connectionString = connectionString;
10
+ this.poolOpts = poolOpts;
8
11
  }
9
- async connect() {
12
+ async connect({ writable = false } = {}) {
10
13
  const { Pool } = await loadPg();
11
14
  this.pool = new Pool({
12
15
  connectionString: this.connectionString,
13
- max: 4,
14
- idleTimeoutMillis: 30_000,
16
+ max: this.poolOpts.max ?? 4,
17
+ idleTimeoutMillis: this.poolOpts.idleTimeoutMs ?? 30_000,
15
18
  application_name: 'mcpolyglot',
19
+ // Every transaction on a read-only pool is read-only unless explicitly overridden.
20
+ ...(writable ? {} : { options: '-c default_transaction_read_only=on' }),
16
21
  });
17
22
  // probe
18
23
  const c = await this.pool.connect();
@@ -43,6 +48,34 @@ export class PostgresDialect {
43
48
  return { ok: false, latencyMs: Date.now() - t0, details: err.message };
44
49
  }
45
50
  }
51
+ async auditPrivileges() {
52
+ const c = await this.requirePool().connect();
53
+ try {
54
+ const res = await c.query(`
55
+ SELECT r.rolsuper,
56
+ pg_has_role(current_user, 'pg_read_server_files', 'MEMBER') AS read_files,
57
+ pg_has_role(current_user, 'pg_write_server_files', 'MEMBER') AS write_files,
58
+ pg_has_role(current_user, 'pg_execute_server_program', 'MEMBER') AS exec_program
59
+ FROM pg_roles r WHERE r.rolname = current_user
60
+ `);
61
+ const row = res.rows[0];
62
+ if (!row)
63
+ return [];
64
+ const problems = [];
65
+ if (row.rolsuper)
66
+ problems.push('database user is a superuser; policy cannot be enforced');
67
+ if (row.read_files)
68
+ problems.push('database user is in pg_read_server_files (pg_read_file)');
69
+ if (row.write_files)
70
+ problems.push('database user is in pg_write_server_files (COPY TO)');
71
+ if (row.exec_program)
72
+ problems.push('database user is in pg_execute_server_program');
73
+ return problems;
74
+ }
75
+ finally {
76
+ c.release();
77
+ }
78
+ }
46
79
  async listTables() {
47
80
  const c = await this.requirePool().connect();
48
81
  try {
@@ -106,11 +139,7 @@ export class PostgresDialect {
106
139
  return { columns: fields, rows, rowCount: rows.length, truncated };
107
140
  }
108
141
  catch (err) {
109
- // 25006 = read_only_sql_transaction: the DB-level guard caught a write.
110
- if (err.code === '25006') {
111
- throw new McpolyglotError('forbidden.read_only', err.message);
112
- }
113
- throw err;
142
+ throw mapReadOnly(err);
114
143
  }
115
144
  finally {
116
145
  opts.signal?.removeEventListener('abort', onAbort);
@@ -121,12 +150,44 @@ export class PostgresDialect {
121
150
  c.release();
122
151
  }
123
152
  }
153
+ async runWrite(sql, params, opts) {
154
+ const c = await this.requirePool().connect();
155
+ const onAbort = () => {
156
+ c.query('SELECT pg_cancel_backend(pg_backend_pid())').catch(() => { });
157
+ };
158
+ try {
159
+ await c.query('BEGIN');
160
+ await c.query(`SET LOCAL statement_timeout = ${Math.max(1, Math.floor(opts.timeoutMs))}`);
161
+ opts.signal?.addEventListener('abort', onAbort, { once: true });
162
+ const res = await c.query({ text: sql, values: params });
163
+ const n = res.rowCount ?? 0;
164
+ if (n > opts.maxRowsAffected)
165
+ throw tooManyRows(n, opts.maxRowsAffected);
166
+ await c.query('COMMIT');
167
+ return { rowsAffected: n };
168
+ }
169
+ catch (err) {
170
+ await c.query('ROLLBACK').catch(() => { });
171
+ throw mapReadOnly(err);
172
+ }
173
+ finally {
174
+ opts.signal?.removeEventListener('abort', onAbort);
175
+ c.release();
176
+ }
177
+ }
124
178
  requirePool() {
125
179
  if (!this.pool)
126
180
  throw new McpolyglotError('connector.not_initialized', 'PostgresDialect not connected');
127
181
  return this.pool;
128
182
  }
129
183
  }
184
+ // 25006 = read_only_sql_transaction: the DB-level guard caught a write.
185
+ function mapReadOnly(err) {
186
+ if (err.code === '25006') {
187
+ return new McpolyglotError('forbidden.read_only', err.message);
188
+ }
189
+ return err;
190
+ }
130
191
  async function loadPg() {
131
192
  try {
132
193
  return await import('pg');
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/dialects/postgres.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/dialects/postgres.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  import type { TableSchema } from '@mcpolyglot/core';
2
- import type { SqlDialect, SqlQueryResult } from '../dialect.js';
2
+ import { type SqlDialect, type SqlQueryResult } from '../dialect.js';
3
3
  export declare class SqliteDialect implements SqlDialect {
4
4
  private readonly fileOrUri;
5
5
  readonly kind: "sqlite";
6
6
  private db?;
7
7
  /**
8
8
  * @param fileOrUri Either an absolute path or a `sqlite://` URI.
9
- * The file is opened **read-only** regardless of caller intent.
9
+ * Opened read-only unless `connect({ writable: true })`.
10
10
  */
11
11
  constructor(fileOrUri: string);
12
- connect(): Promise<void>;
12
+ connect({ writable }?: {
13
+ writable?: boolean;
14
+ }): Promise<void>;
13
15
  close(): Promise<void>;
14
16
  ping(): Promise<{
15
17
  ok: boolean;
@@ -22,6 +24,13 @@ export declare class SqliteDialect implements SqlDialect {
22
24
  timeoutMs: number;
23
25
  signal?: AbortSignal;
24
26
  }): Promise<SqlQueryResult>;
27
+ runWrite(sql: string, params: ReadonlyArray<unknown>, opts: {
28
+ maxRowsAffected: number;
29
+ timeoutMs: number;
30
+ signal?: AbortSignal;
31
+ }): Promise<{
32
+ rowsAffected: number;
33
+ }>;
25
34
  private requireDb;
26
35
  private resolvePath;
27
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/dialects/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKhE,qBAAa,aAAc,YAAW,UAAU;IAQlC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAPtC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,EAAE,CAAC,CAAwB;IAEnC;;;OAGG;gBAC0B,SAAS,EAAE,MAAM;IAExC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAUrE,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAyBpC,WAAW,CACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAChE,OAAO,CAAC,cAAc,CAAC;IAsB1B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/dialects/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKlF,qBAAa,aAAc,YAAW,UAAU;IAQlC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAPtC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,EAAE,CAAC,CAAwB;IAEnC;;;OAGG;gBAC0B,SAAS,EAAE,MAAM;IAExC,OAAO,CAAC,EAAE,QAAgB,EAAE,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAUrE,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAyBpC,WAAW,CACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAChE,OAAO,CAAC,cAAc,CAAC;IAsBpB,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACzE,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBpC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;CAKpB"}
@@ -1,20 +1,22 @@
1
1
  import { McpolyglotError } from '@mcpolyglot/core';
2
+ import { tooManyRows } from '../dialect.js';
2
3
  export class SqliteDialect {
3
4
  fileOrUri;
4
5
  kind = 'sqlite';
5
6
  db;
6
7
  /**
7
8
  * @param fileOrUri Either an absolute path or a `sqlite://` URI.
8
- * The file is opened **read-only** regardless of caller intent.
9
+ * Opened read-only unless `connect({ writable: true })`.
9
10
  */
10
11
  constructor(fileOrUri) {
11
12
  this.fileOrUri = fileOrUri;
12
13
  }
13
- async connect() {
14
+ async connect({ writable = false } = {}) {
14
15
  const Database = await loadSqlite();
15
16
  const path = this.resolvePath();
16
- const db = new Database(path, { readonly: true, fileMustExist: true });
17
- db.pragma('query_only = ON');
17
+ const db = new Database(path, { readonly: !writable, fileMustExist: true });
18
+ if (!writable)
19
+ db.pragma('query_only = ON');
18
20
  this.db = db;
19
21
  }
20
22
  async close() {
@@ -68,6 +70,31 @@ export class SqliteDialect {
68
70
  : (stmt.columns().map((c) => c.name) ?? []);
69
71
  return { columns, rows, rowCount: rows.length, truncated };
70
72
  }
73
+ async runWrite(sql, params, opts) {
74
+ const db = this.requireDb();
75
+ if (opts.signal?.aborted)
76
+ throw new McpolyglotError('aborted', 'Aborted before execution');
77
+ try {
78
+ // db.transaction() rolls back if the callback throws.
79
+ return db.transaction(() => {
80
+ const startedAt = Date.now();
81
+ const n = db.prepare(sql).run(...params).changes;
82
+ if (Date.now() - startedAt > opts.timeoutMs) {
83
+ throw new McpolyglotError('timeout', `Write exceeded ${opts.timeoutMs}ms; rolled back`);
84
+ }
85
+ if (n > opts.maxRowsAffected)
86
+ throw tooManyRows(n, opts.maxRowsAffected);
87
+ return { rowsAffected: n };
88
+ })();
89
+ }
90
+ catch (err) {
91
+ const code = err.code ?? '';
92
+ if (code.startsWith('SQLITE_READONLY')) {
93
+ throw new McpolyglotError('forbidden.read_only', err.message);
94
+ }
95
+ throw err;
96
+ }
97
+ }
71
98
  requireDb() {
72
99
  if (!this.db)
73
100
  throw new McpolyglotError('connector.not_initialized', 'SqliteDialect not connected');
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/dialects/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/dialects/sqlite.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export { SqlConnector, type SqlConnectorOptions, type SqlDialectKind } from './connector.js';
1
+ export { SqlConnector, stripDeniedKeys, type SqlConnectorOptions, type SqlDialectKind, } from './connector.js';
2
2
  export type { SqlDialect, SqlQueryResult } from './dialect.js';
3
3
  export { PostgresDialect } from './dialects/postgres.js';
4
4
  export { MysqlDialect } from './dialects/mysql.js';
5
5
  export { SqliteDialect } from './dialects/sqlite.js';
6
+ export { classify, DENIED_FUNCTIONS, narrowPolicy, isColumnDenied, tableAccess, PolicySchema, type Policy, type PolicyDecision, type Access, } from './policy.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,MAAM,GACZ,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
- export { SqlConnector } from './connector.js';
1
+ export { SqlConnector, stripDeniedKeys, } from './connector.js';
2
2
  export { PostgresDialect } from './dialects/postgres.js';
3
3
  export { MysqlDialect } from './dialects/mysql.js';
4
4
  export { SqliteDialect } from './dialects/sqlite.js';
5
+ export { classify, DENIED_FUNCTIONS, narrowPolicy, isColumnDenied, tableAccess, PolicySchema, } from './policy.js';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiD,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,GAGhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,GAIb,MAAM,aAAa,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import type { SqlDialect } from './dialect.js';
3
+ export declare const AccessSchema: z.ZodEnum<{
4
+ read: "read";
5
+ write: "write";
6
+ none: "none";
7
+ }>;
8
+ export type Access = z.infer<typeof AccessSchema>;
9
+ export declare const PolicySchema: z.ZodObject<{
10
+ tables: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<{
11
+ read: "read";
12
+ write: "write";
13
+ none: "none";
14
+ }>>>;
15
+ defaultAccess: z.ZodDefault<z.ZodEnum<{
16
+ read: "read";
17
+ none: "none";
18
+ }>>;
19
+ denyColumns: z.ZodDefault<z.ZodArray<z.ZodString>>;
20
+ maxRows: z.ZodOptional<z.ZodNumber>;
21
+ maxWritesPerCall: z.ZodDefault<z.ZodNumber>;
22
+ statementTimeoutMs: z.ZodOptional<z.ZodNumber>;
23
+ idempotencyWindowMinutes: z.ZodDefault<z.ZodNumber>;
24
+ }, z.core.$strict>;
25
+ export type Policy = z.infer<typeof PolicySchema>;
26
+ export interface PolicyDecision {
27
+ allow: boolean;
28
+ /** Human-readable reason; always set on deny. */
29
+ reason: string;
30
+ statement?: string;
31
+ tables: {
32
+ name: string;
33
+ op: 'read' | 'write';
34
+ }[];
35
+ }
36
+ /**
37
+ * Functions no policy may call. They read or write the server's filesystem, reach other
38
+ * hosts, or stall the connection, and a read-only transaction does not stop any of them.
39
+ * This list is defense-in-depth: the database role's privileges are the real control.
40
+ */
41
+ export declare const DENIED_FUNCTIONS: ReadonlySet<string>;
42
+ /** Classify one SQL string against a policy. Pure: never touches the database. */
43
+ export declare function classify(sql: string, policy: Policy, dialect: SqlDialect['kind']): PolicyDecision;
44
+ /**
45
+ * Every policy key that could name this table matches; the most restrictive wins. An
46
+ * unqualified `users` therefore can't dodge a `public.users: none` rule.
47
+ */
48
+ export declare function tableAccess(policy: Policy, schema: string, name: string): Access;
49
+ export declare function isColumnDenied(policy: Policy, table: string, column: string): boolean;
50
+ /**
51
+ * Combine a source policy with a per-agent override so the result is never more
52
+ * permissive than either: per table the most restrictive access wins, deny lists are
53
+ * unioned, and every cap takes the smaller value.
54
+ */
55
+ export declare function narrowPolicy(base: Policy, override: Policy): Policy;
56
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,eAAO,MAAM,YAAY;;;;EAAoC,CAAC;AAC9D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;kBAcd,CAAC;AACZ,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,CAAC;CAClD;AAUD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CA+C/C,CAAC;AAYH,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,cAAc,CAsIjG;AA4ED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWhF;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8BnE"}