@deepagents/text2sql 7.0.1 → 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 +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"column-stats.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/column-stats.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,oBAAoB;;gBAGtD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,0BAA+B;cAK5C,YAAY,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CA2EpC"}
1
+ {"version":3,"file":"column-stats.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/column-stats.sqlite.grounding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAYvD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,oBAAoB;;gBAGtD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,0BAA+B;cAK5C,YAAY,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAuEpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"column-values.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/column-values.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,MAAM,EACX,qBAAqB,EACrB,KAAK,2BAA2B,EACjC,MAAM,0CAA0C,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;;gBAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,2BAAgC;cAK7C,qBAAqB,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CAmDjC"}
1
+ {"version":3,"file":"column-values.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/column-values.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,MAAM,EACX,qBAAqB,EACrB,KAAK,2BAA2B,EACjC,MAAM,0CAA0C,CAAC;AAGlD;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;;gBAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,2BAAgC;cAK7C,qBAAqB,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CAmDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constraint.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/constraint.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC/B,MAAM,uCAAuC,CAAC;AAuB/C;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB;;gBAGpD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,yBAA8B;cAK3C,cAAc,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;CAoK9B"}
1
+ {"version":3,"file":"constraint.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/constraint.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC/B,MAAM,uCAAuC,CAAC;AAO/C;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB;;gBAGpD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,yBAA8B;cAK3C,cAAc,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;CAwK9B"}
@@ -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");
@@ -432,6 +433,40 @@ var Adapter = class {
432
433
  }
433
434
  return decoded;
434
435
  }
436
+ /**
437
+ * Run an introspection query and check every row against `row`, the shape
438
+ * the driver returns for that query. A row of any other shape throws.
439
+ */
440
+ async runQuery(sql, row) {
441
+ const rows = z.array(row).safeParse(await this.queryRows(sql));
442
+ if (!rows.success) {
443
+ throw new Error(
444
+ `${this.constructor.name} introspection query returned rows of an unexpected shape:
445
+ ${z.prettifyError(rows.error)}
446
+ SQL: ${sql.trim()}`,
447
+ { cause: rows.error }
448
+ );
449
+ }
450
+ return rows.data;
451
+ }
452
+ /**
453
+ * The rows in a driver's execute() result: the result itself when it is an
454
+ * array, otherwise the first array found at one of `paths` (dot-separated,
455
+ * so `recordsets.0` reads `result.recordsets[0]`).
456
+ */
457
+ rowsFrom(result, paths) {
458
+ if (Array.isArray(result)) return result;
459
+ for (const path of paths) {
460
+ const rows = path.split(".").reduce(
461
+ (value, key) => typeof value === "object" && value !== null ? Reflect.get(value, key) : void 0,
462
+ result
463
+ );
464
+ if (Array.isArray(rows)) return rows;
465
+ }
466
+ throw new Error(
467
+ `${this.constructor.name} execute() must return an array of rows or an object holding one at ${paths.map((path) => `result.${path}`).join(", ")}.`
468
+ );
469
+ }
435
470
  /**
436
471
  * Convert unknown database value to number.
437
472
  * Handles number, bigint, and string types.
@@ -992,6 +1027,12 @@ var TableGrounding = class extends AbstractGrounding {
992
1027
  };
993
1028
 
994
1029
  // packages/text2sql/src/lib/adapters/sqlite/column-stats.sqlite.grounding.ts
1030
+ import { z as z2 } from "zod";
1031
+ var statsRow = z2.object({
1032
+ min_value: z2.unknown(),
1033
+ max_value: z2.unknown(),
1034
+ null_fraction: z2.number().nullable()
1035
+ });
995
1036
  var SqliteColumnStatsGrounding = class extends ColumnStatsGrounding {
996
1037
  #adapter;
997
1038
  constructor(adapter, config = {}) {
@@ -1011,7 +1052,7 @@ var SqliteColumnStatsGrounding = class extends ColumnStatsGrounding {
1011
1052
  AVG(CASE WHEN ${columnIdentifier} IS NULL THEN 1.0 ELSE 0.0 END) AS null_fraction
1012
1053
  FROM ${tableIdentifier}
1013
1054
  `;
1014
- const rows = await this.#adapter.runQuery(sql);
1055
+ const rows = await this.#adapter.runQuery(sql, statsRow);
1015
1056
  if (!rows.length) {
1016
1057
  return void 0;
1017
1058
  }
@@ -1059,6 +1100,18 @@ var SqliteColumnStatsGrounding = class extends ColumnStatsGrounding {
1059
1100
  }
1060
1101
  };
1061
1102
 
1103
+ // packages/text2sql/src/lib/adapters/groundings/rows.ts
1104
+ import { z as z3 } from "zod";
1105
+ var nameRow = z3.object({ name: z3.string() });
1106
+ var versionRow = z3.object({ version: z3.string() });
1107
+ var databaseRow = z3.object({ db: z3.string() });
1108
+ var viewDefinitionRow = z3.object({
1109
+ definition: z3.string().nullable()
1110
+ });
1111
+ var distinctValueRow = z3.object({ value: z3.unknown() });
1112
+ var textValueRow = z3.object({ value: z3.string() });
1113
+ var numericValue = z3.union([z3.number(), z3.bigint(), z3.string()]);
1114
+
1062
1115
  // packages/text2sql/src/lib/adapters/sqlite/column-values.sqlite.grounding.ts
1063
1116
  var SqliteColumnValuesGrounding = class extends ColumnValuesGrounding {
1064
1117
  #adapter;
@@ -1076,7 +1129,7 @@ var SqliteColumnValuesGrounding = class extends ColumnValuesGrounding {
1076
1129
  WHERE ${columnIdentifier} IS NOT NULL
1077
1130
  LIMIT ${limit}
1078
1131
  `;
1079
- const rows = await this.#adapter.runQuery(sql);
1132
+ const rows = await this.#adapter.runQuery(sql, distinctValueRow);
1080
1133
  if (!rows.length || rows.length > this.lowCardinalityLimit) {
1081
1134
  return void 0;
1082
1135
  }
@@ -1113,6 +1166,38 @@ var SqliteColumnValuesGrounding = class extends ColumnValuesGrounding {
1113
1166
  }
1114
1167
  };
1115
1168
 
1169
+ // packages/text2sql/src/lib/adapters/sqlite/sqlite-rows.ts
1170
+ import { z as z4 } from "zod";
1171
+ var sqliteInteger = z4.union([z4.number(), z4.bigint()]).transform(Number);
1172
+ var sqliteMasterSqlRow = z4.object({ sql: z4.string().nullable() });
1173
+ var tableInfoRow = z4.object({
1174
+ cid: sqliteInteger,
1175
+ name: z4.string(),
1176
+ type: z4.string(),
1177
+ notnull: sqliteInteger,
1178
+ dflt_value: z4.string().nullable(),
1179
+ pk: sqliteInteger
1180
+ });
1181
+ var foreignKeyListRow = z4.object({
1182
+ id: sqliteInteger,
1183
+ seq: sqliteInteger,
1184
+ table: z4.string(),
1185
+ from: z4.string(),
1186
+ to: z4.string().nullable()
1187
+ });
1188
+ var indexListRow = z4.object({
1189
+ seq: sqliteInteger,
1190
+ name: z4.string(),
1191
+ unique: sqliteInteger,
1192
+ origin: z4.string(),
1193
+ partial: sqliteInteger
1194
+ });
1195
+ var indexInfoRow = z4.object({
1196
+ seqno: sqliteInteger,
1197
+ cid: sqliteInteger,
1198
+ name: z4.string().nullable()
1199
+ });
1200
+
1116
1201
  // packages/text2sql/src/lib/adapters/sqlite/constraint.sqlite.grounding.ts
1117
1202
  var SqliteConstraintGrounding = class extends ConstraintGrounding {
1118
1203
  #adapter;
@@ -1123,7 +1208,8 @@ var SqliteConstraintGrounding = class extends ConstraintGrounding {
1123
1208
  async getConstraints(tableName) {
1124
1209
  const constraints2 = [];
1125
1210
  const columns = await this.#adapter.runQuery(
1126
- `PRAGMA table_info(${this.#quoteIdentifier(tableName)})`
1211
+ `PRAGMA table_info(${this.#quoteIdentifier(tableName)})`,
1212
+ tableInfoRow
1127
1213
  );
1128
1214
  const pkColumns = columns.filter((col) => col.pk > 0).sort((a, b) => a.pk - b.pk).map((col) => col.name);
1129
1215
  if (pkColumns.length > 0) {
@@ -1151,7 +1237,8 @@ var SqliteConstraintGrounding = class extends ConstraintGrounding {
1151
1237
  }
1152
1238
  }
1153
1239
  const fkRows = await this.#adapter.runQuery(
1154
- `PRAGMA foreign_key_list(${this.#quoteIdentifier(tableName)})`
1240
+ `PRAGMA foreign_key_list(${this.#quoteIdentifier(tableName)})`,
1241
+ foreignKeyListRow
1155
1242
  );
1156
1243
  const fkGroups = /* @__PURE__ */ new Map();
1157
1244
  for (const row of fkRows) {
@@ -1166,11 +1253,13 @@ var SqliteConstraintGrounding = class extends ConstraintGrounding {
1166
1253
  type: "FOREIGN_KEY",
1167
1254
  columns: rows.map((r) => r.from),
1168
1255
  referencedTable: rows[0].table,
1169
- referencedColumns: rows.map((r) => r.to)
1256
+ // A key that references the parent's primary key names no columns.
1257
+ referencedColumns: rows.flatMap((r) => r.to === null ? [] : [r.to])
1170
1258
  });
1171
1259
  }
1172
1260
  const ddlRows = await this.#adapter.runQuery(
1173
- `SELECT sql FROM sqlite_master WHERE type='table' AND name=${this.#quoteIdentifier(tableName)}`
1261
+ `SELECT sql FROM sqlite_master WHERE type='table' AND name=${this.#quoteIdentifier(tableName)}`,
1262
+ sqliteMasterSqlRow
1174
1263
  );
1175
1264
  if (ddlRows[0]?.sql) {
1176
1265
  const columnNames = columns.map((c) => c.name);
@@ -1247,15 +1336,17 @@ var SqliteIndexesGrounding = class extends IndexesGrounding {
1247
1336
  }
1248
1337
  async getIndexes(tableName) {
1249
1338
  const indexListRows = await this.#adapter.runQuery(
1250
- `PRAGMA index_list(${this.#quoteIdentifier(tableName)})`
1339
+ `PRAGMA index_list(${this.#quoteIdentifier(tableName)})`,
1340
+ indexListRow
1251
1341
  );
1252
1342
  const indexes2 = [];
1253
1343
  for (const indexRow of indexListRows) {
1254
1344
  if (!indexRow.name) continue;
1255
1345
  const indexInfoRows = await this.#adapter.runQuery(
1256
- `PRAGMA index_info(${this.#quoteIdentifier(indexRow.name)})`
1346
+ `PRAGMA index_info(${this.#quoteIdentifier(indexRow.name)})`,
1347
+ indexInfoRow
1257
1348
  );
1258
- const columns = indexInfoRows.filter((row) => row.name != null).sort((a, b) => a.seqno - b.seqno).map((row) => row.name);
1349
+ const columns = indexInfoRows.toSorted((a, b) => a.seqno - b.seqno).flatMap((row) => row.name === null ? [] : [row.name]);
1259
1350
  if (!columns.length) continue;
1260
1351
  indexes2.push({
1261
1352
  name: indexRow.name,
@@ -1280,7 +1371,8 @@ var SqliteInfoGrounding = class extends InfoGrounding {
1280
1371
  }
1281
1372
  async collectInfo() {
1282
1373
  const rows = await this.#adapter.runQuery(
1283
- "SELECT sqlite_version() AS version"
1374
+ "SELECT sqlite_version() AS version",
1375
+ versionRow
1284
1376
  );
1285
1377
  return {
1286
1378
  dialect: "sqlite",
@@ -1293,6 +1385,8 @@ var SqliteInfoGrounding = class extends InfoGrounding {
1293
1385
  };
1294
1386
 
1295
1387
  // packages/text2sql/src/lib/adapters/sqlite/row-count.sqlite.grounding.ts
1388
+ import { z as z5 } from "zod";
1389
+ var countRow = z5.object({ count: sqliteInteger });
1296
1390
  var SqliteRowCountGrounding = class extends RowCountGrounding {
1297
1391
  #adapter;
1298
1392
  constructor(adapter, config = {}) {
@@ -1301,9 +1395,10 @@ var SqliteRowCountGrounding = class extends RowCountGrounding {
1301
1395
  }
1302
1396
  async getRowCount(tableName) {
1303
1397
  const rows = await this.#adapter.runQuery(
1304
- `SELECT COUNT(*) as count FROM ${this.#adapter.quoteIdentifier(tableName)}`
1398
+ `SELECT COUNT(*) as count FROM ${this.#adapter.quoteIdentifier(tableName)}`,
1399
+ countRow
1305
1400
  );
1306
- return this.#adapter.toNumber(rows[0]?.count);
1401
+ return rows[0]?.count;
1307
1402
  }
1308
1403
  };
1309
1404
 
@@ -1726,17 +1821,8 @@ var Sqlite = class extends Adapter {
1726
1821
  #quoteIdentifier(name) {
1727
1822
  return `'${name.replace(/'/g, "''")}'`;
1728
1823
  }
1729
- async runQuery(sql) {
1730
- const result = await this.#options.execute(sql);
1731
- if (Array.isArray(result)) {
1732
- return result;
1733
- }
1734
- if (result && typeof result === "object" && "rows" in result && Array.isArray(result.rows)) {
1735
- return result.rows;
1736
- }
1737
- throw new Error(
1738
- "Sqlite adapter execute() must return an array of rows or an object with a rows array when introspecting."
1739
- );
1824
+ async queryRows(sql) {
1825
+ return this.rowsFrom(await this.#options.execute(sql), ["rows"]);
1740
1826
  }
1741
1827
  quoteIdentifier(name) {
1742
1828
  return `"${name.replace(/"/g, '""')}"`;
@@ -1759,45 +1845,44 @@ var SqliteTableGrounding = class extends TableGrounding {
1759
1845
  this.#adapter = adapter;
1760
1846
  }
1761
1847
  async getAllTableNames() {
1762
- const rows = await this.#adapter.runQuery(`SELECT name FROM sqlite_master WHERE type='table' ORDER BY name`);
1763
- return rows.map((row) => row.name).filter(
1764
- (name) => typeof name === "string" && !name.startsWith("sqlite_")
1848
+ const rows = await this.#adapter.runQuery(
1849
+ `SELECT name FROM sqlite_master WHERE type='table' ORDER BY name`,
1850
+ nameRow
1765
1851
  );
1852
+ return rows.map((row) => row.name).filter((name) => !name.startsWith("sqlite_"));
1766
1853
  }
1767
1854
  async getTable(tableName) {
1768
1855
  const columns = await this.#adapter.runQuery(
1769
- `PRAGMA table_info(${this.#quoteIdentifier(tableName)})`
1856
+ `PRAGMA table_info(${this.#quoteIdentifier(tableName)})`,
1857
+ tableInfoRow
1770
1858
  );
1771
1859
  return {
1772
1860
  name: tableName,
1773
1861
  rawName: tableName,
1774
- columns: columns.map((col) => ({
1775
- name: col.name ?? "unknown",
1776
- type: col.type ?? "unknown"
1777
- }))
1862
+ columns: columns.map((col) => ({ name: col.name, type: col.type }))
1778
1863
  };
1779
1864
  }
1780
1865
  async findOutgoingRelations(tableName) {
1781
1866
  const rows = await this.#adapter.runQuery(
1782
- `PRAGMA foreign_key_list(${this.#quoteIdentifier(tableName)})`
1867
+ `PRAGMA foreign_key_list(${this.#quoteIdentifier(tableName)})`,
1868
+ foreignKeyListRow
1783
1869
  );
1784
1870
  const groups = /* @__PURE__ */ new Map();
1785
1871
  for (const row of rows) {
1786
- if (row.id == null || row.table == null || row.from == null || row.to == null) {
1872
+ if (row.to === null) {
1787
1873
  continue;
1788
1874
  }
1789
- const id = Number(row.id);
1790
- const existing = groups.get(id);
1875
+ const existing = groups.get(row.id);
1791
1876
  if (!existing) {
1792
- groups.set(id, {
1877
+ groups.set(row.id, {
1793
1878
  table: tableName,
1794
- from: [String(row.from)],
1795
- referenced_table: String(row.table),
1796
- to: [String(row.to)]
1879
+ from: [row.from],
1880
+ referenced_table: row.table,
1881
+ to: [row.to]
1797
1882
  });
1798
1883
  } else {
1799
- existing.from.push(String(row.from));
1800
- existing.to.push(String(row.to));
1884
+ existing.from.push(row.from);
1885
+ existing.to.push(row.to);
1801
1886
  }
1802
1887
  }
1803
1888
  return Array.from(groups.values());
@@ -1886,27 +1971,29 @@ var SqliteViewGrounding = class extends ViewGrounding {
1886
1971
  this.#adapter = adapter;
1887
1972
  }
1888
1973
  async getAllViewNames() {
1889
- const rows = await this.#adapter.runQuery(`SELECT name FROM sqlite_master WHERE type='view' ORDER BY name`);
1890
- return rows.map((row) => row.name).filter((name) => typeof name === "string");
1974
+ const rows = await this.#adapter.runQuery(
1975
+ `SELECT name FROM sqlite_master WHERE type='view' ORDER BY name`,
1976
+ nameRow
1977
+ );
1978
+ return rows.map((row) => row.name);
1891
1979
  }
1892
1980
  async getView(viewName) {
1893
1981
  let definition;
1894
1982
  if (this.includeDefinition) {
1895
1983
  const defRows = await this.#adapter.runQuery(
1896
- `SELECT sql FROM sqlite_master WHERE type='view' AND name=${this.#quoteIdentifier(viewName)}`
1984
+ `SELECT sql FROM sqlite_master WHERE type='view' AND name=${this.#quoteIdentifier(viewName)}`,
1985
+ sqliteMasterSqlRow
1897
1986
  );
1898
1987
  definition = defRows[0]?.sql ?? void 0;
1899
1988
  }
1900
1989
  const columns = await this.#adapter.runQuery(
1901
- `PRAGMA table_info(${this.#quoteIdentifier(viewName)})`
1990
+ `PRAGMA table_info(${this.#quoteIdentifier(viewName)})`,
1991
+ tableInfoRow
1902
1992
  );
1903
1993
  return {
1904
1994
  name: viewName,
1905
1995
  definition,
1906
- columns: columns.map((col) => ({
1907
- name: col.name ?? "unknown",
1908
- type: col.type ?? "unknown"
1909
- }))
1996
+ columns: columns.map((col) => ({ name: col.name, type: col.type }))
1910
1997
  };
1911
1998
  }
1912
1999
  #quoteIdentifier(name) {