@deepagents/text2sql 0.30.0 → 0.31.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.
@@ -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((name) => this.getTable(name))
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] = await this.getTable(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] = await this.getTable(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