@memberjunction/db-auto-doc 2.117.0 → 2.119.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 (263) hide show
  1. package/README.md +803 -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/generate-queries.d.ts +17 -0
  20. package/dist/commands/generate-queries.d.ts.map +1 -0
  21. package/dist/commands/generate-queries.js +182 -0
  22. package/dist/commands/generate-queries.js.map +1 -0
  23. package/dist/commands/init.d.ts +3 -4
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +206 -144
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/reset.d.ts +4 -1
  28. package/dist/commands/reset.d.ts.map +1 -1
  29. package/dist/commands/reset.js +33 -19
  30. package/dist/commands/reset.js.map +1 -1
  31. package/dist/commands/status.d.ts +10 -0
  32. package/dist/commands/status.d.ts.map +1 -0
  33. package/dist/commands/status.js +66 -0
  34. package/dist/commands/status.js.map +1 -0
  35. package/dist/core/AnalysisEngine.d.ts +108 -0
  36. package/dist/core/AnalysisEngine.d.ts.map +1 -0
  37. package/dist/core/AnalysisEngine.js +716 -0
  38. package/dist/core/AnalysisEngine.js.map +1 -0
  39. package/dist/core/AnalysisOrchestrator.d.ts +41 -0
  40. package/dist/core/AnalysisOrchestrator.d.ts.map +1 -0
  41. package/dist/core/AnalysisOrchestrator.js +377 -0
  42. package/dist/core/AnalysisOrchestrator.js.map +1 -0
  43. package/dist/core/BackpropagationEngine.d.ts +32 -0
  44. package/dist/core/BackpropagationEngine.d.ts.map +1 -0
  45. package/dist/core/BackpropagationEngine.js +121 -0
  46. package/dist/core/BackpropagationEngine.js.map +1 -0
  47. package/dist/core/ConvergenceDetector.d.ts +27 -0
  48. package/dist/core/ConvergenceDetector.d.ts.map +1 -0
  49. package/dist/core/ConvergenceDetector.js +92 -0
  50. package/dist/core/ConvergenceDetector.js.map +1 -0
  51. package/dist/core/GuardrailsManager.d.ts +78 -0
  52. package/dist/core/GuardrailsManager.d.ts.map +1 -0
  53. package/dist/core/GuardrailsManager.js +367 -0
  54. package/dist/core/GuardrailsManager.js.map +1 -0
  55. package/dist/core/index.d.ts +7 -0
  56. package/dist/core/index.d.ts.map +1 -0
  57. package/dist/core/index.js +13 -0
  58. package/dist/core/index.js.map +1 -0
  59. package/dist/database/Database.d.ts +56 -0
  60. package/dist/database/Database.d.ts.map +1 -0
  61. package/dist/database/Database.js +172 -0
  62. package/dist/database/Database.js.map +1 -0
  63. package/dist/database/TopologicalSorter.d.ts +25 -0
  64. package/dist/database/TopologicalSorter.d.ts.map +1 -0
  65. package/dist/database/TopologicalSorter.js +150 -0
  66. package/dist/database/TopologicalSorter.js.map +1 -0
  67. package/dist/database/index.d.ts +6 -0
  68. package/dist/database/index.d.ts.map +1 -0
  69. package/dist/database/index.js +14 -0
  70. package/dist/database/index.js.map +1 -0
  71. package/dist/discovery/ColumnStatsCache.d.ts +91 -0
  72. package/dist/discovery/ColumnStatsCache.d.ts.map +1 -0
  73. package/dist/discovery/ColumnStatsCache.js +231 -0
  74. package/dist/discovery/ColumnStatsCache.js.map +1 -0
  75. package/dist/discovery/DiscoveryEngine.d.ts +100 -0
  76. package/dist/discovery/DiscoveryEngine.d.ts.map +1 -0
  77. package/dist/discovery/DiscoveryEngine.js +726 -0
  78. package/dist/discovery/DiscoveryEngine.js.map +1 -0
  79. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts +57 -0
  80. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts.map +1 -0
  81. package/dist/discovery/DiscoveryTriggerAnalyzer.js +186 -0
  82. package/dist/discovery/DiscoveryTriggerAnalyzer.js.map +1 -0
  83. package/dist/discovery/FKDetector.d.ts +47 -0
  84. package/dist/discovery/FKDetector.d.ts.map +1 -0
  85. package/dist/discovery/FKDetector.js +317 -0
  86. package/dist/discovery/FKDetector.js.map +1 -0
  87. package/dist/discovery/LLMDiscoveryValidator.d.ts +64 -0
  88. package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -0
  89. package/dist/discovery/LLMDiscoveryValidator.js +431 -0
  90. package/dist/discovery/LLMDiscoveryValidator.js.map +1 -0
  91. package/dist/discovery/LLMSanityChecker.d.ts +38 -0
  92. package/dist/discovery/LLMSanityChecker.d.ts.map +1 -0
  93. package/dist/discovery/LLMSanityChecker.js +156 -0
  94. package/dist/discovery/LLMSanityChecker.js.map +1 -0
  95. package/dist/discovery/PKDetector.d.ts +62 -0
  96. package/dist/discovery/PKDetector.d.ts.map +1 -0
  97. package/dist/discovery/PKDetector.js +436 -0
  98. package/dist/discovery/PKDetector.js.map +1 -0
  99. package/dist/discovery/index.d.ts +9 -0
  100. package/dist/discovery/index.d.ts.map +1 -0
  101. package/dist/discovery/index.js +25 -0
  102. package/dist/discovery/index.js.map +1 -0
  103. package/dist/drivers/BaseAutoDocDriver.d.ts +132 -0
  104. package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -0
  105. package/dist/drivers/BaseAutoDocDriver.js +121 -0
  106. package/dist/drivers/BaseAutoDocDriver.js.map +1 -0
  107. package/dist/drivers/MySQLDriver.d.ts +61 -0
  108. package/dist/drivers/MySQLDriver.d.ts.map +1 -0
  109. package/dist/drivers/MySQLDriver.js +668 -0
  110. package/dist/drivers/MySQLDriver.js.map +1 -0
  111. package/dist/drivers/PostgreSQLDriver.d.ts +65 -0
  112. package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -0
  113. package/dist/drivers/PostgreSQLDriver.js +704 -0
  114. package/dist/drivers/PostgreSQLDriver.js.map +1 -0
  115. package/dist/drivers/SQLServerDriver.d.ts +61 -0
  116. package/dist/drivers/SQLServerDriver.d.ts.map +1 -0
  117. package/dist/drivers/SQLServerDriver.js +667 -0
  118. package/dist/drivers/SQLServerDriver.js.map +1 -0
  119. package/dist/generators/CSVGenerator.d.ts +35 -0
  120. package/dist/generators/CSVGenerator.d.ts.map +1 -0
  121. package/dist/generators/CSVGenerator.js +154 -0
  122. package/dist/generators/CSVGenerator.js.map +1 -0
  123. package/dist/generators/HTMLGenerator.d.ts +29 -0
  124. package/dist/generators/HTMLGenerator.d.ts.map +1 -0
  125. package/dist/generators/HTMLGenerator.js +710 -0
  126. package/dist/generators/HTMLGenerator.js.map +1 -0
  127. package/dist/generators/MarkdownGenerator.d.ts +27 -0
  128. package/dist/generators/MarkdownGenerator.d.ts.map +1 -0
  129. package/dist/generators/MarkdownGenerator.js +361 -0
  130. package/dist/generators/MarkdownGenerator.js.map +1 -0
  131. package/dist/generators/MermaidGenerator.d.ts +35 -0
  132. package/dist/generators/MermaidGenerator.d.ts.map +1 -0
  133. package/dist/generators/MermaidGenerator.js +321 -0
  134. package/dist/generators/MermaidGenerator.js.map +1 -0
  135. package/dist/generators/ReportGenerator.d.ts +22 -0
  136. package/dist/generators/ReportGenerator.d.ts.map +1 -0
  137. package/dist/generators/ReportGenerator.js +176 -0
  138. package/dist/generators/ReportGenerator.js.map +1 -0
  139. package/dist/generators/SQLGenerator.d.ts +31 -0
  140. package/dist/generators/SQLGenerator.d.ts.map +1 -0
  141. package/dist/generators/SQLGenerator.js +168 -0
  142. package/dist/generators/SQLGenerator.js.map +1 -0
  143. package/dist/generators/SampleQueryGenerator.d.ts +64 -0
  144. package/dist/generators/SampleQueryGenerator.d.ts.map +1 -0
  145. package/dist/generators/SampleQueryGenerator.js +500 -0
  146. package/dist/generators/SampleQueryGenerator.js.map +1 -0
  147. package/dist/generators/index.d.ts +10 -0
  148. package/dist/generators/index.d.ts.map +1 -0
  149. package/dist/generators/index.js +19 -0
  150. package/dist/generators/index.js.map +1 -0
  151. package/dist/index.d.ts +11 -20
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +19 -20
  154. package/dist/index.js.map +1 -1
  155. package/dist/prompts/PromptEngine.d.ts +65 -0
  156. package/dist/prompts/PromptEngine.d.ts.map +1 -0
  157. package/dist/prompts/PromptEngine.js +305 -0
  158. package/dist/prompts/PromptEngine.js.map +1 -0
  159. package/dist/prompts/PromptFileLoader.d.ts +21 -0
  160. package/dist/prompts/PromptFileLoader.d.ts.map +1 -0
  161. package/dist/prompts/PromptFileLoader.js +74 -0
  162. package/dist/prompts/PromptFileLoader.js.map +1 -0
  163. package/dist/prompts/index.d.ts +6 -0
  164. package/dist/prompts/index.d.ts.map +1 -0
  165. package/dist/prompts/index.js +11 -0
  166. package/dist/prompts/index.js.map +1 -0
  167. package/dist/state/IterationTracker.d.ts +64 -0
  168. package/dist/state/IterationTracker.d.ts.map +1 -0
  169. package/dist/state/IterationTracker.js +136 -0
  170. package/dist/state/IterationTracker.js.map +1 -0
  171. package/dist/state/StateManager.d.ts +79 -0
  172. package/dist/state/StateManager.d.ts.map +1 -0
  173. package/dist/state/StateManager.js +348 -0
  174. package/dist/state/StateManager.js.map +1 -0
  175. package/dist/state/StateValidator.d.ts +24 -0
  176. package/dist/state/StateValidator.d.ts.map +1 -0
  177. package/dist/state/StateValidator.js +147 -0
  178. package/dist/state/StateValidator.js.map +1 -0
  179. package/dist/state/index.d.ts +7 -0
  180. package/dist/state/index.d.ts.map +1 -0
  181. package/dist/state/index.js +13 -0
  182. package/dist/state/index.js.map +1 -0
  183. package/dist/types/analysis.d.ts +76 -0
  184. package/dist/types/analysis.d.ts.map +1 -0
  185. package/dist/types/analysis.js +6 -0
  186. package/dist/types/analysis.js.map +1 -0
  187. package/dist/types/config.d.ts +143 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +7 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/discovery.d.ts +277 -0
  192. package/dist/types/discovery.d.ts.map +1 -0
  193. package/dist/types/discovery.js +7 -0
  194. package/dist/types/discovery.js.map +1 -0
  195. package/dist/types/driver.d.ts +148 -0
  196. package/dist/types/driver.d.ts.map +1 -0
  197. package/dist/types/driver.js +7 -0
  198. package/dist/types/driver.js.map +1 -0
  199. package/dist/types/index.d.ts +8 -0
  200. package/dist/types/index.d.ts.map +1 -0
  201. package/dist/types/index.js +24 -0
  202. package/dist/types/index.js.map +1 -0
  203. package/dist/types/prompts.d.ts +158 -0
  204. package/dist/types/prompts.d.ts.map +1 -0
  205. package/dist/types/prompts.js +6 -0
  206. package/dist/types/prompts.js.map +1 -0
  207. package/dist/types/sample-queries.d.ts +172 -0
  208. package/dist/types/sample-queries.d.ts.map +1 -0
  209. package/dist/types/sample-queries.js +7 -0
  210. package/dist/types/sample-queries.js.map +1 -0
  211. package/dist/types/state.d.ts +291 -0
  212. package/dist/types/state.d.ts.map +1 -0
  213. package/dist/types/state.js +7 -0
  214. package/dist/types/state.js.map +1 -0
  215. package/dist/utils/config-loader.d.ts +29 -0
  216. package/dist/utils/config-loader.d.ts.map +1 -0
  217. package/dist/utils/config-loader.js +163 -0
  218. package/dist/utils/config-loader.js.map +1 -0
  219. package/dist/utils/index.d.ts +5 -0
  220. package/dist/utils/index.d.ts.map +1 -0
  221. package/dist/utils/index.js +9 -0
  222. package/dist/utils/index.js.map +1 -0
  223. package/package.json +28 -3
  224. package/dist/ai/simple-ai-client.d.ts +0 -70
  225. package/dist/ai/simple-ai-client.d.ts.map +0 -1
  226. package/dist/ai/simple-ai-client.js +0 -181
  227. package/dist/ai/simple-ai-client.js.map +0 -1
  228. package/dist/analyzers/analyzer.d.ts +0 -23
  229. package/dist/analyzers/analyzer.d.ts.map +0 -1
  230. package/dist/analyzers/analyzer.js +0 -127
  231. package/dist/analyzers/analyzer.js.map +0 -1
  232. package/dist/cli-old/cli.d.ts +0 -3
  233. package/dist/cli-old/cli.d.ts.map +0 -1
  234. package/dist/cli-old/cli.js +0 -388
  235. package/dist/cli-old/cli.js.map +0 -1
  236. package/dist/commands/review.d.ts +0 -11
  237. package/dist/commands/review.d.ts.map +0 -1
  238. package/dist/commands/review.js +0 -82
  239. package/dist/commands/review.js.map +0 -1
  240. package/dist/database/connection.d.ts +0 -40
  241. package/dist/database/connection.d.ts.map +0 -1
  242. package/dist/database/connection.js +0 -136
  243. package/dist/database/connection.js.map +0 -1
  244. package/dist/database/introspection.d.ts +0 -59
  245. package/dist/database/introspection.d.ts.map +0 -1
  246. package/dist/database/introspection.js +0 -124
  247. package/dist/database/introspection.js.map +0 -1
  248. package/dist/generators/markdown-generator.d.ts +0 -8
  249. package/dist/generators/markdown-generator.d.ts.map +0 -1
  250. package/dist/generators/markdown-generator.js +0 -106
  251. package/dist/generators/markdown-generator.js.map +0 -1
  252. package/dist/generators/sql-generator.d.ts +0 -20
  253. package/dist/generators/sql-generator.d.ts.map +0 -1
  254. package/dist/generators/sql-generator.js +0 -83
  255. package/dist/generators/sql-generator.js.map +0 -1
  256. package/dist/state/state-manager.d.ts +0 -95
  257. package/dist/state/state-manager.d.ts.map +0 -1
  258. package/dist/state/state-manager.js +0 -236
  259. package/dist/state/state-manager.js.map +0 -1
  260. package/dist/types/state-file.d.ts +0 -124
  261. package/dist/types/state-file.d.ts.map +0 -1
  262. package/dist/types/state-file.js +0 -79
  263. package/dist/types/state-file.js.map +0 -1
@@ -1,9 +1,12 @@
1
+ /**
2
+ * Reset command - Clear state and start fresh
3
+ */
1
4
  import { Command } from '@oclif/core';
2
5
  export default class Reset extends Command {
3
6
  static description: string;
4
7
  static examples: string[];
5
8
  static flags: {
6
- all: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
10
  };
8
11
  run(): Promise<void>;
9
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,SAAsB;IAExC,MAAM,CAAC,QAAQ,WAEb;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAM7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,SAA0C;IAE5D,MAAM,CAAC,QAAQ,WAA2B;IAE1C,MAAM,CAAC,KAAK;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
@@ -1,37 +1,51 @@
1
1
  "use strict";
2
+ /**
3
+ * Reset command - Clear state and start fresh
4
+ */
2
5
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
7
  };
5
8
  Object.defineProperty(exports, "__esModule", { value: true });
6
9
  const core_1 = require("@oclif/core");
7
- const prompts_1 = require("@inquirer/prompts");
10
+ const inquirer_1 = __importDefault(require("inquirer"));
8
11
  const chalk_1 = __importDefault(require("chalk"));
9
- const state_manager_1 = require("../state/state-manager");
12
+ const config_loader_js_1 = require("../utils/config-loader.js");
13
+ const StateManager_js_1 = require("../state/StateManager.js");
10
14
  class Reset extends core_1.Command {
11
15
  async run() {
12
16
  const { flags } = await this.parse(Reset);
13
- if (flags.all) {
14
- const confirmed = await (0, prompts_1.confirm)({
15
- message: chalk_1.default.yellow('Reset entire state file? This cannot be undone.'),
16
- default: false,
17
- });
18
- if (confirmed) {
19
- const stateManager = new state_manager_1.StateManager();
20
- await stateManager.reset(process.env.DB_SERVER || 'localhost', process.env.DB_DATABASE || 'master');
21
- this.log(chalk_1.default.green('✅ State file reset'));
17
+ try {
18
+ const config = await config_loader_js_1.ConfigLoader.load('./config.json');
19
+ const stateManager = new StateManager_js_1.StateManager(config.output.stateFile);
20
+ // Confirm deletion unless --force
21
+ if (!flags.force) {
22
+ const answer = await inquirer_1.default.prompt([
23
+ {
24
+ type: 'confirm',
25
+ name: 'confirm',
26
+ message: chalk_1.default.yellow('This will delete all analysis state. Continue?'),
27
+ default: false
28
+ }
29
+ ]);
30
+ if (!answer.confirm) {
31
+ this.log('Reset cancelled');
32
+ return;
33
+ }
22
34
  }
35
+ // Delete state file
36
+ await stateManager.delete();
37
+ this.log(chalk_1.default.green('✓ State reset complete!'));
38
+ this.log('Run: db-auto-doc analyze');
39
+ }
40
+ catch (error) {
41
+ this.error(error.message);
23
42
  }
24
43
  }
25
44
  }
26
- Reset.description = 'Reset state file';
27
- Reset.examples = [
28
- '<%= config.bin %> <%= command.id %> --all',
29
- ];
45
+ Reset.description = 'Reset state and start fresh analysis';
46
+ Reset.examples = ['$ db-auto-doc reset'];
30
47
  Reset.flags = {
31
- all: core_1.Flags.boolean({
32
- description: 'Reset entire state file',
33
- default: false,
34
- }),
48
+ force: core_1.Flags.boolean({ char: 'f', description: 'Skip confirmation prompt' })
35
49
  };
36
50
  exports.default = Reset;
37
51
  //# sourceMappingURL=reset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":";;;;;AAAA,sCAA6C;AAC7C,+CAA4C;AAC5C,kDAA0B;AAC1B,0DAAsD;AAEtD,MAAqB,KAAM,SAAQ,cAAO;IAcxC,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAO,EAAC;gBAC9B,OAAO,EAAE,eAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC;gBACxE,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;gBACxC,MAAM,YAAY,CAAC,KAAK,CACtB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,EACpC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,QAAQ,CACpC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;;AA/BM,iBAAW,GAAG,kBAAkB,CAAC;AAEjC,cAAQ,GAAG;IAChB,2CAA2C;CAC5C,CAAC;AAEK,WAAK,GAAG;IACb,GAAG,EAAE,YAAK,CAAC,OAAO,CAAC;QACjB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;kBAZiB,KAAK"}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAEH,sCAA6C;AAC7C,wDAAgC;AAChC,kDAA0B;AAC1B,gEAAyD;AACzD,8DAAwD;AAExD,MAAqB,KAAM,SAAQ,cAAO;IASxC,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,+BAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,8BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE/D,kCAAkC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;oBACnC;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,eAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC;wBACvE,OAAO,EAAE,KAAK;qBACf;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAC5B,OAAO;gBACT,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;YAE5B,IAAI,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAEvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;;AAzCM,iBAAW,GAAG,sCAAsC,CAAC;AAErD,cAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEnC,WAAK,GAAG;IACb,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC7E,CAAC;kBAPiB,KAAK"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Status command - Show current analysis status
3
+ */
4
+ import { Command } from '@oclif/core';
5
+ export default class Status extends Command {
6
+ static description: string;
7
+ static examples: string[];
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAKtC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,QAAQ,WAA4B;IAErC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuD3B"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Status command - Show current analysis status
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const core_1 = require("@oclif/core");
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const config_loader_js_1 = require("../utils/config-loader.js");
12
+ const StateManager_js_1 = require("../state/StateManager.js");
13
+ class Status extends core_1.Command {
14
+ async run() {
15
+ try {
16
+ const config = await config_loader_js_1.ConfigLoader.load('./config.json');
17
+ const stateManager = new StateManager_js_1.StateManager(config.output.stateFile);
18
+ const state = await stateManager.load();
19
+ if (!state) {
20
+ this.log(chalk_1.default.yellow('No analysis has been run yet.'));
21
+ this.log('Run: db-auto-doc analyze');
22
+ return;
23
+ }
24
+ this.log(chalk_1.default.blue(`\nDatabase Documentation Status\n`));
25
+ this.log(`Database: ${state.database.name}`);
26
+ this.log(`Server: ${state.database.server}`);
27
+ this.log(`Last Modified: ${state.summary.lastModified}\n`);
28
+ // Schemas
29
+ this.log(`Schemas: ${state.schemas.length}`);
30
+ const tableCount = state.schemas.reduce((sum, s) => sum + s.tables.length, 0);
31
+ this.log(`Tables: ${tableCount}\n`);
32
+ // Latest run
33
+ if (state.phases.descriptionGeneration.length > 0) {
34
+ const lastRun = state.phases.descriptionGeneration[state.phases.descriptionGeneration.length - 1];
35
+ this.log(chalk_1.default.blue('Latest Analysis Run:'));
36
+ this.log(` Status: ${lastRun.status}`);
37
+ this.log(` Iterations: ${lastRun.iterationsPerformed}`);
38
+ this.log(` Tokens Used: ${lastRun.totalTokensUsed.toLocaleString()}`);
39
+ this.log(` Estimated Cost: $${lastRun.estimatedCost.toFixed(2)}`);
40
+ if (lastRun.converged) {
41
+ this.log(chalk_1.default.green(` Converged: ${lastRun.convergenceReason}`));
42
+ }
43
+ else {
44
+ this.log(chalk_1.default.yellow(' Not yet converged'));
45
+ }
46
+ }
47
+ // Low confidence tables
48
+ const lowConfidence = stateManager.getLowConfidenceTables(state, 0.7);
49
+ if (lowConfidence.length > 0) {
50
+ this.log(chalk_1.default.yellow(`\nLow Confidence Tables (< 0.7): ${lowConfidence.length}`));
51
+ }
52
+ // Unprocessed tables
53
+ const unprocessed = stateManager.getUnprocessedTables(state);
54
+ if (unprocessed.length > 0) {
55
+ this.log(chalk_1.default.yellow(`Unprocessed Tables: ${unprocessed.length}`));
56
+ }
57
+ }
58
+ catch (error) {
59
+ this.error(error.message);
60
+ }
61
+ }
62
+ }
63
+ Status.description = 'Show current analysis status';
64
+ Status.examples = ['$ db-auto-doc status'];
65
+ exports.default = Status;
66
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Main analysis orchestrator
3
+ * Coordinates the entire documentation generation workflow
4
+ */
5
+ import { DatabaseDocumentation, AnalysisRun, SchemaDefinition } from '../types/state.js';
6
+ import { TableNode, BackpropagationTrigger } from '../types/analysis.js';
7
+ import { DBAutoDocConfig } from '../types/config.js';
8
+ import { PromptEngine } from '../prompts/PromptEngine.js';
9
+ import { StateManager } from '../state/StateManager.js';
10
+ import { IterationTracker } from '../state/IterationTracker.js';
11
+ export declare class AnalysisEngine {
12
+ private config;
13
+ private promptEngine;
14
+ private stateManager;
15
+ private iterationTracker;
16
+ private backpropagationEngine;
17
+ private convergenceDetector;
18
+ private guardrailsManager;
19
+ private startTime;
20
+ private currentRun?;
21
+ constructor(config: DBAutoDocConfig, promptEngine: PromptEngine, stateManager: StateManager, iterationTracker: IterationTracker);
22
+ /**
23
+ * Initialize timing for guardrails and set current run
24
+ */
25
+ startAnalysis(run: AnalysisRun): void;
26
+ /**
27
+ * Process a single dependency level
28
+ */
29
+ processLevel(state: DatabaseDocumentation, run: AnalysisRun, level: number, tables: TableNode[]): Promise<BackpropagationTrigger[]>;
30
+ /**
31
+ * Analyze a single table
32
+ */
33
+ private analyzeTable;
34
+ /**
35
+ * Build context for table analysis
36
+ */
37
+ private buildTableContext;
38
+ /**
39
+ * Compare descriptions using LLM to determine material changes
40
+ */
41
+ private compareDescriptions;
42
+ /**
43
+ * Perform dependency-level sanity check
44
+ * Checks consistency across tables at the same dependency level
45
+ */
46
+ performDependencyLevelSanityCheck(state: DatabaseDocumentation, run: AnalysisRun, level: number, tables: TableNode[]): Promise<boolean>;
47
+ /**
48
+ * Perform schema-level sanity check
49
+ * Holistic review after entire schema is analyzed
50
+ */
51
+ performSchemaLevelSanityCheck(state: DatabaseDocumentation, run: AnalysisRun, schema: SchemaDefinition): Promise<boolean>;
52
+ /**
53
+ * Perform cross-schema sanity check
54
+ * Validates consistency across all schemas
55
+ */
56
+ performCrossSchemaSanityCheck(state: DatabaseDocumentation, run: AnalysisRun): Promise<boolean>;
57
+ /**
58
+ * Check convergence
59
+ */
60
+ checkConvergence(state: DatabaseDocumentation, run: AnalysisRun): boolean;
61
+ /**
62
+ * Execute backpropagation
63
+ */
64
+ executeBackpropagation(state: DatabaseDocumentation, run: AnalysisRun, triggers: BackpropagationTrigger[]): Promise<void>;
65
+ /**
66
+ * Extract FK insights from column descriptions and create feedback to discovery phase
67
+ *
68
+ * **DEPRECATED**: This method previously used brittle regex heuristics to parse natural language
69
+ * descriptions. Per architectural decision, we should use LLM for language understanding, not regex.
70
+ *
71
+ * **TODO**: Replace with structured LLM output approach:
72
+ * 1. Update table-analysis prompt to include a "foreignKeys" array in JSON response:
73
+ * {
74
+ * "tableDescription": "...",
75
+ * "columnDescriptions": [...],
76
+ * "foreignKeys": [
77
+ * { "column": "prd_id", "referencesTable": "inv.prd", "referencesColumn": "prd_id" }
78
+ * ]
79
+ * }
80
+ * 2. Process the structured foreignKeys array directly instead of parsing descriptions
81
+ * 3. Use deterministic code only for statistics calculation, LLM for reasoning
82
+ *
83
+ * For now, this method is disabled to prevent brittle regex-based FK detection.
84
+ */
85
+ private extractAndFeedbackFKInsights;
86
+ /**
87
+ * Process structured FK insights from LLM and create feedback to discovery phase
88
+ *
89
+ * Uses the foreignKeys array from table-analysis prompt response instead of brittle regex parsing.
90
+ * Per architectural decision: use LLM for language understanding, deterministic code for processing.
91
+ */
92
+ private processFKInsightsFromLLM;
93
+ /**
94
+ * Find a column in the state schemas
95
+ */
96
+ private findColumnInState;
97
+ /**
98
+ * Update table-level dependsOn and dependents arrays when creating FK relationships
99
+ * This is required for ERD diagram generation
100
+ */
101
+ private updateTableDependencies;
102
+ /**
103
+ * Resolve target table from LLM hint (e.g., "product", "warehouse", "supplier")
104
+ * Returns the best matching table and its likely PK column
105
+ */
106
+ private resolveTargetTable;
107
+ }
108
+ //# sourceMappingURL=AnalysisEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalysisEngine.d.ts","sourceRoot":"","sources":["../../src/core/AnalysisEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAqC,MAAM,mBAAmB,CAAC;AAC5H,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAwB,MAAM,sBAAsB,CAAC;AAU/F,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,qBAAa,cAAc;IAQvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IAV1B,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAc;gBAGvB,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB;IA4B5C;;OAEG;IACI,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAM5C;;OAEG;IACU,YAAY,CACvB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAqBpC;;OAEG;YACW,YAAY;IAwJ1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuDzB;;OAEG;YACW,mBAAmB;IAuEjC;;;OAGG;IACU,iCAAiC,CAC5C,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC;IAwEnB;;;OAGG;IACU,6BAA6B,CACxC,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,OAAO,CAAC;IA6FnB;;;OAGG;IACU,6BAA6B,CACxC,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,CAAC;IA+EnB;;OAEG;IACI,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IAWhF;;OAEG;IACU,sBAAsB,CACjC,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,sBAAsB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAahB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAoIhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA0D/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAiE3B"}