@deepagents/text2sql 0.30.0 → 0.32.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/dist/index.js +18 -2
- package/dist/index.js.map +3 -3
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/bigquery/index.js +62 -5
- package/dist/lib/adapters/bigquery/index.js.map +3 -3
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts +23 -0
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/index.js +48 -5
- package/dist/lib/adapters/groundings/index.js.map +2 -2
- package/dist/lib/adapters/groundings/table.grounding.d.ts +9 -1
- package/dist/lib/adapters/groundings/table.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/view.grounding.d.ts +7 -1
- package/dist/lib/adapters/groundings/view.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/index.js +62 -5
- package/dist/lib/adapters/mysql/index.js.map +3 -3
- package/dist/lib/adapters/postgres/index.js +62 -5
- package/dist/lib/adapters/postgres/index.js.map +3 -3
- package/dist/lib/adapters/spreadsheet/index.js +57 -4
- package/dist/lib/adapters/spreadsheet/index.js.map +3 -3
- package/dist/lib/adapters/sqlite/index.js +62 -5
- package/dist/lib/adapters/sqlite/index.js.map +3 -3
- package/dist/lib/adapters/sqlserver/index.js +62 -5
- package/dist/lib/adapters/sqlserver/index.js.map +3 -3
- package/package.json +7 -7
|
@@ -328,7 +328,18 @@ var Adapter = class {
|
|
|
328
328
|
fragments.push(this.#viewToFragment(v));
|
|
329
329
|
}
|
|
330
330
|
const tableMap = new Map(ctx.tables.map((t) => [t.name, t]));
|
|
331
|
+
const tableColumnSets = new Map(
|
|
332
|
+
ctx.tables.map((t) => [t.name, new Set(t.columns.map((c) => c.name))])
|
|
333
|
+
);
|
|
331
334
|
for (const rel of ctx.relationships) {
|
|
335
|
+
const sourceColumns = tableColumnSets.get(rel.table);
|
|
336
|
+
const targetColumns = tableColumnSets.get(rel.referenced_table);
|
|
337
|
+
if (sourceColumns && rel.from.some((column2) => !sourceColumns.has(column2))) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
if (targetColumns && rel.to.some((column2) => !targetColumns.has(column2))) {
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
332
343
|
const sourceTable = tableMap.get(rel.table);
|
|
333
344
|
const targetTable = tableMap.get(rel.referenced_table);
|
|
334
345
|
fragments.push(
|
|
@@ -383,7 +394,10 @@ var Adapter = class {
|
|
|
383
394
|
stats: col.stats
|
|
384
395
|
})
|
|
385
396
|
);
|
|
386
|
-
const
|
|
397
|
+
const presentColumns = new Set(t.columns.map((c) => c.name));
|
|
398
|
+
const indexFragments = (t.indexes ?? []).filter(
|
|
399
|
+
(idx) => idx.columns.every((column2) => presentColumns.has(column2))
|
|
400
|
+
).map(
|
|
387
401
|
(idx) => index({
|
|
388
402
|
name: idx.name,
|
|
389
403
|
columns: idx.columns,
|
|
@@ -393,6 +407,8 @@ var Adapter = class {
|
|
|
393
407
|
);
|
|
394
408
|
const constraintFragments = (t.constraints ?? []).filter(
|
|
395
409
|
(c) => c.type === "CHECK" || c.type === "UNIQUE" && (c.columns?.length ?? 0) > 1
|
|
410
|
+
).filter(
|
|
411
|
+
(c) => !c.columns?.length || c.columns.every((column2) => presentColumns.has(column2))
|
|
396
412
|
).map(
|
|
397
413
|
(c) => constraint({
|
|
398
414
|
name: c.name,
|
|
@@ -586,6 +602,21 @@ var Adapter = class {
|
|
|
586
602
|
};
|
|
587
603
|
|
|
588
604
|
// packages/text2sql/src/lib/adapters/groundings/abstract.grounding.ts
|
|
605
|
+
function filterColumns(columns, filter) {
|
|
606
|
+
if (Array.isArray(filter)) {
|
|
607
|
+
return columns.filter((col) => filter.includes(col.name));
|
|
608
|
+
}
|
|
609
|
+
if (filter instanceof RegExp) {
|
|
610
|
+
return columns.filter((col) => filter.test(col.name));
|
|
611
|
+
}
|
|
612
|
+
return columns.filter((col) => filter(col.name));
|
|
613
|
+
}
|
|
614
|
+
function applyColumnFilter(entity, columnsConfig) {
|
|
615
|
+
if (!columnsConfig) return entity;
|
|
616
|
+
const filter = columnsConfig[entity.name];
|
|
617
|
+
if (!filter) return entity;
|
|
618
|
+
return { ...entity, columns: filterColumns(entity.columns, filter) };
|
|
619
|
+
}
|
|
589
620
|
var AbstractGrounding = class {
|
|
590
621
|
/**
|
|
591
622
|
* Grounding identifier for debugging/logging.
|
|
@@ -957,11 +988,13 @@ var RowCountGrounding = class extends AbstractGrounding {
|
|
|
957
988
|
// packages/text2sql/src/lib/adapters/groundings/table.grounding.ts
|
|
958
989
|
var TableGrounding = class extends AbstractGrounding {
|
|
959
990
|
#filter;
|
|
991
|
+
#columns;
|
|
960
992
|
#forward;
|
|
961
993
|
#backward;
|
|
962
994
|
constructor(config = {}) {
|
|
963
995
|
super("table");
|
|
964
996
|
this.#filter = config.filter;
|
|
997
|
+
this.#columns = config.columns;
|
|
965
998
|
this.#forward = config.forward;
|
|
966
999
|
this.#backward = config.backward;
|
|
967
1000
|
}
|
|
@@ -975,7 +1008,9 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
975
1008
|
const backward = this.#backward;
|
|
976
1009
|
if (!forward && !backward) {
|
|
977
1010
|
const tables3 = await Promise.all(
|
|
978
|
-
seedTables.map(
|
|
1011
|
+
seedTables.map(
|
|
1012
|
+
async (name) => applyColumnFilter(await this.getTable(name), this.#columns)
|
|
1013
|
+
)
|
|
979
1014
|
);
|
|
980
1015
|
ctx.tables.push(...tables3);
|
|
981
1016
|
return;
|
|
@@ -999,11 +1034,15 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
999
1034
|
if (forwardVisited.has(name)) continue;
|
|
1000
1035
|
forwardVisited.add(name);
|
|
1001
1036
|
if (!tables2[name]) {
|
|
1002
|
-
tables2[name] =
|
|
1037
|
+
tables2[name] = applyColumnFilter(
|
|
1038
|
+
await this.getTable(name),
|
|
1039
|
+
this.#columns
|
|
1040
|
+
);
|
|
1003
1041
|
}
|
|
1004
1042
|
if (depth < forwardLimit) {
|
|
1005
1043
|
const rels = await this.findOutgoingRelations(name);
|
|
1006
1044
|
for (const rel of rels) {
|
|
1045
|
+
if (!this.isRelationshipVisible(rel)) continue;
|
|
1007
1046
|
this.addRelationship(rel, allRelationships, seenRelationships);
|
|
1008
1047
|
if (!forwardVisited.has(rel.referenced_table)) {
|
|
1009
1048
|
forwardQueue.push({ name: rel.referenced_table, depth: depth + 1 });
|
|
@@ -1019,11 +1058,15 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
1019
1058
|
if (backwardVisited.has(name)) continue;
|
|
1020
1059
|
backwardVisited.add(name);
|
|
1021
1060
|
if (!tables2[name]) {
|
|
1022
|
-
tables2[name] =
|
|
1061
|
+
tables2[name] = applyColumnFilter(
|
|
1062
|
+
await this.getTable(name),
|
|
1063
|
+
this.#columns
|
|
1064
|
+
);
|
|
1023
1065
|
}
|
|
1024
1066
|
if (depth < backwardLimit) {
|
|
1025
1067
|
const rels = await this.findIncomingRelations(name);
|
|
1026
1068
|
for (const rel of rels) {
|
|
1069
|
+
if (!this.isRelationshipVisible(rel)) continue;
|
|
1027
1070
|
this.addRelationship(rel, allRelationships, seenRelationships);
|
|
1028
1071
|
if (!backwardVisited.has(rel.table)) {
|
|
1029
1072
|
backwardQueue.push({ name: rel.table, depth: depth + 1 });
|
|
@@ -1063,6 +1106,16 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
1063
1106
|
all.push(rel);
|
|
1064
1107
|
}
|
|
1065
1108
|
}
|
|
1109
|
+
isRelationshipVisible(rel) {
|
|
1110
|
+
return this.areColumnsVisible(rel.from, this.#columns?.[rel.table]) && this.areColumnsVisible(rel.to, this.#columns?.[rel.referenced_table]);
|
|
1111
|
+
}
|
|
1112
|
+
areColumnsVisible(names, filter) {
|
|
1113
|
+
if (!filter) return true;
|
|
1114
|
+
return filterColumns(
|
|
1115
|
+
names.map((name) => ({ name })),
|
|
1116
|
+
filter
|
|
1117
|
+
).length === names.length;
|
|
1118
|
+
}
|
|
1066
1119
|
};
|
|
1067
1120
|
|
|
1068
1121
|
// packages/text2sql/src/lib/adapters/sqlserver/column-stats.sqlserver.grounding.ts
|
|
@@ -2076,10 +2129,12 @@ var SqlServerTableGrounding = class extends TableGrounding {
|
|
|
2076
2129
|
// packages/text2sql/src/lib/adapters/groundings/view.grounding.ts
|
|
2077
2130
|
var ViewGrounding = class extends AbstractGrounding {
|
|
2078
2131
|
#filter;
|
|
2132
|
+
#columns;
|
|
2079
2133
|
includeDefinition;
|
|
2080
2134
|
constructor(config = {}) {
|
|
2081
2135
|
super("view");
|
|
2082
2136
|
this.#filter = config.filter;
|
|
2137
|
+
this.#columns = config.columns;
|
|
2083
2138
|
this.includeDefinition = config.includeDefinition ?? true;
|
|
2084
2139
|
}
|
|
2085
2140
|
/**
|
|
@@ -2089,7 +2144,9 @@ var ViewGrounding = class extends AbstractGrounding {
|
|
|
2089
2144
|
async execute(ctx) {
|
|
2090
2145
|
const viewNames = await this.applyFilter();
|
|
2091
2146
|
const views2 = await Promise.all(
|
|
2092
|
-
viewNames.map(
|
|
2147
|
+
viewNames.map(
|
|
2148
|
+
async (name) => applyColumnFilter(await this.getView(name), this.#columns)
|
|
2149
|
+
)
|
|
2093
2150
|
);
|
|
2094
2151
|
ctx.views.push(...views2);
|
|
2095
2152
|
}
|