@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.
@@ -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 indexFragments = (t.indexes ?? []).map(
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((name) => this.getTable(name))
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] = await this.getTable(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] = await this.getTable(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((name) => this.getView(name))
2147
+ viewNames.map(
2148
+ async (name) => applyColumnFilter(await this.getView(name), this.#columns)
2149
+ )
2093
2150
  );
2094
2151
  ctx.views.push(...views2);
2095
2152
  }