@deepagents/text2sql 0.10.2 → 0.11.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 +32 -41
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2338 -2398
- package/dist/index.js.map +4 -4
- package/dist/lib/adapters/adapter.d.ts +13 -1
- package/dist/lib/adapters/adapter.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts +19 -3
- package/dist/lib/adapters/groundings/abstract.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/column-stats.grounding.d.ts +1 -2
- package/dist/lib/adapters/groundings/column-stats.grounding.d.ts.map +1 -1
- package/dist/lib/adapters/groundings/column-values.grounding.d.ts +1 -2
- package/dist/lib/adapters/groundings/column-values.grounding.d.ts.map +1 -1
- 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/index.js +15 -222
- package/dist/lib/adapters/groundings/index.js.map +3 -3
- 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 +3 -3
- 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/index.js +343 -315
- package/dist/lib/adapters/mysql/index.js.map +4 -4
- package/dist/lib/adapters/postgres/index.js +385 -357
- package/dist/lib/adapters/postgres/index.js.map +4 -4
- package/dist/lib/adapters/spreadsheet/index.js +290 -223
- package/dist/lib/adapters/spreadsheet/index.js.map +4 -4
- package/dist/lib/adapters/sqlite/index.js +307 -279
- package/dist/lib/adapters/sqlite/index.js.map +4 -4
- package/dist/lib/adapters/sqlserver/index.js +383 -355
- package/dist/lib/adapters/sqlserver/index.js.map +4 -4
- package/dist/lib/agents/developer.agent.d.ts +33 -23
- package/dist/lib/agents/developer.agent.d.ts.map +1 -1
- package/dist/lib/agents/sql.agent.d.ts +4 -4
- package/dist/lib/agents/sql.agent.d.ts.map +1 -1
- package/dist/lib/agents/teachables.agent.d.ts +2 -2
- package/dist/lib/agents/teachables.agent.d.ts.map +1 -1
- package/dist/lib/agents/text2sql.agent.d.ts +18 -71
- package/dist/lib/agents/text2sql.agent.d.ts.map +1 -1
- package/dist/lib/fragments/schema.d.ts +214 -0
- package/dist/lib/fragments/schema.d.ts.map +1 -0
- package/dist/lib/instructions.d.ts +29 -2
- package/dist/lib/instructions.d.ts.map +1 -1
- package/dist/lib/instructions.js +336 -319
- package/dist/lib/instructions.js.map +4 -4
- package/dist/lib/sql.d.ts +13 -103
- package/dist/lib/sql.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts +2 -2
- package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/message-extractor.d.ts +1 -2
- package/dist/lib/synthesis/extractors/message-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/extractors/sql-extractor.d.ts.map +1 -1
- package/dist/lib/synthesis/index.js +1794 -572
- package/dist/lib/synthesis/index.js.map +4 -4
- package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -1
- package/dist/lib/synthesis/synthesizers/persona-generator.d.ts +7 -17
- package/dist/lib/synthesis/synthesizers/persona-generator.d.ts.map +1 -1
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts +2 -2
- package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts.map +1 -1
- package/dist/lib/synthesis/synthesizers/teachings-generator.d.ts +8 -20
- package/dist/lib/synthesis/synthesizers/teachings-generator.d.ts.map +1 -1
- package/dist/lib/teach/teachings.d.ts +2 -2
- package/dist/lib/teach/teachings.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/lib/agents/chat1.agent.d.ts +0 -50
- package/dist/lib/agents/chat1.agent.d.ts.map +0 -1
- package/dist/lib/agents/chat2.agent.d.ts +0 -68
- package/dist/lib/agents/chat2.agent.d.ts.map +0 -1
- package/dist/lib/agents/chat3.agent.d.ts +0 -80
- package/dist/lib/agents/chat3.agent.d.ts.map +0 -1
- package/dist/lib/agents/chat4.agent.d.ts +0 -88
- package/dist/lib/agents/chat4.agent.d.ts.map +0 -1
- package/dist/lib/history/history.d.ts +0 -41
- package/dist/lib/history/history.d.ts.map +0 -1
- package/dist/lib/history/memory.history.d.ts +0 -5
- package/dist/lib/history/memory.history.d.ts.map +0 -1
- package/dist/lib/history/sqlite.history.d.ts +0 -15
- package/dist/lib/history/sqlite.history.d.ts.map +0 -1
- package/dist/lib/memory/memory.prompt.d.ts +0 -3
- package/dist/lib/memory/memory.prompt.d.ts.map +0 -1
- package/dist/lib/memory/memory.store.d.ts +0 -5
- package/dist/lib/memory/memory.store.d.ts.map +0 -1
- package/dist/lib/memory/sqlite.store.d.ts +0 -14
- package/dist/lib/memory/sqlite.store.d.ts.map +0 -1
- package/dist/lib/memory/store.d.ts +0 -40
- package/dist/lib/memory/store.d.ts.map +0 -1
- package/dist/lib/teach/teachables.d.ts +0 -648
- package/dist/lib/teach/teachables.d.ts.map +0 -1
- package/dist/lib/teach/xml.d.ts +0 -6
- package/dist/lib/teach/xml.d.ts.map +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { ContextFragment } from '@deepagents/context';
|
|
1
2
|
import type { AbstractGrounding } from './groundings/abstract.grounding.ts';
|
|
3
|
+
import { type GroundingContext } from './groundings/context.ts';
|
|
2
4
|
/**
|
|
3
5
|
* Filter type for view/table names.
|
|
4
6
|
* - string[]: explicit list of view names
|
|
@@ -76,6 +78,7 @@ export type GroundingFn = (adapter: Adapter) => AbstractGrounding;
|
|
|
76
78
|
export type ExecuteFunction = (sql: string) => Promise<any> | any;
|
|
77
79
|
export type ValidateFunction = (sql: string) => Promise<string | void> | string | void;
|
|
78
80
|
export declare abstract class Adapter {
|
|
81
|
+
#private;
|
|
79
82
|
abstract grounding: GroundingFn[];
|
|
80
83
|
/**
|
|
81
84
|
* Default schema name for this database.
|
|
@@ -86,7 +89,16 @@ export declare abstract class Adapter {
|
|
|
86
89
|
* System schemas to exclude from introspection by default.
|
|
87
90
|
*/
|
|
88
91
|
abstract readonly systemSchemas: string[];
|
|
89
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Introspect the database schema and return context fragments.
|
|
94
|
+
*
|
|
95
|
+
* Executes all configured groundings to populate the context, then
|
|
96
|
+
* generates fragments from the complete context data.
|
|
97
|
+
*
|
|
98
|
+
* @param ctx - Optional grounding context for sharing state between groundings
|
|
99
|
+
* @returns Array of context fragments representing the database schema
|
|
100
|
+
*/
|
|
101
|
+
introspect(ctx?: GroundingContext): Promise<ContextFragment[]>;
|
|
90
102
|
abstract execute(sql: string): Promise<any[]> | any[];
|
|
91
103
|
abstract validate(sql: string): Promise<string | void> | string | void;
|
|
92
104
|
abstract runQuery<Row>(sql: string): Promise<Row[]> | Row[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,25 @@ export interface AdapterInfo {
|
|
|
13
13
|
details?: Record<string, unknown>;
|
|
14
14
|
}
|
|
15
15
|
export type AdapterInfoProvider = AdapterInfo | (() => Promise<AdapterInfo> | AdapterInfo);
|
|
16
|
+
/**
|
|
17
|
+
* Abstract base class for database schema groundings.
|
|
18
|
+
*
|
|
19
|
+
* Groundings collect schema metadata into the shared GroundingContext.
|
|
20
|
+
* Fragment generation is centralized in Adapter.introspect().
|
|
21
|
+
*/
|
|
16
22
|
export declare abstract class AbstractGrounding {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Grounding identifier for debugging/logging.
|
|
25
|
+
*/
|
|
26
|
+
name: string;
|
|
27
|
+
constructor(name: string);
|
|
28
|
+
/**
|
|
29
|
+
* Execute grounding to populate the shared context.
|
|
30
|
+
* Groundings mutate ctx to add their collected data (tables, views, indexes, etc).
|
|
31
|
+
* Fragment generation happens centrally in Adapter after all groundings complete.
|
|
32
|
+
*
|
|
33
|
+
* @param ctx - Shared context for accumulating schema data
|
|
34
|
+
*/
|
|
35
|
+
abstract execute(ctx: GroundingContext): Promise<void>;
|
|
20
36
|
}
|
|
21
37
|
//# sourceMappingURL=abstract.grounding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/abstract.grounding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAE1E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AACD,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC;AAE/C,8BAAsB,iBAAiB;IACrC,
|
|
1
|
+
{"version":3,"file":"abstract.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/abstract.grounding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAE1E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AACD,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC;AAE/C;;;;;GAKG;AACH,8BAAsB,iBAAiB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM;IAIxB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CACvD"}
|
|
@@ -16,7 +16,6 @@ export interface ColumnStatsGroundingConfig {
|
|
|
16
16
|
* - `collectStats()` - collect min/max/nullFraction for a column
|
|
17
17
|
*/
|
|
18
18
|
export declare abstract class ColumnStatsGrounding extends AbstractGrounding {
|
|
19
|
-
#private;
|
|
20
19
|
constructor(config?: ColumnStatsGroundingConfig);
|
|
21
20
|
/**
|
|
22
21
|
* Collect min/max/nullFraction statistics for a column.
|
|
@@ -27,6 +26,6 @@ export declare abstract class ColumnStatsGrounding extends AbstractGrounding {
|
|
|
27
26
|
* Execute the grounding process.
|
|
28
27
|
* Annotates columns in ctx.tables and ctx.views with statistics.
|
|
29
28
|
*/
|
|
30
|
-
execute(ctx: GroundingContext): Promise<
|
|
29
|
+
execute(ctx: GroundingContext): Promise<void>;
|
|
31
30
|
}
|
|
32
31
|
//# sourceMappingURL=column-stats.grounding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-stats.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/column-stats.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAmB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,0BAA0B;CAE1C;AAED;;;;;;;;GAQG;AACH,8BAAsB,oBAAqB,SAAQ,iBAAiB
|
|
1
|
+
{"version":3,"file":"column-stats.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/column-stats.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAmB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,0BAA0B;CAE1C;AAED;;;;;;;;GAQG;AACH,8BAAsB,oBAAqB,SAAQ,iBAAiB;gBACtD,MAAM,GAAE,0BAA+B;IAInD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAEnC;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBpD"}
|
|
@@ -29,7 +29,6 @@ export interface ColumnValuesGroundingConfig {
|
|
|
29
29
|
* - `collectLowCardinality()` - collect distinct values via data scan
|
|
30
30
|
*/
|
|
31
31
|
export declare abstract class ColumnValuesGrounding extends AbstractGrounding {
|
|
32
|
-
#private;
|
|
33
32
|
protected lowCardinalityLimit: number;
|
|
34
33
|
constructor(config?: ColumnValuesGroundingConfig);
|
|
35
34
|
/**
|
|
@@ -67,7 +66,7 @@ export declare abstract class ColumnValuesGrounding extends AbstractGrounding {
|
|
|
67
66
|
* Execute the grounding process.
|
|
68
67
|
* Annotates columns in ctx.tables and ctx.views with values.
|
|
69
68
|
*/
|
|
70
|
-
execute(ctx: GroundingContext): Promise<
|
|
69
|
+
execute(ctx: GroundingContext): Promise<void>;
|
|
71
70
|
/**
|
|
72
71
|
* Resolve column values from all sources in priority order.
|
|
73
72
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-values.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/column-values.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9E,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,qBAAsB,SAAQ,iBAAiB
|
|
1
|
+
{"version":3,"file":"column-values.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/column-values.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9E,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,qBAAsB,SAAQ,iBAAiB;IACnE,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;gBAE1B,MAAM,GAAE,2BAAgC;IAKpD;;;;OAIG;cACa,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAIhC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAEhC;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,CAC5B,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,GAAG,SAAS;IAiDvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnD;;OAEG;YACW,mBAAmB;CA6BlC"}
|
|
@@ -26,6 +26,6 @@ export declare abstract class ConstraintGrounding extends AbstractGrounding {
|
|
|
26
26
|
* Execute the grounding process.
|
|
27
27
|
* Annotates tables in ctx.tables with their constraints.
|
|
28
28
|
*/
|
|
29
|
-
execute(ctx: GroundingContext): Promise<
|
|
29
|
+
execute(ctx: GroundingContext): Promise<void>;
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=constraint.grounding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constraint.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/constraint.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,yBAAyB;CAEzC;AAED;;;;;;;;;GASG;AACH,8BAAsB,mBAAoB,SAAQ,iBAAiB;gBACrD,MAAM,GAAE,yBAA8B;IAIlD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;IAE7B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"constraint.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/groundings/constraint.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,yBAAyB;CAEzC;AAED;;;;;;;;;GASG;AACH,8BAAsB,mBAAoB,SAAQ,iBAAiB;gBACrD,MAAM,GAAE,yBAA8B;IAIlD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;IAE7B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAUpD"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
// packages/text2sql/src/lib/adapters/groundings/abstract.grounding.ts
|
|
2
2
|
var AbstractGrounding = class {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Grounding identifier for debugging/logging.
|
|
5
|
+
*/
|
|
6
|
+
name;
|
|
7
|
+
constructor(name) {
|
|
8
|
+
this.name = name;
|
|
6
9
|
}
|
|
7
10
|
};
|
|
8
11
|
|
|
9
12
|
// packages/text2sql/src/lib/adapters/groundings/column-stats.grounding.ts
|
|
10
13
|
var ColumnStatsGrounding = class extends AbstractGrounding {
|
|
11
14
|
constructor(config = {}) {
|
|
12
|
-
super("
|
|
15
|
+
super("columnStats");
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Execute the grounding process.
|
|
@@ -34,10 +37,6 @@ var ColumnStatsGrounding = class extends AbstractGrounding {
|
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
|
-
return () => this.#describe();
|
|
38
|
-
}
|
|
39
|
-
#describe() {
|
|
40
|
-
return null;
|
|
41
40
|
}
|
|
42
41
|
};
|
|
43
42
|
|
|
@@ -45,7 +44,7 @@ var ColumnStatsGrounding = class extends AbstractGrounding {
|
|
|
45
44
|
var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
46
45
|
lowCardinalityLimit;
|
|
47
46
|
constructor(config = {}) {
|
|
48
|
-
super("
|
|
47
|
+
super("columnValues");
|
|
49
48
|
this.lowCardinalityLimit = config.lowCardinalityLimit ?? 20;
|
|
50
49
|
}
|
|
51
50
|
/**
|
|
@@ -150,7 +149,6 @@ var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
|
150
149
|
}
|
|
151
150
|
}
|
|
152
151
|
}
|
|
153
|
-
return () => this.#describe();
|
|
154
152
|
}
|
|
155
153
|
/**
|
|
156
154
|
* Resolve column values from all sources in priority order.
|
|
@@ -174,15 +172,12 @@ var ColumnValuesGrounding = class extends AbstractGrounding {
|
|
|
174
172
|
}
|
|
175
173
|
return void 0;
|
|
176
174
|
}
|
|
177
|
-
#describe() {
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
175
|
};
|
|
181
176
|
|
|
182
177
|
// packages/text2sql/src/lib/adapters/groundings/constraint.grounding.ts
|
|
183
178
|
var ConstraintGrounding = class extends AbstractGrounding {
|
|
184
179
|
constructor(config = {}) {
|
|
185
|
-
super("
|
|
180
|
+
super("constraint");
|
|
186
181
|
}
|
|
187
182
|
/**
|
|
188
183
|
* Execute the grounding process.
|
|
@@ -196,7 +191,6 @@ var ConstraintGrounding = class extends AbstractGrounding {
|
|
|
196
191
|
console.warn("Error collecting constraints for", table.name, error);
|
|
197
192
|
}
|
|
198
193
|
}
|
|
199
|
-
return () => null;
|
|
200
194
|
}
|
|
201
195
|
};
|
|
202
196
|
|
|
@@ -213,7 +207,7 @@ function createGroundingContext() {
|
|
|
213
207
|
// packages/text2sql/src/lib/adapters/groundings/info.grounding.ts
|
|
214
208
|
var InfoGrounding = class extends AbstractGrounding {
|
|
215
209
|
constructor(config = {}) {
|
|
216
|
-
super("
|
|
210
|
+
super("dialectInfo");
|
|
217
211
|
}
|
|
218
212
|
/**
|
|
219
213
|
* Execute the grounding process.
|
|
@@ -221,17 +215,6 @@ var InfoGrounding = class extends AbstractGrounding {
|
|
|
221
215
|
*/
|
|
222
216
|
async execute(ctx) {
|
|
223
217
|
ctx.info = await this.collectInfo();
|
|
224
|
-
const lines = [`Dialect: ${ctx.info.dialect ?? "unknown"}`];
|
|
225
|
-
if (ctx.info.version) {
|
|
226
|
-
lines.push(`Version: ${ctx.info.version}`);
|
|
227
|
-
}
|
|
228
|
-
if (ctx.info.database) {
|
|
229
|
-
lines.push(`Database: ${ctx.info.database}`);
|
|
230
|
-
}
|
|
231
|
-
if (ctx.info.details && Object.keys(ctx.info.details).length) {
|
|
232
|
-
lines.push(`Details: ${JSON.stringify(ctx.info.details)}`);
|
|
233
|
-
}
|
|
234
|
-
return () => lines.join("\n");
|
|
235
218
|
}
|
|
236
219
|
};
|
|
237
220
|
|
|
@@ -304,7 +287,7 @@ var ReportGrounding = class extends AbstractGrounding {
|
|
|
304
287
|
const cached = await this.#cache.get();
|
|
305
288
|
if (cached) {
|
|
306
289
|
ctx.report = cached;
|
|
307
|
-
return
|
|
290
|
+
return;
|
|
308
291
|
}
|
|
309
292
|
}
|
|
310
293
|
const report = await this.#generateReport();
|
|
@@ -312,7 +295,6 @@ var ReportGrounding = class extends AbstractGrounding {
|
|
|
312
295
|
if (this.#cache) {
|
|
313
296
|
await this.#cache.set(report);
|
|
314
297
|
}
|
|
315
|
-
return () => report;
|
|
316
298
|
}
|
|
317
299
|
async #generateReport() {
|
|
318
300
|
const { text } = await generate(
|
|
@@ -331,7 +313,7 @@ var ReportGrounding = class extends AbstractGrounding {
|
|
|
331
313
|
// packages/text2sql/src/lib/adapters/groundings/row-count.grounding.ts
|
|
332
314
|
var RowCountGrounding = class extends AbstractGrounding {
|
|
333
315
|
constructor(config = {}) {
|
|
334
|
-
super("
|
|
316
|
+
super("rowCount");
|
|
335
317
|
}
|
|
336
318
|
/**
|
|
337
319
|
* Execute the grounding process.
|
|
@@ -345,7 +327,6 @@ var RowCountGrounding = class extends AbstractGrounding {
|
|
|
345
327
|
table.sizeHint = this.#classifyRowCount(count);
|
|
346
328
|
}
|
|
347
329
|
}
|
|
348
|
-
return () => null;
|
|
349
330
|
}
|
|
350
331
|
/**
|
|
351
332
|
* Classify row count into a size hint category.
|
|
@@ -360,13 +341,12 @@ var RowCountGrounding = class extends AbstractGrounding {
|
|
|
360
341
|
};
|
|
361
342
|
|
|
362
343
|
// packages/text2sql/src/lib/adapters/groundings/table.grounding.ts
|
|
363
|
-
import pluralize from "pluralize";
|
|
364
344
|
var TableGrounding = class extends AbstractGrounding {
|
|
365
345
|
#filter;
|
|
366
346
|
#forward;
|
|
367
347
|
#backward;
|
|
368
348
|
constructor(config = {}) {
|
|
369
|
-
super("
|
|
349
|
+
super("table");
|
|
370
350
|
this.#filter = config.filter;
|
|
371
351
|
this.#forward = config.forward;
|
|
372
352
|
this.#backward = config.backward;
|
|
@@ -384,7 +364,7 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
384
364
|
seedTables.map((name) => this.getTable(name))
|
|
385
365
|
);
|
|
386
366
|
ctx.tables.push(...tables2);
|
|
387
|
-
return
|
|
367
|
+
return;
|
|
388
368
|
}
|
|
389
369
|
const tables = {};
|
|
390
370
|
const allRelationships = [];
|
|
@@ -440,7 +420,6 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
440
420
|
const tablesList = Object.values(tables);
|
|
441
421
|
ctx.tables.push(...tablesList);
|
|
442
422
|
ctx.relationships.push(...allRelationships);
|
|
443
|
-
return () => this.#describeTables(tablesList);
|
|
444
423
|
}
|
|
445
424
|
/**
|
|
446
425
|
* Apply the filter to get seed table names.
|
|
@@ -470,163 +449,13 @@ var TableGrounding = class extends AbstractGrounding {
|
|
|
470
449
|
all.push(rel);
|
|
471
450
|
}
|
|
472
451
|
}
|
|
473
|
-
#describeTables(tables) {
|
|
474
|
-
if (!tables.length) {
|
|
475
|
-
return "Schema unavailable.";
|
|
476
|
-
}
|
|
477
|
-
return tables.map((table) => {
|
|
478
|
-
const rowCountInfo = table.rowCount != null ? ` [rows: ${table.rowCount}${table.sizeHint ? `, size: ${table.sizeHint}` : ""}]` : "";
|
|
479
|
-
const pkConstraint = table.constraints?.find(
|
|
480
|
-
(c) => c.type === "PRIMARY_KEY"
|
|
481
|
-
);
|
|
482
|
-
const pkColumns = new Set(pkConstraint?.columns ?? []);
|
|
483
|
-
const notNullColumns = new Set(
|
|
484
|
-
table.constraints?.filter((c) => c.type === "NOT_NULL").flatMap((c) => c.columns ?? []) ?? []
|
|
485
|
-
);
|
|
486
|
-
const defaultByColumn = /* @__PURE__ */ new Map();
|
|
487
|
-
for (const c of table.constraints?.filter(
|
|
488
|
-
(c2) => c2.type === "DEFAULT"
|
|
489
|
-
) ?? []) {
|
|
490
|
-
for (const col of c.columns ?? []) {
|
|
491
|
-
if (c.defaultValue != null) {
|
|
492
|
-
defaultByColumn.set(col, c.defaultValue);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
const uniqueColumns = new Set(
|
|
497
|
-
table.constraints?.filter((c) => c.type === "UNIQUE" && c.columns?.length === 1).flatMap((c) => c.columns ?? []) ?? []
|
|
498
|
-
);
|
|
499
|
-
const fkByColumn = /* @__PURE__ */ new Map();
|
|
500
|
-
for (const c of table.constraints?.filter(
|
|
501
|
-
(c2) => c2.type === "FOREIGN_KEY"
|
|
502
|
-
) ?? []) {
|
|
503
|
-
const cols = c.columns ?? [];
|
|
504
|
-
const refCols = c.referencedColumns ?? [];
|
|
505
|
-
for (let i = 0; i < cols.length; i++) {
|
|
506
|
-
const refCol = refCols[i] ?? refCols[0] ?? cols[i];
|
|
507
|
-
fkByColumn.set(cols[i], `${c.referencedTable}.${refCol}`);
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
const columns = table.columns.map((column) => {
|
|
511
|
-
const annotations = [];
|
|
512
|
-
const isPrimaryKey = pkColumns.has(column.name);
|
|
513
|
-
if (isPrimaryKey) {
|
|
514
|
-
annotations.push("PK");
|
|
515
|
-
}
|
|
516
|
-
if (fkByColumn.has(column.name)) {
|
|
517
|
-
annotations.push(`FK -> ${fkByColumn.get(column.name)}`);
|
|
518
|
-
}
|
|
519
|
-
if (uniqueColumns.has(column.name)) {
|
|
520
|
-
annotations.push("UNIQUE");
|
|
521
|
-
}
|
|
522
|
-
if (notNullColumns.has(column.name)) {
|
|
523
|
-
annotations.push("NOT NULL");
|
|
524
|
-
}
|
|
525
|
-
if (defaultByColumn.has(column.name)) {
|
|
526
|
-
annotations.push(`DEFAULT: ${defaultByColumn.get(column.name)}`);
|
|
527
|
-
}
|
|
528
|
-
if (column.isIndexed && !isPrimaryKey) {
|
|
529
|
-
annotations.push("Indexed");
|
|
530
|
-
}
|
|
531
|
-
if (column.kind === "Enum" && column.values?.length) {
|
|
532
|
-
annotations.push(`Enum: ${column.values.join(", ")}`);
|
|
533
|
-
} else if (column.kind === "LowCardinality" && column.values?.length) {
|
|
534
|
-
annotations.push(`LowCardinality: ${column.values.join(", ")}`);
|
|
535
|
-
}
|
|
536
|
-
if (column.stats) {
|
|
537
|
-
const statParts = [];
|
|
538
|
-
if (column.stats.min != null || column.stats.max != null) {
|
|
539
|
-
const minText = column.stats.min ?? "n/a";
|
|
540
|
-
const maxText = column.stats.max ?? "n/a";
|
|
541
|
-
statParts.push(`range ${minText} \u2192 ${maxText}`);
|
|
542
|
-
}
|
|
543
|
-
if (column.stats.nullFraction != null && Number.isFinite(column.stats.nullFraction)) {
|
|
544
|
-
const percent = Math.round(column.stats.nullFraction * 1e3) / 10;
|
|
545
|
-
statParts.push(`null\u2248${percent}%`);
|
|
546
|
-
}
|
|
547
|
-
if (statParts.length) {
|
|
548
|
-
annotations.push(statParts.join(", "));
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
const annotationText = annotations.length ? ` [${annotations.join(", ")}]` : "";
|
|
552
|
-
return ` - ${column.name} (${column.type})${annotationText}`;
|
|
553
|
-
}).join("\n");
|
|
554
|
-
const indexes = table.indexes?.length ? `
|
|
555
|
-
Indexes:
|
|
556
|
-
${table.indexes.map((index) => {
|
|
557
|
-
const props = [];
|
|
558
|
-
if (index.unique) {
|
|
559
|
-
props.push("UNIQUE");
|
|
560
|
-
}
|
|
561
|
-
if (index.type) {
|
|
562
|
-
props.push(index.type);
|
|
563
|
-
}
|
|
564
|
-
const propsText = props.length ? ` (${props.join(", ")})` : "";
|
|
565
|
-
const columnsText = index.columns?.length ? index.columns.join(", ") : "expression";
|
|
566
|
-
return ` - ${index.name}${propsText}: ${columnsText}`;
|
|
567
|
-
}).join("\n")}` : "";
|
|
568
|
-
const multiColumnUniques = table.constraints?.filter(
|
|
569
|
-
(c) => c.type === "UNIQUE" && (c.columns?.length ?? 0) > 1
|
|
570
|
-
) ?? [];
|
|
571
|
-
const uniqueConstraints = multiColumnUniques.length ? `
|
|
572
|
-
Unique Constraints:
|
|
573
|
-
${multiColumnUniques.map((c) => ` - ${c.name}: (${c.columns?.join(", ")})`).join("\n")}` : "";
|
|
574
|
-
const checkConstraints = table.constraints?.filter((c) => c.type === "CHECK") ?? [];
|
|
575
|
-
const checks = checkConstraints.length ? `
|
|
576
|
-
Check Constraints:
|
|
577
|
-
${checkConstraints.map((c) => ` - ${c.name}: ${c.definition}`).join("\n")}` : "";
|
|
578
|
-
return `- Table: ${table.name}${rowCountInfo}
|
|
579
|
-
Columns:
|
|
580
|
-
${columns}${indexes}${uniqueConstraints}${checks}`;
|
|
581
|
-
}).join("\n\n");
|
|
582
|
-
}
|
|
583
|
-
#formatTableLabel = (tableName) => {
|
|
584
|
-
const base = tableName.split(".").pop() ?? tableName;
|
|
585
|
-
return base.replace(/_/g, " ");
|
|
586
|
-
};
|
|
587
|
-
#describeRelationships = (tables, relationships) => {
|
|
588
|
-
if (!relationships.length) {
|
|
589
|
-
return "None detected";
|
|
590
|
-
}
|
|
591
|
-
const tableMap = new Map(tables.map((table) => [table.name, table]));
|
|
592
|
-
return relationships.map((relationship) => {
|
|
593
|
-
const sourceLabel = this.#formatTableLabel(relationship.table);
|
|
594
|
-
const targetLabel = this.#formatTableLabel(
|
|
595
|
-
relationship.referenced_table
|
|
596
|
-
);
|
|
597
|
-
const singularSource = pluralize.singular(sourceLabel);
|
|
598
|
-
const pluralSource = pluralize.plural(sourceLabel);
|
|
599
|
-
const singularTarget = pluralize.singular(targetLabel);
|
|
600
|
-
const pluralTarget = pluralize.plural(targetLabel);
|
|
601
|
-
const sourceTable = tableMap.get(relationship.table);
|
|
602
|
-
const targetTable = tableMap.get(relationship.referenced_table);
|
|
603
|
-
const sourceCount = sourceTable?.rowCount;
|
|
604
|
-
const targetCount = targetTable?.rowCount;
|
|
605
|
-
const ratio = sourceCount != null && targetCount != null && targetCount > 0 ? sourceCount / targetCount : null;
|
|
606
|
-
let cardinality = "each";
|
|
607
|
-
if (ratio != null) {
|
|
608
|
-
if (ratio > 5) {
|
|
609
|
-
cardinality = `many-to-one (\u2248${sourceCount} vs ${targetCount})`;
|
|
610
|
-
} else if (ratio < 1.2 && ratio > 0.8) {
|
|
611
|
-
cardinality = `roughly 1:1 (${sourceCount} vs ${targetCount})`;
|
|
612
|
-
} else if (ratio < 0.2) {
|
|
613
|
-
cardinality = `one-to-many (${sourceCount} vs ${targetCount})`;
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
const mappings = relationship.from.map((fromCol, idx) => {
|
|
617
|
-
const targetCol = relationship.to[idx] ?? relationship.to[0] ?? fromCol;
|
|
618
|
-
return `${relationship.table}.${fromCol} -> ${relationship.referenced_table}.${targetCol}`;
|
|
619
|
-
}).join(", ");
|
|
620
|
-
return `- ${relationship.table} (${relationship.from.join(", ")}) -> ${relationship.referenced_table} (${relationship.to.join(", ")}) [${cardinality}]`;
|
|
621
|
-
}).join("\n");
|
|
622
|
-
};
|
|
623
452
|
};
|
|
624
453
|
|
|
625
454
|
// packages/text2sql/src/lib/adapters/groundings/view.grounding.ts
|
|
626
455
|
var ViewGrounding = class extends AbstractGrounding {
|
|
627
456
|
#filter;
|
|
628
457
|
constructor(config = {}) {
|
|
629
|
-
super("
|
|
458
|
+
super("view");
|
|
630
459
|
this.#filter = config.filter;
|
|
631
460
|
}
|
|
632
461
|
/**
|
|
@@ -639,42 +468,6 @@ var ViewGrounding = class extends AbstractGrounding {
|
|
|
639
468
|
viewNames.map((name) => this.getView(name))
|
|
640
469
|
);
|
|
641
470
|
ctx.views.push(...views);
|
|
642
|
-
return () => this.#describe(views);
|
|
643
|
-
}
|
|
644
|
-
#describe(views) {
|
|
645
|
-
if (!views.length) {
|
|
646
|
-
return "No views available.";
|
|
647
|
-
}
|
|
648
|
-
return views.map((view) => {
|
|
649
|
-
const columns = view.columns.map((column) => {
|
|
650
|
-
const annotations = [];
|
|
651
|
-
if (column.kind === "LowCardinality" && column.values?.length) {
|
|
652
|
-
annotations.push(`LowCardinality: ${column.values.join(", ")}`);
|
|
653
|
-
}
|
|
654
|
-
if (column.stats) {
|
|
655
|
-
const statParts = [];
|
|
656
|
-
if (column.stats.min != null || column.stats.max != null) {
|
|
657
|
-
const minText = column.stats.min ?? "n/a";
|
|
658
|
-
const maxText = column.stats.max ?? "n/a";
|
|
659
|
-
statParts.push(`range ${minText} \u2192 ${maxText}`);
|
|
660
|
-
}
|
|
661
|
-
if (column.stats.nullFraction != null && Number.isFinite(column.stats.nullFraction)) {
|
|
662
|
-
const percent = Math.round(column.stats.nullFraction * 1e3) / 10;
|
|
663
|
-
statParts.push(`null\u2248${percent}%`);
|
|
664
|
-
}
|
|
665
|
-
if (statParts.length) {
|
|
666
|
-
annotations.push(statParts.join(", "));
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
const annotationText = annotations.length ? ` [${annotations.join(", ")}]` : "";
|
|
670
|
-
return ` - ${column.name} (${column.type})${annotationText}`;
|
|
671
|
-
}).join("\n");
|
|
672
|
-
const definition = view.definition ? `
|
|
673
|
-
Definition: ${view.definition.length > 200 ? view.definition.slice(0, 200) + "..." : view.definition}` : "";
|
|
674
|
-
return `- View: ${view.name}${definition}
|
|
675
|
-
Columns:
|
|
676
|
-
${columns}`;
|
|
677
|
-
}).join("\n\n");
|
|
678
471
|
}
|
|
679
472
|
/**
|
|
680
473
|
* Apply the filter to get view names.
|