@deepagents/text2sql 7.0.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +3 -2
  2. package/dist/bin/sql.js +57 -32
  3. package/dist/index.js +793 -498
  4. package/dist/index.js.map +4 -4
  5. package/dist/lib/adapters/adapter.d.ts +23 -1
  6. package/dist/lib/adapters/adapter.d.ts.map +1 -1
  7. package/dist/lib/adapters/bigquery/bigquery-fk.d.ts +0 -11
  8. package/dist/lib/adapters/bigquery/bigquery-fk.d.ts.map +1 -1
  9. package/dist/lib/adapters/bigquery/bigquery-rows.d.ts +22 -0
  10. package/dist/lib/adapters/bigquery/bigquery-rows.d.ts.map +1 -0
  11. package/dist/lib/adapters/bigquery/bigquery.d.ts +1 -1
  12. package/dist/lib/adapters/bigquery/bigquery.d.ts.map +1 -1
  13. package/dist/lib/adapters/bigquery/constraint.bigquery.grounding.d.ts.map +1 -1
  14. package/dist/lib/adapters/bigquery/index.d.ts +6 -13
  15. package/dist/lib/adapters/bigquery/index.d.ts.map +1 -1
  16. package/dist/lib/adapters/bigquery/index.js +244 -51
  17. package/dist/lib/adapters/bigquery/index.js.map +4 -4
  18. package/dist/lib/adapters/bigquery/indexes.bigquery.grounding.d.ts.map +1 -1
  19. package/dist/lib/adapters/bigquery/row-count.bigquery.grounding.d.ts.map +1 -1
  20. package/dist/lib/adapters/bigquery/table.bigquery.grounding.d.ts.map +1 -1
  21. package/dist/lib/adapters/bigquery/view.bigquery.grounding.d.ts.map +1 -1
  22. package/dist/lib/adapters/clickhouse/clickhouse-rows.d.ts +7 -0
  23. package/dist/lib/adapters/clickhouse/clickhouse-rows.d.ts.map +1 -0
  24. package/dist/lib/adapters/clickhouse/clickhouse.d.ts +1 -1
  25. package/dist/lib/adapters/clickhouse/clickhouse.d.ts.map +1 -1
  26. package/dist/lib/adapters/clickhouse/constraint.clickhouse.grounding.d.ts.map +1 -1
  27. package/dist/lib/adapters/clickhouse/index.js +133 -44
  28. package/dist/lib/adapters/clickhouse/index.js.map +4 -4
  29. package/dist/lib/adapters/clickhouse/indexes.clickhouse.grounding.d.ts.map +1 -1
  30. package/dist/lib/adapters/clickhouse/info.clickhouse.grounding.d.ts.map +1 -1
  31. package/dist/lib/adapters/clickhouse/row-count.clickhouse.grounding.d.ts.map +1 -1
  32. package/dist/lib/adapters/clickhouse/table.clickhouse.grounding.d.ts.map +1 -1
  33. package/dist/lib/adapters/clickhouse/view.clickhouse.grounding.d.ts.map +1 -1
  34. package/dist/lib/adapters/duckdb/duckdb.d.ts +1 -1
  35. package/dist/lib/adapters/duckdb/duckdb.d.ts.map +1 -1
  36. package/dist/lib/adapters/duckdb/duckdb.groundings.d.ts.map +1 -1
  37. package/dist/lib/adapters/duckdb/index.d.ts +8 -10
  38. package/dist/lib/adapters/duckdb/index.d.ts.map +1 -1
  39. package/dist/lib/adapters/duckdb/index.js +1549 -1412
  40. package/dist/lib/adapters/duckdb/index.js.map +4 -4
  41. package/dist/lib/adapters/groundings/index.js.map +1 -1
  42. package/dist/lib/adapters/groundings/rows.d.ts +32 -0
  43. package/dist/lib/adapters/groundings/rows.d.ts.map +1 -0
  44. package/dist/lib/adapters/mysql/column-stats.mysql.grounding.d.ts.map +1 -1
  45. package/dist/lib/adapters/mysql/column-values.mysql.grounding.d.ts.map +1 -1
  46. package/dist/lib/adapters/mysql/constraint.mysql.grounding.d.ts.map +1 -1
  47. package/dist/lib/adapters/mysql/index.d.ts +2 -4
  48. package/dist/lib/adapters/mysql/index.d.ts.map +1 -1
  49. package/dist/lib/adapters/mysql/index.js +230 -76
  50. package/dist/lib/adapters/mysql/index.js.map +4 -4
  51. package/dist/lib/adapters/mysql/indexes.mysql.grounding.d.ts.map +1 -1
  52. package/dist/lib/adapters/mysql/info.mysql.grounding.d.ts.map +1 -1
  53. package/dist/lib/adapters/mysql/mysql-rows.d.ts +11 -0
  54. package/dist/lib/adapters/mysql/mysql-rows.d.ts.map +1 -0
  55. package/dist/lib/adapters/mysql/mysql.d.ts +1 -1
  56. package/dist/lib/adapters/mysql/mysql.d.ts.map +1 -1
  57. package/dist/lib/adapters/mysql/row-count.mysql.grounding.d.ts.map +1 -1
  58. package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts +3 -2
  59. package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts.map +1 -1
  60. package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts +2 -2
  61. package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts.map +1 -1
  62. package/dist/lib/adapters/postgres/column-stats.postgres.grounding.d.ts.map +1 -1
  63. package/dist/lib/adapters/postgres/column-values.postgres.grounding.d.ts.map +1 -1
  64. package/dist/lib/adapters/postgres/constraint.postgres.grounding.d.ts.map +1 -1
  65. package/dist/lib/adapters/postgres/index.d.ts +2 -4
  66. package/dist/lib/adapters/postgres/index.d.ts.map +1 -1
  67. package/dist/lib/adapters/postgres/index.js +266 -487
  68. package/dist/lib/adapters/postgres/index.js.map +4 -4
  69. package/dist/lib/adapters/postgres/indexes.postgres.grounding.d.ts +1 -5
  70. package/dist/lib/adapters/postgres/indexes.postgres.grounding.d.ts.map +1 -1
  71. package/dist/lib/adapters/postgres/info.postgres.grounding.d.ts.map +1 -1
  72. package/dist/lib/adapters/postgres/postgres-rows.d.ts +7 -0
  73. package/dist/lib/adapters/postgres/postgres-rows.d.ts.map +1 -0
  74. package/dist/lib/adapters/postgres/postgres.d.ts +6 -1
  75. package/dist/lib/adapters/postgres/postgres.d.ts.map +1 -1
  76. package/dist/lib/adapters/postgres/row-count.postgres.grounding.d.ts.map +1 -1
  77. package/dist/lib/adapters/postgres/table.postgres.grounding.d.ts +5 -4
  78. package/dist/lib/adapters/postgres/table.postgres.grounding.d.ts.map +1 -1
  79. package/dist/lib/adapters/postgres/view.postgres.grounding.d.ts +3 -3
  80. package/dist/lib/adapters/postgres/view.postgres.grounding.d.ts.map +1 -1
  81. package/dist/lib/adapters/posthog/definitions.posthog.grounding.d.ts.map +1 -1
  82. package/dist/lib/adapters/posthog/index.d.ts +4 -5
  83. package/dist/lib/adapters/posthog/index.d.ts.map +1 -1
  84. package/dist/lib/adapters/posthog/index.js +349 -287
  85. package/dist/lib/adapters/posthog/index.js.map +4 -4
  86. package/dist/lib/adapters/posthog/posthog.d.ts +2 -2
  87. package/dist/lib/adapters/posthog/posthog.d.ts.map +1 -1
  88. package/dist/lib/adapters/posthog/posthog.sql-policy.d.ts.map +1 -1
  89. package/dist/lib/adapters/posthog/schema.posthog.grounding.d.ts.map +1 -1
  90. package/dist/lib/adapters/posthog/transport.d.ts.map +1 -1
  91. package/dist/lib/adapters/posthog/types.d.ts +16 -6
  92. package/dist/lib/adapters/posthog/types.d.ts.map +1 -1
  93. package/dist/lib/adapters/spreadsheet/index.js +113 -34
  94. package/dist/lib/adapters/spreadsheet/index.js.map +4 -4
  95. package/dist/lib/adapters/sqlite/column-stats.sqlite.grounding.d.ts.map +1 -1
  96. package/dist/lib/adapters/sqlite/column-values.sqlite.grounding.d.ts.map +1 -1
  97. package/dist/lib/adapters/sqlite/constraint.sqlite.grounding.d.ts.map +1 -1
  98. package/dist/lib/adapters/sqlite/index.js +136 -49
  99. package/dist/lib/adapters/sqlite/index.js.map +4 -4
  100. package/dist/lib/adapters/sqlite/indexes.sqlite.grounding.d.ts.map +1 -1
  101. package/dist/lib/adapters/sqlite/info.sqlite.grounding.d.ts.map +1 -1
  102. package/dist/lib/adapters/sqlite/row-count.sqlite.grounding.d.ts.map +1 -1
  103. package/dist/lib/adapters/sqlite/sqlite-rows.d.ts +41 -0
  104. package/dist/lib/adapters/sqlite/sqlite-rows.d.ts.map +1 -0
  105. package/dist/lib/adapters/sqlite/sqlite.d.ts +1 -1
  106. package/dist/lib/adapters/sqlite/sqlite.d.ts.map +1 -1
  107. package/dist/lib/adapters/sqlite/table.sqlite.grounding.d.ts.map +1 -1
  108. package/dist/lib/adapters/sqlite/view.sqlite.grounding.d.ts.map +1 -1
  109. package/dist/lib/adapters/sqlserver/column-stats.sqlserver.grounding.d.ts.map +1 -1
  110. package/dist/lib/adapters/sqlserver/column-values.sqlserver.grounding.d.ts.map +1 -1
  111. package/dist/lib/adapters/sqlserver/constraint.sqlserver.grounding.d.ts.map +1 -1
  112. package/dist/lib/adapters/sqlserver/index.d.ts +2 -4
  113. package/dist/lib/adapters/sqlserver/index.d.ts.map +1 -1
  114. package/dist/lib/adapters/sqlserver/index.js +223 -455
  115. package/dist/lib/adapters/sqlserver/index.js.map +4 -4
  116. package/dist/lib/adapters/sqlserver/indexes.sqlserver.grounding.d.ts +1 -5
  117. package/dist/lib/adapters/sqlserver/indexes.sqlserver.grounding.d.ts.map +1 -1
  118. package/dist/lib/adapters/sqlserver/info.sqlserver.grounding.d.ts.map +1 -1
  119. package/dist/lib/adapters/sqlserver/row-count.sqlserver.grounding.d.ts.map +1 -1
  120. package/dist/lib/adapters/sqlserver/sqlserver-rows.d.ts +7 -0
  121. package/dist/lib/adapters/sqlserver/sqlserver-rows.d.ts.map +1 -0
  122. package/dist/lib/adapters/sqlserver/sqlserver.d.ts +6 -1
  123. package/dist/lib/adapters/sqlserver/sqlserver.d.ts.map +1 -1
  124. package/dist/lib/adapters/sqlserver/table.sqlserver.grounding.d.ts +4 -3
  125. package/dist/lib/adapters/sqlserver/table.sqlserver.grounding.d.ts.map +1 -1
  126. package/dist/lib/adapters/sqlserver/view.sqlserver.grounding.d.ts +3 -3
  127. package/dist/lib/adapters/sqlserver/view.sqlserver.grounding.d.ts.map +1 -1
  128. package/dist/lib/agents/sql-transform-plugins.d.ts.map +1 -1
  129. package/dist/lib/checkpoint.d.ts +34 -21
  130. package/dist/lib/checkpoint.d.ts.map +1 -1
  131. package/dist/lib/file-cache.d.ts +6 -1
  132. package/dist/lib/file-cache.d.ts.map +1 -1
  133. package/dist/lib/fs/columns.d.ts +14 -0
  134. package/dist/lib/fs/columns.d.ts.map +1 -0
  135. package/dist/lib/fs/mssql/mssql-fs.d.ts +4 -4
  136. package/dist/lib/fs/mssql/mssql-fs.d.ts.map +1 -1
  137. package/dist/lib/fs/postgres/postgres-fs.d.ts +4 -4
  138. package/dist/lib/fs/postgres/postgres-fs.d.ts.map +1 -1
  139. package/dist/lib/fs/sqlite/sqlite-fs.d.ts +4 -4
  140. package/dist/lib/fs/sqlite/sqlite-fs.d.ts.map +1 -1
  141. package/dist/lib/index-cache.d.ts +4 -3
  142. package/dist/lib/index-cache.d.ts.map +1 -1
  143. package/dist/lib/sql.d.ts.map +1 -1
  144. package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts +1 -2
  145. package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts.map +1 -1
  146. package/dist/lib/synthesis/decorators/filtered-producer.d.ts +0 -2
  147. package/dist/lib/synthesis/decorators/filtered-producer.d.ts.map +1 -1
  148. package/dist/lib/synthesis/decorators/validated-producer.d.ts +1 -3
  149. package/dist/lib/synthesis/decorators/validated-producer.d.ts.map +1 -1
  150. package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
  151. package/dist/lib/synthesis/extractors/message-extractor.d.ts.map +1 -1
  152. package/dist/lib/synthesis/extractors/tool-input.d.ts +6 -0
  153. package/dist/lib/synthesis/extractors/tool-input.d.ts.map +1 -0
  154. package/dist/lib/synthesis/index.js +124 -114
  155. package/dist/lib/synthesis/index.js.map +4 -4
  156. package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts +0 -2
  157. package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts.map +1 -1
  158. package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts +0 -3
  159. package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -1
  160. package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts +0 -2
  161. package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts.map +1 -1
  162. package/package.json +4 -4
@@ -1,5 +1,6 @@
1
1
  // packages/text2sql/src/lib/adapters/adapter.ts
2
2
  import { format as formatSql } from "sql-formatter";
3
+ import { z } from "zod";
3
4
 
4
5
  // packages/text2sql/src/lib/agents/exceptions.ts
5
6
  var sqlValidationMarker = /* @__PURE__ */ Symbol("SQLValidationError");
@@ -172,6 +173,16 @@ function createGroundingContext(options = {}) {
172
173
  }
173
174
 
174
175
  // packages/text2sql/src/lib/adapters/adapter.ts
176
+ function groundingFor(adapterType, create) {
177
+ return (adapter) => {
178
+ if (!(adapter instanceof adapterType)) {
179
+ throw new Error(
180
+ `A ${adapterType.name} grounding needs a ${adapterType.name} adapter, not ${adapter.constructor.name}.`
181
+ );
182
+ }
183
+ return create(adapter);
184
+ };
185
+ }
175
186
  var Adapter = class {
176
187
  #policyAnalyzer;
177
188
  /**
@@ -432,6 +443,40 @@ var Adapter = class {
432
443
  }
433
444
  return decoded;
434
445
  }
446
+ /**
447
+ * Run an introspection query and check every row against `row`, the shape
448
+ * the driver returns for that query. A row of any other shape throws.
449
+ */
450
+ async runQuery(sql, row) {
451
+ const rows = z.array(row).safeParse(await this.queryRows(sql));
452
+ if (!rows.success) {
453
+ throw new Error(
454
+ `${this.constructor.name} introspection query returned rows of an unexpected shape:
455
+ ${z.prettifyError(rows.error)}
456
+ SQL: ${sql.trim()}`,
457
+ { cause: rows.error }
458
+ );
459
+ }
460
+ return rows.data;
461
+ }
462
+ /**
463
+ * The rows in a driver's execute() result: the result itself when it is an
464
+ * array, otherwise the first array found at one of `paths` (dot-separated,
465
+ * so `recordsets.0` reads `result.recordsets[0]`).
466
+ */
467
+ rowsFrom(result, paths) {
468
+ if (Array.isArray(result)) return result;
469
+ for (const path of paths) {
470
+ const rows = path.split(".").reduce(
471
+ (value, key) => typeof value === "object" && value !== null ? Reflect.get(value, key) : void 0,
472
+ result
473
+ );
474
+ if (Array.isArray(rows)) return rows;
475
+ }
476
+ throw new Error(
477
+ `${this.constructor.name} execute() must return an array of rows or an object holding one at ${paths.map((path) => `result.${path}`).join(", ")}.`
478
+ );
479
+ }
435
480
  /**
436
481
  * Convert unknown database value to number.
437
482
  * Handles number, bigint, and string types.
@@ -1141,7 +1186,7 @@ var BigQuerySqlPolicyAnalyzer = class extends ParserSqlPolicyAnalyzer {
1141
1186
 
1142
1187
  // packages/text2sql/src/lib/adapters/bigquery/bigquery.ts
1143
1188
  function formatBigQueryError(sql, error) {
1144
- const errorMessage = error instanceof Error ? error.message : typeof error === "string" ? error : typeof error === "object" && error !== null ? error.message ?? JSON.stringify(error) : "Unknown error occurred";
1189
+ const errorMessage = error instanceof Error ? error.message : typeof error === "string" ? error : typeof error === "object" && error !== null ? "message" in error && typeof error.message === "string" ? error.message : JSON.stringify(error) : "Unknown error occurred";
1145
1190
  return {
1146
1191
  error: errorMessage,
1147
1192
  error_type: "BIGQUERY_ERROR",
@@ -1204,17 +1249,8 @@ var BigQuery = class extends Adapter {
1204
1249
  return JSON.stringify(formatBigQueryError(this.format(sql), error));
1205
1250
  }
1206
1251
  }
1207
- async runQuery(sql) {
1208
- const result = await this.#options.execute(sql);
1209
- if (Array.isArray(result)) {
1210
- return result;
1211
- }
1212
- if (result && typeof result === "object" && "rows" in result && Array.isArray(result.rows)) {
1213
- return result.rows;
1214
- }
1215
- throw new Error(
1216
- "BigQuery adapter execute() must return an array of rows or an object with a rows array when introspecting."
1217
- );
1252
+ async queryRows(sql) {
1253
+ return this.rowsFrom(await this.#options.execute(sql), ["rows"]);
1218
1254
  }
1219
1255
  quoteIdentifier(name) {
1220
1256
  return name.split(".").map((part) => `\`${part.replace(/`/g, "``")}\``).join(".");
@@ -1239,12 +1275,46 @@ var BigQuery = class extends Adapter {
1239
1275
  }
1240
1276
  };
1241
1277
 
1278
+ // packages/text2sql/src/lib/adapters/bigquery/constraint.bigquery.grounding.ts
1279
+ import { z as z4 } from "zod";
1280
+
1281
+ // packages/text2sql/src/lib/adapters/bigquery/bigquery-fk.ts
1282
+ import { z as z3 } from "zod";
1283
+
1284
+ // packages/text2sql/src/lib/adapters/bigquery/bigquery-rows.ts
1285
+ import { z as z2 } from "zod";
1286
+ var int64 = z2.number();
1287
+ var tableNameRow = z2.object({ table_name: z2.string().nullable() });
1288
+ var constraintNameRow = z2.object({
1289
+ constraint_name: z2.string().nullable()
1290
+ });
1291
+ var keyColumnUsageRow = z2.object({
1292
+ constraint_name: z2.string().nullable(),
1293
+ column_name: z2.string().nullable(),
1294
+ ordinal_position: int64.nullable(),
1295
+ position_in_unique_constraint: int64.nullable()
1296
+ });
1297
+
1242
1298
  // packages/text2sql/src/lib/adapters/bigquery/bigquery-fk.ts
1299
+ var referencedTableRow = z3.object({
1300
+ table_schema: z3.string().nullable(),
1301
+ table_name: z3.string().nullable()
1302
+ });
1303
+ var primaryKeyColumnRow = z3.object({
1304
+ column_name: z3.string().nullable(),
1305
+ ordinal_position: int64.nullable()
1306
+ });
1307
+ var fkResolution = z3.object({
1308
+ referencedDataset: z3.string(),
1309
+ referencedTable: z3.string(),
1310
+ referencedColumns: z3.array(z3.string()),
1311
+ childColumns: z3.array(z3.string())
1312
+ });
1243
1313
  var FK_CACHE_PREFIX = "fk:";
1244
1314
  async function resolveForeignKey(adapter, constraintDataset, constraintName, childColumns, cache) {
1245
1315
  const cacheKey = `${FK_CACHE_PREFIX}${constraintDataset}:${constraintName}`;
1246
1316
  if (cache?.has(cacheKey)) {
1247
- const cached = cache.get(cacheKey);
1317
+ const cached = fkResolution.optional().parse(cache.get(cacheKey));
1248
1318
  if (!cached) return void 0;
1249
1319
  return {
1250
1320
  ...cached,
@@ -1261,11 +1331,14 @@ async function resolveForeignKey(adapter, constraintDataset, constraintName, chi
1261
1331
  return result;
1262
1332
  }
1263
1333
  async function resolveFK(adapter, constraintDataset, constraintName, childColumns) {
1264
- const refRows = await adapter.runQuery(`
1334
+ const refRows = await adapter.runQuery(
1335
+ `
1265
1336
  SELECT DISTINCT table_schema, table_name
1266
1337
  FROM ${adapter.infoSchemaView(constraintDataset, "CONSTRAINT_COLUMN_USAGE")}
1267
1338
  WHERE constraint_name = '${adapter.escapeString(constraintName)}'
1268
- `);
1339
+ `,
1340
+ referencedTableRow
1341
+ );
1269
1342
  const referenced = refRows.find((r) => r.table_schema && r.table_name);
1270
1343
  if (!referenced?.table_schema || !referenced.table_name) {
1271
1344
  return void 0;
@@ -1275,22 +1348,28 @@ async function resolveFK(adapter, constraintDataset, constraintName, childColumn
1275
1348
  if (!adapter.isDatasetAllowed(referencedDataset)) {
1276
1349
  return void 0;
1277
1350
  }
1278
- const pkConstraintRows = await adapter.runQuery(`
1351
+ const pkConstraintRows = await adapter.runQuery(
1352
+ `
1279
1353
  SELECT constraint_name
1280
1354
  FROM ${adapter.infoSchemaView(referencedDataset, "TABLE_CONSTRAINTS")}
1281
1355
  WHERE constraint_type = 'PRIMARY KEY'
1282
1356
  AND table_name = '${adapter.escapeString(referencedTable)}'
1283
1357
  LIMIT 1
1284
- `);
1358
+ `,
1359
+ constraintNameRow
1360
+ );
1285
1361
  const pkConstraintName = pkConstraintRows[0]?.constraint_name;
1286
1362
  if (!pkConstraintName) return void 0;
1287
- const pkColumnRows = await adapter.runQuery(`
1363
+ const pkColumnRows = await adapter.runQuery(
1364
+ `
1288
1365
  SELECT column_name, ordinal_position
1289
1366
  FROM ${adapter.infoSchemaView(referencedDataset, "KEY_COLUMN_USAGE")}
1290
1367
  WHERE constraint_name = '${adapter.escapeString(pkConstraintName)}'
1291
1368
  AND table_name = '${adapter.escapeString(referencedTable)}'
1292
1369
  ORDER BY ordinal_position
1293
- `);
1370
+ `,
1371
+ primaryKeyColumnRow
1372
+ );
1294
1373
  const pkByOrdinal = /* @__PURE__ */ new Map();
1295
1374
  for (const row of pkColumnRows) {
1296
1375
  if (!row.column_name || row.ordinal_position == null) continue;
@@ -1309,6 +1388,16 @@ async function resolveFK(adapter, constraintDataset, constraintName, childColumn
1309
1388
  }
1310
1389
 
1311
1390
  // packages/text2sql/src/lib/adapters/bigquery/constraint.bigquery.grounding.ts
1391
+ var columnMetadataRow = z4.object({
1392
+ table_name: z4.string().nullable(),
1393
+ column_name: z4.string().nullable(),
1394
+ is_nullable: z4.string().nullable(),
1395
+ column_default: z4.string().nullable()
1396
+ });
1397
+ var tableKeyColumnRow = keyColumnUsageRow.extend({
1398
+ table_name: z4.string().nullable(),
1399
+ constraint_type: z4.string().nullable()
1400
+ });
1312
1401
  var BigQueryConstraintGrounding = class extends ConstraintGrounding {
1313
1402
  #adapter;
1314
1403
  #cache;
@@ -1367,12 +1456,15 @@ var BigQueryConstraintGrounding = class extends ConstraintGrounding {
1367
1456
  }
1368
1457
  }
1369
1458
  async #batchColumnMetadata(dataset, inList, constraintsByTable) {
1370
- const rows = await this.#adapter.runQuery(`
1459
+ const rows = await this.#adapter.runQuery(
1460
+ `
1371
1461
  SELECT table_name, column_name, is_nullable, column_default
1372
1462
  FROM ${this.#adapter.infoSchemaView(dataset, "COLUMNS")}
1373
1463
  WHERE table_name IN (${inList})
1374
1464
  ORDER BY table_name, ordinal_position
1375
- `);
1465
+ `,
1466
+ columnMetadataRow
1467
+ );
1376
1468
  for (const row of rows) {
1377
1469
  if (!row.table_name || !row.column_name) continue;
1378
1470
  const constraints2 = constraintsByTable.get(row.table_name);
@@ -1395,7 +1487,8 @@ var BigQueryConstraintGrounding = class extends ConstraintGrounding {
1395
1487
  }
1396
1488
  }
1397
1489
  async #batchKeyConstraints(dataset, inList, constraintsByTable) {
1398
- const rows = await this.#adapter.runQuery(`
1490
+ const rows = await this.#adapter.runQuery(
1491
+ `
1399
1492
  SELECT
1400
1493
  tc.table_name,
1401
1494
  tc.constraint_name,
@@ -1410,7 +1503,9 @@ var BigQueryConstraintGrounding = class extends ConstraintGrounding {
1410
1503
  WHERE tc.table_name IN (${inList})
1411
1504
  AND tc.constraint_type IN ('PRIMARY KEY', 'FOREIGN KEY')
1412
1505
  ORDER BY tc.table_name, tc.constraint_name, kcu.ordinal_position
1413
- `);
1506
+ `,
1507
+ tableKeyColumnRow
1508
+ );
1414
1509
  const pkByTable = /* @__PURE__ */ new Map();
1415
1510
  const fkByTable = /* @__PURE__ */ new Map();
1416
1511
  for (const row of rows) {
@@ -1477,6 +1572,13 @@ var BigQueryConstraintGrounding = class extends ConstraintGrounding {
1477
1572
  };
1478
1573
 
1479
1574
  // packages/text2sql/src/lib/adapters/bigquery/indexes.bigquery.grounding.ts
1575
+ import { z as z5 } from "zod";
1576
+ var indexHintRow = z5.object({
1577
+ table_name: z5.string().nullable(),
1578
+ column_name: z5.string().nullable(),
1579
+ is_partitioning_column: z5.string().nullable(),
1580
+ clustering_ordinal_position: int64.nullable()
1581
+ });
1480
1582
  var BigQueryIndexesGrounding = class extends IndexesGrounding {
1481
1583
  #adapter;
1482
1584
  constructor(adapter, config = {}) {
@@ -1516,13 +1618,16 @@ var BigQueryIndexesGrounding = class extends IndexesGrounding {
1516
1618
  (t) => this.#adapter.parseTableName(t.name).table
1517
1619
  );
1518
1620
  const inList = tableNames.map((n) => `'${this.#adapter.escapeString(n)}'`).join(", ");
1519
- const rows = await this.#adapter.runQuery(`
1621
+ const rows = await this.#adapter.runQuery(
1622
+ `
1520
1623
  SELECT table_name, column_name, is_partitioning_column, clustering_ordinal_position
1521
1624
  FROM ${this.#adapter.infoSchemaView(dataset, "COLUMNS")}
1522
1625
  WHERE table_name IN (${inList})
1523
1626
  AND (is_partitioning_column = 'YES' OR clustering_ordinal_position IS NOT NULL)
1524
1627
  ORDER BY table_name, clustering_ordinal_position
1525
- `);
1628
+ `,
1629
+ indexHintRow
1630
+ );
1526
1631
  const byTable = /* @__PURE__ */ new Map();
1527
1632
  for (const row of rows) {
1528
1633
  if (!row.table_name || !row.column_name) continue;
@@ -1603,6 +1708,29 @@ var BigQueryInfoGrounding = class extends InfoGrounding {
1603
1708
  };
1604
1709
 
1605
1710
  // packages/text2sql/src/lib/adapters/bigquery/row-count.bigquery.grounding.ts
1711
+ import { z as z7 } from "zod";
1712
+
1713
+ // packages/text2sql/src/lib/adapters/groundings/rows.ts
1714
+ import { z as z6 } from "zod";
1715
+ var nameRow = z6.object({ name: z6.string() });
1716
+ var versionRow = z6.object({ version: z6.string() });
1717
+ var databaseRow = z6.object({ db: z6.string() });
1718
+ var viewDefinitionRow = z6.object({
1719
+ definition: z6.string().nullable()
1720
+ });
1721
+ var distinctValueRow = z6.object({ value: z6.unknown() });
1722
+ var textValueRow = z6.object({ value: z6.string() });
1723
+ var numericValue = z6.union([z6.number(), z6.bigint(), z6.string()]);
1724
+
1725
+ // packages/text2sql/src/lib/adapters/bigquery/row-count.bigquery.grounding.ts
1726
+ var tableStorageRow = z7.object({
1727
+ table_name: z7.string().nullable(),
1728
+ total_rows: numericValue.nullable()
1729
+ });
1730
+ var legacyRowCountRow = z7.object({
1731
+ table_name: z7.string().nullable(),
1732
+ row_count: numericValue.nullable()
1733
+ });
1606
1734
  var BigQueryRowCountGrounding = class extends RowCountGrounding {
1607
1735
  #adapter;
1608
1736
  constructor(adapter, config = {}) {
@@ -1658,11 +1786,14 @@ var BigQueryRowCountGrounding = class extends RowCountGrounding {
1658
1786
  return /* @__PURE__ */ new Map();
1659
1787
  }
1660
1788
  async #fromTableStorage(dataset, inList) {
1661
- const rows = await this.#adapter.runQuery(`
1789
+ const rows = await this.#adapter.runQuery(
1790
+ `
1662
1791
  SELECT table_name, total_rows
1663
1792
  FROM ${this.#adapter.infoSchemaView(dataset, "TABLE_STORAGE")}
1664
1793
  WHERE table_name IN (${inList})
1665
- `);
1794
+ `,
1795
+ tableStorageRow
1796
+ );
1666
1797
  const result = /* @__PURE__ */ new Map();
1667
1798
  for (const row of rows) {
1668
1799
  if (!row.table_name) continue;
@@ -1673,11 +1804,14 @@ var BigQueryRowCountGrounding = class extends RowCountGrounding {
1673
1804
  }
1674
1805
  async #fromLegacyTables(dataset, inList) {
1675
1806
  const projectPrefix = this.#adapter.projectId ? `\`${this.#adapter.projectId}\`.` : "";
1676
- const rows = await this.#adapter.runQuery(`
1807
+ const rows = await this.#adapter.runQuery(
1808
+ `
1677
1809
  SELECT table_id AS table_name, row_count
1678
1810
  FROM ${projectPrefix}\`${dataset}\`.__TABLES__
1679
1811
  WHERE table_id IN (${inList})
1680
- `);
1812
+ `,
1813
+ legacyRowCountRow
1814
+ );
1681
1815
  const result = /* @__PURE__ */ new Map();
1682
1816
  for (const row of rows) {
1683
1817
  if (!row.table_name) continue;
@@ -1699,6 +1833,15 @@ var BigQueryRowCountGrounding = class extends RowCountGrounding {
1699
1833
  };
1700
1834
 
1701
1835
  // packages/text2sql/src/lib/adapters/bigquery/table.bigquery.grounding.ts
1836
+ import { z as z8 } from "zod";
1837
+ var columnFieldPathRow = z8.object({
1838
+ field_path: z8.string().nullable(),
1839
+ data_type: z8.string().nullable(),
1840
+ ordinal_position: int64.nullable()
1841
+ });
1842
+ var childKeyColumnRow = keyColumnUsageRow.extend({
1843
+ child_table_name: z8.string().nullable()
1844
+ });
1702
1845
  var BigQueryTableGrounding = class extends TableGrounding {
1703
1846
  #adapter;
1704
1847
  #cache;
@@ -1722,12 +1865,15 @@ var BigQueryTableGrounding = class extends TableGrounding {
1722
1865
  async getAllTableNames() {
1723
1866
  const names = [];
1724
1867
  for (const dataset of this.#adapter.datasets) {
1725
- const rows = await this.#adapter.runQuery(`
1868
+ const rows = await this.#adapter.runQuery(
1869
+ `
1726
1870
  SELECT table_name
1727
1871
  FROM ${this.#adapter.infoSchemaView(dataset, "TABLES")}
1728
1872
  WHERE table_type = 'BASE TABLE'
1729
1873
  ORDER BY table_name
1730
- `);
1874
+ `,
1875
+ tableNameRow
1876
+ );
1731
1877
  for (const row of rows) {
1732
1878
  if (!row.table_name) continue;
1733
1879
  names.push(`${dataset}.${row.table_name}`);
@@ -1737,7 +1883,8 @@ var BigQueryTableGrounding = class extends TableGrounding {
1737
1883
  }
1738
1884
  async getTable(tableName) {
1739
1885
  const { schema: dataset, table: table2 } = this.#adapter.parseTableName(tableName);
1740
- const rows = await this.#adapter.runQuery(`
1886
+ const rows = await this.#adapter.runQuery(
1887
+ `
1741
1888
  SELECT
1742
1889
  f.field_path,
1743
1890
  f.data_type,
@@ -1748,7 +1895,9 @@ var BigQueryTableGrounding = class extends TableGrounding {
1748
1895
  AND f.column_name = c.column_name
1749
1896
  WHERE f.table_name = '${this.#adapter.escapeString(table2)}'
1750
1897
  ORDER BY c.ordinal_position, f.field_path
1751
- `);
1898
+ `,
1899
+ columnFieldPathRow
1900
+ );
1752
1901
  const seen = /* @__PURE__ */ new Set();
1753
1902
  const columns = rows.map((r) => ({
1754
1903
  name: r.field_path ?? "unknown",
@@ -1769,7 +1918,8 @@ var BigQueryTableGrounding = class extends TableGrounding {
1769
1918
  }
1770
1919
  async findOutgoingRelations(tableName) {
1771
1920
  const { schema: dataset, table: table2 } = this.#adapter.parseTableName(tableName);
1772
- const rows = await this.#adapter.runQuery(`
1921
+ const rows = await this.#adapter.runQuery(
1922
+ `
1773
1923
  SELECT
1774
1924
  kcu.constraint_name,
1775
1925
  kcu.column_name,
@@ -1782,7 +1932,9 @@ var BigQueryTableGrounding = class extends TableGrounding {
1782
1932
  WHERE tc.constraint_type = 'FOREIGN KEY'
1783
1933
  AND tc.table_name = '${this.#adapter.escapeString(table2)}'
1784
1934
  ORDER BY kcu.constraint_name, kcu.ordinal_position
1785
- `);
1935
+ `,
1936
+ keyColumnUsageRow
1937
+ );
1786
1938
  const byConstraint = /* @__PURE__ */ new Map();
1787
1939
  for (const row of rows) {
1788
1940
  if (!row.constraint_name || !row.column_name) continue;
@@ -1818,12 +1970,15 @@ var BigQueryTableGrounding = class extends TableGrounding {
1818
1970
  const { schema: referencedDataset, table: referencedTable } = this.#adapter.parseTableName(tableName);
1819
1971
  const rels = [];
1820
1972
  for (const constraintDataset of this.#adapter.datasets) {
1821
- const rows = await this.#adapter.runQuery(`
1973
+ const rows = await this.#adapter.runQuery(
1974
+ `
1822
1975
  SELECT DISTINCT constraint_name
1823
1976
  FROM ${this.#adapter.infoSchemaView(constraintDataset, "CONSTRAINT_COLUMN_USAGE")}
1824
1977
  WHERE table_schema = '${this.#adapter.escapeString(referencedDataset)}'
1825
1978
  AND table_name = '${this.#adapter.escapeString(referencedTable)}'
1826
- `);
1979
+ `,
1980
+ constraintNameRow
1981
+ );
1827
1982
  for (const row of rows) {
1828
1983
  if (!row.constraint_name) continue;
1829
1984
  const rel = await this.#resolveIncomingRelationship(
@@ -1838,7 +1993,8 @@ var BigQueryTableGrounding = class extends TableGrounding {
1838
1993
  return rels;
1839
1994
  }
1840
1995
  async #resolveIncomingRelationship(constraintDataset, constraintName, expectedReferencedDataset, expectedReferencedTable) {
1841
- const keyRows = await this.#adapter.runQuery(`
1996
+ const keyRows = await this.#adapter.runQuery(
1997
+ `
1842
1998
  SELECT
1843
1999
  kcu.constraint_name,
1844
2000
  tc.table_name AS child_table_name,
@@ -1852,7 +2008,9 @@ var BigQueryTableGrounding = class extends TableGrounding {
1852
2008
  WHERE tc.constraint_type = 'FOREIGN KEY'
1853
2009
  AND tc.constraint_name = '${this.#adapter.escapeString(constraintName)}'
1854
2010
  ORDER BY kcu.ordinal_position
1855
- `);
2011
+ `,
2012
+ childKeyColumnRow
2013
+ );
1856
2014
  if (keyRows.length === 0) return void 0;
1857
2015
  const childTable = keyRows[0]?.child_table_name;
1858
2016
  if (!childTable) return void 0;
@@ -1884,6 +2042,9 @@ var BigQueryTableGrounding = class extends TableGrounding {
1884
2042
  }
1885
2043
  };
1886
2044
 
2045
+ // packages/text2sql/src/lib/adapters/bigquery/view.bigquery.grounding.ts
2046
+ import { z as z9 } from "zod";
2047
+
1887
2048
  // packages/text2sql/src/lib/adapters/groundings/view.grounding.ts
1888
2049
  var ViewGrounding = class extends AbstractGrounding {
1889
2050
  #filter;
@@ -1940,6 +2101,11 @@ var ViewGrounding = class extends AbstractGrounding {
1940
2101
  };
1941
2102
 
1942
2103
  // packages/text2sql/src/lib/adapters/bigquery/view.bigquery.grounding.ts
2104
+ var viewDefinitionRow2 = z9.object({ ddl: z9.string().nullable() });
2105
+ var columnRow = z9.object({
2106
+ column_name: z9.string().nullable(),
2107
+ data_type: z9.string().nullable()
2108
+ });
1943
2109
  var BigQueryViewGrounding = class extends ViewGrounding {
1944
2110
  #adapter;
1945
2111
  constructor(adapter, config = {}) {
@@ -1953,12 +2119,15 @@ var BigQueryViewGrounding = class extends ViewGrounding {
1953
2119
  async getAllViewNames() {
1954
2120
  const names = [];
1955
2121
  for (const dataset of this.#adapter.datasets) {
1956
- const rows = await this.#adapter.runQuery(`
2122
+ const rows = await this.#adapter.runQuery(
2123
+ `
1957
2124
  SELECT table_name
1958
2125
  FROM ${this.#adapter.infoSchemaView(dataset, "TABLES")}
1959
2126
  WHERE table_type IN ('VIEW', 'MATERIALIZED VIEW')
1960
2127
  ORDER BY table_name
1961
- `);
2128
+ `,
2129
+ tableNameRow
2130
+ );
1962
2131
  for (const row of rows) {
1963
2132
  if (!row.table_name) continue;
1964
2133
  names.push(`${dataset}.${row.table_name}`);
@@ -1970,21 +2139,27 @@ var BigQueryViewGrounding = class extends ViewGrounding {
1970
2139
  const { schema: dataset, table: table2 } = this.#adapter.parseTableName(viewName);
1971
2140
  let definition;
1972
2141
  if (this.includeDefinition) {
1973
- const defRows = await this.#adapter.runQuery(`
2142
+ const defRows = await this.#adapter.runQuery(
2143
+ `
1974
2144
  SELECT ddl
1975
2145
  FROM ${this.#adapter.infoSchemaView(dataset, "TABLES")}
1976
2146
  WHERE table_name = '${this.#adapter.escapeString(table2)}'
1977
2147
  AND table_type IN ('VIEW', 'MATERIALIZED VIEW')
1978
2148
  LIMIT 1
1979
- `);
2149
+ `,
2150
+ viewDefinitionRow2
2151
+ );
1980
2152
  definition = defRows[0]?.ddl ?? void 0;
1981
2153
  }
1982
- const columns = await this.#adapter.runQuery(`
2154
+ const columns = await this.#adapter.runQuery(
2155
+ `
1983
2156
  SELECT column_name, data_type
1984
2157
  FROM ${this.#adapter.infoSchemaView(dataset, "COLUMNS")}
1985
2158
  WHERE table_name = '${this.#adapter.escapeString(table2)}'
1986
2159
  ORDER BY ordinal_position
1987
- `);
2160
+ `,
2161
+ columnRow
2162
+ );
1988
2163
  return {
1989
2164
  name: `${dataset}.${table2}`,
1990
2165
  schema: dataset,
@@ -2004,22 +2179,40 @@ var BigQueryViewGrounding = class extends ViewGrounding {
2004
2179
 
2005
2180
  // packages/text2sql/src/lib/adapters/bigquery/index.ts
2006
2181
  function tables(config = {}) {
2007
- return (adapter) => new BigQueryTableGrounding(adapter, config);
2182
+ return groundingFor(
2183
+ BigQuery,
2184
+ (adapter) => new BigQueryTableGrounding(adapter, config)
2185
+ );
2008
2186
  }
2009
2187
  function info(config = {}) {
2010
- return (adapter) => new BigQueryInfoGrounding(adapter);
2188
+ return groundingFor(
2189
+ BigQuery,
2190
+ (adapter) => new BigQueryInfoGrounding(adapter)
2191
+ );
2011
2192
  }
2012
2193
  function views(config = {}) {
2013
- return (adapter) => new BigQueryViewGrounding(adapter, config);
2194
+ return groundingFor(
2195
+ BigQuery,
2196
+ (adapter) => new BigQueryViewGrounding(adapter, config)
2197
+ );
2014
2198
  }
2015
2199
  function indexes(config = {}) {
2016
- return (adapter) => new BigQueryIndexesGrounding(adapter, config);
2200
+ return groundingFor(
2201
+ BigQuery,
2202
+ (adapter) => new BigQueryIndexesGrounding(adapter, config)
2203
+ );
2017
2204
  }
2018
2205
  function rowCount(config = {}) {
2019
- return (adapter) => new BigQueryRowCountGrounding(adapter, config);
2206
+ return groundingFor(
2207
+ BigQuery,
2208
+ (adapter) => new BigQueryRowCountGrounding(adapter, config)
2209
+ );
2020
2210
  }
2021
2211
  function constraints(config = {}) {
2022
- return (adapter) => new BigQueryConstraintGrounding(adapter, config);
2212
+ return groundingFor(
2213
+ BigQuery,
2214
+ (adapter) => new BigQueryConstraintGrounding(adapter, config)
2215
+ );
2023
2216
  }
2024
2217
  var bigquery_default = {
2025
2218
  tables,