@memberjunction/db-auto-doc 6.2.0-edge.3 → 6.2.0-edge.5

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 (177) hide show
  1. package/README.md +200 -3
  2. package/dist/commands/analyze.d.ts +1 -0
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +6 -0
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/export.d.ts +32 -15
  7. package/dist/commands/export.d.ts.map +1 -1
  8. package/dist/commands/export.js +144 -14
  9. package/dist/commands/export.js.map +1 -1
  10. package/dist/commands/init.js +1 -1
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/core/AnalysisEngine.d.ts +15 -6
  13. package/dist/core/AnalysisEngine.d.ts.map +1 -1
  14. package/dist/core/AnalysisEngine.js +41 -40
  15. package/dist/core/AnalysisEngine.js.map +1 -1
  16. package/dist/core/AnalysisOrchestrator.d.ts +25 -1
  17. package/dist/core/AnalysisOrchestrator.d.ts.map +1 -1
  18. package/dist/core/AnalysisOrchestrator.js +163 -27
  19. package/dist/core/AnalysisOrchestrator.js.map +1 -1
  20. package/dist/core/PKProposalGate.d.ts +22 -0
  21. package/dist/core/PKProposalGate.d.ts.map +1 -0
  22. package/dist/core/PKProposalGate.js +52 -0
  23. package/dist/core/PKProposalGate.js.map +1 -0
  24. package/dist/database/Database.d.ts +8 -0
  25. package/dist/database/Database.d.ts.map +1 -1
  26. package/dist/database/Database.js +23 -1
  27. package/dist/database/Database.js.map +1 -1
  28. package/dist/discovery/EnumCandidateGate.d.ts +19 -0
  29. package/dist/discovery/EnumCandidateGate.d.ts.map +1 -1
  30. package/dist/discovery/EnumCandidateGate.js +47 -5
  31. package/dist/discovery/EnumCandidateGate.js.map +1 -1
  32. package/dist/discovery/FKGraphWalker.d.ts +35 -0
  33. package/dist/discovery/FKGraphWalker.d.ts.map +1 -1
  34. package/dist/discovery/FKGraphWalker.js +113 -12
  35. package/dist/discovery/FKGraphWalker.js.map +1 -1
  36. package/dist/discovery/LLMDiscoveryValidator.d.ts +2 -0
  37. package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -1
  38. package/dist/discovery/LLMDiscoveryValidator.js +20 -9
  39. package/dist/discovery/LLMDiscoveryValidator.js.map +1 -1
  40. package/dist/discovery/OrganicKeyDetector.d.ts.map +1 -1
  41. package/dist/discovery/OrganicKeyDetector.js +8 -2
  42. package/dist/discovery/OrganicKeyDetector.js.map +1 -1
  43. package/dist/discovery/StructuralPhase.d.ts +27 -5
  44. package/dist/discovery/StructuralPhase.d.ts.map +1 -1
  45. package/dist/discovery/StructuralPhase.js +42 -9
  46. package/dist/discovery/StructuralPhase.js.map +1 -1
  47. package/dist/discovery/TransitiveBridgeDetector.d.ts +5 -1
  48. package/dist/discovery/TransitiveBridgeDetector.d.ts.map +1 -1
  49. package/dist/discovery/TransitiveBridgeDetector.js +25 -3
  50. package/dist/discovery/TransitiveBridgeDetector.js.map +1 -1
  51. package/dist/drivers/BaseAutoDocDriver.d.ts +6 -1
  52. package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -1
  53. package/dist/drivers/BaseAutoDocDriver.js +3 -5
  54. package/dist/drivers/BaseAutoDocDriver.js.map +1 -1
  55. package/dist/drivers/IndexCatalog.d.ts +54 -0
  56. package/dist/drivers/IndexCatalog.d.ts.map +1 -0
  57. package/dist/drivers/IndexCatalog.js +145 -0
  58. package/dist/drivers/IndexCatalog.js.map +1 -0
  59. package/dist/drivers/MySQLDriver.d.ts +5 -1
  60. package/dist/drivers/MySQLDriver.d.ts.map +1 -1
  61. package/dist/drivers/MySQLDriver.js +15 -6
  62. package/dist/drivers/MySQLDriver.js.map +1 -1
  63. package/dist/drivers/PostgreSQLDriver.d.ts +14 -2
  64. package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -1
  65. package/dist/drivers/PostgreSQLDriver.js +52 -19
  66. package/dist/drivers/PostgreSQLDriver.js.map +1 -1
  67. package/dist/drivers/SQLServerDriver.d.ts +5 -1
  68. package/dist/drivers/SQLServerDriver.d.ts.map +1 -1
  69. package/dist/drivers/SQLServerDriver.js +13 -1
  70. package/dist/drivers/SQLServerDriver.js.map +1 -1
  71. package/dist/generators/AdditionalSchemaInfoGenerator.d.ts +34 -0
  72. package/dist/generators/AdditionalSchemaInfoGenerator.d.ts.map +1 -1
  73. package/dist/generators/AdditionalSchemaInfoGenerator.js +85 -4
  74. package/dist/generators/AdditionalSchemaInfoGenerator.js.map +1 -1
  75. package/dist/generators/ErdClusterGenerator.d.ts +44 -0
  76. package/dist/generators/ErdClusterGenerator.d.ts.map +1 -0
  77. package/dist/generators/ErdClusterGenerator.js +216 -0
  78. package/dist/generators/ErdClusterGenerator.js.map +1 -0
  79. package/dist/generators/ErdClusterer.d.ts +130 -0
  80. package/dist/generators/ErdClusterer.d.ts.map +1 -0
  81. package/dist/generators/ErdClusterer.js +308 -0
  82. package/dist/generators/ErdClusterer.js.map +1 -0
  83. package/dist/generators/HTMLGenerator.d.ts +6 -0
  84. package/dist/generators/HTMLGenerator.d.ts.map +1 -1
  85. package/dist/generators/HTMLGenerator.js +41 -6
  86. package/dist/generators/HTMLGenerator.js.map +1 -1
  87. package/dist/generators/MermaidGenerator.d.ts +3 -0
  88. package/dist/generators/MermaidGenerator.d.ts.map +1 -1
  89. package/dist/generators/MermaidGenerator.js +4 -0
  90. package/dist/generators/MermaidGenerator.js.map +1 -1
  91. package/dist/generators/index.d.ts +2 -0
  92. package/dist/generators/index.d.ts.map +1 -1
  93. package/dist/generators/index.js +2 -0
  94. package/dist/generators/index.js.map +1 -1
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +2 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/plugins/BaseAutoDocPlugin.d.ts +33 -0
  100. package/dist/plugins/BaseAutoDocPlugin.d.ts.map +1 -0
  101. package/dist/plugins/BaseAutoDocPlugin.js +70 -0
  102. package/dist/plugins/BaseAutoDocPlugin.js.map +1 -0
  103. package/dist/plugins/PluginManager.d.ts +54 -0
  104. package/dist/plugins/PluginManager.d.ts.map +1 -0
  105. package/dist/plugins/PluginManager.js +115 -0
  106. package/dist/plugins/PluginManager.js.map +1 -0
  107. package/dist/plugins/builtins.d.ts +13 -0
  108. package/dist/plugins/builtins.d.ts.map +1 -0
  109. package/dist/plugins/builtins.js +12 -0
  110. package/dist/plugins/builtins.js.map +1 -0
  111. package/dist/plugins/index-advisor/IndexAdvisorPlugin.d.ts +25 -0
  112. package/dist/plugins/index-advisor/IndexAdvisorPlugin.d.ts.map +1 -0
  113. package/dist/plugins/index-advisor/IndexAdvisorPlugin.js +128 -0
  114. package/dist/plugins/index-advisor/IndexAdvisorPlugin.js.map +1 -0
  115. package/dist/plugins/index-advisor/IndexAdvisorTypes.d.ts +111 -0
  116. package/dist/plugins/index-advisor/IndexAdvisorTypes.d.ts.map +1 -0
  117. package/dist/plugins/index-advisor/IndexAdvisorTypes.js +5 -0
  118. package/dist/plugins/index-advisor/IndexAdvisorTypes.js.map +1 -0
  119. package/dist/plugins/index-advisor/IndexLLMReview.d.ts +48 -0
  120. package/dist/plugins/index-advisor/IndexLLMReview.d.ts.map +1 -0
  121. package/dist/plugins/index-advisor/IndexLLMReview.js +181 -0
  122. package/dist/plugins/index-advisor/IndexLLMReview.js.map +1 -0
  123. package/dist/plugins/index-advisor/IndexMigrationGenerator.d.ts +28 -0
  124. package/dist/plugins/index-advisor/IndexMigrationGenerator.d.ts.map +1 -0
  125. package/dist/plugins/index-advisor/IndexMigrationGenerator.js +98 -0
  126. package/dist/plugins/index-advisor/IndexMigrationGenerator.js.map +1 -0
  127. package/dist/plugins/index-advisor/IndexRules.d.ts +19 -0
  128. package/dist/plugins/index-advisor/IndexRules.d.ts.map +1 -0
  129. package/dist/plugins/index-advisor/IndexRules.js +154 -0
  130. package/dist/plugins/index-advisor/IndexRules.js.map +1 -0
  131. package/dist/plugins/index.d.ts +13 -0
  132. package/dist/plugins/index.d.ts.map +1 -0
  133. package/dist/plugins/index.js +13 -0
  134. package/dist/plugins/index.js.map +1 -0
  135. package/dist/plugins/types.d.ts +82 -0
  136. package/dist/plugins/types.d.ts.map +1 -0
  137. package/dist/plugins/types.js +9 -0
  138. package/dist/plugins/types.js.map +1 -0
  139. package/dist/types/analysis.d.ts +2 -0
  140. package/dist/types/analysis.d.ts.map +1 -1
  141. package/dist/types/config.d.ts +52 -0
  142. package/dist/types/config.d.ts.map +1 -1
  143. package/dist/types/config.js +7 -4
  144. package/dist/types/config.js.map +1 -1
  145. package/dist/types/discovery.d.ts +2 -0
  146. package/dist/types/discovery.d.ts.map +1 -1
  147. package/dist/types/driver.d.ts +30 -0
  148. package/dist/types/driver.d.ts.map +1 -1
  149. package/dist/types/driver.js +5 -1
  150. package/dist/types/driver.js.map +1 -1
  151. package/dist/types/index.d.ts +1 -0
  152. package/dist/types/index.d.ts.map +1 -1
  153. package/dist/types/index.js +1 -0
  154. package/dist/types/index.js.map +1 -1
  155. package/dist/types/state.d.ts +36 -0
  156. package/dist/types/state.d.ts.map +1 -1
  157. package/dist/utils/config-loader.d.ts +5 -0
  158. package/dist/utils/config-loader.d.ts.map +1 -1
  159. package/dist/utils/config-loader.js +38 -1
  160. package/dist/utils/config-loader.js.map +1 -1
  161. package/dist/utils/index-hints.d.ts +36 -0
  162. package/dist/utils/index-hints.d.ts.map +1 -0
  163. package/dist/utils/index-hints.js +65 -0
  164. package/dist/utils/index-hints.js.map +1 -0
  165. package/dist/utils/index.d.ts +1 -0
  166. package/dist/utils/index.d.ts.map +1 -1
  167. package/dist/utils/index.js +1 -0
  168. package/dist/utils/index.js.map +1 -1
  169. package/dist/utils/llm-factory.d.ts +1 -0
  170. package/dist/utils/llm-factory.d.ts.map +1 -1
  171. package/dist/utils/llm-factory.js +6 -1
  172. package/dist/utils/llm-factory.js.map +1 -1
  173. package/package.json +5 -5
  174. package/prompts/fk-pruning-table.md +13 -1
  175. package/prompts/index-review.md +60 -0
  176. package/prompts/pk-pruning-table.md +10 -0
  177. package/prompts/table-analysis.md +11 -0
@@ -2,6 +2,7 @@
2
2
  * Main orchestrator for database analysis
3
3
  * Can be used programmatically or via CLI
4
4
  */
5
+ import { StateManager } from '../state/StateManager.js';
5
6
  import { DBAutoDocConfig } from '../types/config.js';
6
7
  import { DatabaseDocumentation, AnalysisRun } from '../types/state.js';
7
8
  export interface AnalysisOptions {
@@ -12,6 +13,8 @@ export interface AnalysisOptions {
12
13
  reanalyzeBelowConfidence?: number;
13
14
  /** Override max iterations from config for this run */
14
15
  maxIterations?: number;
16
+ /** Skip table data sampling pass */
17
+ skipSampling?: boolean;
15
18
  }
16
19
  export interface OrchestratorResult {
17
20
  success: boolean;
@@ -26,6 +29,7 @@ export declare class AnalysisOrchestrator {
26
29
  private onProgress;
27
30
  private reanalyzeBelowConfidence?;
28
31
  private maxIterationsOverride?;
32
+ private skipSampling?;
29
33
  constructor(options: AnalysisOptions);
30
34
  /**
31
35
  * Execute the full analysis workflow
@@ -33,10 +37,30 @@ export declare class AnalysisOrchestrator {
33
37
  Execute(): Promise<OrchestratorResult>;
34
38
  /** @deprecated Use {@link Execute}. */
35
39
  execute(): Promise<OrchestratorResult>;
40
+ /**
41
+ * Runs one plugin hook and persists whatever the plugins recorded. A no-op when no plugins
42
+ * are loaded, so runs without plugins write exactly the state files they did before.
43
+ */
44
+ private runPluginHook;
45
+ /**
46
+ * Stores each table's existing indexes in the state so the LLM passes can use them as key
47
+ * evidence. Runs on resumed runs too, for tables whose indexes were never read.
48
+ */
49
+ private loadExistingIndexes;
36
50
  /**
37
51
  * Load existing state and prepare for resumption
38
52
  */
39
- private loadAndMergeState;
53
+ protected loadAndMergeState(resumePath: string, stateManager: StateManager): Promise<DatabaseDocumentation>;
54
+ /**
55
+ * Sample table data (row counts, distinct counts, sample values) into the state.
56
+ *
57
+ * A fresh run samples every table. A resume samples only the tables whose columns carry no
58
+ * statistics, so an interrupted pass continues from its last checkpoint — unless the state records
59
+ * that its run skipped sampling, in which case the resume honours that choice.
60
+ */
61
+ private sampleTableData;
62
+ /** A table counts as sampled once any of its columns carries statistics. */
63
+ private tableHasStatistics;
40
64
  /**
41
65
  * Create run-numbered folder for this analysis run
42
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/AnalysisOrchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMvE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACnD,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAS;gBAE3B,OAAO,EAAE,eAAe;IAQpC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoanD,uCAAuC;IAC1B,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAInD;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;YACW,eAAe;IAqB7B;;;OAGG;YACW,wBAAwB;IAqDtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA8ExB;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAwBtC;;OAEG;YACW,qBAAqB;CAwDpC"}
1
+ {"version":3,"file":"AnalysisOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/AnalysisOrchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAsC,MAAM,mBAAmB,CAAC;AAW3G,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACnD,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,YAAY,CAAC,CAAU;gBAEnB,OAAO,EAAE,eAAe;IASpC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAmanD,uCAAuC;IAC1B,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAInD;;;OAGG;YACW,aAAa;IAuB3B;;;OAGG;YACW,mBAAmB;IA4BjC;;OAEG;cACa,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;;;;;OAMG;YACW,eAAe;IAqF7B,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;YACW,eAAe;IAqB7B;;;OAGG;YACW,wBAAwB;IAqDtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA8ExB;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAwBtC;;OAEG;YACW,qBAAqB;CAwDpC"}
@@ -20,6 +20,9 @@ import { SampleQueryGenerator } from '../generators/SampleQueryGenerator.js';
20
20
  import { DiscoveryTriggerAnalyzer } from '../discovery/DiscoveryTriggerAnalyzer.js';
21
21
  import { DiscoveryEngine } from '../discovery/DiscoveryEngine.js';
22
22
  import { OrganicKeyDetector } from '../discovery/OrganicKeyDetector.js';
23
+ import { PluginManager } from '../plugins/PluginManager.js';
24
+ /** Tables sampled between state saves; an interrupted run resumes from the last multiple. */
25
+ const SAMPLING_CHECKPOINT_INTERVAL = 25;
23
26
  export class AnalysisOrchestrator {
24
27
  constructor(options) {
25
28
  this.config = options.config;
@@ -27,6 +30,7 @@ export class AnalysisOrchestrator {
27
30
  this.onProgress = options.onProgress || (() => { });
28
31
  this.reanalyzeBelowConfidence = options.reanalyzeBelowConfidence;
29
32
  this.maxIterationsOverride = options.maxIterations;
33
+ this.skipSampling = options.skipSampling;
30
34
  }
31
35
  /**
32
36
  * Execute the full analysis workflow
@@ -65,6 +69,11 @@ export class AnalysisOrchestrator {
65
69
  // Save initial state immediately so there's always a file on disk
66
70
  stateManager.updateSummary(state);
67
71
  await stateManager.save(state);
72
+ // Load plugins (built-ins + config entries). An unknown plugin name fails the run here.
73
+ const plugins = new PluginManager();
74
+ await plugins.Load(this.config.plugins);
75
+ const runHook = (hook) => this.runPluginHook(plugins, hook, state, stateManager, runFolder, db);
76
+ await runHook('PreRun');
68
77
  // Connect to database
69
78
  this.onProgress('Connecting to database');
70
79
  const driverConfig = {
@@ -89,6 +98,7 @@ export class AnalysisOrchestrator {
89
98
  throw new Error(`Database connection failed: ${testResult.message}`);
90
99
  }
91
100
  this.onProgress('Connected to database', { database: this.config.database.database });
101
+ state.database.provider = driverConfig.provider;
92
102
  // Introspect database (unless resuming with existing schema data)
93
103
  if (!this.resumeFromState || state.schemas.length === 0) {
94
104
  this.onProgress('Introspecting database schema');
@@ -106,32 +116,10 @@ export class AnalysisOrchestrator {
106
116
  // Save state after introspection + existing descriptions
107
117
  stateManager.updateSummary(state);
108
118
  await stateManager.save(state);
109
- // Analyze data
110
- this.onProgress('Analyzing table data');
111
- const sampler = new DataSampler(driver, this.config.analysis);
112
- let samplingErrors = 0;
113
- for (const schema of schemas) {
114
- for (const table of schema.tables) {
115
- try {
116
- await sampler.analyzeTable(schema.name, table.name, table.columns);
117
- }
118
- catch (error) {
119
- samplingErrors++;
120
- const errorMsg = `Warning: Failed to analyze data for ${schema.name}.${table.name}: ${error.message}`;
121
- console.error(errorMsg);
122
- this.onProgress(errorMsg, { schema: schema.name, table: table.name, error: error.message });
123
- // Continue with next table - partial data better than no data
124
- }
125
- }
126
- }
127
- this.onProgress('Data analysis complete', {
128
- tablesAnalyzed: schemas.reduce((sum, s) => sum + s.tables.length, 0) - samplingErrors,
129
- errors: samplingErrors
130
- });
131
- // Save state after sampling
132
- stateManager.updateSummary(state);
133
- await stateManager.save(state);
134
119
  }
120
+ await this.loadExistingIndexes(state, db.getDriver(), stateManager);
121
+ await runHook('AfterIntrospection');
122
+ await this.sampleTableData(state, db.getDriver(), stateManager);
135
123
  // Relationship Discovery Phase (if enabled)
136
124
  // Runs on both fresh and resumed runs; resumes from partial progress if interrupted
137
125
  const discoveryComplete = state.phases?.keyDetection?.completedAt != null;
@@ -204,6 +192,7 @@ export class AnalysisOrchestrator {
204
192
  else if (discoveryComplete) {
205
193
  this.onProgress('Relationship discovery: using completed results from prior run');
206
194
  }
195
+ await runHook('AfterDiscovery');
207
196
  // Topological sort
208
197
  this.onProgress('Computing dependency graph');
209
198
  const sorter = new TopologicalSorter();
@@ -214,7 +203,7 @@ export class AnalysisOrchestrator {
214
203
  const promptEngine = new PromptEngine(this.config.ai, promptsDir);
215
204
  await promptEngine.initialize();
216
205
  const iterationTracker = new IterationTracker();
217
- const analysisEngine = new AnalysisEngine(this.config, promptEngine, stateManager, iterationTracker, this.onProgress);
206
+ const analysisEngine = new AnalysisEngine(this.config, promptEngine, stateManager, iterationTracker, this.onProgress, db.getDriver());
218
207
  // Create analysis run
219
208
  const run = stateManager.createAnalysisRun(state, this.config.ai.model, this.config.ai.provider, this.config.ai.temperature || 0.1, undefined, undefined);
220
209
  // Mark as resumed if applicable
@@ -261,6 +250,7 @@ export class AnalysisOrchestrator {
261
250
  this.onProgress('Analysis converged');
262
251
  }
263
252
  }
253
+ await runHook('AfterDescriptions');
264
254
  // Sanity checks
265
255
  // FUTURE FEATURE: Schema/cross-schema sanity checks disabled.
266
256
  // Pending LLM 10M+ token context support.
@@ -294,6 +284,7 @@ export class AnalysisOrchestrator {
294
284
  stateManager.updateSummary(state);
295
285
  await stateManager.save(state);
296
286
  }
287
+ await runHook('AfterPruning');
297
288
  // Complete run
298
289
  if (!converged) {
299
290
  const reason = guardrailExceeded
@@ -316,7 +307,15 @@ export class AnalysisOrchestrator {
316
307
  // fed to the additionalSchemaInfo generator so CodeGen writes the
317
308
  // EntityOrganicKey / EntityOrganicKeyRelatedEntity metadata.
318
309
  let organicKeyOutput;
319
- if (this.config.analysis.organicKeyDetection?.enabled) {
310
+ const hasStatistics = state.schemas.some(schema => schema.tables.some(table => this.tableHasStatistics(table)));
311
+ if (this.config.analysis.organicKeyDetection?.enabled && !hasStatistics) {
312
+ // The semantic prefilter's cardinality gate only applies to columns that carry statistics;
313
+ // without any, every column would become a candidate and the normalizer fan-out is unbounded.
314
+ const warning = 'Organic-key detection skipped: it needs column statistics and no table has been sampled';
315
+ console.warn(warning);
316
+ this.onProgress(warning);
317
+ }
318
+ else if (this.config.analysis.organicKeyDetection?.enabled) {
320
319
  this.onProgress('Running organic-key detection');
321
320
  try {
322
321
  const detector = new OrganicKeyDetector(this.config.analysis.organicKeyDetection, this.config.ai, this.config.database.provider);
@@ -337,6 +336,8 @@ export class AnalysisOrchestrator {
337
336
  this.onProgress(`Organic-key detection failed (continuing): ${err.message}`);
338
337
  }
339
338
  }
339
+ // Last plugin hook, while the database connection is still open
340
+ await runHook('PostRun');
340
341
  // Final state update
341
342
  stateManager.updateSummary(state);
342
343
  await stateManager.save(state);
@@ -386,6 +387,52 @@ export class AnalysisOrchestrator {
386
387
  async execute() {
387
388
  return this.Execute();
388
389
  }
390
+ /**
391
+ * Runs one plugin hook and persists whatever the plugins recorded. A no-op when no plugins
392
+ * are loaded, so runs without plugins write exactly the state files they did before.
393
+ */
394
+ async runPluginHook(plugins, hook, state, stateManager, runFolder, db) {
395
+ if (plugins.Plugins.length === 0) {
396
+ return;
397
+ }
398
+ this.onProgress(`Running plugins: ${hook}`);
399
+ await plugins.RunHook(hook, {
400
+ State: state,
401
+ Config: this.config,
402
+ Driver: db?.getDriver(),
403
+ RunFolder: runFolder,
404
+ Log: (message) => this.onProgress(message)
405
+ });
406
+ stateManager.updateSummary(state);
407
+ await stateManager.save(state);
408
+ }
409
+ /**
410
+ * Stores each table's existing indexes in the state so the LLM passes can use them as key
411
+ * evidence. Runs on resumed runs too, for tables whose indexes were never read.
412
+ */
413
+ async loadExistingIndexes(state, driver, stateManager) {
414
+ if (this.config.analysis.useExistingIndexes === false) {
415
+ return;
416
+ }
417
+ const schemas = state.schemas.filter((s) => s.tables.some((t) => t.indexes === undefined));
418
+ if (schemas.length === 0) {
419
+ return;
420
+ }
421
+ this.onProgress('Reading existing indexes');
422
+ const failed = await new Introspector(driver).LoadIndexes(schemas);
423
+ for (const f of failed) {
424
+ this.onProgress(`Warning: could not read indexes for schema ${f.SchemaName}: ${f.Error}`, f);
425
+ }
426
+ // Totals cover every table in the state, so a resumed run also counts tables loaded earlier.
427
+ const allTables = state.schemas.flatMap((s) => s.tables);
428
+ this.onProgress('Existing indexes loaded', {
429
+ tables: allTables.filter((t) => t.indexes !== undefined).length,
430
+ indexes: allTables.reduce((sum, t) => sum + (t.indexes?.length ?? 0), 0),
431
+ newlyLoadedTables: schemas.flatMap((s) => s.tables).filter((t) => t.indexes !== undefined).length
432
+ });
433
+ stateManager.updateSummary(state);
434
+ await stateManager.save(state);
435
+ }
389
436
  /**
390
437
  * Load existing state and prepare for resumption
391
438
  */
@@ -396,6 +443,95 @@ export class AnalysisOrchestrator {
396
443
  existingState.resumedFromFile = resumePath;
397
444
  return existingState;
398
445
  }
446
+ /**
447
+ * Sample table data (row counts, distinct counts, sample values) into the state.
448
+ *
449
+ * A fresh run samples every table. A resume samples only the tables whose columns carry no
450
+ * statistics, so an interrupted pass continues from its last checkpoint — unless the state records
451
+ * that its run skipped sampling, in which case the resume honours that choice.
452
+ */
453
+ async sampleTableData(state, driver, stateManager) {
454
+ const totalTables = state.schemas.reduce((sum, s) => sum + s.tables.length, 0);
455
+ const previous = state.phases.dataSampling;
456
+ const skipRequested = this.skipSampling === true || this.config.analysis.skipSampling === true;
457
+ const skipInherited = this.resumeFromState != null && previous?.status === 'skipped';
458
+ if (skipRequested || skipInherited) {
459
+ this.onProgress(skipInherited && !skipRequested
460
+ ? 'Table data sampling skipped (the resumed run skipped it; pass no --resume, or run analyze without --skip-sampling on a fresh run, to sample)'
461
+ : 'Table data sampling skipped');
462
+ state.phases.dataSampling = {
463
+ status: 'skipped',
464
+ startedAt: previous?.startedAt ?? new Date().toISOString(),
465
+ sampledTables: previous?.sampledTables ?? 0,
466
+ totalTables,
467
+ };
468
+ return;
469
+ }
470
+ const pending = state.schemas
471
+ .flatMap(schema => schema.tables.map(table => ({ schema, table })))
472
+ .filter(({ table }) => !this.resumeFromState || !this.tableHasStatistics(table));
473
+ if (pending.length === 0) {
474
+ this.onProgress('Table data already sampled', { tables: totalTables });
475
+ state.phases.dataSampling = {
476
+ status: 'completed',
477
+ startedAt: previous?.startedAt ?? new Date().toISOString(),
478
+ completedAt: new Date().toISOString(),
479
+ sampledTables: totalTables,
480
+ totalTables,
481
+ };
482
+ return;
483
+ }
484
+ if (this.resumeFromState && pending.length < totalTables) {
485
+ this.onProgress(`Resuming table data sampling: ${pending.length} of ${totalTables} tables have no statistics yet`, {
486
+ pending: pending.length, total: totalTables
487
+ });
488
+ }
489
+ const phase = {
490
+ status: 'partial',
491
+ startedAt: previous?.startedAt ?? new Date().toISOString(),
492
+ sampledTables: totalTables - pending.length,
493
+ totalTables,
494
+ };
495
+ state.phases.dataSampling = phase;
496
+ this.onProgress('Analyzing table data');
497
+ const sampler = new DataSampler(driver, this.config.analysis);
498
+ let samplingErrors = 0;
499
+ let tableIndex = 0;
500
+ for (const { schema, table } of pending) {
501
+ tableIndex++;
502
+ this.onProgress(`Sampling table data [${tableIndex}/${pending.length}]: ${schema.name}.${table.name}`);
503
+ try {
504
+ await sampler.analyzeTable(schema.name, table.name, table.columns);
505
+ phase.sampledTables++;
506
+ }
507
+ catch (error) {
508
+ samplingErrors++;
509
+ const errorMsg = `Warning: Failed to analyze data for ${schema.name}.${table.name}: ${error.message}`;
510
+ console.error(errorMsg);
511
+ this.onProgress(errorMsg, { schema: schema.name, table: table.name, error: error.message });
512
+ // Continue with next table - partial data better than no data
513
+ }
514
+ // Checkpoint so an interrupted run resumes from here instead of from the start
515
+ if (tableIndex % SAMPLING_CHECKPOINT_INTERVAL === 0) {
516
+ stateManager.updateSummary(state);
517
+ await stateManager.save(state);
518
+ }
519
+ }
520
+ this.onProgress('Data analysis complete', {
521
+ tablesAnalyzed: pending.length - samplingErrors,
522
+ errors: samplingErrors
523
+ });
524
+ // A table whose sampling failed carries no statistics, so a later --resume picks it up again;
525
+ // the phase stays 'partial' so the state file says so instead of claiming a full pass.
526
+ phase.status = samplingErrors === 0 ? 'completed' : 'partial';
527
+ phase.completedAt = new Date().toISOString();
528
+ stateManager.updateSummary(state);
529
+ await stateManager.save(state);
530
+ }
531
+ /** A table counts as sampled once any of its columns carries statistics. */
532
+ tableHasStatistics(table) {
533
+ return table.columns.some(column => column.statistics !== undefined);
534
+ }
399
535
  /**
400
536
  * Create run-numbered folder for this analysis run
401
537
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisOrchestrator.js","sourceRoot":"","sources":["../../src/core/AnalysisOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AnalysisOrchestrator.js","sourceRoot":"","sources":["../../src/core/AnalysisOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Deterministic eligibility for a primary key the LLM proposes during table analysis.
3
+ */
4
+ import type { TableDefinition } from '../types/state.js';
5
+ /** Checks whether a column combination is unique in the database. */
6
+ export type CombinationUniquenessCheck = (columns: string[]) => Promise<boolean>;
7
+ /** Outcome of the gate: eligible, or the reason it is not. */
8
+ export interface PKProposalVerdict {
9
+ Eligible: boolean;
10
+ Reason?: string;
11
+ /** When eligible: the proposed columns in the schema's own spelling. */
12
+ Columns?: string[];
13
+ }
14
+ /**
15
+ * Every column must exist, have statistics and contain no nulls. A single column must be 100% unique
16
+ * on its own. A composite key only needs to be unique as a combination — its columns are usually not
17
+ * unique individually (ProductID, StartDate) — so it is checked with `checkCombination`, which receives
18
+ * the schema's column names rather than the LLM's spelling of them. Without one, a composite proposal is
19
+ * rejected because its uniqueness cannot be verified.
20
+ */
21
+ export declare function CheckPKProposal(table: Pick<TableDefinition, 'columns'>, columns: string[], checkCombination?: CombinationUniquenessCheck): Promise<PKProposalVerdict>;
22
+ //# sourceMappingURL=PKProposalGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PKProposalGate.d.ts","sourceRoot":"","sources":["../../src/core/PKProposalGate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,qEAAqE;AACrE,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjF,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACvC,OAAO,EAAE,MAAM,EAAE,EACjB,gBAAgB,CAAC,EAAE,0BAA0B,GAC5C,OAAO,CAAC,iBAAiB,CAAC,CAuC5B"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Deterministic eligibility for a primary key the LLM proposes during table analysis.
3
+ */
4
+ /**
5
+ * Every column must exist, have statistics and contain no nulls. A single column must be 100% unique
6
+ * on its own. A composite key only needs to be unique as a combination — its columns are usually not
7
+ * unique individually (ProductID, StartDate) — so it is checked with `checkCombination`, which receives
8
+ * the schema's column names rather than the LLM's spelling of them. Without one, a composite proposal is
9
+ * rejected because its uniqueness cannot be verified.
10
+ */
11
+ export async function CheckPKProposal(table, columns, checkCombination) {
12
+ // The schema's own spelling of each column. Only these reach the database check, never the LLM's strings.
13
+ const canonical = [];
14
+ for (const colName of columns) {
15
+ const column = table.columns.find((c) => c.name.toLowerCase() === colName.toLowerCase());
16
+ if (!column) {
17
+ return { Eligible: false, Reason: `column "${colName}" not found` };
18
+ }
19
+ canonical.push(column.name);
20
+ const stats = column.statistics;
21
+ if (!stats) {
22
+ return { Eligible: false, Reason: `${colName} — no statistics available` };
23
+ }
24
+ if ((stats.nullCount || 0) > 0) {
25
+ return { Eligible: false, Reason: `${colName} — has ${stats.nullCount} nulls` };
26
+ }
27
+ if (columns.length === 1) {
28
+ // Safety: prefer pre-computed uniquenessRatio if available (totalRows can be 0 due to field naming bug)
29
+ const uniqueness = stats.uniquenessRatio != null && stats.uniquenessRatio > 0
30
+ ? stats.uniquenessRatio
31
+ : (stats.totalRows > 0 ? stats.distinctCount / stats.totalRows : 0);
32
+ if (uniqueness < 1.0) {
33
+ return { Eligible: false, Reason: `${colName} — uniqueness ${(uniqueness * 100).toFixed(1)}% (must be 100%)` };
34
+ }
35
+ }
36
+ }
37
+ if (columns.length === 1) {
38
+ return { Eligible: true, Columns: canonical };
39
+ }
40
+ if (!checkCombination) {
41
+ return { Eligible: false, Reason: `(${columns.join(', ')}) — composite uniqueness can't be checked without a database connection` };
42
+ }
43
+ try {
44
+ return (await checkCombination(canonical))
45
+ ? { Eligible: true, Columns: canonical }
46
+ : { Eligible: false, Reason: `(${columns.join(', ')}) — combination is not unique` };
47
+ }
48
+ catch (err) {
49
+ return { Eligible: false, Reason: `(${columns.join(', ')}) — uniqueness check failed: ${err instanceof Error ? err.message : String(err)}` };
50
+ }
51
+ }
52
+ //# sourceMappingURL=PKProposalGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PKProposalGate.js","sourceRoot":"","sources":["../../src/core/PKProposalGate.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,14 @@ export declare class Introspector {
60
60
  private driver;
61
61
  constructor(driver: BaseAutoDocDriver);
62
62
  GetSchemas(schemaFilter: SchemaFilterConfig, tableFilter: TableFilterConfig): Promise<SchemaDefinition[]>;
63
+ /**
64
+ * Reads each schema's indexes and stores them on its tables (`TableDefinition.indexes`).
65
+ * A schema whose catalog read fails is left without indexes and reported in the result.
66
+ */
67
+ LoadIndexes(schemas: SchemaDefinition[]): Promise<{
68
+ SchemaName: string;
69
+ Error: string;
70
+ }[]>;
63
71
  /** @deprecated Use {@link GetSchemas}. */
64
72
  getSchemas(schemaFilter: SchemaFilterConfig, tableFilter: TableFilterConfig): Promise<SchemaDefinition[]>;
65
73
  GetExistingDescriptions(schemaName: string, tableName: string): Promise<Map<string, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../src/database/Database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../src/database/Database.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { MJGlobal } from '@memberjunction/global';
6
6
  import { BaseAutoDocDriver } from '../drivers/BaseAutoDocDriver.js';
7
+ import { AttachIndexesToTables } from '../utils/index-hints.js';
7
8
  import '../drivers/SQLServerDriver.js'; // Import to ensure registration
8
9
  import '../drivers/MySQLDriver.js'; // Import to ensure registration
9
10
  import '../drivers/PostgreSQLDriver.js'; // Import to ensure registration
@@ -90,7 +91,8 @@ export class Introspector {
90
91
  schema: fk.referencedSchema,
91
92
  table: fk.referencedTable,
92
93
  column: fk.columnName,
93
- referencedColumn: fk.referencedColumn
94
+ referencedColumn: fk.referencedColumn,
95
+ constraintName: fk.constraintName
94
96
  }));
95
97
  // Convert columns
96
98
  const columns = autoDocTable.columns.map(col => ({
@@ -101,6 +103,7 @@ export class Introspector {
101
103
  isForeignKey: col.isForeignKey,
102
104
  checkConstraint: col.checkConstraint,
103
105
  defaultValue: col.defaultValue,
106
+ maxLength: col.maxLength,
104
107
  descriptionIterations: []
105
108
  }));
106
109
  tables.push({
@@ -141,6 +144,22 @@ export class Introspector {
141
144
  }
142
145
  return schemas;
143
146
  }
147
+ /**
148
+ * Reads each schema's indexes and stores them on its tables (`TableDefinition.indexes`).
149
+ * A schema whose catalog read fails is left without indexes and reported in the result.
150
+ */
151
+ async LoadIndexes(schemas) {
152
+ const failed = [];
153
+ for (const schema of schemas) {
154
+ try {
155
+ AttachIndexesToTables(schema.tables, await this.driver.GetIndexes(schema.name));
156
+ }
157
+ catch (err) {
158
+ failed.push({ SchemaName: schema.name, Error: err instanceof Error ? err.message : String(err) });
159
+ }
160
+ }
161
+ return failed;
162
+ }
144
163
  /** @deprecated Use {@link GetSchemas}. */
145
164
  async getSchemas(schemaFilter, tableFilter) {
146
165
  return this.GetSchemas(schemaFilter, tableFilter);
@@ -181,6 +200,9 @@ export class DataSampler {
181
200
  nullCount: stats.nullCount,
182
201
  nullPercentage: stats.nullPercentage,
183
202
  sampleValues: stats.sampleValues,
203
+ // Every distinct value of a low-cardinality column. The enum candidate gate reads it to know
204
+ // which values a column holds; without it, the gate falls back to the 20-row random sample.
205
+ valueDistribution: stats.valueDistribution?.map(v => ({ value: v.value, frequency: v.frequency })),
184
206
  min: stats.min,
185
207
  max: stats.max,
186
208
  avg: stats.avg,