@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
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /**
3
+ * Generate Queries command - Generate sample SQL queries from existing state
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ const core_1 = require("@oclif/core");
33
+ const ora_1 = __importDefault(require("ora"));
34
+ const chalk_1 = __importDefault(require("chalk"));
35
+ const fs = __importStar(require("fs/promises"));
36
+ const path = __importStar(require("path"));
37
+ const config_loader_js_1 = require("../utils/config-loader.js");
38
+ const Database_js_1 = require("../database/Database.js");
39
+ const PromptEngine_js_1 = require("../prompts/PromptEngine.js");
40
+ const SampleQueryGenerator_js_1 = require("../generators/SampleQueryGenerator.js");
41
+ class GenerateQueries extends core_1.Command {
42
+ async run() {
43
+ const { flags } = await this.parse(GenerateQueries);
44
+ const spinner = (0, ora_1.default)();
45
+ try {
46
+ // Load configuration for database connection and AI settings
47
+ spinner.start('Loading configuration');
48
+ const config = await config_loader_js_1.ConfigLoader.load(flags.config);
49
+ spinner.succeed('Configuration loaded');
50
+ // Load existing state
51
+ spinner.start('Loading existing analysis state');
52
+ const stateJson = await fs.readFile(flags['from-state'], 'utf-8');
53
+ const state = JSON.parse(stateJson);
54
+ spinner.succeed(`State loaded: ${state.schemas.length} schemas, ${state.schemas.reduce((sum, s) => sum + s.tables.length, 0)} tables`);
55
+ // Determine output directory
56
+ const outputDir = flags['output-dir'] || path.dirname(flags['from-state']);
57
+ await fs.mkdir(outputDir, { recursive: true });
58
+ // Connect to database
59
+ spinner.start('Connecting to database');
60
+ const driverConfig = {
61
+ provider: config.database.provider || 'sqlserver',
62
+ host: config.database.server,
63
+ port: config.database.port,
64
+ database: config.database.database,
65
+ user: config.database.user,
66
+ password: config.database.password,
67
+ encrypt: config.database.encrypt,
68
+ trustServerCertificate: config.database.trustServerCertificate,
69
+ connectionTimeout: config.database.connectionTimeout,
70
+ requestTimeout: config.database.requestTimeout,
71
+ maxConnections: config.database.maxConnections,
72
+ minConnections: config.database.minConnections,
73
+ idleTimeoutMillis: config.database.idleTimeoutMillis
74
+ };
75
+ const db = new Database_js_1.DatabaseConnection(driverConfig);
76
+ await db.connect();
77
+ const testResult = await db.test();
78
+ if (!testResult.success) {
79
+ throw new Error(`Database connection failed: ${testResult.message}`);
80
+ }
81
+ spinner.succeed('Connected to database');
82
+ // Initialize prompt engine
83
+ spinner.start('Initializing AI prompt engine');
84
+ const promptsDir = path.join(__dirname, '../../prompts');
85
+ const promptEngine = new PromptEngine_js_1.PromptEngine(config.ai, promptsDir);
86
+ await promptEngine.initialize();
87
+ spinner.succeed('Prompt engine ready');
88
+ // Build query generation config
89
+ const queryConfig = {
90
+ enabled: true,
91
+ queriesPerTable: flags['queries-per-table'] || config.analysis.sampleQueryGeneration?.queriesPerTable || 5,
92
+ maxExecutionTime: flags['max-execution-time'] || config.analysis.sampleQueryGeneration?.maxExecutionTime || 30000,
93
+ includeMultiQueryPatterns: config.analysis.sampleQueryGeneration?.includeMultiQueryPatterns !== false,
94
+ validateAlignment: config.analysis.sampleQueryGeneration?.validateAlignment !== false,
95
+ tokenBudget: config.analysis.sampleQueryGeneration?.tokenBudget || 100000,
96
+ maxRowsInSample: config.analysis.sampleQueryGeneration?.maxRowsInSample || 10,
97
+ maxTables: config.analysis.sampleQueryGeneration?.maxTables // Optional, defaults to 10 in generator
98
+ };
99
+ // Use AI config from main settings
100
+ const model = config.ai.model;
101
+ const effortLevel = config.ai.effortLevel || 75;
102
+ const maxTokens = config.ai.maxTokens || 16000; // Use config value or default
103
+ // Determine output file paths for incremental writes
104
+ const queriesPath = path.join(outputDir, 'sample-queries.json');
105
+ const summaryPath = path.join(outputDir, 'sample-queries-summary.json');
106
+ // Create generator
107
+ spinner.start('Generating sample queries');
108
+ const generator = new SampleQueryGenerator_js_1.SampleQueryGenerator(queryConfig, promptEngine, db.getDriver(), model, effortLevel, maxTokens, queriesPath, // Pass queries output path for incremental writes
109
+ summaryPath // Pass summary output path for incremental writes
110
+ );
111
+ // Generate queries
112
+ const result = await generator.generateQueries(state.schemas);
113
+ await db.close();
114
+ if (result.success) {
115
+ // Save queries and summary (final write to ensure we have the complete set)
116
+ // Note: Both were already written incrementally during generation
117
+ await fs.writeFile(queriesPath, JSON.stringify(result.queries, null, 2), 'utf-8');
118
+ await fs.writeFile(summaryPath, JSON.stringify(result.summary, null, 2), 'utf-8');
119
+ spinner.succeed('Sample queries generated!');
120
+ this.log(chalk_1.default.green('\n✓ Query generation complete!'));
121
+ this.log(` Total queries: ${result.summary.totalQueriesGenerated}`);
122
+ this.log(` Validated: ${result.summary.queriesValidated}`);
123
+ this.log(` Failed validation: ${result.summary.queriesFailed}`);
124
+ this.log(` Tokens used: ${result.summary.tokensUsed.toLocaleString()}`);
125
+ this.log(` Estimated cost: $${result.summary.estimatedCost.toFixed(2)}`);
126
+ this.log(` Average confidence: ${(result.summary.averageConfidence * 100).toFixed(1)}%`);
127
+ this.log(` Execution time: ${(result.summary.totalExecutionTime / 1000).toFixed(1)}s`);
128
+ this.log(`\n Output files:`);
129
+ this.log(` - ${queriesPath}`);
130
+ this.log(` - ${summaryPath}`);
131
+ this.log(chalk_1.default.blue('\n Query breakdown:'));
132
+ this.log(` By type:`);
133
+ Object.entries(result.summary.queriesByType).forEach(([type, count]) => {
134
+ this.log(` ${type}: ${count}`);
135
+ });
136
+ this.log(` By complexity:`);
137
+ Object.entries(result.summary.queriesByComplexity).forEach(([complexity, count]) => {
138
+ this.log(` ${complexity}: ${count}`);
139
+ });
140
+ }
141
+ else {
142
+ spinner.fail('Query generation failed');
143
+ this.error(result.errorMessage || 'Unknown error');
144
+ }
145
+ }
146
+ catch (error) {
147
+ spinner.fail('Command failed');
148
+ this.error(error.message);
149
+ }
150
+ }
151
+ }
152
+ GenerateQueries.description = 'Generate sample SQL queries from existing analysis state';
153
+ GenerateQueries.examples = [
154
+ '$ db-auto-doc generate-queries --from-state ./output/run-1/state.json',
155
+ '$ db-auto-doc generate-queries --from-state ./output/run-1/state.json --output-dir ./queries',
156
+ '$ db-auto-doc generate-queries --from-state ./output/run-1/state.json --queries-per-table 10'
157
+ ];
158
+ GenerateQueries.flags = {
159
+ 'from-state': core_1.Flags.string({
160
+ description: 'Path to existing state.json file from previous analysis',
161
+ required: true
162
+ }),
163
+ 'output-dir': core_1.Flags.string({
164
+ description: 'Output directory for generated queries',
165
+ required: false
166
+ }),
167
+ config: core_1.Flags.string({
168
+ char: 'c',
169
+ description: 'Path to config file (for database connection and AI settings)',
170
+ default: './config.json'
171
+ }),
172
+ 'queries-per-table': core_1.Flags.integer({
173
+ description: 'Number of queries to generate per table',
174
+ required: false
175
+ }),
176
+ 'max-execution-time': core_1.Flags.integer({
177
+ description: 'Maximum execution time for query validation (ms)',
178
+ required: false
179
+ })
180
+ };
181
+ exports.default = GenerateQueries;
182
+ //# sourceMappingURL=generate-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-queries.js","sourceRoot":"","sources":["../../src/commands/generate-queries.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
+ /**
2
+ * Init command - Initialize new project
3
+ */
1
4
  import { Command } from '@oclif/core';
2
5
  export default class Init extends Command {
3
6
  static description: string;
4
7
  static examples: string[];
5
- static flags: {
6
- interactive: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- connection: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
- };
9
8
  run(): Promise<void>;
10
9
  }
11
10
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAS7C,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,SAA+C;IAEjE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+H3B"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAMtC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,OAAO;IACvC,MAAM,CAAC,WAAW,SAAwC;IAE1D,MAAM,CAAC,QAAQ,WAA0B;IAEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyN3B"}
@@ -1,163 +1,225 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
2
+ /**
3
+ * Init command - Initialize new project
4
+ */
25
5
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
7
  };
28
8
  Object.defineProperty(exports, "__esModule", { value: true });
29
9
  const core_1 = require("@oclif/core");
30
- const prompts_1 = require("@inquirer/prompts");
31
- const ora_1 = __importDefault(require("ora"));
32
- const fs = __importStar(require("fs/promises"));
33
- const path = __importStar(require("path"));
34
- const connection_1 = require("../database/connection");
35
- const state_manager_1 = require("../state/state-manager");
10
+ const inquirer_1 = __importDefault(require("inquirer"));
36
11
  const chalk_1 = __importDefault(require("chalk"));
12
+ const config_loader_js_1 = require("../utils/config-loader.js");
13
+ const Database_js_1 = require("../database/Database.js");
37
14
  class Init extends core_1.Command {
38
15
  async run() {
39
- const { flags } = await this.parse(Init);
40
- this.log(chalk_1.default.blue.bold('\n🚀 SQL Server Database Documentation Generator\n'));
41
- try {
42
- let server;
43
- let database;
44
- let user;
45
- let pwd;
46
- if (flags.interactive && !flags.connection) {
47
- server = await (0, prompts_1.input)({
48
- message: 'Database server:',
49
- default: 'localhost',
50
- });
51
- database = await (0, prompts_1.input)({
52
- message: 'Database name:',
53
- validate: (val) => (val ? true : 'Database name required'),
54
- });
55
- user = await (0, prompts_1.input)({
56
- message: 'Username:',
57
- default: 'sa',
58
- });
59
- pwd = await (0, prompts_1.password)({
60
- message: 'Password:',
61
- mask: '*',
62
- });
16
+ this.log(chalk_1.default.blue('DBAutoDoc Initialization\n'));
17
+ // Database configuration
18
+ const dbAnswers = await inquirer_1.default.prompt([
19
+ {
20
+ type: 'input',
21
+ name: 'server',
22
+ message: 'SQL Server host:',
23
+ default: 'localhost'
24
+ },
25
+ {
26
+ type: 'input',
27
+ name: 'database',
28
+ message: 'Database name:',
29
+ validate: (input) => input.length > 0 || 'Database name is required'
30
+ },
31
+ {
32
+ type: 'input',
33
+ name: 'user',
34
+ message: 'Username:',
35
+ default: 'sa'
36
+ },
37
+ {
38
+ type: 'password',
39
+ name: 'password',
40
+ message: 'Password:',
41
+ mask: '*'
42
+ },
43
+ {
44
+ type: 'confirm',
45
+ name: 'encrypt',
46
+ message: 'Use encryption?',
47
+ default: true
48
+ },
49
+ {
50
+ type: 'confirm',
51
+ name: 'trustServerCertificate',
52
+ message: 'Trust server certificate?',
53
+ default: false
63
54
  }
64
- else if (flags.connection) {
65
- // Parse connection string (simplified)
66
- server = process.env.DB_SERVER || 'localhost';
67
- database = process.env.DB_DATABASE || '';
68
- user = process.env.DB_USER || 'sa';
69
- pwd = process.env.DB_PASSWORD || '';
70
- }
71
- else {
72
- server = process.env.DB_SERVER || 'localhost';
73
- database = process.env.DB_DATABASE || '';
74
- user = process.env.DB_USER || 'sa';
75
- pwd = process.env.DB_PASSWORD || '';
55
+ ]);
56
+ // Test connection
57
+ this.log(chalk_1.default.yellow('\nTesting database connection...'));
58
+ const dbConfig = {
59
+ provider: 'sqlserver',
60
+ host: dbAnswers.server,
61
+ database: dbAnswers.database,
62
+ user: dbAnswers.user,
63
+ password: dbAnswers.password,
64
+ encrypt: dbAnswers.encrypt,
65
+ trustServerCertificate: dbAnswers.trustServerCertificate
66
+ };
67
+ const db = new Database_js_1.DatabaseConnection(dbConfig);
68
+ const testResult = await db.test();
69
+ await db.close();
70
+ if (!testResult.success) {
71
+ this.error(`Connection failed: ${testResult.message}`);
72
+ return;
73
+ }
74
+ this.log(chalk_1.default.green('✓ Database connection successful!\n'));
75
+ // AI configuration
76
+ const aiAnswers = await inquirer_1.default.prompt([
77
+ {
78
+ type: 'list',
79
+ name: 'provider',
80
+ message: 'AI Provider:',
81
+ choices: ['openai', 'anthropic', 'groq']
82
+ },
83
+ {
84
+ type: 'input',
85
+ name: 'model',
86
+ message: 'Model name:',
87
+ default: (answers) => {
88
+ if (answers.provider === 'openai')
89
+ return 'gpt-4-turbo-preview';
90
+ if (answers.provider === 'anthropic')
91
+ return 'claude-3-opus-20240229';
92
+ if (answers.provider === 'groq')
93
+ return 'mixtral-8x7b-32768';
94
+ return '';
95
+ }
96
+ },
97
+ {
98
+ type: 'password',
99
+ name: 'apiKey',
100
+ message: 'API Key:',
101
+ mask: '*',
102
+ validate: (input) => input.length > 0 || 'API key is required'
76
103
  }
77
- // Test connection
78
- const spinner = (0, ora_1.default)('Testing database connection...').start();
79
- const connection = new connection_1.DatabaseConnection({
80
- server,
81
- database,
82
- user,
83
- password: pwd,
84
- encrypt: true,
85
- trustServerCertificate: true,
86
- });
87
- const connected = await connection.test();
88
- if (!connected) {
89
- spinner.fail('Connection failed');
90
- this.exit(1);
104
+ ]);
105
+ // Optional seed context
106
+ const contextAnswers = await inquirer_1.default.prompt([
107
+ {
108
+ type: 'confirm',
109
+ name: 'addContext',
110
+ message: 'Add seed context for better analysis?',
111
+ default: true
112
+ },
113
+ {
114
+ type: 'input',
115
+ name: 'overallPurpose',
116
+ message: 'Database overall purpose (e.g., "E-commerce platform"):',
117
+ when: (answers) => answers.addContext
118
+ },
119
+ {
120
+ type: 'input',
121
+ name: 'businessDomains',
122
+ message: 'Business domains (comma-separated, e.g., "Sales, Inventory, Billing"):',
123
+ when: (answers) => answers.addContext
124
+ },
125
+ {
126
+ type: 'input',
127
+ name: 'industryContext',
128
+ message: 'Industry context (e.g., "Healthcare", "Finance"):',
129
+ when: (answers) => answers.addContext
91
130
  }
92
- spinner.succeed('Connection successful');
93
- // Create .env file
94
- const envPath = path.join(process.cwd(), '.env');
95
- const envContent = `
96
- # Database Connection
97
- DB_SERVER=${server}
98
- DB_DATABASE=${database}
99
- DB_USER=${user}
100
- DB_PASSWORD=${pwd}
101
- DB_ENCRYPT=true
102
- DB_TRUST_SERVER_CERTIFICATE=true
103
-
104
- # AI Configuration
105
- AI_PROVIDER=openai
106
- AI_MODEL=gpt-4
107
- AI_API_KEY=your-api-key-here
108
- `.trim();
109
- await fs.writeFile(envPath, envContent);
110
- this.log(chalk_1.default.green('✓ Created .env file'));
111
- // Create state file
112
- const stateManager = new state_manager_1.StateManager();
113
- await stateManager.reset(server, database);
114
- this.log(chalk_1.default.green('✓ Created db-doc-state.json'));
115
- // Ask seed questions
116
- if (flags.interactive) {
117
- const addSeed = await (0, prompts_1.confirm)({
118
- message: 'Would you like to provide seed context?',
119
- default: true,
120
- });
121
- if (addSeed) {
122
- const purpose = await (0, prompts_1.input)({
123
- message: 'Overall database purpose:',
124
- });
125
- const domains = await (0, prompts_1.input)({
126
- message: 'Business domains (comma-separated):',
127
- });
128
- const state = stateManager.getState();
129
- state.seedContext = {
130
- overallPurpose: purpose,
131
- businessDomains: domains.split(',').map((d) => d.trim()),
132
- };
133
- await stateManager.save();
134
- this.log(chalk_1.default.green('✓ Saved seed context'));
135
- }
131
+ ]);
132
+ // Sample query generation options
133
+ const queryAnswers = await inquirer_1.default.prompt([
134
+ {
135
+ type: 'confirm',
136
+ name: 'enableSampleQueries',
137
+ message: 'Generate sample queries for each table?',
138
+ default: false
139
+ },
140
+ {
141
+ type: 'number',
142
+ name: 'queriesPerTable',
143
+ message: 'Number of queries to generate per table:',
144
+ default: 5,
145
+ when: (answers) => answers.enableSampleQueries,
146
+ validate: (input) => input > 0 || 'Must be greater than 0'
147
+ },
148
+ {
149
+ type: 'number',
150
+ name: 'maxTables',
151
+ message: 'Max number of tables to generate queries for (0 = all tables):',
152
+ default: 10,
153
+ when: (answers) => answers.enableSampleQueries,
154
+ validate: (input) => input >= 0 || 'Must be 0 or greater'
155
+ },
156
+ {
157
+ type: 'number',
158
+ name: 'tokenBudget',
159
+ message: 'Token budget for query generation (0 = unlimited):',
160
+ default: 100000,
161
+ when: (answers) => answers.enableSampleQueries,
162
+ validate: (input) => input >= 0 || 'Must be 0 or greater'
163
+ },
164
+ {
165
+ type: 'number',
166
+ name: 'maxExecutionTime',
167
+ message: 'Max execution time for query validation (ms):',
168
+ default: 30000,
169
+ when: (answers) => answers.enableSampleQueries
136
170
  }
137
- this.log(chalk_1.default.green.bold('\n✅ Initialization complete!\n'));
138
- this.log('Next steps:');
139
- this.log(' 1. Edit .env and add your AI API key');
140
- this.log(' 2. Run: db-auto-doc analyze');
141
- await connection.close();
171
+ ]);
172
+ // Create configuration
173
+ const config = config_loader_js_1.ConfigLoader.createDefault();
174
+ // Update with user inputs
175
+ config.database = {
176
+ server: dbAnswers.server,
177
+ port: 1433,
178
+ database: dbAnswers.database,
179
+ user: dbAnswers.user,
180
+ password: dbAnswers.password,
181
+ encrypt: dbAnswers.encrypt,
182
+ trustServerCertificate: dbAnswers.trustServerCertificate,
183
+ connectionTimeout: 30000
184
+ };
185
+ config.ai = {
186
+ provider: aiAnswers.provider,
187
+ model: aiAnswers.model,
188
+ apiKey: aiAnswers.apiKey,
189
+ temperature: 0.1,
190
+ maxTokens: 4000
191
+ };
192
+ if (contextAnswers.addContext) {
193
+ config['seedContext'] = {
194
+ overallPurpose: contextAnswers.overallPurpose || undefined,
195
+ businessDomains: contextAnswers.businessDomains
196
+ ? contextAnswers.businessDomains.split(',').map((d) => d.trim())
197
+ : undefined,
198
+ industryContext: contextAnswers.industryContext || undefined
199
+ };
142
200
  }
143
- catch (error) {
144
- this.error(error.message);
201
+ // Add sample query generation config if enabled
202
+ if (queryAnswers.enableSampleQueries) {
203
+ config.analysis.sampleQueryGeneration = {
204
+ enabled: true,
205
+ queriesPerTable: queryAnswers.queriesPerTable || 5,
206
+ maxExecutionTime: queryAnswers.maxExecutionTime || 30000,
207
+ includeMultiQueryPatterns: true,
208
+ validateAlignment: true,
209
+ tokenBudget: queryAnswers.tokenBudget !== undefined ? queryAnswers.tokenBudget : 100000,
210
+ maxRowsInSample: 10,
211
+ maxTables: queryAnswers.maxTables !== undefined ? queryAnswers.maxTables : 10
212
+ };
145
213
  }
214
+ // Save configuration
215
+ await config_loader_js_1.ConfigLoader.save(config, './config.json');
216
+ this.log(chalk_1.default.green('\n✓ Configuration saved to config.json'));
217
+ this.log(chalk_1.default.blue('\nNext steps:'));
218
+ this.log(' 1. Run: db-auto-doc analyze');
219
+ this.log(' 2. Run: db-auto-doc export --sql --markdown');
146
220
  }
147
221
  }
148
- Init.description = 'Initialize database documentation project';
149
- Init.examples = [
150
- '<%= config.bin %> <%= command.id %>',
151
- '<%= config.bin %> <%= command.id %> --interactive',
152
- ];
153
- Init.flags = {
154
- interactive: core_1.Flags.boolean({
155
- description: 'Interactive setup',
156
- default: true,
157
- }),
158
- connection: core_1.Flags.string({
159
- description: 'Connection string (skip prompts)',
160
- }),
161
- };
222
+ Init.description = 'Initialize a new DBAutoDoc project';
223
+ Init.examples = ['$ db-auto-doc init'];
162
224
  exports.default = Init;
163
225
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}