@deepagents/text2sql 0.3.1 → 0.7.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 +167 -0
- package/dist/finetune/convert-to-gguf.d.ts +18 -0
- package/dist/finetune/convert-to-gguf.d.ts.map +1 -0
- package/dist/finetune/run-finetune.d.ts +23 -0
- package/dist/finetune/run-finetune.d.ts.map +1 -0
- package/dist/finetune/run-mlx.d.ts +22 -0
- package/dist/finetune/run-mlx.d.ts.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2500 -318
- package/dist/index.js.map +4 -4
- package/dist/lib/adapters/adapter.d.ts +3 -3
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/{grounding.ticket.d.ts → groundings/abstract.grounding.d.ts} +2 -2
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/groundings/column-stats.grounding.d.ts +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 +76 -0
- package/dist/lib/adapters/groundings/column-values.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/groundings/constraint.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/constraint.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/context.d.ts +1 -1
- package/dist/lib/adapters/groundings/context.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/{grounding.d.ts → index.d.ts} +8 -5
- package/dist/lib/adapters/groundings/index.d.ts.map +1 -0
- package/dist/lib/adapters/groundings/{grounding.js → index.js} +411 -206
- package/dist/lib/adapters/groundings/index.js.map +7 -0
- package/dist/lib/adapters/groundings/indexes.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/indexes.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/info.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/info.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/report.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/report.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/row-count.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/row-count.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/table.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/table.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/view.grounding.d.ts +1 -1
- package/dist/lib/adapters/groundings/view.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/mysql/column-stats.mysql.grounding.d.ts +14 -0
- package/dist/lib/adapters/mysql/column-stats.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/column-values.mysql.grounding.d.ts +22 -0
- package/dist/lib/adapters/mysql/column-values.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/constraint.mysql.grounding.d.ts +13 -0
- package/dist/lib/adapters/mysql/constraint.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/index.d.ts +44 -0
- package/dist/lib/adapters/mysql/index.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/indexes.mysql.grounding.d.ts +13 -0
- package/dist/lib/adapters/mysql/indexes.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/info.mysql.grounding.d.ts +13 -0
- package/dist/lib/adapters/mysql/info.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/mysql.d.ts +33 -0
- package/dist/lib/adapters/mysql/mysql.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/row-count.mysql.grounding.d.ts +13 -0
- package/dist/lib/adapters/mysql/row-count.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts +21 -0
- package/dist/lib/adapters/mysql/table.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts +18 -0
- package/dist/lib/adapters/mysql/view.mysql.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/postgres/column-stats.postgres.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/column-values.postgres.grounding.d.ts +17 -0
- package/dist/lib/adapters/postgres/column-values.postgres.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/postgres/index.d.ts +4 -4
- package/dist/lib/adapters/postgres/index.d.ts.map +1 -1
- package/dist/lib/adapters/postgres/index.js +233 -33
- package/dist/lib/adapters/postgres/index.js.map +4 -4
- package/dist/lib/adapters/sqlite/column-values.sqlite.grounding.d.ts +17 -0
- package/dist/lib/adapters/sqlite/column-values.sqlite.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/sqlite/constraint.sqlite.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/index.d.ts +4 -4
- package/dist/lib/adapters/sqlite/index.d.ts.map +1 -1
- package/dist/lib/adapters/sqlite/index.js +214 -46
- package/dist/lib/adapters/sqlite/index.js.map +4 -4
- package/dist/lib/adapters/sqlserver/column-values.sqlserver.grounding.d.ts +17 -0
- package/dist/lib/adapters/sqlserver/column-values.sqlserver.grounding.d.ts.map +1 -0
- package/dist/lib/adapters/sqlserver/index.d.ts +4 -4
- package/dist/lib/adapters/sqlserver/index.d.ts.map +1 -1
- package/dist/lib/adapters/sqlserver/index.js +179 -32
- package/dist/lib/adapters/sqlserver/index.js.map +4 -4
- package/dist/lib/agents/bi.agent.d.ts +14 -0
- package/dist/lib/agents/bi.agent.d.ts.map +1 -0
- package/dist/lib/agents/chat1.agent.d.ts +50 -0
- package/dist/lib/agents/chat1.agent.d.ts.map +1 -0
- package/dist/lib/agents/chat2.agent.d.ts +68 -0
- package/dist/lib/agents/chat2.agent.d.ts.map +1 -0
- package/dist/lib/agents/chat3.agent.d.ts +80 -0
- package/dist/lib/agents/chat3.agent.d.ts.map +1 -0
- package/dist/lib/agents/chat4.agent.d.ts +88 -0
- package/dist/lib/agents/chat4.agent.d.ts.map +1 -0
- package/dist/lib/agents/developer.agent.d.ts +31 -0
- package/dist/lib/agents/developer.agent.d.ts.map +1 -0
- package/dist/lib/agents/question.agent.d.ts +23 -0
- package/dist/lib/agents/question.agent.d.ts.map +1 -0
- package/dist/lib/agents/sql.agent.d.ts +44 -0
- package/dist/lib/agents/sql.agent.d.ts.map +1 -0
- package/dist/lib/agents/teachables.agent.d.ts +8 -9
- package/dist/lib/agents/teachables.agent.d.ts.map +1 -1
- package/dist/lib/agents/text2sql.agent.d.ts +0 -1
- package/dist/lib/agents/text2sql.agent.d.ts.map +1 -1
- package/dist/lib/checkpoint.d.ts +99 -0
- package/dist/lib/checkpoint.d.ts.map +1 -0
- package/dist/lib/instructions.js +50 -21
- package/dist/lib/instructions.js.map +2 -2
- package/dist/lib/sql.d.ts +125 -3
- package/dist/lib/sql.d.ts.map +1 -1
- package/dist/lib/syntheize.d.ts +2 -0
- package/dist/lib/syntheize.d.ts.map +1 -0
- package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts +26 -0
- package/dist/lib/synthesis/decorators/deduplicated-producer.d.ts.map +1 -0
- package/dist/lib/synthesis/decorators/filtered-producer.d.ts +26 -0
- package/dist/lib/synthesis/decorators/filtered-producer.d.ts.map +1 -0
- package/dist/lib/synthesis/decorators/index.d.ts +7 -0
- package/dist/lib/synthesis/decorators/index.d.ts.map +1 -0
- package/dist/lib/synthesis/decorators/validated-producer.d.ts +33 -0
- package/dist/lib/synthesis/decorators/validated-producer.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts +76 -0
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/full-context-extractor.d.ts +25 -0
- package/dist/lib/synthesis/extractors/full-context-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/index.d.ts +8 -0
- package/dist/lib/synthesis/extractors/index.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/last-query-extractor.d.ts +30 -0
- package/dist/lib/synthesis/extractors/last-query-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/message-extractor.d.ts +27 -0
- package/dist/lib/synthesis/extractors/message-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/segmented-context-extractor.d.ts +48 -0
- package/dist/lib/synthesis/extractors/segmented-context-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/sql-extractor.d.ts +27 -0
- package/dist/lib/synthesis/extractors/sql-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/extractors/windowed-context-extractor.d.ts +30 -0
- package/dist/lib/synthesis/extractors/windowed-context-extractor.d.ts.map +1 -0
- package/dist/lib/synthesis/index.d.ts +6 -0
- package/dist/lib/synthesis/index.d.ts.map +1 -0
- package/dist/lib/synthesis/index.js +2172 -0
- package/dist/lib/synthesis/index.js.map +7 -0
- package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts +34 -0
- package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts +41 -0
- package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/index.d.ts +7 -0
- package/dist/lib/synthesis/synthesizers/index.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/persona-generator.d.ts +34 -0
- package/dist/lib/synthesis/synthesizers/persona-generator.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts +39 -0
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/styles.d.ts +8 -0
- package/dist/lib/synthesis/synthesizers/styles.d.ts.map +1 -0
- package/dist/lib/synthesis/synthesizers/teachings-generator.d.ts +32 -0
- package/dist/lib/synthesis/synthesizers/teachings-generator.d.ts.map +1 -0
- package/dist/lib/synthesis/types.d.ts +26 -0
- package/dist/lib/synthesis/types.d.ts.map +1 -0
- package/dist/lib/teach/teachables.d.ts +18 -3
- package/dist/lib/teach/teachables.d.ts.map +1 -1
- package/dist/lib/teach/teachings.d.ts +9 -2
- package/dist/lib/teach/teachings.d.ts.map +1 -1
- package/package.json +38 -15
- package/dist/lib/adapters/grounding.ticket.d.ts.map +0 -1
- package/dist/lib/adapters/groundings/grounding.d.ts.map +0 -1
- package/dist/lib/adapters/groundings/grounding.js.map +0 -7
- package/dist/lib/adapters/groundings/low-cardinality.grounding.d.ts +0 -35
- package/dist/lib/adapters/groundings/low-cardinality.grounding.d.ts.map +0 -1
- package/dist/lib/adapters/postgres/low-cardinality.postgres.grounding.d.ts +0 -14
- package/dist/lib/adapters/postgres/low-cardinality.postgres.grounding.d.ts.map +0 -1
- package/dist/lib/adapters/sqlite/low-cardinality.sqlite.grounding.d.ts +0 -14
- package/dist/lib/adapters/sqlite/low-cardinality.sqlite.grounding.d.ts.map +0 -1
- package/dist/lib/adapters/sqlserver/low-cardinality.sqlserver.grounding.d.ts +0 -14
- package/dist/lib/adapters/sqlserver/low-cardinality.sqlserver.grounding.d.ts.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Adapter } from '../adapter.ts';
|
|
2
|
+
import { type Column, ColumnValuesGrounding, type ColumnValuesGroundingConfig } from '../groundings/column-values.grounding.ts';
|
|
3
|
+
/**
|
|
4
|
+
* SQLite implementation of ColumnValuesGrounding.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - CHECK constraints with IN clauses (inherited from base)
|
|
8
|
+
* - Low cardinality data scan
|
|
9
|
+
*
|
|
10
|
+
* Note: SQLite does not have native ENUM types.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SqliteColumnValuesGrounding extends ColumnValuesGrounding {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(adapter: Adapter, config?: ColumnValuesGroundingConfig);
|
|
15
|
+
protected collectLowCardinality(tableName: string, column: Column): Promise<string[] | undefined>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=column-values.sqlite.grounding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-values.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/column-values.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,KAAK,MAAM,EACX,qBAAqB,EACrB,KAAK,2BAA2B,EACjC,MAAM,0CAA0C,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;;gBAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,2BAAgC;cAK7C,qBAAqB,CAC5C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CAmDjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constraint.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/constraint.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC/B,MAAM,uCAAuC,CAAC;AAuB/C;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB;;gBAGpD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,yBAA8B;cAK3C,cAAc,
|
|
1
|
+
{"version":3,"file":"constraint.sqlite.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/constraint.sqlite.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC/B,MAAM,uCAAuC,CAAC;AAuB/C;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB;;gBAGpD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,yBAA8B;cAK3C,cAAc,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;CAoK9B"}
|
|
@@ -3,7 +3,7 @@ import { type ColumnStatsGroundingConfig } from '../groundings/column-stats.grou
|
|
|
3
3
|
import { type ConstraintGroundingConfig } from '../groundings/constraint.grounding.ts';
|
|
4
4
|
import { type IndexesGroundingConfig } from '../groundings/indexes.grounding.ts';
|
|
5
5
|
import { type InfoGroundingConfig } from '../groundings/info.grounding.ts';
|
|
6
|
-
import { type
|
|
6
|
+
import { type ColumnValuesGroundingConfig } from '../groundings/column-values.grounding.ts';
|
|
7
7
|
import { ReportGrounding, type ReportGroundingConfig } from '../groundings/report.grounding.ts';
|
|
8
8
|
import { type RowCountGroundingConfig } from '../groundings/row-count.grounding.ts';
|
|
9
9
|
import { type TableGroundingConfig } from '../groundings/table.grounding.ts';
|
|
@@ -12,7 +12,7 @@ import { SqliteColumnStatsGrounding } from './column-stats.sqlite.grounding.ts';
|
|
|
12
12
|
import { SqliteConstraintGrounding } from './constraint.sqlite.grounding.ts';
|
|
13
13
|
import { SqliteIndexesGrounding } from './indexes.sqlite.grounding.ts';
|
|
14
14
|
import { SqliteInfoGrounding } from './info.sqlite.grounding.ts';
|
|
15
|
-
import {
|
|
15
|
+
import { SqliteColumnValuesGrounding } from './column-values.sqlite.grounding.ts';
|
|
16
16
|
import { SqliteRowCountGrounding } from './row-count.sqlite.grounding.ts';
|
|
17
17
|
import { Sqlite } from './sqlite.ts';
|
|
18
18
|
import { SqliteTableGrounding } from './table.sqlite.grounding.ts';
|
|
@@ -22,7 +22,7 @@ export declare function tables(config?: TableGroundingConfig): (adapter: Adapter
|
|
|
22
22
|
export declare function info(config?: InfoGroundingConfig): (adapter: Adapter) => SqliteInfoGrounding;
|
|
23
23
|
export declare function views(config?: ViewGroundingConfig): (adapter: Adapter) => SqliteViewGrounding;
|
|
24
24
|
export declare function columnStats(config?: ColumnStatsGroundingConfig): (adapter: Adapter) => SqliteColumnStatsGrounding;
|
|
25
|
-
export declare function
|
|
25
|
+
export declare function columnValues(config?: ColumnValuesGroundingConfig): (adapter: Adapter) => SqliteColumnValuesGrounding;
|
|
26
26
|
export declare function indexes(config?: IndexesGroundingConfig): (adapter: Adapter) => SqliteIndexesGrounding;
|
|
27
27
|
export declare function rowCount(config?: RowCountGroundingConfig): (adapter: Adapter) => SqliteRowCountGrounding;
|
|
28
28
|
export declare function constraints(config?: ConstraintGroundingConfig): (adapter: Adapter) => SqliteConstraintGrounding;
|
|
@@ -32,7 +32,7 @@ declare const _default: {
|
|
|
32
32
|
info: typeof info;
|
|
33
33
|
views: typeof views;
|
|
34
34
|
columnStats: typeof columnStats;
|
|
35
|
-
|
|
35
|
+
columnValues: typeof columnValues;
|
|
36
36
|
indexes: typeof indexes;
|
|
37
37
|
rowCount: typeof rowCount;
|
|
38
38
|
constraints: typeof constraints;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,cAAc,aAAa,CAAC;AAE5B,wBAAgB,MAAM,CAAC,MAAM,GAAE,oBAAyB,IAC9C,SAAS,OAAO,0BACzB;AAED,wBAAgB,IAAI,CAAC,MAAM,GAAE,mBAAwB,IAC3C,SAAS,OAAO,yBACzB;AAED,wBAAgB,KAAK,CAAC,MAAM,GAAE,mBAAwB,IAC5C,SAAS,OAAO,yBAGzB;AAED,wBAAgB,WAAW,CAAC,MAAM,GAAE,0BAA+B,IACzD,SAAS,OAAO,gCAGzB;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,2BAAgC,IAC3D,SAAS,OAAO,iCAGzB;AAED,wBAAgB,OAAO,CAAC,MAAM,GAAE,sBAA2B,IACjD,SAAS,OAAO,4BAGzB;AAED,wBAAgB,QAAQ,CAAC,MAAM,GAAE,uBAA4B,IACnD,SAAS,OAAO,6BAGzB;AAED,wBAAgB,WAAW,CAAC,MAAM,GAAE,yBAA8B,IACxD,SAAS,OAAO,+BAGzB;AAED,wBAAgB,MAAM,CAAC,MAAM,GAAE,qBAA0B,IAC/C,SAAS,OAAO,qBACzB;;;;;;;;;;;;;AAED,wBAWE"}
|
|
@@ -10,9 +10,8 @@ function createGroundingContext() {
|
|
|
10
10
|
|
|
11
11
|
// packages/text2sql/src/lib/adapters/adapter.ts
|
|
12
12
|
var Adapter = class {
|
|
13
|
-
async introspect() {
|
|
13
|
+
async introspect(ctx = createGroundingContext()) {
|
|
14
14
|
const lines = [];
|
|
15
|
-
const ctx = createGroundingContext();
|
|
16
15
|
for (const fn of this.grounding) {
|
|
17
16
|
const grounding = fn(this);
|
|
18
17
|
lines.push({
|
|
@@ -82,7 +81,7 @@ ${description}
|
|
|
82
81
|
}
|
|
83
82
|
};
|
|
84
83
|
|
|
85
|
-
// packages/text2sql/src/lib/adapters/grounding.
|
|
84
|
+
// packages/text2sql/src/lib/adapters/groundings/abstract.grounding.ts
|
|
86
85
|
var AbstractGrounding = class {
|
|
87
86
|
tag;
|
|
88
87
|
constructor(tag) {
|
|
@@ -196,31 +195,108 @@ var InfoGrounding = class extends AbstractGrounding {
|
|
|
196
195
|
}
|
|
197
196
|
};
|
|
198
197
|
|
|
199
|
-
// packages/text2sql/src/lib/adapters/groundings/
|
|
200
|
-
var
|
|
198
|
+
// packages/text2sql/src/lib/adapters/groundings/column-values.grounding.ts
|
|
199
|
+
var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
200
|
+
lowCardinalityLimit;
|
|
201
201
|
constructor(config = {}) {
|
|
202
|
-
super("
|
|
202
|
+
super("column_values");
|
|
203
|
+
this.lowCardinalityLimit = config.lowCardinalityLimit ?? 20;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get values for native ENUM type columns.
|
|
207
|
+
* Return undefined if column is not an ENUM type.
|
|
208
|
+
* Default implementation returns undefined (no native ENUM support).
|
|
209
|
+
*/
|
|
210
|
+
async collectEnumValues(_tableName, _column) {
|
|
211
|
+
return void 0;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Parse CHECK constraint for enum-like IN clause.
|
|
215
|
+
* Extracts values from patterns like:
|
|
216
|
+
* - CHECK (status IN ('active', 'inactive'))
|
|
217
|
+
* - CHECK ((status)::text = ANY (ARRAY['a'::text, 'b'::text]))
|
|
218
|
+
* - CHECK (status = 'active' OR status = 'inactive')
|
|
219
|
+
*/
|
|
220
|
+
parseCheckConstraint(constraint, columnName) {
|
|
221
|
+
if (constraint.type !== "CHECK" || !constraint.definition) {
|
|
222
|
+
return void 0;
|
|
223
|
+
}
|
|
224
|
+
if (constraint.columns && !constraint.columns.includes(columnName)) {
|
|
225
|
+
return void 0;
|
|
226
|
+
}
|
|
227
|
+
const def = constraint.definition;
|
|
228
|
+
const escapedCol = this.escapeRegex(columnName);
|
|
229
|
+
const colPattern = `(?:\\(?\\(?${escapedCol}\\)?(?:::(?:text|varchar|character varying))?\\)?)`;
|
|
230
|
+
const inMatch = def.match(
|
|
231
|
+
new RegExp(`${colPattern}\\s+IN\\s*\\(([^)]+)\\)`, "i")
|
|
232
|
+
);
|
|
233
|
+
if (inMatch) {
|
|
234
|
+
return this.extractStringValues(inMatch[1]);
|
|
235
|
+
}
|
|
236
|
+
const anyMatch = def.match(
|
|
237
|
+
new RegExp(
|
|
238
|
+
`${colPattern}\\s*=\\s*ANY\\s*\\(\\s*(?:ARRAY)?\\s*\\[([^\\]]+)\\]`,
|
|
239
|
+
"i"
|
|
240
|
+
)
|
|
241
|
+
);
|
|
242
|
+
if (anyMatch) {
|
|
243
|
+
return this.extractStringValues(anyMatch[1]);
|
|
244
|
+
}
|
|
245
|
+
const orPattern = new RegExp(
|
|
246
|
+
`\\b${this.escapeRegex(columnName)}\\b\\s*=\\s*'([^']*)'`,
|
|
247
|
+
"gi"
|
|
248
|
+
);
|
|
249
|
+
const orMatches = [...def.matchAll(orPattern)];
|
|
250
|
+
if (orMatches.length >= 2) {
|
|
251
|
+
return orMatches.map((m) => m[1]);
|
|
252
|
+
}
|
|
253
|
+
return void 0;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Extract string values from a comma-separated list.
|
|
257
|
+
*/
|
|
258
|
+
extractStringValues(input) {
|
|
259
|
+
const values = [];
|
|
260
|
+
const matches = input.matchAll(/'([^']*)'/g);
|
|
261
|
+
for (const match of matches) {
|
|
262
|
+
values.push(match[1]);
|
|
263
|
+
}
|
|
264
|
+
return values.length > 0 ? values : void 0;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Escape special regex characters in a string.
|
|
268
|
+
*/
|
|
269
|
+
escapeRegex(str) {
|
|
270
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get the table from context by name.
|
|
274
|
+
*/
|
|
275
|
+
getTable(ctx, name) {
|
|
276
|
+
return ctx.tables.find((t) => t.name === name);
|
|
203
277
|
}
|
|
204
278
|
/**
|
|
205
279
|
* Execute the grounding process.
|
|
206
|
-
* Annotates columns in ctx.tables and ctx.views with
|
|
280
|
+
* Annotates columns in ctx.tables and ctx.views with values.
|
|
207
281
|
*/
|
|
208
282
|
async execute(ctx) {
|
|
209
283
|
const allContainers = [...ctx.tables, ...ctx.views];
|
|
210
284
|
for (const container of allContainers) {
|
|
285
|
+
const table = this.getTable(ctx, container.name);
|
|
211
286
|
for (const column of container.columns) {
|
|
212
287
|
try {
|
|
213
|
-
const
|
|
288
|
+
const result = await this.resolveColumnValues(
|
|
214
289
|
container.name,
|
|
215
|
-
column
|
|
290
|
+
column,
|
|
291
|
+
table?.constraints
|
|
216
292
|
);
|
|
217
|
-
if (
|
|
218
|
-
column.kind =
|
|
219
|
-
column.values =
|
|
293
|
+
if (result) {
|
|
294
|
+
column.kind = result.kind;
|
|
295
|
+
column.values = result.values;
|
|
220
296
|
}
|
|
221
297
|
} catch (error) {
|
|
222
298
|
console.warn(
|
|
223
|
-
"Error collecting
|
|
299
|
+
"Error collecting column values for",
|
|
224
300
|
container.name,
|
|
225
301
|
column.name,
|
|
226
302
|
error
|
|
@@ -230,6 +306,28 @@ var LowCardinalityGrounding = class extends AbstractGrounding {
|
|
|
230
306
|
}
|
|
231
307
|
return () => this.#describe();
|
|
232
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Resolve column values from all sources in priority order.
|
|
311
|
+
*/
|
|
312
|
+
async resolveColumnValues(tableName, column, constraints2) {
|
|
313
|
+
const enumValues = await this.collectEnumValues(tableName, column);
|
|
314
|
+
if (enumValues?.length) {
|
|
315
|
+
return { kind: "Enum", values: enumValues };
|
|
316
|
+
}
|
|
317
|
+
if (constraints2) {
|
|
318
|
+
for (const constraint of constraints2) {
|
|
319
|
+
const checkValues = this.parseCheckConstraint(constraint, column.name);
|
|
320
|
+
if (checkValues?.length) {
|
|
321
|
+
return { kind: "Enum", values: checkValues };
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const lowCardValues = await this.collectLowCardinality(tableName, column);
|
|
326
|
+
if (lowCardValues?.length) {
|
|
327
|
+
return { kind: "LowCardinality", values: lowCardValues };
|
|
328
|
+
}
|
|
329
|
+
return void 0;
|
|
330
|
+
}
|
|
233
331
|
#describe() {
|
|
234
332
|
return null;
|
|
235
333
|
}
|
|
@@ -478,18 +576,61 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
478
576
|
}
|
|
479
577
|
return tables2.map((table) => {
|
|
480
578
|
const rowCountInfo = table.rowCount != null ? ` [rows: ${table.rowCount}${table.sizeHint ? `, size: ${table.sizeHint}` : ""}]` : "";
|
|
481
|
-
const pkConstraint = table.constraints?.find(
|
|
579
|
+
const pkConstraint = table.constraints?.find(
|
|
580
|
+
(c) => c.type === "PRIMARY_KEY"
|
|
581
|
+
);
|
|
482
582
|
const pkColumns = new Set(pkConstraint?.columns ?? []);
|
|
583
|
+
const notNullColumns = new Set(
|
|
584
|
+
table.constraints?.filter((c) => c.type === "NOT_NULL").flatMap((c) => c.columns ?? []) ?? []
|
|
585
|
+
);
|
|
586
|
+
const defaultByColumn = /* @__PURE__ */ new Map();
|
|
587
|
+
for (const c of table.constraints?.filter(
|
|
588
|
+
(c2) => c2.type === "DEFAULT"
|
|
589
|
+
) ?? []) {
|
|
590
|
+
for (const col of c.columns ?? []) {
|
|
591
|
+
if (c.defaultValue != null) {
|
|
592
|
+
defaultByColumn.set(col, c.defaultValue);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
const uniqueColumns = new Set(
|
|
597
|
+
table.constraints?.filter((c) => c.type === "UNIQUE" && c.columns?.length === 1).flatMap((c) => c.columns ?? []) ?? []
|
|
598
|
+
);
|
|
599
|
+
const fkByColumn = /* @__PURE__ */ new Map();
|
|
600
|
+
for (const c of table.constraints?.filter(
|
|
601
|
+
(c2) => c2.type === "FOREIGN_KEY"
|
|
602
|
+
) ?? []) {
|
|
603
|
+
const cols = c.columns ?? [];
|
|
604
|
+
const refCols = c.referencedColumns ?? [];
|
|
605
|
+
for (let i = 0; i < cols.length; i++) {
|
|
606
|
+
const refCol = refCols[i] ?? refCols[0] ?? cols[i];
|
|
607
|
+
fkByColumn.set(cols[i], `${c.referencedTable}.${refCol}`);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
483
610
|
const columns = table.columns.map((column) => {
|
|
484
611
|
const annotations = [];
|
|
485
612
|
const isPrimaryKey = pkColumns.has(column.name);
|
|
486
613
|
if (isPrimaryKey) {
|
|
487
614
|
annotations.push("PK");
|
|
488
615
|
}
|
|
616
|
+
if (fkByColumn.has(column.name)) {
|
|
617
|
+
annotations.push(`FK -> ${fkByColumn.get(column.name)}`);
|
|
618
|
+
}
|
|
619
|
+
if (uniqueColumns.has(column.name)) {
|
|
620
|
+
annotations.push("UNIQUE");
|
|
621
|
+
}
|
|
622
|
+
if (notNullColumns.has(column.name)) {
|
|
623
|
+
annotations.push("NOT NULL");
|
|
624
|
+
}
|
|
625
|
+
if (defaultByColumn.has(column.name)) {
|
|
626
|
+
annotations.push(`DEFAULT: ${defaultByColumn.get(column.name)}`);
|
|
627
|
+
}
|
|
489
628
|
if (column.isIndexed && !isPrimaryKey) {
|
|
490
629
|
annotations.push("Indexed");
|
|
491
630
|
}
|
|
492
|
-
if (column.kind === "
|
|
631
|
+
if (column.kind === "Enum" && column.values?.length) {
|
|
632
|
+
annotations.push(`Enum: ${column.values.join(", ")}`);
|
|
633
|
+
} else if (column.kind === "LowCardinality" && column.values?.length) {
|
|
493
634
|
annotations.push(`LowCardinality: ${column.values.join(", ")}`);
|
|
494
635
|
}
|
|
495
636
|
if (column.stats) {
|
|
@@ -524,9 +665,19 @@ ${table.indexes.map((index) => {
|
|
|
524
665
|
const columnsText = index.columns?.length ? index.columns.join(", ") : "expression";
|
|
525
666
|
return ` - ${index.name}${propsText}: ${columnsText}`;
|
|
526
667
|
}).join("\n")}` : "";
|
|
668
|
+
const multiColumnUniques = table.constraints?.filter(
|
|
669
|
+
(c) => c.type === "UNIQUE" && (c.columns?.length ?? 0) > 1
|
|
670
|
+
) ?? [];
|
|
671
|
+
const uniqueConstraints = multiColumnUniques.length ? `
|
|
672
|
+
Unique Constraints:
|
|
673
|
+
${multiColumnUniques.map((c) => ` - ${c.name}: (${c.columns?.join(", ")})`).join("\n")}` : "";
|
|
674
|
+
const checkConstraints = table.constraints?.filter((c) => c.type === "CHECK") ?? [];
|
|
675
|
+
const checks = checkConstraints.length ? `
|
|
676
|
+
Check Constraints:
|
|
677
|
+
${checkConstraints.map((c) => ` - ${c.name}: ${c.definition}`).join("\n")}` : "";
|
|
527
678
|
return `- Table: ${table.name}${rowCountInfo}
|
|
528
679
|
Columns:
|
|
529
|
-
${columns}${indexes2}`;
|
|
680
|
+
${columns}${indexes2}${uniqueConstraints}${checks}`;
|
|
530
681
|
}).join("\n\n");
|
|
531
682
|
}
|
|
532
683
|
#formatTableLabel = (tableName) => {
|
|
@@ -699,33 +850,54 @@ var SqliteConstraintGrounding = class extends ConstraintGrounding {
|
|
|
699
850
|
`SELECT sql FROM sqlite_master WHERE type='table' AND name=${this.#quoteIdentifier(tableName)}`
|
|
700
851
|
);
|
|
701
852
|
if (ddlRows[0]?.sql) {
|
|
702
|
-
const
|
|
853
|
+
const columnNames = columns.map((c) => c.name);
|
|
854
|
+
const checkConstraints = this.#parseCheckConstraints(
|
|
855
|
+
ddlRows[0].sql,
|
|
856
|
+
tableName,
|
|
857
|
+
columnNames
|
|
858
|
+
);
|
|
703
859
|
constraints2.push(...checkConstraints);
|
|
704
860
|
}
|
|
705
861
|
return constraints2;
|
|
706
862
|
}
|
|
707
|
-
#parseCheckConstraints(ddl, tableName) {
|
|
863
|
+
#parseCheckConstraints(ddl, tableName, columnNames) {
|
|
708
864
|
const constraints2 = [];
|
|
709
|
-
const
|
|
710
|
-
let
|
|
865
|
+
const checkStartRegex = /(?:CONSTRAINT\s+["'`]?(\w+)["'`]?\s+)?CHECK\s*\(/gi;
|
|
866
|
+
let startMatch;
|
|
711
867
|
let index = 0;
|
|
712
|
-
while ((
|
|
713
|
-
const name =
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
868
|
+
while ((startMatch = checkStartRegex.exec(ddl)) !== null) {
|
|
869
|
+
const name = startMatch[1] || `${tableName}_check_${index}`;
|
|
870
|
+
const startPos = startMatch.index + startMatch[0].length;
|
|
871
|
+
let depth = 1;
|
|
872
|
+
let endPos = startPos;
|
|
873
|
+
while (endPos < ddl.length && depth > 0) {
|
|
874
|
+
if (ddl[endPos] === "(") depth++;
|
|
875
|
+
else if (ddl[endPos] === ")") depth--;
|
|
876
|
+
endPos++;
|
|
877
|
+
}
|
|
878
|
+
if (depth === 0) {
|
|
879
|
+
const definition = ddl.slice(startPos, endPos - 1).trim();
|
|
880
|
+
if (definition) {
|
|
881
|
+
const constraintColumns = columnNames.filter((col) => {
|
|
882
|
+
const colRegex = new RegExp(`\\b${col}\\b`, "i");
|
|
883
|
+
return colRegex.test(definition);
|
|
884
|
+
});
|
|
885
|
+
constraints2.push({
|
|
886
|
+
name,
|
|
887
|
+
type: "CHECK",
|
|
888
|
+
definition,
|
|
889
|
+
columns: constraintColumns.length > 0 ? constraintColumns : void 0
|
|
890
|
+
});
|
|
891
|
+
index++;
|
|
892
|
+
}
|
|
722
893
|
}
|
|
723
894
|
}
|
|
724
895
|
const uniqueRegex = /(?:CONSTRAINT\s+["'`]?(\w+)["'`]?\s+)?UNIQUE\s*\(([^)]+)\)/gi;
|
|
725
896
|
let uniqueIndex = 0;
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
const
|
|
897
|
+
let uniqueMatch;
|
|
898
|
+
while ((uniqueMatch = uniqueRegex.exec(ddl)) !== null) {
|
|
899
|
+
const name = uniqueMatch[1] || `${tableName}_unique_${uniqueIndex}`;
|
|
900
|
+
const columnsStr = uniqueMatch[2]?.trim();
|
|
729
901
|
if (columnsStr) {
|
|
730
902
|
const columns = columnsStr.split(",").map((c) => c.trim().replace(/["'`]/g, ""));
|
|
731
903
|
constraints2.push({
|
|
@@ -794,9 +966,8 @@ var SqliteInfoGrounding = class extends InfoGrounding {
|
|
|
794
966
|
}
|
|
795
967
|
};
|
|
796
968
|
|
|
797
|
-
// packages/text2sql/src/lib/adapters/sqlite/
|
|
798
|
-
var
|
|
799
|
-
var SqliteLowCardinalityGrounding = class extends LowCardinalityGrounding {
|
|
969
|
+
// packages/text2sql/src/lib/adapters/sqlite/column-values.sqlite.grounding.ts
|
|
970
|
+
var SqliteColumnValuesGrounding = class extends ColumnValuesGrounding {
|
|
800
971
|
#adapter;
|
|
801
972
|
constructor(adapter, config = {}) {
|
|
802
973
|
super(config);
|
|
@@ -805,7 +976,7 @@ var SqliteLowCardinalityGrounding = class extends LowCardinalityGrounding {
|
|
|
805
976
|
async collectLowCardinality(tableName, column) {
|
|
806
977
|
const tableIdentifier = this.#adapter.quoteIdentifier(tableName);
|
|
807
978
|
const columnIdentifier = this.#adapter.quoteIdentifier(column.name);
|
|
808
|
-
const limit =
|
|
979
|
+
const limit = this.lowCardinalityLimit + 1;
|
|
809
980
|
const sql = `
|
|
810
981
|
SELECT DISTINCT ${columnIdentifier} AS value
|
|
811
982
|
FROM ${tableIdentifier}
|
|
@@ -813,7 +984,7 @@ var SqliteLowCardinalityGrounding = class extends LowCardinalityGrounding {
|
|
|
813
984
|
LIMIT ${limit}
|
|
814
985
|
`;
|
|
815
986
|
const rows = await this.#adapter.runQuery(sql);
|
|
816
|
-
if (!rows.length || rows.length >
|
|
987
|
+
if (!rows.length || rows.length > this.lowCardinalityLimit) {
|
|
817
988
|
return void 0;
|
|
818
989
|
}
|
|
819
990
|
const values = [];
|
|
@@ -824,10 +995,7 @@ var SqliteLowCardinalityGrounding = class extends LowCardinalityGrounding {
|
|
|
824
995
|
}
|
|
825
996
|
values.push(formatted);
|
|
826
997
|
}
|
|
827
|
-
|
|
828
|
-
return void 0;
|
|
829
|
-
}
|
|
830
|
-
return { kind: "LowCardinality", values };
|
|
998
|
+
return values.length ? values : void 0;
|
|
831
999
|
}
|
|
832
1000
|
#normalizeValue(value) {
|
|
833
1001
|
if (value === null || value === void 0) {
|
|
@@ -1167,9 +1335,9 @@ function columnStats(config = {}) {
|
|
|
1167
1335
|
return new SqliteColumnStatsGrounding(adapter, config);
|
|
1168
1336
|
};
|
|
1169
1337
|
}
|
|
1170
|
-
function
|
|
1338
|
+
function columnValues(config = {}) {
|
|
1171
1339
|
return (adapter) => {
|
|
1172
|
-
return new
|
|
1340
|
+
return new SqliteColumnValuesGrounding(adapter, config);
|
|
1173
1341
|
};
|
|
1174
1342
|
}
|
|
1175
1343
|
function indexes(config = {}) {
|
|
@@ -1195,7 +1363,7 @@ var sqlite_default = {
|
|
|
1195
1363
|
info,
|
|
1196
1364
|
views,
|
|
1197
1365
|
columnStats,
|
|
1198
|
-
|
|
1366
|
+
columnValues,
|
|
1199
1367
|
indexes,
|
|
1200
1368
|
rowCount,
|
|
1201
1369
|
constraints,
|
|
@@ -1205,12 +1373,12 @@ var sqlite_default = {
|
|
|
1205
1373
|
export {
|
|
1206
1374
|
Sqlite,
|
|
1207
1375
|
columnStats,
|
|
1376
|
+
columnValues,
|
|
1208
1377
|
constraints,
|
|
1209
1378
|
sqlite_default as default,
|
|
1210
1379
|
formatError,
|
|
1211
1380
|
indexes,
|
|
1212
1381
|
info,
|
|
1213
|
-
lowCardinality,
|
|
1214
1382
|
report,
|
|
1215
1383
|
rowCount,
|
|
1216
1384
|
tables,
|