@memberjunction/db-auto-doc 2.116.0 → 2.118.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 +652 -165
- package/bin/run.js +7 -0
- package/dist/api/DBAutoDocAPI.d.ts +252 -0
- package/dist/api/DBAutoDocAPI.d.ts.map +1 -0
- package/dist/api/DBAutoDocAPI.js +530 -0
- package/dist/api/DBAutoDocAPI.js.map +1 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +10 -0
- package/dist/api/index.js.map +1 -0
- package/dist/commands/analyze.d.ts +6 -4
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +58 -71
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/export.d.ts +14 -4
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +156 -61
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/init.d.ts +3 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +155 -146
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/reset.d.ts +4 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +33 -19
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +66 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/AnalysisEngine.d.ts +108 -0
- package/dist/core/AnalysisEngine.d.ts.map +1 -0
- package/dist/core/AnalysisEngine.js +716 -0
- package/dist/core/AnalysisEngine.js.map +1 -0
- package/dist/core/AnalysisOrchestrator.d.ts +37 -0
- package/dist/core/AnalysisOrchestrator.d.ts.map +1 -0
- package/dist/core/AnalysisOrchestrator.js +294 -0
- package/dist/core/AnalysisOrchestrator.js.map +1 -0
- package/dist/core/BackpropagationEngine.d.ts +32 -0
- package/dist/core/BackpropagationEngine.d.ts.map +1 -0
- package/dist/core/BackpropagationEngine.js +121 -0
- package/dist/core/BackpropagationEngine.js.map +1 -0
- package/dist/core/ConvergenceDetector.d.ts +27 -0
- package/dist/core/ConvergenceDetector.d.ts.map +1 -0
- package/dist/core/ConvergenceDetector.js +92 -0
- package/dist/core/ConvergenceDetector.js.map +1 -0
- package/dist/core/GuardrailsManager.d.ts +78 -0
- package/dist/core/GuardrailsManager.d.ts.map +1 -0
- package/dist/core/GuardrailsManager.js +367 -0
- package/dist/core/GuardrailsManager.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/database/Database.d.ts +56 -0
- package/dist/database/Database.d.ts.map +1 -0
- package/dist/database/Database.js +172 -0
- package/dist/database/Database.js.map +1 -0
- package/dist/database/TopologicalSorter.d.ts +25 -0
- package/dist/database/TopologicalSorter.d.ts.map +1 -0
- package/dist/database/TopologicalSorter.js +150 -0
- package/dist/database/TopologicalSorter.js.map +1 -0
- package/dist/database/index.d.ts +6 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +14 -0
- package/dist/database/index.js.map +1 -0
- package/dist/discovery/ColumnStatsCache.d.ts +91 -0
- package/dist/discovery/ColumnStatsCache.d.ts.map +1 -0
- package/dist/discovery/ColumnStatsCache.js +231 -0
- package/dist/discovery/ColumnStatsCache.js.map +1 -0
- package/dist/discovery/DiscoveryEngine.d.ts +100 -0
- package/dist/discovery/DiscoveryEngine.d.ts.map +1 -0
- package/dist/discovery/DiscoveryEngine.js +726 -0
- package/dist/discovery/DiscoveryEngine.js.map +1 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts +57 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts.map +1 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.js +186 -0
- package/dist/discovery/DiscoveryTriggerAnalyzer.js.map +1 -0
- package/dist/discovery/FKDetector.d.ts +47 -0
- package/dist/discovery/FKDetector.d.ts.map +1 -0
- package/dist/discovery/FKDetector.js +317 -0
- package/dist/discovery/FKDetector.js.map +1 -0
- package/dist/discovery/LLMDiscoveryValidator.d.ts +64 -0
- package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -0
- package/dist/discovery/LLMDiscoveryValidator.js +431 -0
- package/dist/discovery/LLMDiscoveryValidator.js.map +1 -0
- package/dist/discovery/LLMSanityChecker.d.ts +38 -0
- package/dist/discovery/LLMSanityChecker.d.ts.map +1 -0
- package/dist/discovery/LLMSanityChecker.js +156 -0
- package/dist/discovery/LLMSanityChecker.js.map +1 -0
- package/dist/discovery/PKDetector.d.ts +62 -0
- package/dist/discovery/PKDetector.d.ts.map +1 -0
- package/dist/discovery/PKDetector.js +436 -0
- package/dist/discovery/PKDetector.js.map +1 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +25 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts +132 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -0
- package/dist/drivers/BaseAutoDocDriver.js +121 -0
- package/dist/drivers/BaseAutoDocDriver.js.map +1 -0
- package/dist/drivers/MySQLDriver.d.ts +61 -0
- package/dist/drivers/MySQLDriver.d.ts.map +1 -0
- package/dist/drivers/MySQLDriver.js +668 -0
- package/dist/drivers/MySQLDriver.js.map +1 -0
- package/dist/drivers/PostgreSQLDriver.d.ts +65 -0
- package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -0
- package/dist/drivers/PostgreSQLDriver.js +704 -0
- package/dist/drivers/PostgreSQLDriver.js.map +1 -0
- package/dist/drivers/SQLServerDriver.d.ts +61 -0
- package/dist/drivers/SQLServerDriver.d.ts.map +1 -0
- package/dist/drivers/SQLServerDriver.js +667 -0
- package/dist/drivers/SQLServerDriver.js.map +1 -0
- package/dist/generators/CSVGenerator.d.ts +35 -0
- package/dist/generators/CSVGenerator.d.ts.map +1 -0
- package/dist/generators/CSVGenerator.js +154 -0
- package/dist/generators/CSVGenerator.js.map +1 -0
- package/dist/generators/HTMLGenerator.d.ts +29 -0
- package/dist/generators/HTMLGenerator.d.ts.map +1 -0
- package/dist/generators/HTMLGenerator.js +710 -0
- package/dist/generators/HTMLGenerator.js.map +1 -0
- package/dist/generators/MarkdownGenerator.d.ts +27 -0
- package/dist/generators/MarkdownGenerator.d.ts.map +1 -0
- package/dist/generators/MarkdownGenerator.js +361 -0
- package/dist/generators/MarkdownGenerator.js.map +1 -0
- package/dist/generators/MermaidGenerator.d.ts +35 -0
- package/dist/generators/MermaidGenerator.d.ts.map +1 -0
- package/dist/generators/MermaidGenerator.js +321 -0
- package/dist/generators/MermaidGenerator.js.map +1 -0
- package/dist/generators/ReportGenerator.d.ts +22 -0
- package/dist/generators/ReportGenerator.d.ts.map +1 -0
- package/dist/generators/ReportGenerator.js +176 -0
- package/dist/generators/ReportGenerator.js.map +1 -0
- package/dist/generators/SQLGenerator.d.ts +31 -0
- package/dist/generators/SQLGenerator.d.ts.map +1 -0
- package/dist/generators/SQLGenerator.js +168 -0
- package/dist/generators/SQLGenerator.js.map +1 -0
- package/dist/generators/index.d.ts +10 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +19 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +11 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -20
- package/dist/index.js.map +1 -1
- package/dist/prompts/PromptEngine.d.ts +65 -0
- package/dist/prompts/PromptEngine.d.ts.map +1 -0
- package/dist/prompts/PromptEngine.js +282 -0
- package/dist/prompts/PromptEngine.js.map +1 -0
- package/dist/prompts/PromptFileLoader.d.ts +21 -0
- package/dist/prompts/PromptFileLoader.d.ts.map +1 -0
- package/dist/prompts/PromptFileLoader.js +74 -0
- package/dist/prompts/PromptFileLoader.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +11 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/state/IterationTracker.d.ts +64 -0
- package/dist/state/IterationTracker.d.ts.map +1 -0
- package/dist/state/IterationTracker.js +136 -0
- package/dist/state/IterationTracker.js.map +1 -0
- package/dist/state/StateManager.d.ts +79 -0
- package/dist/state/StateManager.d.ts.map +1 -0
- package/dist/state/StateManager.js +348 -0
- package/dist/state/StateManager.js.map +1 -0
- package/dist/state/StateValidator.d.ts +24 -0
- package/dist/state/StateValidator.d.ts.map +1 -0
- package/dist/state/StateValidator.js +147 -0
- package/dist/state/StateValidator.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +13 -0
- package/dist/state/index.js.map +1 -0
- package/dist/types/analysis.d.ts +76 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +6 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +132 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/discovery.d.ts +277 -0
- package/dist/types/discovery.d.ts.map +1 -0
- package/dist/types/discovery.js +7 -0
- package/dist/types/discovery.js.map +1 -0
- package/dist/types/driver.d.ts +148 -0
- package/dist/types/driver.d.ts.map +1 -0
- package/dist/types/driver.js +7 -0
- package/dist/types/driver.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/prompts.d.ts +158 -0
- package/dist/types/prompts.d.ts.map +1 -0
- package/dist/types/prompts.js +6 -0
- package/dist/types/prompts.js.map +1 -0
- package/dist/types/state.d.ts +278 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +7 -0
- package/dist/types/state.js.map +1 -0
- package/dist/utils/config-loader.d.ts +29 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +163 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +24 -3
- package/dist/ai/simple-ai-client.d.ts +0 -70
- package/dist/ai/simple-ai-client.d.ts.map +0 -1
- package/dist/ai/simple-ai-client.js +0 -181
- package/dist/ai/simple-ai-client.js.map +0 -1
- package/dist/analyzers/analyzer.d.ts +0 -23
- package/dist/analyzers/analyzer.d.ts.map +0 -1
- package/dist/analyzers/analyzer.js +0 -127
- package/dist/analyzers/analyzer.js.map +0 -1
- package/dist/cli-old/cli.d.ts +0 -3
- package/dist/cli-old/cli.d.ts.map +0 -1
- package/dist/cli-old/cli.js +0 -388
- package/dist/cli-old/cli.js.map +0 -1
- package/dist/commands/review.d.ts +0 -11
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -82
- package/dist/commands/review.js.map +0 -1
- package/dist/database/connection.d.ts +0 -40
- package/dist/database/connection.d.ts.map +0 -1
- package/dist/database/connection.js +0 -136
- package/dist/database/connection.js.map +0 -1
- package/dist/database/introspection.d.ts +0 -59
- package/dist/database/introspection.d.ts.map +0 -1
- package/dist/database/introspection.js +0 -124
- package/dist/database/introspection.js.map +0 -1
- package/dist/generators/markdown-generator.d.ts +0 -8
- package/dist/generators/markdown-generator.d.ts.map +0 -1
- package/dist/generators/markdown-generator.js +0 -106
- package/dist/generators/markdown-generator.js.map +0 -1
- package/dist/generators/sql-generator.d.ts +0 -20
- package/dist/generators/sql-generator.d.ts.map +0 -1
- package/dist/generators/sql-generator.js +0 -83
- package/dist/generators/sql-generator.js.map +0 -1
- package/dist/state/state-manager.d.ts +0 -95
- package/dist/state/state-manager.d.ts.map +0 -1
- package/dist/state/state-manager.js +0 -236
- package/dist/state/state-manager.js.map +0 -1
- package/dist/types/state-file.d.ts +0 -124
- package/dist/types/state-file.d.ts.map +0 -1
- package/dist/types/state-file.js +0 -79
- package/dist/types/state-file.js.map +0 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Column Statistics Cache
|
|
4
|
+
* Stores pre-computed column statistics to avoid redundant database queries
|
|
5
|
+
* Used across discovery and analysis phases
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ColumnStatsCache = void 0;
|
|
9
|
+
class ColumnStatsCache {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.tableCache = new Map();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get table key for cache lookup
|
|
15
|
+
*/
|
|
16
|
+
getTableKey(schemaName, tableName) {
|
|
17
|
+
return `${schemaName}.${tableName}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get column key for cache lookup
|
|
21
|
+
*/
|
|
22
|
+
getColumnKey(schemaName, tableName, columnName) {
|
|
23
|
+
return `${schemaName}.${tableName}.${columnName}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Store column statistics
|
|
27
|
+
*/
|
|
28
|
+
setColumnStats(stats) {
|
|
29
|
+
const tableKey = this.getTableKey(stats.schemaName, stats.tableName);
|
|
30
|
+
let tableStats = this.tableCache.get(tableKey);
|
|
31
|
+
if (!tableStats) {
|
|
32
|
+
tableStats = {
|
|
33
|
+
schemaName: stats.schemaName,
|
|
34
|
+
tableName: stats.tableName,
|
|
35
|
+
totalRows: stats.totalRows,
|
|
36
|
+
columns: new Map(),
|
|
37
|
+
computedAt: stats.computedAt
|
|
38
|
+
};
|
|
39
|
+
this.tableCache.set(tableKey, tableStats);
|
|
40
|
+
}
|
|
41
|
+
tableStats.columns.set(stats.columnName, stats);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get column statistics
|
|
45
|
+
*/
|
|
46
|
+
getColumnStats(schemaName, tableName, columnName) {
|
|
47
|
+
const tableKey = this.getTableKey(schemaName, tableName);
|
|
48
|
+
const tableStats = this.tableCache.get(tableKey);
|
|
49
|
+
return tableStats?.columns.get(columnName);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get all column statistics for a table
|
|
53
|
+
*/
|
|
54
|
+
getTableStats(schemaName, tableName) {
|
|
55
|
+
const tableKey = this.getTableKey(schemaName, tableName);
|
|
56
|
+
return this.tableCache.get(tableKey);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get all columns in a table
|
|
60
|
+
*/
|
|
61
|
+
getTableColumns(schemaName, tableName) {
|
|
62
|
+
const tableStats = this.getTableStats(schemaName, tableName);
|
|
63
|
+
return tableStats ? Array.from(tableStats.columns.values()) : [];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if column stats exist
|
|
67
|
+
*/
|
|
68
|
+
hasColumnStats(schemaName, tableName, columnName) {
|
|
69
|
+
return this.getColumnStats(schemaName, tableName, columnName) !== undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if table stats exist
|
|
73
|
+
*/
|
|
74
|
+
hasTableStats(schemaName, tableName) {
|
|
75
|
+
return this.getTableStats(schemaName, tableName) !== undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all tables with cached stats
|
|
79
|
+
*/
|
|
80
|
+
getAllTables() {
|
|
81
|
+
return Array.from(this.tableCache.values());
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Find columns matching a pattern across all tables
|
|
85
|
+
* Useful for finding potential FK relationships
|
|
86
|
+
*/
|
|
87
|
+
findColumnsMatching(predicate) {
|
|
88
|
+
const results = [];
|
|
89
|
+
for (const tableStats of this.tableCache.values()) {
|
|
90
|
+
for (const columnStats of tableStats.columns.values()) {
|
|
91
|
+
if (predicate(columnStats)) {
|
|
92
|
+
results.push(columnStats);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return results;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Find columns with similar names across tables
|
|
100
|
+
* Example: Find all columns named "*_id" or "*ID"
|
|
101
|
+
*/
|
|
102
|
+
findColumnsByNamePattern(pattern) {
|
|
103
|
+
return this.findColumnsMatching(stats => pattern.test(stats.columnName));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Find highly unique columns (potential PKs)
|
|
107
|
+
*/
|
|
108
|
+
findUniqueColumns(minUniqueness = 0.95) {
|
|
109
|
+
return this.findColumnsMatching(stats => stats.uniqueness >= minUniqueness && stats.nullCount === 0);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Find columns with same name across multiple tables
|
|
113
|
+
* Returns Map of columnName -> array of CachedColumnStats
|
|
114
|
+
*/
|
|
115
|
+
findDuplicateColumnNames() {
|
|
116
|
+
const columnMap = new Map();
|
|
117
|
+
for (const tableStats of this.tableCache.values()) {
|
|
118
|
+
for (const columnStats of tableStats.columns.values()) {
|
|
119
|
+
const existing = columnMap.get(columnStats.columnName) || [];
|
|
120
|
+
existing.push(columnStats);
|
|
121
|
+
columnMap.set(columnStats.columnName, existing);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Filter to only columns that appear in multiple tables
|
|
125
|
+
return new Map(Array.from(columnMap.entries()).filter(([_, stats]) => stats.length > 1));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get cache statistics
|
|
129
|
+
*/
|
|
130
|
+
getCacheStats() {
|
|
131
|
+
let totalColumns = 0;
|
|
132
|
+
let totalStatsBytes = 0;
|
|
133
|
+
for (const tableStats of this.tableCache.values()) {
|
|
134
|
+
totalColumns += tableStats.columns.size;
|
|
135
|
+
// Rough estimate of memory usage
|
|
136
|
+
totalStatsBytes += JSON.stringify(Array.from(tableStats.columns.values())).length;
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
totalTables: this.tableCache.size,
|
|
140
|
+
totalColumns,
|
|
141
|
+
totalStatsBytes,
|
|
142
|
+
avgColumnsPerTable: this.tableCache.size > 0 ? totalColumns / this.tableCache.size : 0
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Clear all cached stats
|
|
147
|
+
*/
|
|
148
|
+
clear() {
|
|
149
|
+
this.tableCache.clear();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Export cache to JSON for persistence in state file
|
|
153
|
+
*/
|
|
154
|
+
toStateJSON() {
|
|
155
|
+
let totalColumns = 0;
|
|
156
|
+
const tables = {};
|
|
157
|
+
for (const [key, tableStats] of this.tableCache.entries()) {
|
|
158
|
+
const columns = Array.from(tableStats.columns.values());
|
|
159
|
+
totalColumns += columns.length;
|
|
160
|
+
tables[key] = {
|
|
161
|
+
schemaName: tableStats.schemaName,
|
|
162
|
+
tableName: tableStats.tableName,
|
|
163
|
+
totalRows: tableStats.totalRows,
|
|
164
|
+
columns
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
computedAt: new Date().toISOString(),
|
|
169
|
+
totalSchemas: new Set(Array.from(this.tableCache.values()).map(t => t.schemaName)).size,
|
|
170
|
+
totalTables: this.tableCache.size,
|
|
171
|
+
totalColumns,
|
|
172
|
+
tables
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Import cache from state JSON
|
|
177
|
+
*/
|
|
178
|
+
fromStateJSON(data) {
|
|
179
|
+
this.clear();
|
|
180
|
+
for (const [key, tableEntry] of Object.entries(data.tables)) {
|
|
181
|
+
const columnMap = new Map();
|
|
182
|
+
for (const col of tableEntry.columns) {
|
|
183
|
+
columnMap.set(col.columnName, col);
|
|
184
|
+
}
|
|
185
|
+
this.tableCache.set(key, {
|
|
186
|
+
schemaName: tableEntry.schemaName,
|
|
187
|
+
tableName: tableEntry.tableName,
|
|
188
|
+
totalRows: tableEntry.totalRows,
|
|
189
|
+
columns: columnMap,
|
|
190
|
+
computedAt: data.computedAt
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Merge cached stats into schema column definitions
|
|
196
|
+
* Replaces separate columnStatistics cache with embedded stats
|
|
197
|
+
*/
|
|
198
|
+
mergeIntoSchemas(schemas) {
|
|
199
|
+
for (const schema of schemas) {
|
|
200
|
+
for (const table of schema.tables) {
|
|
201
|
+
const cacheKey = `${schema.name}.${table.name}`;
|
|
202
|
+
const tableStats = this.tableCache.get(cacheKey);
|
|
203
|
+
if (!tableStats)
|
|
204
|
+
continue;
|
|
205
|
+
for (const column of table.columns) {
|
|
206
|
+
const cachedStats = tableStats.columns.get(column.name);
|
|
207
|
+
if (!cachedStats)
|
|
208
|
+
continue;
|
|
209
|
+
// Merge cached stats into column.statistics
|
|
210
|
+
column.statistics = {
|
|
211
|
+
totalRows: cachedStats.totalRows,
|
|
212
|
+
distinctCount: cachedStats.distinctCount,
|
|
213
|
+
uniquenessRatio: cachedStats.uniqueness,
|
|
214
|
+
nullCount: cachedStats.nullCount,
|
|
215
|
+
nullPercentage: cachedStats.nullPercentage,
|
|
216
|
+
dataPattern: cachedStats.dataPattern,
|
|
217
|
+
sampleValues: cachedStats.sampleValues,
|
|
218
|
+
valueDistribution: cachedStats.valueDistribution,
|
|
219
|
+
minValue: cachedStats.minValue,
|
|
220
|
+
maxValue: cachedStats.maxValue,
|
|
221
|
+
avgLength: cachedStats.avgLength,
|
|
222
|
+
computedAt: cachedStats.computedAt,
|
|
223
|
+
queryTimeMs: cachedStats.queryTimeMs
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.ColumnStatsCache = ColumnStatsCache;
|
|
231
|
+
//# sourceMappingURL=ColumnStatsCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnStatsCache.js","sourceRoot":"","sources":["../../src/discovery/ColumnStatsCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Engine
|
|
3
|
+
* Orchestrates relationship discovery with iterative refinement and backpropagation
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAutoDocDriver } from '../drivers/BaseAutoDocDriver.js';
|
|
6
|
+
import { ColumnStatsCache } from './ColumnStatsCache.js';
|
|
7
|
+
import { SchemaDefinition, DatabaseDocumentation } from '../types/state.js';
|
|
8
|
+
import { RelationshipDiscoveryPhase, DiscoveryTriggerAnalysis } from '../types/discovery.js';
|
|
9
|
+
import { RelationshipDiscoveryConfig, AIConfig } from '../types/config.js';
|
|
10
|
+
export interface DiscoveryEngineOptions {
|
|
11
|
+
driver: BaseAutoDocDriver;
|
|
12
|
+
config: RelationshipDiscoveryConfig;
|
|
13
|
+
aiConfig: AIConfig;
|
|
14
|
+
schemas: SchemaDefinition[];
|
|
15
|
+
onProgress?: (message: string, data?: any) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface DiscoveryResult {
|
|
18
|
+
phase: RelationshipDiscoveryPhase;
|
|
19
|
+
guardrailsReached: boolean;
|
|
20
|
+
guardrailReason?: string;
|
|
21
|
+
statsCache: ColumnStatsCache;
|
|
22
|
+
}
|
|
23
|
+
export declare class DiscoveryEngine {
|
|
24
|
+
private driver;
|
|
25
|
+
private config;
|
|
26
|
+
private aiConfig;
|
|
27
|
+
private schemas;
|
|
28
|
+
private onProgress;
|
|
29
|
+
private statsCache;
|
|
30
|
+
private pkDetector;
|
|
31
|
+
private fkDetector;
|
|
32
|
+
private llmValidator?;
|
|
33
|
+
private sanityChecker?;
|
|
34
|
+
constructor(options: DiscoveryEngineOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Get the column statistics cache
|
|
37
|
+
*/
|
|
38
|
+
getStatsCache(): ColumnStatsCache;
|
|
39
|
+
/**
|
|
40
|
+
* Analyze if discovery should be triggered based on schema state
|
|
41
|
+
*/
|
|
42
|
+
analyzeTrigger(): DiscoveryTriggerAnalysis;
|
|
43
|
+
/**
|
|
44
|
+
* Execute the discovery process
|
|
45
|
+
*/
|
|
46
|
+
discover(maxTokens: number, triggerAnalysis: DiscoveryTriggerAnalysis): Promise<DiscoveryResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Initialize discovery phase
|
|
49
|
+
*/
|
|
50
|
+
private initializePhase;
|
|
51
|
+
/**
|
|
52
|
+
* Determine trigger reason from analysis
|
|
53
|
+
*/
|
|
54
|
+
private determineTriggerReason;
|
|
55
|
+
/**
|
|
56
|
+
* Execute a single discovery iteration
|
|
57
|
+
*/
|
|
58
|
+
private executeIteration;
|
|
59
|
+
/**
|
|
60
|
+
* Detect primary keys in all tables without PKs
|
|
61
|
+
*/
|
|
62
|
+
private detectPrimaryKeys;
|
|
63
|
+
/**
|
|
64
|
+
* Detect foreign keys across all schemas
|
|
65
|
+
*/
|
|
66
|
+
private detectForeignKeys;
|
|
67
|
+
/**
|
|
68
|
+
* Perform LLM validation on PK/FK candidates
|
|
69
|
+
*/
|
|
70
|
+
private performLLMValidation;
|
|
71
|
+
/**
|
|
72
|
+
* Check if backpropagation should be triggered
|
|
73
|
+
*/
|
|
74
|
+
private shouldTriggerBackprop;
|
|
75
|
+
/**
|
|
76
|
+
* Perform backpropagation to update confidence scores
|
|
77
|
+
*/
|
|
78
|
+
private performBackpropagation;
|
|
79
|
+
/**
|
|
80
|
+
* Merge iteration discoveries into phase
|
|
81
|
+
*/
|
|
82
|
+
private mergeDiscoveries;
|
|
83
|
+
/**
|
|
84
|
+
* Check if discovery should continue
|
|
85
|
+
*/
|
|
86
|
+
private shouldContinueDiscovery;
|
|
87
|
+
/**
|
|
88
|
+
* Check guardrails
|
|
89
|
+
*/
|
|
90
|
+
private checkGuardrails;
|
|
91
|
+
/**
|
|
92
|
+
* Calculate final summary statistics
|
|
93
|
+
*/
|
|
94
|
+
private calculateSummary;
|
|
95
|
+
/**
|
|
96
|
+
* Apply discovered relationships to state
|
|
97
|
+
*/
|
|
98
|
+
applyDiscoveriesToState(state: DatabaseDocumentation, phase: RelationshipDiscoveryPhase): void;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=DiscoveryEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryEngine.d.ts","sourceRoot":"","sources":["../../src/discovery/DiscoveryEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAKpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAI1B,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,2BAA2B,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,0BAA0B,CAAC;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAC,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAmB;gBAE7B,OAAO,EAAE,sBAAsB;IA2B3C;;OAEG;IACI,aAAa,IAAI,gBAAgB;IAIxC;;OAEG;IACI,cAAc,IAAI,wBAAwB;IA6DjD;;OAEG;IACU,QAAQ,CACnB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,wBAAwB,GACxC,OAAO,CAAC,eAAe,CAAC;IA2E3B;;OAEG;IACH,OAAO,CAAC,eAAe;IA6CvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;YACW,gBAAgB;IAwK9B;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;YACW,iBAAiB;IAqC/B;;OAEG;YACW,oBAAoB;IAuJlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;YACW,sBAAsB;IA4DpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACI,uBAAuB,CAC5B,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,0BAA0B,GAChC,IAAI;CA4CR"}
|