@deepagents/text2sql 0.37.0 → 0.38.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 +10 -1
- package/dist/index.js +159 -40
- package/dist/index.js.map +2 -2
- package/dist/lib/adapters/adapter.d.ts +4 -4
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/constraint.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/index.js +160 -31
- package/dist/lib/adapters/bigquery/index.js.map +3 -3
- package/dist/lib/adapters/bigquery/indexes.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/row-count.bigquery.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts +3 -1
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/column-stats.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/column-values.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/constraint.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/context.d.ts +6 -2
- package/dist/lib/adapters/groundings/context.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/index.js +96 -20
- package/dist/lib/adapters/groundings/index.js.map +2 -2
- package/dist/lib/adapters/groundings/indexes.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/row-count.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/table.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/view.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/index.js +145 -35
- package/dist/lib/adapters/mysql/index.js.map +3 -3
- package/dist/lib/adapters/postgres/index.js +151 -35
- package/dist/lib/adapters/postgres/index.js.map +3 -3
- package/dist/lib/adapters/postgres/postgres.d.ts.map +1 -1
- package/dist/lib/adapters/spreadsheet/index.js +109 -27
- package/dist/lib/adapters/spreadsheet/index.js.map +3 -3
- package/dist/lib/adapters/sqlite/index.js +145 -35
- package/dist/lib/adapters/sqlite/index.js.map +3 -3
- package/dist/lib/adapters/sqlserver/index.js +151 -35
- package/dist/lib/adapters/sqlserver/index.js.map +3 -3
- package/dist/lib/adapters/sqlserver/sqlserver.d.ts.map +1 -1
- package/dist/lib/sql.d.ts +14 -2
- package/dist/lib/sql.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/postgres/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,WAAW,EAKhB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAwEF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;;;;;EA0B9D;AAED,qBAAa,QAAS,SAAQ,OAAO;;IAEnC,SAAkB,SAAS,EAAE,WAAW,EAAE,CAAC;IAC3C,SAAkB,aAAa,YAAY;IAC3C,SAAkB,aAAa,WAAwC;IACvE,SAAkB,iBAAiB,gBAAgB;gBAEvC,OAAO,EAAE,sBAAsB;IAY5B,WAAW,CAAC,GAAG,EAAE,MAAM;IAIvB,YAAY,CAAC,GAAG,EAAE,MAAM;IAcxB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIhD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,oBAAoB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM;
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/postgres/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,WAAW,EAKhB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAwEF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;;;;;EA0B9D;AAED,qBAAa,QAAS,SAAQ,OAAO;;IAEnC,SAAkB,SAAS,EAAE,WAAW,EAAE,CAAC;IAC3C,SAAkB,aAAa,YAAY;IAC3C,SAAkB,aAAa,WAAwC;IACvE,SAAkB,iBAAiB,gBAAgB;gBAEvC,OAAO,EAAE,sBAAsB;IAY5B,WAAW,CAAC,GAAG,EAAE,MAAM;IAIvB,YAAY,CAAC,GAAG,EAAE,MAAM;IAcxB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIhD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI7B,oBAAoB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM;CAgdV"}
|
|
@@ -148,13 +148,14 @@ function relationship(input) {
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
// packages/text2sql/src/lib/adapters/groundings/context.ts
|
|
151
|
-
function createGroundingContext() {
|
|
151
|
+
function createGroundingContext(options = {}) {
|
|
152
152
|
return {
|
|
153
153
|
tables: [],
|
|
154
154
|
views: [],
|
|
155
155
|
relationships: [],
|
|
156
156
|
info: void 0,
|
|
157
|
-
cache: /* @__PURE__ */ new Map()
|
|
157
|
+
cache: /* @__PURE__ */ new Map(),
|
|
158
|
+
onProgress: options.onProgress
|
|
158
159
|
};
|
|
159
160
|
}
|
|
160
161
|
|
|
@@ -300,7 +301,24 @@ var Adapter = class {
|
|
|
300
301
|
async introspect(ctx = createGroundingContext()) {
|
|
301
302
|
for (const fn of this.grounding) {
|
|
302
303
|
const grounding = fn(this);
|
|
303
|
-
|
|
304
|
+
if (grounding.phase) {
|
|
305
|
+
ctx.onProgress?.({
|
|
306
|
+
type: "phase:start",
|
|
307
|
+
phase: grounding.phase,
|
|
308
|
+
message: `Starting ${grounding.name} introspection...`
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
await grounding.execute(ctx);
|
|
313
|
+
} finally {
|
|
314
|
+
if (grounding.phase) {
|
|
315
|
+
ctx.onProgress?.({
|
|
316
|
+
type: "phase:end",
|
|
317
|
+
phase: grounding.phase,
|
|
318
|
+
message: `Finished ${grounding.name} introspection.`
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
304
322
|
}
|
|
305
323
|
return this.#toSchemaFragments(ctx);
|
|
306
324
|
}
|
|
@@ -506,26 +524,33 @@ var Adapter = class {
|
|
|
506
524
|
async #checkScope(sql, allowedEntities) {
|
|
507
525
|
const dialect = this.formatterLanguage;
|
|
508
526
|
const scopeDialects = {
|
|
509
|
-
sqlite: "mysql",
|
|
510
|
-
postgresql: "postgresql",
|
|
511
|
-
bigquery: "bigquery",
|
|
512
|
-
transactsql: "transactsql",
|
|
513
|
-
mysql: "mysql"
|
|
527
|
+
sqlite: ["sqlite", "mysql"],
|
|
528
|
+
postgresql: ["postgresql"],
|
|
529
|
+
bigquery: ["bigquery"],
|
|
530
|
+
transactsql: ["transactsql"],
|
|
531
|
+
mysql: ["mysql"]
|
|
514
532
|
};
|
|
515
|
-
const
|
|
516
|
-
if (!
|
|
533
|
+
const candidates = scopeDialects[dialect];
|
|
534
|
+
if (!candidates) {
|
|
517
535
|
throw new TypeError(
|
|
518
536
|
`No scope dialect mapping for formatter language "${dialect}". Add it to the scopeDialects map in Adapter.#checkScope.`
|
|
519
537
|
);
|
|
520
538
|
}
|
|
521
|
-
let references;
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
539
|
+
let references = null;
|
|
540
|
+
let lastError;
|
|
541
|
+
for (const candidate of candidates) {
|
|
542
|
+
try {
|
|
543
|
+
references = extractBaseEntityReferences(sql, candidate);
|
|
544
|
+
break;
|
|
545
|
+
} catch (error) {
|
|
546
|
+
lastError = error;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
if (references === null) {
|
|
525
550
|
return buildScopeParseErrorPayload(
|
|
526
551
|
sql,
|
|
527
552
|
dialect,
|
|
528
|
-
|
|
553
|
+
lastError
|
|
529
554
|
);
|
|
530
555
|
}
|
|
531
556
|
if (references.length === 0) return null;
|
|
@@ -648,15 +673,17 @@ var AbstractGrounding = class {
|
|
|
648
673
|
* Grounding identifier for debugging/logging.
|
|
649
674
|
*/
|
|
650
675
|
name;
|
|
651
|
-
|
|
676
|
+
phase;
|
|
677
|
+
constructor(name, phase) {
|
|
652
678
|
this.name = name;
|
|
679
|
+
this.phase = phase;
|
|
653
680
|
}
|
|
654
681
|
};
|
|
655
682
|
|
|
656
683
|
// packages/text2sql/src/lib/adapters/groundings/column-stats.grounding.ts
|
|
657
684
|
var ColumnStatsGrounding = class extends AbstractGrounding {
|
|
658
685
|
constructor(config = {}) {
|
|
659
|
-
super("columnStats");
|
|
686
|
+
super("columnStats", "column_stats");
|
|
660
687
|
}
|
|
661
688
|
/**
|
|
662
689
|
* Execute the grounding process.
|
|
@@ -664,7 +691,17 @@ var ColumnStatsGrounding = class extends AbstractGrounding {
|
|
|
664
691
|
*/
|
|
665
692
|
async execute(ctx) {
|
|
666
693
|
const allContainers = [...ctx.tables, ...ctx.views];
|
|
667
|
-
|
|
694
|
+
const total = allContainers.length;
|
|
695
|
+
for (let i = 0; i < allContainers.length; i++) {
|
|
696
|
+
const container = allContainers[i];
|
|
697
|
+
ctx.onProgress?.({
|
|
698
|
+
type: "phase:progress",
|
|
699
|
+
phase: "column_stats",
|
|
700
|
+
table: container.name,
|
|
701
|
+
message: `Collecting stats for ${container.name}...`,
|
|
702
|
+
current: i + 1,
|
|
703
|
+
total
|
|
704
|
+
});
|
|
668
705
|
for (const column2 of container.columns) {
|
|
669
706
|
try {
|
|
670
707
|
const stats = await this.collectStats(container.name, column2);
|
|
@@ -689,7 +726,7 @@ var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
|
689
726
|
lowCardinalityLimit;
|
|
690
727
|
maxValueLength;
|
|
691
728
|
constructor(config = {}) {
|
|
692
|
-
super("columnValues");
|
|
729
|
+
super("columnValues", "column_values");
|
|
693
730
|
this.lowCardinalityLimit = config.lowCardinalityLimit ?? 20;
|
|
694
731
|
this.maxValueLength = config.maxValueLength ?? 100;
|
|
695
732
|
}
|
|
@@ -772,7 +809,17 @@ var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
|
772
809
|
*/
|
|
773
810
|
async execute(ctx) {
|
|
774
811
|
const allContainers = [...ctx.tables, ...ctx.views];
|
|
775
|
-
|
|
812
|
+
const total = allContainers.length;
|
|
813
|
+
for (let i = 0; i < allContainers.length; i++) {
|
|
814
|
+
const container = allContainers[i];
|
|
815
|
+
ctx.onProgress?.({
|
|
816
|
+
type: "phase:progress",
|
|
817
|
+
phase: "column_values",
|
|
818
|
+
table: container.name,
|
|
819
|
+
message: `Collecting column values for ${container.name}...`,
|
|
820
|
+
current: i + 1,
|
|
821
|
+
total
|
|
822
|
+
});
|
|
776
823
|
const table2 = this.getTable(ctx, container.name);
|
|
777
824
|
for (const column2 of container.columns) {
|
|
778
825
|
try {
|
|
@@ -826,7 +873,7 @@ var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
|
826
873
|
// packages/text2sql/src/lib/adapters/groundings/info.grounding.ts
|
|
827
874
|
var InfoGrounding = class extends AbstractGrounding {
|
|
828
875
|
constructor(config = {}) {
|
|
829
|
-
super("dialectInfo");
|
|
876
|
+
super("dialectInfo", "info");
|
|
830
877
|
}
|
|
831
878
|
/**
|
|
832
879
|
* Execute the grounding process.
|
|
@@ -840,14 +887,24 @@ var InfoGrounding = class extends AbstractGrounding {
|
|
|
840
887
|
// packages/text2sql/src/lib/adapters/groundings/row-count.grounding.ts
|
|
841
888
|
var RowCountGrounding = class extends AbstractGrounding {
|
|
842
889
|
constructor(config = {}) {
|
|
843
|
-
super("rowCount");
|
|
890
|
+
super("rowCount", "row_counts");
|
|
844
891
|
}
|
|
845
892
|
/**
|
|
846
893
|
* Execute the grounding process.
|
|
847
894
|
* Annotates tables in ctx.tables with row counts and size hints.
|
|
848
895
|
*/
|
|
849
896
|
async execute(ctx) {
|
|
850
|
-
|
|
897
|
+
const total = ctx.tables.length;
|
|
898
|
+
for (let i = 0; i < ctx.tables.length; i++) {
|
|
899
|
+
const table2 = ctx.tables[i];
|
|
900
|
+
ctx.onProgress?.({
|
|
901
|
+
type: "phase:progress",
|
|
902
|
+
phase: "row_counts",
|
|
903
|
+
table: table2.name,
|
|
904
|
+
message: `Counting rows in ${table2.name}...`,
|
|
905
|
+
current: i + 1,
|
|
906
|
+
total
|
|
907
|
+
});
|
|
851
908
|
const count = await this.getRowCount(table2.name);
|
|
852
909
|
if (count != null) {
|
|
853
910
|
table2.rowCount = count;
|
|
@@ -874,7 +931,7 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
874
931
|
#forward;
|
|
875
932
|
#backward;
|
|
876
933
|
constructor(config = {}) {
|
|
877
|
-
super("table");
|
|
934
|
+
super("table", "tables");
|
|
878
935
|
this.#filter = config.filter;
|
|
879
936
|
this.#columns = config.columns;
|
|
880
937
|
this.#forward = config.forward;
|
|
@@ -890,9 +947,17 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
890
947
|
const backward = this.#backward;
|
|
891
948
|
if (!forward && !backward) {
|
|
892
949
|
const tables3 = await Promise.all(
|
|
893
|
-
seedTables.map(
|
|
894
|
-
|
|
895
|
-
|
|
950
|
+
seedTables.map(async (name, index2) => {
|
|
951
|
+
ctx.onProgress?.({
|
|
952
|
+
type: "phase:progress",
|
|
953
|
+
phase: "tables",
|
|
954
|
+
table: name,
|
|
955
|
+
message: `Loading table ${name}...`,
|
|
956
|
+
current: index2 + 1,
|
|
957
|
+
total: seedTables.length
|
|
958
|
+
});
|
|
959
|
+
return applyColumnFilter(await this.getTable(name), this.#columns);
|
|
960
|
+
})
|
|
896
961
|
);
|
|
897
962
|
ctx.tables.push(...tables3);
|
|
898
963
|
return;
|
|
@@ -904,6 +969,7 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
904
969
|
const backwardQueue = [];
|
|
905
970
|
const forwardVisited = /* @__PURE__ */ new Set();
|
|
906
971
|
const backwardVisited = /* @__PURE__ */ new Set();
|
|
972
|
+
let loadedCount = 0;
|
|
907
973
|
for (const name of seedTables) {
|
|
908
974
|
if (forward) forwardQueue.push({ name, depth: 0 });
|
|
909
975
|
if (backward) backwardQueue.push({ name, depth: 0 });
|
|
@@ -916,6 +982,14 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
916
982
|
if (forwardVisited.has(name)) continue;
|
|
917
983
|
forwardVisited.add(name);
|
|
918
984
|
if (!tables2[name]) {
|
|
985
|
+
loadedCount++;
|
|
986
|
+
ctx.onProgress?.({
|
|
987
|
+
type: "phase:progress",
|
|
988
|
+
phase: "tables",
|
|
989
|
+
table: name,
|
|
990
|
+
message: `Loading table ${name}...`,
|
|
991
|
+
current: loadedCount
|
|
992
|
+
});
|
|
919
993
|
tables2[name] = applyColumnFilter(
|
|
920
994
|
await this.getTable(name),
|
|
921
995
|
this.#columns
|
|
@@ -940,6 +1014,14 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
940
1014
|
if (backwardVisited.has(name)) continue;
|
|
941
1015
|
backwardVisited.add(name);
|
|
942
1016
|
if (!tables2[name]) {
|
|
1017
|
+
loadedCount++;
|
|
1018
|
+
ctx.onProgress?.({
|
|
1019
|
+
type: "phase:progress",
|
|
1020
|
+
phase: "tables",
|
|
1021
|
+
table: name,
|
|
1022
|
+
message: `Loading table ${name}...`,
|
|
1023
|
+
current: loadedCount
|
|
1024
|
+
});
|
|
943
1025
|
tables2[name] = applyColumnFilter(
|
|
944
1026
|
await this.getTable(name),
|
|
945
1027
|
this.#columns
|