@memberjunction/db-auto-doc 2.116.0 → 2.118.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +652 -165
  2. package/bin/run.js +7 -0
  3. package/dist/api/DBAutoDocAPI.d.ts +252 -0
  4. package/dist/api/DBAutoDocAPI.d.ts.map +1 -0
  5. package/dist/api/DBAutoDocAPI.js +530 -0
  6. package/dist/api/DBAutoDocAPI.js.map +1 -0
  7. package/dist/api/index.d.ts +7 -0
  8. package/dist/api/index.d.ts.map +1 -0
  9. package/dist/api/index.js +10 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/commands/analyze.d.ts +6 -4
  12. package/dist/commands/analyze.d.ts.map +1 -1
  13. package/dist/commands/analyze.js +58 -71
  14. package/dist/commands/analyze.js.map +1 -1
  15. package/dist/commands/export.d.ts +14 -4
  16. package/dist/commands/export.d.ts.map +1 -1
  17. package/dist/commands/export.js +156 -61
  18. package/dist/commands/export.js.map +1 -1
  19. package/dist/commands/init.d.ts +3 -4
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +155 -146
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/reset.d.ts +4 -1
  24. package/dist/commands/reset.d.ts.map +1 -1
  25. package/dist/commands/reset.js +33 -19
  26. package/dist/commands/reset.js.map +1 -1
  27. package/dist/commands/status.d.ts +10 -0
  28. package/dist/commands/status.d.ts.map +1 -0
  29. package/dist/commands/status.js +66 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/core/AnalysisEngine.d.ts +108 -0
  32. package/dist/core/AnalysisEngine.d.ts.map +1 -0
  33. package/dist/core/AnalysisEngine.js +716 -0
  34. package/dist/core/AnalysisEngine.js.map +1 -0
  35. package/dist/core/AnalysisOrchestrator.d.ts +37 -0
  36. package/dist/core/AnalysisOrchestrator.d.ts.map +1 -0
  37. package/dist/core/AnalysisOrchestrator.js +294 -0
  38. package/dist/core/AnalysisOrchestrator.js.map +1 -0
  39. package/dist/core/BackpropagationEngine.d.ts +32 -0
  40. package/dist/core/BackpropagationEngine.d.ts.map +1 -0
  41. package/dist/core/BackpropagationEngine.js +121 -0
  42. package/dist/core/BackpropagationEngine.js.map +1 -0
  43. package/dist/core/ConvergenceDetector.d.ts +27 -0
  44. package/dist/core/ConvergenceDetector.d.ts.map +1 -0
  45. package/dist/core/ConvergenceDetector.js +92 -0
  46. package/dist/core/ConvergenceDetector.js.map +1 -0
  47. package/dist/core/GuardrailsManager.d.ts +78 -0
  48. package/dist/core/GuardrailsManager.d.ts.map +1 -0
  49. package/dist/core/GuardrailsManager.js +367 -0
  50. package/dist/core/GuardrailsManager.js.map +1 -0
  51. package/dist/core/index.d.ts +7 -0
  52. package/dist/core/index.d.ts.map +1 -0
  53. package/dist/core/index.js +13 -0
  54. package/dist/core/index.js.map +1 -0
  55. package/dist/database/Database.d.ts +56 -0
  56. package/dist/database/Database.d.ts.map +1 -0
  57. package/dist/database/Database.js +172 -0
  58. package/dist/database/Database.js.map +1 -0
  59. package/dist/database/TopologicalSorter.d.ts +25 -0
  60. package/dist/database/TopologicalSorter.d.ts.map +1 -0
  61. package/dist/database/TopologicalSorter.js +150 -0
  62. package/dist/database/TopologicalSorter.js.map +1 -0
  63. package/dist/database/index.d.ts +6 -0
  64. package/dist/database/index.d.ts.map +1 -0
  65. package/dist/database/index.js +14 -0
  66. package/dist/database/index.js.map +1 -0
  67. package/dist/discovery/ColumnStatsCache.d.ts +91 -0
  68. package/dist/discovery/ColumnStatsCache.d.ts.map +1 -0
  69. package/dist/discovery/ColumnStatsCache.js +231 -0
  70. package/dist/discovery/ColumnStatsCache.js.map +1 -0
  71. package/dist/discovery/DiscoveryEngine.d.ts +100 -0
  72. package/dist/discovery/DiscoveryEngine.d.ts.map +1 -0
  73. package/dist/discovery/DiscoveryEngine.js +726 -0
  74. package/dist/discovery/DiscoveryEngine.js.map +1 -0
  75. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts +57 -0
  76. package/dist/discovery/DiscoveryTriggerAnalyzer.d.ts.map +1 -0
  77. package/dist/discovery/DiscoveryTriggerAnalyzer.js +186 -0
  78. package/dist/discovery/DiscoveryTriggerAnalyzer.js.map +1 -0
  79. package/dist/discovery/FKDetector.d.ts +47 -0
  80. package/dist/discovery/FKDetector.d.ts.map +1 -0
  81. package/dist/discovery/FKDetector.js +317 -0
  82. package/dist/discovery/FKDetector.js.map +1 -0
  83. package/dist/discovery/LLMDiscoveryValidator.d.ts +64 -0
  84. package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -0
  85. package/dist/discovery/LLMDiscoveryValidator.js +431 -0
  86. package/dist/discovery/LLMDiscoveryValidator.js.map +1 -0
  87. package/dist/discovery/LLMSanityChecker.d.ts +38 -0
  88. package/dist/discovery/LLMSanityChecker.d.ts.map +1 -0
  89. package/dist/discovery/LLMSanityChecker.js +156 -0
  90. package/dist/discovery/LLMSanityChecker.js.map +1 -0
  91. package/dist/discovery/PKDetector.d.ts +62 -0
  92. package/dist/discovery/PKDetector.d.ts.map +1 -0
  93. package/dist/discovery/PKDetector.js +436 -0
  94. package/dist/discovery/PKDetector.js.map +1 -0
  95. package/dist/discovery/index.d.ts +9 -0
  96. package/dist/discovery/index.d.ts.map +1 -0
  97. package/dist/discovery/index.js +25 -0
  98. package/dist/discovery/index.js.map +1 -0
  99. package/dist/drivers/BaseAutoDocDriver.d.ts +132 -0
  100. package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -0
  101. package/dist/drivers/BaseAutoDocDriver.js +121 -0
  102. package/dist/drivers/BaseAutoDocDriver.js.map +1 -0
  103. package/dist/drivers/MySQLDriver.d.ts +61 -0
  104. package/dist/drivers/MySQLDriver.d.ts.map +1 -0
  105. package/dist/drivers/MySQLDriver.js +668 -0
  106. package/dist/drivers/MySQLDriver.js.map +1 -0
  107. package/dist/drivers/PostgreSQLDriver.d.ts +65 -0
  108. package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -0
  109. package/dist/drivers/PostgreSQLDriver.js +704 -0
  110. package/dist/drivers/PostgreSQLDriver.js.map +1 -0
  111. package/dist/drivers/SQLServerDriver.d.ts +61 -0
  112. package/dist/drivers/SQLServerDriver.d.ts.map +1 -0
  113. package/dist/drivers/SQLServerDriver.js +667 -0
  114. package/dist/drivers/SQLServerDriver.js.map +1 -0
  115. package/dist/generators/CSVGenerator.d.ts +35 -0
  116. package/dist/generators/CSVGenerator.d.ts.map +1 -0
  117. package/dist/generators/CSVGenerator.js +154 -0
  118. package/dist/generators/CSVGenerator.js.map +1 -0
  119. package/dist/generators/HTMLGenerator.d.ts +29 -0
  120. package/dist/generators/HTMLGenerator.d.ts.map +1 -0
  121. package/dist/generators/HTMLGenerator.js +710 -0
  122. package/dist/generators/HTMLGenerator.js.map +1 -0
  123. package/dist/generators/MarkdownGenerator.d.ts +27 -0
  124. package/dist/generators/MarkdownGenerator.d.ts.map +1 -0
  125. package/dist/generators/MarkdownGenerator.js +361 -0
  126. package/dist/generators/MarkdownGenerator.js.map +1 -0
  127. package/dist/generators/MermaidGenerator.d.ts +35 -0
  128. package/dist/generators/MermaidGenerator.d.ts.map +1 -0
  129. package/dist/generators/MermaidGenerator.js +321 -0
  130. package/dist/generators/MermaidGenerator.js.map +1 -0
  131. package/dist/generators/ReportGenerator.d.ts +22 -0
  132. package/dist/generators/ReportGenerator.d.ts.map +1 -0
  133. package/dist/generators/ReportGenerator.js +176 -0
  134. package/dist/generators/ReportGenerator.js.map +1 -0
  135. package/dist/generators/SQLGenerator.d.ts +31 -0
  136. package/dist/generators/SQLGenerator.d.ts.map +1 -0
  137. package/dist/generators/SQLGenerator.js +168 -0
  138. package/dist/generators/SQLGenerator.js.map +1 -0
  139. package/dist/generators/index.d.ts +10 -0
  140. package/dist/generators/index.d.ts.map +1 -0
  141. package/dist/generators/index.js +19 -0
  142. package/dist/generators/index.js.map +1 -0
  143. package/dist/index.d.ts +11 -20
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +19 -20
  146. package/dist/index.js.map +1 -1
  147. package/dist/prompts/PromptEngine.d.ts +65 -0
  148. package/dist/prompts/PromptEngine.d.ts.map +1 -0
  149. package/dist/prompts/PromptEngine.js +282 -0
  150. package/dist/prompts/PromptEngine.js.map +1 -0
  151. package/dist/prompts/PromptFileLoader.d.ts +21 -0
  152. package/dist/prompts/PromptFileLoader.d.ts.map +1 -0
  153. package/dist/prompts/PromptFileLoader.js +74 -0
  154. package/dist/prompts/PromptFileLoader.js.map +1 -0
  155. package/dist/prompts/index.d.ts +6 -0
  156. package/dist/prompts/index.d.ts.map +1 -0
  157. package/dist/prompts/index.js +11 -0
  158. package/dist/prompts/index.js.map +1 -0
  159. package/dist/state/IterationTracker.d.ts +64 -0
  160. package/dist/state/IterationTracker.d.ts.map +1 -0
  161. package/dist/state/IterationTracker.js +136 -0
  162. package/dist/state/IterationTracker.js.map +1 -0
  163. package/dist/state/StateManager.d.ts +79 -0
  164. package/dist/state/StateManager.d.ts.map +1 -0
  165. package/dist/state/StateManager.js +348 -0
  166. package/dist/state/StateManager.js.map +1 -0
  167. package/dist/state/StateValidator.d.ts +24 -0
  168. package/dist/state/StateValidator.d.ts.map +1 -0
  169. package/dist/state/StateValidator.js +147 -0
  170. package/dist/state/StateValidator.js.map +1 -0
  171. package/dist/state/index.d.ts +7 -0
  172. package/dist/state/index.d.ts.map +1 -0
  173. package/dist/state/index.js +13 -0
  174. package/dist/state/index.js.map +1 -0
  175. package/dist/types/analysis.d.ts +76 -0
  176. package/dist/types/analysis.d.ts.map +1 -0
  177. package/dist/types/analysis.js +6 -0
  178. package/dist/types/analysis.js.map +1 -0
  179. package/dist/types/config.d.ts +132 -0
  180. package/dist/types/config.d.ts.map +1 -0
  181. package/dist/types/config.js +7 -0
  182. package/dist/types/config.js.map +1 -0
  183. package/dist/types/discovery.d.ts +277 -0
  184. package/dist/types/discovery.d.ts.map +1 -0
  185. package/dist/types/discovery.js +7 -0
  186. package/dist/types/discovery.js.map +1 -0
  187. package/dist/types/driver.d.ts +148 -0
  188. package/dist/types/driver.d.ts.map +1 -0
  189. package/dist/types/driver.js +7 -0
  190. package/dist/types/driver.js.map +1 -0
  191. package/dist/types/index.d.ts +8 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +24 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/prompts.d.ts +158 -0
  196. package/dist/types/prompts.d.ts.map +1 -0
  197. package/dist/types/prompts.js +6 -0
  198. package/dist/types/prompts.js.map +1 -0
  199. package/dist/types/state.d.ts +278 -0
  200. package/dist/types/state.d.ts.map +1 -0
  201. package/dist/types/state.js +7 -0
  202. package/dist/types/state.js.map +1 -0
  203. package/dist/utils/config-loader.d.ts +29 -0
  204. package/dist/utils/config-loader.d.ts.map +1 -0
  205. package/dist/utils/config-loader.js +163 -0
  206. package/dist/utils/config-loader.js.map +1 -0
  207. package/dist/utils/index.d.ts +5 -0
  208. package/dist/utils/index.d.ts.map +1 -0
  209. package/dist/utils/index.js +9 -0
  210. package/dist/utils/index.js.map +1 -0
  211. package/package.json +24 -3
  212. package/dist/ai/simple-ai-client.d.ts +0 -70
  213. package/dist/ai/simple-ai-client.d.ts.map +0 -1
  214. package/dist/ai/simple-ai-client.js +0 -181
  215. package/dist/ai/simple-ai-client.js.map +0 -1
  216. package/dist/analyzers/analyzer.d.ts +0 -23
  217. package/dist/analyzers/analyzer.d.ts.map +0 -1
  218. package/dist/analyzers/analyzer.js +0 -127
  219. package/dist/analyzers/analyzer.js.map +0 -1
  220. package/dist/cli-old/cli.d.ts +0 -3
  221. package/dist/cli-old/cli.d.ts.map +0 -1
  222. package/dist/cli-old/cli.js +0 -388
  223. package/dist/cli-old/cli.js.map +0 -1
  224. package/dist/commands/review.d.ts +0 -11
  225. package/dist/commands/review.d.ts.map +0 -1
  226. package/dist/commands/review.js +0 -82
  227. package/dist/commands/review.js.map +0 -1
  228. package/dist/database/connection.d.ts +0 -40
  229. package/dist/database/connection.d.ts.map +0 -1
  230. package/dist/database/connection.js +0 -136
  231. package/dist/database/connection.js.map +0 -1
  232. package/dist/database/introspection.d.ts +0 -59
  233. package/dist/database/introspection.d.ts.map +0 -1
  234. package/dist/database/introspection.js +0 -124
  235. package/dist/database/introspection.js.map +0 -1
  236. package/dist/generators/markdown-generator.d.ts +0 -8
  237. package/dist/generators/markdown-generator.d.ts.map +0 -1
  238. package/dist/generators/markdown-generator.js +0 -106
  239. package/dist/generators/markdown-generator.js.map +0 -1
  240. package/dist/generators/sql-generator.d.ts +0 -20
  241. package/dist/generators/sql-generator.d.ts.map +0 -1
  242. package/dist/generators/sql-generator.js +0 -83
  243. package/dist/generators/sql-generator.js.map +0 -1
  244. package/dist/state/state-manager.d.ts +0 -95
  245. package/dist/state/state-manager.d.ts.map +0 -1
  246. package/dist/state/state-manager.js +0 -236
  247. package/dist/state/state-manager.js.map +0 -1
  248. package/dist/types/state-file.d.ts +0 -124
  249. package/dist/types/state-file.d.ts.map +0 -1
  250. package/dist/types/state-file.js +0 -79
  251. package/dist/types/state-file.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Prompt-related types for DBAutoDoc
3
+ */
4
+ export interface PromptExecutionResult<T> {
5
+ success: boolean;
6
+ result?: T;
7
+ errorMessage?: string;
8
+ tokensUsed: number;
9
+ cost?: number;
10
+ promptInput?: string;
11
+ promptOutput?: string;
12
+ inputTokens?: number;
13
+ outputTokens?: number;
14
+ guardrailExceeded?: boolean;
15
+ }
16
+ export interface TableAnalysisPromptResult {
17
+ tableDescription: string;
18
+ reasoning: string;
19
+ confidence: number;
20
+ columnDescriptions: ColumnDescriptionPromptResult[];
21
+ foreignKeys?: ForeignKeyPromptResult[];
22
+ inferredBusinessDomain?: string;
23
+ parentTableInsights?: ParentTableInsight[];
24
+ }
25
+ export interface ForeignKeyPromptResult {
26
+ columnName: string;
27
+ referencesSchema: string;
28
+ referencesTable: string;
29
+ referencesColumn: string;
30
+ confidence: number;
31
+ }
32
+ export interface ParentTableInsight {
33
+ parentTable: string;
34
+ insight: string;
35
+ confidence: number;
36
+ }
37
+ export interface ColumnDescriptionPromptResult {
38
+ columnName: string;
39
+ description: string;
40
+ reasoning: string;
41
+ }
42
+ export interface BackpropagationPromptResult {
43
+ needsRevision: boolean;
44
+ revisedDescription?: string;
45
+ reasoning: string;
46
+ confidence: number;
47
+ }
48
+ export interface SchemaSanityCheckPromptResult {
49
+ schemaDescription: string;
50
+ inconsistencies: string[];
51
+ suggestions: string[];
52
+ }
53
+ export interface CrossSchemaSanityCheckPromptResult {
54
+ insights: string[];
55
+ globalPatterns: string[];
56
+ suggestions: string[];
57
+ }
58
+ export interface ConvergenceCheckPromptResult {
59
+ hasConverged: boolean;
60
+ reasoning: string;
61
+ recommendedActions: string[];
62
+ }
63
+ export interface SemanticComparisonPromptResult {
64
+ tableMateriallyChanged: boolean;
65
+ tableChangeReasoning: string;
66
+ columnChanges: ColumnChangeResult[];
67
+ }
68
+ export interface ColumnChangeResult {
69
+ columnName: string;
70
+ materiallyChanged: boolean;
71
+ changeReasoning: string;
72
+ }
73
+ export interface DependencyLevelSanityCheckResult {
74
+ hasMaterialIssues: boolean;
75
+ overallAssessment: string;
76
+ tableIssues: TableIssue[];
77
+ crossTableObservations: CrossTableObservation[];
78
+ }
79
+ export interface TableIssue {
80
+ tableName: string;
81
+ issueType: 'description' | 'business_purpose' | 'relationships' | 'terminology';
82
+ severity: 'high' | 'medium' | 'low';
83
+ description: string;
84
+ suggestedFix: string;
85
+ }
86
+ export interface CrossTableObservation {
87
+ tables: string[];
88
+ observation: string;
89
+ impact: string;
90
+ recommendation: string;
91
+ }
92
+ export interface SchemaLevelSanityCheckResult {
93
+ hasMaterialIssues: boolean;
94
+ schemaCoherence: 'excellent' | 'good' | 'fair' | 'poor';
95
+ overallAssessment: string;
96
+ schemaLevelIssues: SchemaLevelIssue[];
97
+ tableIssues: TableIssue[];
98
+ architecturalPatterns: ArchitecturalPattern[];
99
+ businessDomainSuggestions: BusinessDomainSuggestion[];
100
+ }
101
+ export interface SchemaLevelIssue {
102
+ issueType: 'consistency' | 'relationships' | 'business_domain' | 'naming' | 'architecture' | 'missing_pattern';
103
+ severity: 'high' | 'medium' | 'low';
104
+ description: string;
105
+ affectedTables: string[];
106
+ suggestedSchemaDescription?: string;
107
+ }
108
+ export interface ArchitecturalPattern {
109
+ pattern: 'audit_trail' | 'configuration' | 'lookup' | 'transaction' | 'versioning' | 'soft_delete' | 'hierarchy';
110
+ tables: string[];
111
+ description: string;
112
+ }
113
+ export interface BusinessDomainSuggestion {
114
+ suggestedDomain: string;
115
+ reasoning: string;
116
+ confidence: 'high' | 'medium' | 'low';
117
+ }
118
+ export interface CrossSchemaSanityCheckResult {
119
+ hasMaterialIssues: boolean;
120
+ overallConsistency: 'excellent' | 'good' | 'fair' | 'poor';
121
+ overallAssessment: string;
122
+ crossSchemaIssues: CrossSchemaIssue[];
123
+ terminologyConflicts: TerminologyConflict[];
124
+ schemaIssues: SchemaIssue[];
125
+ databaseLevelObservations: DatabaseLevelObservation[];
126
+ }
127
+ export interface CrossSchemaIssue {
128
+ issueType: 'terminology' | 'shared_tables' | 'relationships' | 'business_domains' | 'naming' | 'duplication';
129
+ severity: 'high' | 'medium' | 'low';
130
+ description: string;
131
+ affectedSchemas: string[];
132
+ affectedTables: Array<{
133
+ schema: string;
134
+ table: string;
135
+ }>;
136
+ suggestedResolution: string;
137
+ }
138
+ export interface TerminologyConflict {
139
+ term: string;
140
+ usages: Array<{
141
+ schema: string;
142
+ table: string;
143
+ meaning: string;
144
+ }>;
145
+ recommendedStandardization: string;
146
+ }
147
+ export interface SchemaIssue {
148
+ schemaName: string;
149
+ issueType: 'description' | 'business_domain' | 'relationships';
150
+ description: string;
151
+ suggestedFix: string;
152
+ }
153
+ export interface DatabaseLevelObservation {
154
+ observation: string;
155
+ impact: string;
156
+ recommendation: string;
157
+ }
158
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/types/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Prompt-related types for DBAutoDoc
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/types/prompts.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * State file format for DBAutoDoc
3
+ * Tracks all documentation, iterations, and analysis progress
4
+ */
5
+ import { RelationshipDiscoveryPhase, CachedColumnStats } from './discovery.js';
6
+ export interface DatabaseDocumentation {
7
+ version: string;
8
+ summary: AnalysisSummary;
9
+ database: DatabaseInfo;
10
+ seedContext?: SeedContext;
11
+ phases: AnalysisPhases;
12
+ schemas: SchemaDefinition[];
13
+ resumedFromFile?: string;
14
+ }
15
+ /**
16
+ * Summary of analysis with timing and high-level metrics
17
+ * Moved timing fields from top-level DatabaseDocumentation here
18
+ */
19
+ export interface AnalysisSummary {
20
+ createdAt: string;
21
+ lastModified: string;
22
+ totalIterations: number;
23
+ totalPromptsRun: number;
24
+ totalInputTokens: number;
25
+ totalOutputTokens: number;
26
+ totalTokens: number;
27
+ estimatedCost: number;
28
+ totalSchemas: number;
29
+ totalTables: number;
30
+ totalColumns: number;
31
+ }
32
+ export interface DatabaseInfo {
33
+ name: string;
34
+ server: string;
35
+ analyzedAt: string;
36
+ }
37
+ export interface SeedContext {
38
+ overallPurpose?: string;
39
+ businessDomains?: string[];
40
+ customInstructions?: string;
41
+ industryContext?: string;
42
+ }
43
+ /**
44
+ * Multi-phase workflow organization
45
+ * Each phase is optional and tracked separately
46
+ */
47
+ export interface AnalysisPhases {
48
+ keyDetection?: RelationshipDiscoveryPhase;
49
+ descriptionGeneration: AnalysisRun[];
50
+ }
51
+ export interface SchemaDefinition {
52
+ name: string;
53
+ tables: TableDefinition[];
54
+ description?: string;
55
+ descriptionIterations: DescriptionIteration[];
56
+ inferredPurpose?: string;
57
+ businessDomains?: string[];
58
+ }
59
+ export interface TableDefinition {
60
+ name: string;
61
+ rowCount: number;
62
+ dependencyLevel?: number;
63
+ dependsOn: ForeignKeyReference[];
64
+ dependents: ForeignKeyReference[];
65
+ columns: ColumnDefinition[];
66
+ description?: string;
67
+ descriptionIterations: DescriptionIteration[];
68
+ userNotes?: string;
69
+ userDescription?: string;
70
+ userApproved?: boolean;
71
+ }
72
+ export interface ColumnDefinition {
73
+ name: string;
74
+ dataType: string;
75
+ isNullable: boolean;
76
+ isPrimaryKey: boolean;
77
+ isForeignKey: boolean;
78
+ foreignKeyReferences?: ForeignKeyReference;
79
+ checkConstraint?: string;
80
+ defaultValue?: string;
81
+ possibleValues?: any[];
82
+ statistics?: ColumnStatistics;
83
+ description?: string;
84
+ descriptionIterations: DescriptionIteration[];
85
+ }
86
+ export interface ForeignKeyReference {
87
+ schema: string;
88
+ table: string;
89
+ column: string;
90
+ referencedColumn: string;
91
+ }
92
+ /**
93
+ * Column statistics merged from both discovery cache and description analysis
94
+ * Replaces separate ColumnStatisticsCache - now embedded in column definitions
95
+ */
96
+ export interface ColumnStatistics {
97
+ totalRows: number;
98
+ distinctCount: number;
99
+ uniquenessRatio: number;
100
+ nullCount: number;
101
+ nullPercentage: number;
102
+ dataPattern?: 'sequential' | 'guid' | 'composite' | 'natural' | 'unknown';
103
+ sampleValues: any[];
104
+ valueDistribution?: Array<{
105
+ value: string | number;
106
+ frequency: number;
107
+ }>;
108
+ min?: any;
109
+ max?: any;
110
+ minValue?: string | number;
111
+ maxValue?: string | number;
112
+ avg?: number;
113
+ stdDev?: number;
114
+ median?: number;
115
+ percentiles?: {
116
+ p25: number;
117
+ p50: number;
118
+ p75: number;
119
+ p95: number;
120
+ };
121
+ avgLength?: number;
122
+ maxLength?: number;
123
+ minLength?: number;
124
+ commonPrefixes?: string[];
125
+ formatPattern?: string;
126
+ containsUrls?: boolean;
127
+ containsEmails?: boolean;
128
+ containsPhones?: boolean;
129
+ computedAt?: string;
130
+ queryTimeMs?: number;
131
+ }
132
+ export interface DescriptionIteration {
133
+ description: string;
134
+ reasoning: string;
135
+ generatedAt: string;
136
+ modelUsed: string;
137
+ confidence?: number;
138
+ triggeredBy?: 'initial' | 'backpropagation' | 'refinement' | 'dependency_sanity_check' | 'schema_sanity_check' | 'cross_schema_sanity_check';
139
+ changedFrom?: string;
140
+ }
141
+ export interface AnalysisRun {
142
+ runId: string;
143
+ startedAt: string;
144
+ completedAt?: string;
145
+ status: 'in_progress' | 'completed' | 'failed' | 'converged';
146
+ levelsProcessed: number;
147
+ iterationsPerformed: number;
148
+ backpropagationCount: number;
149
+ sanityCheckCount: number;
150
+ converged: boolean;
151
+ convergenceReason?: string;
152
+ modelUsed: string;
153
+ vendor: string;
154
+ temperature: number;
155
+ topP?: number;
156
+ topK?: number;
157
+ totalTokensUsed: number;
158
+ estimatedCost: number;
159
+ warnings: string[];
160
+ errors: string[];
161
+ processingLog: ProcessingLogEntry[];
162
+ sanityChecks: SanityCheckRecord[];
163
+ resumedFromFile?: string;
164
+ resumedAt?: string;
165
+ phaseMetrics?: PhaseMetrics;
166
+ iterationMetrics?: IterationMetrics[];
167
+ guardrailsEnforced?: GuardrailEnforcement;
168
+ }
169
+ /**
170
+ * Per-phase token and cost metrics for granular guardrail enforcement
171
+ */
172
+ export interface PhaseMetrics {
173
+ discovery?: PhaseMetric;
174
+ analysis?: PhaseMetric;
175
+ sanityChecks?: PhaseMetric;
176
+ }
177
+ export interface PhaseMetric {
178
+ startedAt: string;
179
+ completedAt?: string;
180
+ tokensUsed: number;
181
+ estimatedCost: number;
182
+ warned?: boolean;
183
+ exceeded?: boolean;
184
+ }
185
+ /**
186
+ * Per-iteration metrics for detecting iteration-level resource exhaustion
187
+ */
188
+ export interface IterationMetrics {
189
+ iterationNumber: number;
190
+ startedAt: string;
191
+ completedAt?: string;
192
+ tokensUsed: number;
193
+ estimatedCost: number;
194
+ duration: number;
195
+ warned?: boolean;
196
+ }
197
+ /**
198
+ * Information about guardrails that were enforced or triggered
199
+ */
200
+ export interface GuardrailEnforcement {
201
+ exceedances: GuardrailExceeded[];
202
+ warnings: GuardrailWarning[];
203
+ stoppedDueToGuardrails?: boolean;
204
+ stoppedReason?: string;
205
+ }
206
+ export interface GuardrailExceeded {
207
+ type: 'tokens_per_run' | 'tokens_per_phase' | 'tokens_per_iteration' | 'duration' | 'cost' | 'iteration_duration';
208
+ phase?: string;
209
+ iteration?: number;
210
+ limit: number;
211
+ actual: number;
212
+ unit: string;
213
+ }
214
+ export interface GuardrailWarning {
215
+ type: string;
216
+ phase?: string;
217
+ iteration?: number;
218
+ percentage: number;
219
+ message: string;
220
+ }
221
+ export interface ProcessingLogEntry {
222
+ timestamp: string;
223
+ level: number;
224
+ schema: string;
225
+ table: string;
226
+ action: 'analyze' | 'backpropagate' | 'dependency_sanity_check' | 'schema_sanity_check' | 'cross_schema_sanity_check';
227
+ result: 'success' | 'changed' | 'unchanged' | 'error';
228
+ message?: string;
229
+ tokensUsed?: number;
230
+ promptInput?: string;
231
+ promptOutput?: string;
232
+ inputTokens?: number;
233
+ outputTokens?: number;
234
+ semanticComparison?: {
235
+ tableMateriallyChanged: boolean;
236
+ tableChangeReasoning: string;
237
+ columnChanges: Array<{
238
+ columnName: string;
239
+ materiallyChanged: boolean;
240
+ changeReasoning: string;
241
+ }>;
242
+ };
243
+ }
244
+ export interface SanityCheckRecord {
245
+ timestamp: string;
246
+ checkType: 'dependency_level' | 'schema_level' | 'cross_schema';
247
+ scope: string;
248
+ hasMaterialIssues: boolean;
249
+ issuesFound: number;
250
+ tablesAffected: string[];
251
+ result: 'no_issues' | 'issues_corrected' | 'issues_flagged';
252
+ tokensUsed: number;
253
+ promptInput?: string;
254
+ promptOutput?: string;
255
+ }
256
+ /**
257
+ * DEPRECATED: ColumnStatisticsCache is no longer used
258
+ * Statistics are now embedded directly in ColumnDefinition.statistics
259
+ * This type remains for backward compatibility with old state files
260
+ */
261
+ export interface ColumnStatisticsCache {
262
+ computedAt: string;
263
+ totalSchemas: number;
264
+ totalTables: number;
265
+ totalColumns: number;
266
+ tables: Record<string, TableStatisticsEntry>;
267
+ }
268
+ /**
269
+ * DEPRECATED: TableStatisticsEntry is no longer used
270
+ * This type remains for backward compatibility with old state files
271
+ */
272
+ export interface TableStatisticsEntry {
273
+ schemaName: string;
274
+ tableName: string;
275
+ totalRows: number;
276
+ columns: CachedColumnStats[];
277
+ }
278
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * State file format for DBAutoDoc
4
+ * Tracks all documentation, iterations, and analysis progress
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Configuration loading utilities
3
+ */
4
+ import { DBAutoDocConfig } from '../types/config.js';
5
+ export declare class ConfigLoader {
6
+ /**
7
+ * Load configuration from file
8
+ * Supports environment variable expansion using ${ENV_VAR} syntax
9
+ */
10
+ static load(configPath: string): Promise<DBAutoDocConfig>;
11
+ /**
12
+ * Expand environment variables in string
13
+ * Supports ${VAR_NAME} syntax
14
+ */
15
+ private static expandEnvVars;
16
+ /**
17
+ * Save configuration to file
18
+ */
19
+ static save(config: DBAutoDocConfig, configPath: string): Promise<void>;
20
+ /**
21
+ * Create default configuration
22
+ */
23
+ static createDefault(): DBAutoDocConfig;
24
+ /**
25
+ * Validate configuration
26
+ */
27
+ private static validate;
28
+ }
29
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,YAAY;IACvB;;;OAGG;WACiB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBtE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAU5B;;OAEG;WACiB,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpF;;OAEG;WACW,aAAa,IAAI,eAAe;IAuD9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CA6BxB"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration loading utilities
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
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ConfigLoader = void 0;
30
+ const fs = __importStar(require("fs/promises"));
31
+ const path = __importStar(require("path"));
32
+ class ConfigLoader {
33
+ /**
34
+ * Load configuration from file
35
+ * Supports environment variable expansion using ${ENV_VAR} syntax
36
+ */
37
+ static async load(configPath) {
38
+ try {
39
+ const content = await fs.readFile(configPath, 'utf-8');
40
+ // Expand environment variables in the content
41
+ const expandedContent = this.expandEnvVars(content);
42
+ const config = JSON.parse(expandedContent);
43
+ // Validate required fields
44
+ this.validate(config);
45
+ return config;
46
+ }
47
+ catch (error) {
48
+ throw new Error(`Failed to load configuration: ${error.message}`);
49
+ }
50
+ }
51
+ /**
52
+ * Expand environment variables in string
53
+ * Supports ${VAR_NAME} syntax
54
+ */
55
+ static expandEnvVars(content) {
56
+ return content.replace(/\$\{([^}]+)\}/g, (match, varName) => {
57
+ const value = process.env[varName];
58
+ if (value === undefined) {
59
+ throw new Error(`Environment variable ${varName} is not defined`);
60
+ }
61
+ return value;
62
+ });
63
+ }
64
+ /**
65
+ * Save configuration to file
66
+ */
67
+ static async save(config, configPath) {
68
+ try {
69
+ const dir = path.dirname(configPath);
70
+ await fs.mkdir(dir, { recursive: true });
71
+ const content = JSON.stringify(config, null, 2);
72
+ await fs.writeFile(configPath, content, 'utf-8');
73
+ }
74
+ catch (error) {
75
+ throw new Error(`Failed to save configuration: ${error.message}`);
76
+ }
77
+ }
78
+ /**
79
+ * Create default configuration
80
+ */
81
+ static createDefault() {
82
+ return {
83
+ version: '1.0.0',
84
+ database: {
85
+ server: 'localhost',
86
+ port: 1433,
87
+ database: '',
88
+ user: '',
89
+ password: '',
90
+ encrypt: true,
91
+ trustServerCertificate: false,
92
+ connectionTimeout: 30000
93
+ },
94
+ ai: {
95
+ provider: 'openai',
96
+ model: 'gpt-4-turbo-preview',
97
+ apiKey: '',
98
+ temperature: 0.1,
99
+ maxTokens: 4000
100
+ },
101
+ analysis: {
102
+ cardinalityThreshold: 20,
103
+ sampleSize: 10,
104
+ includeStatistics: true,
105
+ includePatternAnalysis: true,
106
+ convergence: {
107
+ maxIterations: 10,
108
+ stabilityWindow: 2,
109
+ confidenceThreshold: 0.85
110
+ },
111
+ backpropagation: {
112
+ enabled: true,
113
+ maxDepth: 3
114
+ },
115
+ sanityChecks: {
116
+ dependencyLevel: true,
117
+ schemaLevel: true,
118
+ crossSchema: true
119
+ }
120
+ },
121
+ output: {
122
+ stateFile: './db-doc-state.json',
123
+ sqlFile: './output/add-descriptions.sql',
124
+ markdownFile: './output/database-documentation.md'
125
+ },
126
+ schemas: {
127
+ include: [],
128
+ exclude: ['sys', 'INFORMATION_SCHEMA']
129
+ },
130
+ tables: {
131
+ exclude: ['sysdiagrams', '__MigrationHistory']
132
+ }
133
+ };
134
+ }
135
+ /**
136
+ * Validate configuration
137
+ */
138
+ static validate(config) {
139
+ if (!config.database) {
140
+ throw new Error('Missing database configuration');
141
+ }
142
+ if (!config.database.server) {
143
+ throw new Error('Missing database.server');
144
+ }
145
+ if (!config.database.database) {
146
+ throw new Error('Missing database.database');
147
+ }
148
+ if (!config.ai) {
149
+ throw new Error('Missing AI configuration');
150
+ }
151
+ if (!config.ai.provider) {
152
+ throw new Error('Missing ai.provider');
153
+ }
154
+ if (!config.ai.model) {
155
+ throw new Error('Missing ai.model');
156
+ }
157
+ if (!config.ai.apiKey) {
158
+ throw new Error('Missing ai.apiKey');
159
+ }
160
+ }
161
+ }
162
+ exports.ConfigLoader = ConfigLoader;
163
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}