@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.
Files changed (251) hide show
  1. package/README.md +652 -165
  2. package/bin/run.js +7 -0
  3. package/dist/api/DBAutoDocAPI.d.ts +252 -0
  4. package/dist/api/DBAutoDocAPI.d.ts.map +1 -0
  5. package/dist/api/DBAutoDocAPI.js +530 -0
  6. package/dist/api/DBAutoDocAPI.js.map +1 -0
  7. package/dist/api/index.d.ts +7 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +10 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/commands/analyze.d.ts +6 -4
  12. package/dist/commands/analyze.d.ts.map +1 -1
  13. package/dist/commands/analyze.js +58 -71
  14. package/dist/commands/analyze.js.map +1 -1
  15. package/dist/commands/export.d.ts +14 -4
  16. package/dist/commands/export.d.ts.map +1 -1
  17. package/dist/commands/export.js +156 -61
  18. package/dist/commands/export.js.map +1 -1
  19. package/dist/commands/init.d.ts +3 -4
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +155 -146
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/reset.d.ts +4 -1
  24. package/dist/commands/reset.d.ts.map +1 -1
  25. package/dist/commands/reset.js +33 -19
  26. package/dist/commands/reset.js.map +1 -1
  27. package/dist/commands/status.d.ts +10 -0
  28. package/dist/commands/status.d.ts.map +1 -0
  29. package/dist/commands/status.js +66 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/core/AnalysisEngine.d.ts +108 -0
  32. package/dist/core/AnalysisEngine.d.ts.map +1 -0
  33. package/dist/core/AnalysisEngine.js +716 -0
  34. package/dist/core/AnalysisEngine.js.map +1 -0
  35. package/dist/core/AnalysisOrchestrator.d.ts +37 -0
  36. package/dist/core/AnalysisOrchestrator.d.ts.map +1 -0
  37. package/dist/core/AnalysisOrchestrator.js +294 -0
  38. package/dist/core/AnalysisOrchestrator.js.map +1 -0
  39. package/dist/core/BackpropagationEngine.d.ts +32 -0
  40. package/dist/core/BackpropagationEngine.d.ts.map +1 -0
  41. package/dist/core/BackpropagationEngine.js +121 -0
  42. package/dist/core/BackpropagationEngine.js.map +1 -0
  43. package/dist/core/ConvergenceDetector.d.ts +27 -0
  44. package/dist/core/ConvergenceDetector.d.ts.map +1 -0
  45. package/dist/core/ConvergenceDetector.js +92 -0
  46. package/dist/core/ConvergenceDetector.js.map +1 -0
  47. package/dist/core/GuardrailsManager.d.ts +78 -0
  48. package/dist/core/GuardrailsManager.d.ts.map +1 -0
  49. package/dist/core/GuardrailsManager.js +367 -0
  50. package/dist/core/GuardrailsManager.js.map +1 -0
  51. package/dist/core/index.d.ts +7 -0
  52. package/dist/core/index.d.ts.map +1 -0
  53. package/dist/core/index.js +13 -0
  54. package/dist/core/index.js.map +1 -0
  55. package/dist/database/Database.d.ts +56 -0
  56. package/dist/database/Database.d.ts.map +1 -0
  57. package/dist/database/Database.js +172 -0
  58. package/dist/database/Database.js.map +1 -0
  59. package/dist/database/TopologicalSorter.d.ts +25 -0
  60. package/dist/database/TopologicalSorter.d.ts.map +1 -0
  61. package/dist/database/TopologicalSorter.js +150 -0
  62. package/dist/database/TopologicalSorter.js.map +1 -0
  63. package/dist/database/index.d.ts +6 -0
  64. package/dist/database/index.d.ts.map +1 -0
  65. package/dist/database/index.js +14 -0
  66. package/dist/database/index.js.map +1 -0
  67. package/dist/discovery/ColumnStatsCache.d.ts +91 -0
  68. package/dist/discovery/ColumnStatsCache.d.ts.map +1 -0
  69. package/dist/discovery/ColumnStatsCache.js +231 -0
  70. package/dist/discovery/ColumnStatsCache.js.map +1 -0
  71. package/dist/discovery/DiscoveryEngine.d.ts +100 -0
  72. package/dist/discovery/DiscoveryEngine.d.ts.map +1 -0
  73. package/dist/discovery/DiscoveryEngine.js +726 -0
  74. package/dist/discovery/DiscoveryEngine.js.map +1 -0
  75. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts +57 -0
  76. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts.map +1 -0
  77. package/dist/discovery/DiscoveryTriggerAnalyzer.js +186 -0
  78. package/dist/discovery/DiscoveryTriggerAnalyzer.js.map +1 -0
  79. package/dist/discovery/FKDetector.d.ts +47 -0
  80. package/dist/discovery/FKDetector.d.ts.map +1 -0
  81. package/dist/discovery/FKDetector.js +317 -0
  82. package/dist/discovery/FKDetector.js.map +1 -0
  83. package/dist/discovery/LLMDiscoveryValidator.d.ts +64 -0
  84. package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -0
  85. package/dist/discovery/LLMDiscoveryValidator.js +431 -0
  86. package/dist/discovery/LLMDiscoveryValidator.js.map +1 -0
  87. package/dist/discovery/LLMSanityChecker.d.ts +38 -0
  88. package/dist/discovery/LLMSanityChecker.d.ts.map +1 -0
  89. package/dist/discovery/LLMSanityChecker.js +156 -0
  90. package/dist/discovery/LLMSanityChecker.js.map +1 -0
  91. package/dist/discovery/PKDetector.d.ts +62 -0
  92. package/dist/discovery/PKDetector.d.ts.map +1 -0
  93. package/dist/discovery/PKDetector.js +436 -0
  94. package/dist/discovery/PKDetector.js.map +1 -0
  95. package/dist/discovery/index.d.ts +9 -0
  96. package/dist/discovery/index.d.ts.map +1 -0
  97. package/dist/discovery/index.js +25 -0
  98. package/dist/discovery/index.js.map +1 -0
  99. package/dist/drivers/BaseAutoDocDriver.d.ts +132 -0
  100. package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -0
  101. package/dist/drivers/BaseAutoDocDriver.js +121 -0
  102. package/dist/drivers/BaseAutoDocDriver.js.map +1 -0
  103. package/dist/drivers/MySQLDriver.d.ts +61 -0
  104. package/dist/drivers/MySQLDriver.d.ts.map +1 -0
  105. package/dist/drivers/MySQLDriver.js +668 -0
  106. package/dist/drivers/MySQLDriver.js.map +1 -0
  107. package/dist/drivers/PostgreSQLDriver.d.ts +65 -0
  108. package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -0
  109. package/dist/drivers/PostgreSQLDriver.js +704 -0
  110. package/dist/drivers/PostgreSQLDriver.js.map +1 -0
  111. package/dist/drivers/SQLServerDriver.d.ts +61 -0
  112. package/dist/drivers/SQLServerDriver.d.ts.map +1 -0
  113. package/dist/drivers/SQLServerDriver.js +667 -0
  114. package/dist/drivers/SQLServerDriver.js.map +1 -0
  115. package/dist/generators/CSVGenerator.d.ts +35 -0
  116. package/dist/generators/CSVGenerator.d.ts.map +1 -0
  117. package/dist/generators/CSVGenerator.js +154 -0
  118. package/dist/generators/CSVGenerator.js.map +1 -0
  119. package/dist/generators/HTMLGenerator.d.ts +29 -0
  120. package/dist/generators/HTMLGenerator.d.ts.map +1 -0
  121. package/dist/generators/HTMLGenerator.js +710 -0
  122. package/dist/generators/HTMLGenerator.js.map +1 -0
  123. package/dist/generators/MarkdownGenerator.d.ts +27 -0
  124. package/dist/generators/MarkdownGenerator.d.ts.map +1 -0
  125. package/dist/generators/MarkdownGenerator.js +361 -0
  126. package/dist/generators/MarkdownGenerator.js.map +1 -0
  127. package/dist/generators/MermaidGenerator.d.ts +35 -0
  128. package/dist/generators/MermaidGenerator.d.ts.map +1 -0
  129. package/dist/generators/MermaidGenerator.js +321 -0
  130. package/dist/generators/MermaidGenerator.js.map +1 -0
  131. package/dist/generators/ReportGenerator.d.ts +22 -0
  132. package/dist/generators/ReportGenerator.d.ts.map +1 -0
  133. package/dist/generators/ReportGenerator.js +176 -0
  134. package/dist/generators/ReportGenerator.js.map +1 -0
  135. package/dist/generators/SQLGenerator.d.ts +31 -0
  136. package/dist/generators/SQLGenerator.d.ts.map +1 -0
  137. package/dist/generators/SQLGenerator.js +168 -0
  138. package/dist/generators/SQLGenerator.js.map +1 -0
  139. package/dist/generators/index.d.ts +10 -0
  140. package/dist/generators/index.d.ts.map +1 -0
  141. package/dist/generators/index.js +19 -0
  142. package/dist/generators/index.js.map +1 -0
  143. package/dist/index.d.ts +11 -20
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +19 -20
  146. package/dist/index.js.map +1 -1
  147. package/dist/prompts/PromptEngine.d.ts +65 -0
  148. package/dist/prompts/PromptEngine.d.ts.map +1 -0
  149. package/dist/prompts/PromptEngine.js +282 -0
  150. package/dist/prompts/PromptEngine.js.map +1 -0
  151. package/dist/prompts/PromptFileLoader.d.ts +21 -0
  152. package/dist/prompts/PromptFileLoader.d.ts.map +1 -0
  153. package/dist/prompts/PromptFileLoader.js +74 -0
  154. package/dist/prompts/PromptFileLoader.js.map +1 -0
  155. package/dist/prompts/index.d.ts +6 -0
  156. package/dist/prompts/index.d.ts.map +1 -0
  157. package/dist/prompts/index.js +11 -0
  158. package/dist/prompts/index.js.map +1 -0
  159. package/dist/state/IterationTracker.d.ts +64 -0
  160. package/dist/state/IterationTracker.d.ts.map +1 -0
  161. package/dist/state/IterationTracker.js +136 -0
  162. package/dist/state/IterationTracker.js.map +1 -0
  163. package/dist/state/StateManager.d.ts +79 -0
  164. package/dist/state/StateManager.d.ts.map +1 -0
  165. package/dist/state/StateManager.js +348 -0
  166. package/dist/state/StateManager.js.map +1 -0
  167. package/dist/state/StateValidator.d.ts +24 -0
  168. package/dist/state/StateValidator.d.ts.map +1 -0
  169. package/dist/state/StateValidator.js +147 -0
  170. package/dist/state/StateValidator.js.map +1 -0
  171. package/dist/state/index.d.ts +7 -0
  172. package/dist/state/index.d.ts.map +1 -0
  173. package/dist/state/index.js +13 -0
  174. package/dist/state/index.js.map +1 -0
  175. package/dist/types/analysis.d.ts +76 -0
  176. package/dist/types/analysis.d.ts.map +1 -0
  177. package/dist/types/analysis.js +6 -0
  178. package/dist/types/analysis.js.map +1 -0
  179. package/dist/types/config.d.ts +132 -0
  180. package/dist/types/config.d.ts.map +1 -0
  181. package/dist/types/config.js +7 -0
  182. package/dist/types/config.js.map +1 -0
  183. package/dist/types/discovery.d.ts +277 -0
  184. package/dist/types/discovery.d.ts.map +1 -0
  185. package/dist/types/discovery.js +7 -0
  186. package/dist/types/discovery.js.map +1 -0
  187. package/dist/types/driver.d.ts +148 -0
  188. package/dist/types/driver.d.ts.map +1 -0
  189. package/dist/types/driver.js +7 -0
  190. package/dist/types/driver.js.map +1 -0
  191. package/dist/types/index.d.ts +8 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +24 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/prompts.d.ts +158 -0
  196. package/dist/types/prompts.d.ts.map +1 -0
  197. package/dist/types/prompts.js +6 -0
  198. package/dist/types/prompts.js.map +1 -0
  199. package/dist/types/state.d.ts +278 -0
  200. package/dist/types/state.d.ts.map +1 -0
  201. package/dist/types/state.js +7 -0
  202. package/dist/types/state.js.map +1 -0
  203. package/dist/utils/config-loader.d.ts +29 -0
  204. package/dist/utils/config-loader.d.ts.map +1 -0
  205. package/dist/utils/config-loader.js +163 -0
  206. package/dist/utils/config-loader.js.map +1 -0
  207. package/dist/utils/index.d.ts +5 -0
  208. package/dist/utils/index.d.ts.map +1 -0
  209. package/dist/utils/index.js +9 -0
  210. package/dist/utils/index.js.map +1 -0
  211. package/package.json +24 -3
  212. package/dist/ai/simple-ai-client.d.ts +0 -70
  213. package/dist/ai/simple-ai-client.d.ts.map +0 -1
  214. package/dist/ai/simple-ai-client.js +0 -181
  215. package/dist/ai/simple-ai-client.js.map +0 -1
  216. package/dist/analyzers/analyzer.d.ts +0 -23
  217. package/dist/analyzers/analyzer.d.ts.map +0 -1
  218. package/dist/analyzers/analyzer.js +0 -127
  219. package/dist/analyzers/analyzer.js.map +0 -1
  220. package/dist/cli-old/cli.d.ts +0 -3
  221. package/dist/cli-old/cli.d.ts.map +0 -1
  222. package/dist/cli-old/cli.js +0 -388
  223. package/dist/cli-old/cli.js.map +0 -1
  224. package/dist/commands/review.d.ts +0 -11
  225. package/dist/commands/review.d.ts.map +0 -1
  226. package/dist/commands/review.js +0 -82
  227. package/dist/commands/review.js.map +0 -1
  228. package/dist/database/connection.d.ts +0 -40
  229. package/dist/database/connection.d.ts.map +0 -1
  230. package/dist/database/connection.js +0 -136
  231. package/dist/database/connection.js.map +0 -1
  232. package/dist/database/introspection.d.ts +0 -59
  233. package/dist/database/introspection.d.ts.map +0 -1
  234. package/dist/database/introspection.js +0 -124
  235. package/dist/database/introspection.js.map +0 -1
  236. package/dist/generators/markdown-generator.d.ts +0 -8
  237. package/dist/generators/markdown-generator.d.ts.map +0 -1
  238. package/dist/generators/markdown-generator.js +0 -106
  239. package/dist/generators/markdown-generator.js.map +0 -1
  240. package/dist/generators/sql-generator.d.ts +0 -20
  241. package/dist/generators/sql-generator.d.ts.map +0 -1
  242. package/dist/generators/sql-generator.js +0 -83
  243. package/dist/generators/sql-generator.js.map +0 -1
  244. package/dist/state/state-manager.d.ts +0 -95
  245. package/dist/state/state-manager.d.ts.map +0 -1
  246. package/dist/state/state-manager.js +0 -236
  247. package/dist/state/state-manager.js.map +0 -1
  248. package/dist/types/state-file.d.ts +0 -124
  249. package/dist/types/state-file.d.ts.map +0 -1
  250. package/dist/types/state-file.js +0 -79
  251. 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"}