@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.
|
|
@@ -828,11 +859,13 @@ var RowCountGrounding = class extends AbstractGrounding {
|
|
|
828
859
|
// packages/text2sql/src/lib/adapters/groundings/table.grounding.ts
|
|
829
860
|
var TableGrounding = class extends AbstractGrounding {
|
|
830
861
|
#filter;
|
|
862
|
+
#columns;
|
|
831
863
|
#forward;
|
|
832
864
|
#backward;
|
|
833
865
|
constructor(config = {}) {
|
|
834
866
|
super("table");
|
|
835
867
|
this.#filter = config.filter;
|
|
868
|
+
this.#columns = config.columns;
|
|
836
869
|
this.#forward = config.forward;
|
|
837
870
|
this.#backward = config.backward;
|
|
838
871
|
}
|
|
@@ -846,7 +879,9 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
846
879
|
const backward = this.#backward;
|
|
847
880
|
if (!forward && !backward) {
|
|
848
881
|
const tables3 = await Promise.all(
|
|
849
|
-
seedTables.map(
|
|
882
|
+
seedTables.map(
|
|
883
|
+
async (name) => applyColumnFilter(await this.getTable(name), this.#columns)
|
|
884
|
+
)
|
|
850
885
|
);
|
|
851
886
|
ctx.tables.push(...tables3);
|
|
852
887
|
return;
|
|
@@ -870,11 +905,15 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
870
905
|
if (forwardVisited.has(name)) continue;
|
|
871
906
|
forwardVisited.add(name);
|
|
872
907
|
if (!tables2[name]) {
|
|
873
|
-
tables2[name] =
|
|
908
|
+
tables2[name] = applyColumnFilter(
|
|
909
|
+
await this.getTable(name),
|
|
910
|
+
this.#columns
|
|
911
|
+
);
|
|
874
912
|
}
|
|
875
913
|
if (depth < forwardLimit) {
|
|
876
914
|
const rels = await this.findOutgoingRelations(name);
|
|
877
915
|
for (const rel of rels) {
|
|
916
|
+
if (!this.isRelationshipVisible(rel)) continue;
|
|
878
917
|
this.addRelationship(rel, allRelationships, seenRelationships);
|
|
879
918
|
if (!forwardVisited.has(rel.referenced_table)) {
|
|
880
919
|
forwardQueue.push({ name: rel.referenced_table, depth: depth + 1 });
|
|
@@ -890,11 +929,15 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
890
929
|
if (backwardVisited.has(name)) continue;
|
|
891
930
|
backwardVisited.add(name);
|
|
892
931
|
if (!tables2[name]) {
|
|
893
|
-
tables2[name] =
|
|
932
|
+
tables2[name] = applyColumnFilter(
|
|
933
|
+
await this.getTable(name),
|
|
934
|
+
this.#columns
|
|
935
|
+
);
|
|
894
936
|
}
|
|
895
937
|
if (depth < backwardLimit) {
|
|
896
938
|
const rels = await this.findIncomingRelations(name);
|
|
897
939
|
for (const rel of rels) {
|
|
940
|
+
if (!this.isRelationshipVisible(rel)) continue;
|
|
898
941
|
this.addRelationship(rel, allRelationships, seenRelationships);
|
|
899
942
|
if (!backwardVisited.has(rel.table)) {
|
|
900
943
|
backwardQueue.push({ name: rel.table, depth: depth + 1 });
|
|
@@ -934,6 +977,16 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
934
977
|
all.push(rel);
|
|
935
978
|
}
|
|
936
979
|
}
|
|
980
|
+
isRelationshipVisible(rel) {
|
|
981
|
+
return this.areColumnsVisible(rel.from, this.#columns?.[rel.table]) && this.areColumnsVisible(rel.to, this.#columns?.[rel.referenced_table]);
|
|
982
|
+
}
|
|
983
|
+
areColumnsVisible(names, filter) {
|
|
984
|
+
if (!filter) return true;
|
|
985
|
+
return filterColumns(
|
|
986
|
+
names.map((name) => ({ name })),
|
|
987
|
+
filter
|
|
988
|
+
).length === names.length;
|
|
989
|
+
}
|
|
937
990
|
};
|
|
938
991
|
|
|
939
992
|
// packages/text2sql/src/lib/adapters/sqlite/column-stats.sqlite.grounding.ts
|