@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,92 @@
1
+ "use strict";
2
+ /**
3
+ * Determines when analysis has converged
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ConvergenceDetector = void 0;
7
+ class ConvergenceDetector {
8
+ constructor(config, stateManager, iterationTracker) {
9
+ this.config = config;
10
+ this.stateManager = stateManager;
11
+ this.iterationTracker = iterationTracker;
12
+ }
13
+ /**
14
+ * Check if analysis has converged
15
+ */
16
+ hasConverged(state, run) {
17
+ const reasons = [];
18
+ // 1. Check max iterations
19
+ if (run.iterationsPerformed >= this.config.maxIterations) {
20
+ return {
21
+ converged: true,
22
+ reason: `Reached maximum iteration limit (${this.config.maxIterations})`,
23
+ iterationsPerformed: run.iterationsPerformed,
24
+ suggestions: ['Consider increasing maxIterations if results are unsatisfactory']
25
+ };
26
+ }
27
+ // 2. Check stability window (no changes in last N iterations)
28
+ if (run.iterationsPerformed >= 2) {
29
+ const hasChanges = this.hasRecentChanges(run, this.config.stabilityWindow);
30
+ if (!hasChanges) {
31
+ reasons.push(`No changes in last ${this.config.stabilityWindow} iterations (stability achieved)`);
32
+ }
33
+ }
34
+ // 3. Check confidence threshold
35
+ const lowConfidenceTables = this.stateManager.getLowConfidenceTables(state, this.config.confidenceThreshold);
36
+ if (lowConfidenceTables.length === 0 && run.iterationsPerformed >= 1) {
37
+ reasons.push(`All tables meet confidence threshold (${this.config.confidenceThreshold})`);
38
+ }
39
+ // Converged if we have at least 2 reasons and minimum iterations
40
+ if (reasons.length >= 2 && run.iterationsPerformed >= 2) {
41
+ return {
42
+ converged: true,
43
+ reason: reasons.join('; '),
44
+ iterationsPerformed: run.iterationsPerformed
45
+ };
46
+ }
47
+ // Not yet converged
48
+ const suggestions = [];
49
+ if (lowConfidenceTables.length > 0) {
50
+ suggestions.push(`${lowConfidenceTables.length} tables below confidence threshold - needs more iteration`);
51
+ }
52
+ if (run.iterationsPerformed < 2) {
53
+ suggestions.push('Minimum 2 iterations required before convergence check');
54
+ }
55
+ return {
56
+ converged: false,
57
+ reason: 'Analysis still evolving',
58
+ iterationsPerformed: run.iterationsPerformed,
59
+ suggestions
60
+ };
61
+ }
62
+ /**
63
+ * Check if there were changes in recent iterations
64
+ */
65
+ hasRecentChanges(run, windowSize) {
66
+ // Get log entries from last window
67
+ const logsPerIteration = Math.ceil(run.processingLog.length / run.iterationsPerformed);
68
+ const windowLogs = run.processingLog.slice(-(windowSize * logsPerIteration));
69
+ return windowLogs.some(entry => entry.result === 'changed');
70
+ }
71
+ /**
72
+ * Calculate average confidence across all tables
73
+ */
74
+ calculateAverageConfidence(state) {
75
+ let totalConfidence = 0;
76
+ let count = 0;
77
+ for (const schema of state.schemas) {
78
+ for (const table of schema.tables) {
79
+ if (table.descriptionIterations.length > 0) {
80
+ const latest = table.descriptionIterations[table.descriptionIterations.length - 1];
81
+ if (latest.confidence !== undefined) {
82
+ totalConfidence += latest.confidence;
83
+ count++;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ return count > 0 ? totalConfidence / count : 0;
89
+ }
90
+ }
91
+ exports.ConvergenceDetector = ConvergenceDetector;
92
+ //# sourceMappingURL=ConvergenceDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConvergenceDetector.js","sourceRoot":"","sources":["../../src/core/ConvergenceDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Manages granular guardrails enforcement for DBAutoDoc analysis
3
+ *
4
+ * Supports:
5
+ * - Per-phase token limits (discovery, analysis, sanity checks)
6
+ * - Per-iteration token and duration limits
7
+ * - Cost-based limits with configurable thresholds
8
+ * - Configurable warning thresholds at percentages of limits
9
+ * - Detailed tracking of exceedances and warnings
10
+ */
11
+ import { GuardrailsConfig } from '../types/config.js';
12
+ import { AnalysisRun, GuardrailExceeded, GuardrailWarning } from '../types/state.js';
13
+ export type PhaseType = 'discovery' | 'analysis' | 'sanityChecks';
14
+ export interface GuardrailCheckResult {
15
+ canContinue: boolean;
16
+ warning?: string;
17
+ reason?: string;
18
+ warnings?: GuardrailWarning[];
19
+ exceedances?: GuardrailExceeded[];
20
+ }
21
+ export declare class GuardrailsManager {
22
+ private config;
23
+ private startTime;
24
+ private phaseStartTimes;
25
+ private currentPhase?;
26
+ private currentIteration;
27
+ private iterationStartTime?;
28
+ constructor(config?: GuardrailsConfig);
29
+ /**
30
+ * Begin tracking a new phase
31
+ */
32
+ startPhase(phase: PhaseType): void;
33
+ /**
34
+ * End tracking current phase and record metrics
35
+ */
36
+ endPhase(run: AnalysisRun, phase: PhaseType): void;
37
+ /**
38
+ * Start tracking a new iteration
39
+ */
40
+ startIteration(iteration: number): void;
41
+ /**
42
+ * End tracking current iteration and record metrics
43
+ */
44
+ endIteration(run: AnalysisRun, iteration: number): void;
45
+ /**
46
+ * Check all guardrails and return enforcement status
47
+ */
48
+ checkGuardrails(run: AnalysisRun): GuardrailCheckResult;
49
+ /**
50
+ * Record guardrail enforcement in the run
51
+ */
52
+ recordEnforcement(run: AnalysisRun, result: GuardrailCheckResult): void;
53
+ /**
54
+ * Get tokens used in a specific phase
55
+ */
56
+ private getPhaseTokens;
57
+ /**
58
+ * Get estimated cost for a specific phase
59
+ */
60
+ private getPhaseCost;
61
+ /**
62
+ * Get tokens used in current iteration
63
+ */
64
+ private getCurrentIterationTokens;
65
+ /**
66
+ * Create a stop result with warnings and exceedances
67
+ */
68
+ private createStopResult;
69
+ /**
70
+ * Get current elapsed time in seconds
71
+ */
72
+ getElapsedSeconds(): number;
73
+ /**
74
+ * Get current phase token budget (remaining tokens)
75
+ */
76
+ getPhaseTokenBudgetRemaining(phase: PhaseType): number | undefined;
77
+ }
78
+ //# sourceMappingURL=GuardrailsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardrailsManager.d.ts","sourceRoot":"","sources":["../../src/core/GuardrailsManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAqE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExJ,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAS;gBAExB,MAAM,CAAC,EAAE,gBAAgB;IAKrC;;OAEG;IACI,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKzC;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IA0BzD;;OAEG;IACI,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK9C;;OAEG;IACI,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAqB9D;;OAEG;IACI,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,oBAAoB;IA+N9D;;OAEG;IACI,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAuB9E;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACI,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACI,4BAA4B,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;CAU1E"}
@@ -0,0 +1,367 @@
1
+ "use strict";
2
+ /**
3
+ * Manages granular guardrails enforcement for DBAutoDoc analysis
4
+ *
5
+ * Supports:
6
+ * - Per-phase token limits (discovery, analysis, sanity checks)
7
+ * - Per-iteration token and duration limits
8
+ * - Cost-based limits with configurable thresholds
9
+ * - Configurable warning thresholds at percentages of limits
10
+ * - Detailed tracking of exceedances and warnings
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.GuardrailsManager = void 0;
14
+ class GuardrailsManager {
15
+ constructor(config) {
16
+ this.phaseStartTimes = new Map();
17
+ this.currentIteration = 0;
18
+ this.config = config || {};
19
+ this.startTime = Date.now();
20
+ }
21
+ /**
22
+ * Begin tracking a new phase
23
+ */
24
+ startPhase(phase) {
25
+ this.currentPhase = phase;
26
+ this.phaseStartTimes.set(phase, Date.now());
27
+ }
28
+ /**
29
+ * End tracking current phase and record metrics
30
+ */
31
+ endPhase(run, phase) {
32
+ if (!run.phaseMetrics) {
33
+ run.phaseMetrics = {};
34
+ }
35
+ const startTime = this.phaseStartTimes.get(phase);
36
+ if (startTime) {
37
+ const metric = {
38
+ startedAt: new Date(startTime).toISOString(),
39
+ completedAt: new Date().toISOString(),
40
+ tokensUsed: this.getPhaseTokens(run, phase),
41
+ estimatedCost: this.getPhaseCost(run, phase)
42
+ };
43
+ if (phase === 'discovery') {
44
+ run.phaseMetrics.discovery = metric;
45
+ }
46
+ else if (phase === 'analysis') {
47
+ run.phaseMetrics.analysis = metric;
48
+ }
49
+ else if (phase === 'sanityChecks') {
50
+ run.phaseMetrics.sanityChecks = metric;
51
+ }
52
+ }
53
+ this.currentPhase = undefined;
54
+ }
55
+ /**
56
+ * Start tracking a new iteration
57
+ */
58
+ startIteration(iteration) {
59
+ this.currentIteration = iteration;
60
+ this.iterationStartTime = Date.now();
61
+ }
62
+ /**
63
+ * End tracking current iteration and record metrics
64
+ */
65
+ endIteration(run, iteration) {
66
+ if (!run.iterationMetrics) {
67
+ run.iterationMetrics = [];
68
+ }
69
+ if (this.iterationStartTime) {
70
+ const metric = {
71
+ iterationNumber: iteration,
72
+ startedAt: new Date(this.iterationStartTime).toISOString(),
73
+ completedAt: new Date().toISOString(),
74
+ tokensUsed: run.totalTokensUsed || 0,
75
+ estimatedCost: run.estimatedCost || 0,
76
+ duration: Date.now() - this.iterationStartTime
77
+ };
78
+ run.iterationMetrics.push(metric);
79
+ }
80
+ this.iterationStartTime = undefined;
81
+ }
82
+ /**
83
+ * Check all guardrails and return enforcement status
84
+ */
85
+ checkGuardrails(run) {
86
+ // If guardrails disabled, allow continuation
87
+ if (this.config.enabled === false) {
88
+ return { canContinue: true };
89
+ }
90
+ const elapsedSeconds = (Date.now() - this.startTime) / 1000;
91
+ const totalTokens = run.totalTokensUsed || 0;
92
+ const totalCost = run.estimatedCost || 0;
93
+ // Get default thresholds
94
+ const warnThresholds = this.config.warnThresholds || {};
95
+ const tokenWarnPercent = warnThresholds.tokenPercentage ?? 80;
96
+ const durationWarnPercent = warnThresholds.durationPercentage ?? 80;
97
+ const costWarnPercent = warnThresholds.costPercentage ?? 80;
98
+ const iterationTokenWarnPercent = warnThresholds.iterationTokenPercentage ?? 80;
99
+ const phaseTokenWarnPercent = warnThresholds.phaseTokenPercentage ?? 80;
100
+ const warnings = [];
101
+ const exceedances = [];
102
+ // 1. Check hard limits - STOP
103
+ if (this.config.maxTokensPerRun && totalTokens >= this.config.maxTokensPerRun) {
104
+ exceedances.push({
105
+ type: 'tokens_per_run',
106
+ limit: this.config.maxTokensPerRun,
107
+ actual: totalTokens,
108
+ unit: 'tokens'
109
+ });
110
+ return this.createStopResult(`Token limit exceeded: ${totalTokens.toLocaleString()} / ${this.config.maxTokensPerRun.toLocaleString()} tokens`, warnings, exceedances);
111
+ }
112
+ if (this.config.maxDurationSeconds && elapsedSeconds >= this.config.maxDurationSeconds) {
113
+ exceedances.push({
114
+ type: 'duration',
115
+ limit: this.config.maxDurationSeconds,
116
+ actual: Math.round(elapsedSeconds),
117
+ unit: 'seconds'
118
+ });
119
+ return this.createStopResult(`Duration limit exceeded: ${Math.round(elapsedSeconds)}s / ${this.config.maxDurationSeconds}s`, warnings, exceedances);
120
+ }
121
+ if (this.config.maxCostDollars && totalCost >= this.config.maxCostDollars) {
122
+ exceedances.push({
123
+ type: 'cost',
124
+ limit: this.config.maxCostDollars,
125
+ actual: Number(totalCost.toFixed(2)),
126
+ unit: 'dollars'
127
+ });
128
+ return this.createStopResult(`Cost limit exceeded: $${totalCost.toFixed(2)} / $${this.config.maxCostDollars.toFixed(2)}`, warnings, exceedances);
129
+ }
130
+ // 2. Check phase-specific token limits
131
+ if (this.currentPhase && this.config.maxTokensPerPhase) {
132
+ const phaseLimits = this.config.maxTokensPerPhase;
133
+ let phaseLimit;
134
+ let phaseTokens;
135
+ if (this.currentPhase === 'discovery' && phaseLimits.discovery) {
136
+ phaseLimit = phaseLimits.discovery;
137
+ phaseTokens = this.getPhaseTokens(run, 'discovery');
138
+ }
139
+ else if (this.currentPhase === 'analysis' && phaseLimits.analysis) {
140
+ phaseLimit = phaseLimits.analysis;
141
+ phaseTokens = this.getPhaseTokens(run, 'analysis');
142
+ }
143
+ else if (this.currentPhase === 'sanityChecks' && phaseLimits.sanityChecks) {
144
+ phaseLimit = phaseLimits.sanityChecks;
145
+ phaseTokens = this.getPhaseTokens(run, 'sanityChecks');
146
+ }
147
+ if (phaseLimit && phaseTokens !== undefined && phaseTokens >= phaseLimit) {
148
+ if (this.config.stopOnExceeded !== false) {
149
+ exceedances.push({
150
+ type: 'tokens_per_phase',
151
+ phase: this.currentPhase,
152
+ limit: phaseLimit,
153
+ actual: phaseTokens,
154
+ unit: 'tokens'
155
+ });
156
+ return this.createStopResult(`Phase token limit exceeded (${this.currentPhase}): ${phaseTokens.toLocaleString()} / ${phaseLimit.toLocaleString()} tokens`, warnings, exceedances);
157
+ }
158
+ }
159
+ }
160
+ // 3. Check per-iteration limits
161
+ if (this.currentIteration > 0 && this.config.maxTokensPerIteration) {
162
+ const iterationTokens = this.getCurrentIterationTokens(run);
163
+ if (iterationTokens >= this.config.maxTokensPerIteration) {
164
+ if (this.config.stopOnExceeded !== false) {
165
+ exceedances.push({
166
+ type: 'tokens_per_iteration',
167
+ iteration: this.currentIteration,
168
+ limit: this.config.maxTokensPerIteration,
169
+ actual: iterationTokens,
170
+ unit: 'tokens'
171
+ });
172
+ return this.createStopResult(`Iteration token limit exceeded (iteration ${this.currentIteration}): ${iterationTokens.toLocaleString()} / ${this.config.maxTokensPerIteration.toLocaleString()} tokens`, warnings, exceedances);
173
+ }
174
+ }
175
+ }
176
+ if (this.currentIteration > 0 && this.iterationStartTime && this.config.maxIterationDurationSeconds) {
177
+ const iterationDuration = (Date.now() - this.iterationStartTime) / 1000;
178
+ if (iterationDuration >= this.config.maxIterationDurationSeconds) {
179
+ if (this.config.stopOnExceeded !== false) {
180
+ exceedances.push({
181
+ type: 'iteration_duration',
182
+ iteration: this.currentIteration,
183
+ limit: this.config.maxIterationDurationSeconds,
184
+ actual: Math.round(iterationDuration),
185
+ unit: 'seconds'
186
+ });
187
+ return this.createStopResult(`Iteration duration exceeded (iteration ${this.currentIteration}): ${Math.round(iterationDuration)}s / ${this.config.maxIterationDurationSeconds}s`, warnings, exceedances);
188
+ }
189
+ }
190
+ }
191
+ // 4. Check warning thresholds
192
+ if (this.config.maxTokensPerRun) {
193
+ const tokenPercent = (totalTokens / this.config.maxTokensPerRun) * 100;
194
+ if (tokenPercent >= tokenWarnPercent) {
195
+ warnings.push({
196
+ type: 'tokens_per_run',
197
+ percentage: Math.round(tokenPercent),
198
+ message: `Token usage at ${Math.round(tokenPercent)}% (${totalTokens.toLocaleString()} / ${this.config.maxTokensPerRun.toLocaleString()})`
199
+ });
200
+ }
201
+ }
202
+ if (this.config.maxDurationSeconds) {
203
+ const durationPercent = (elapsedSeconds / this.config.maxDurationSeconds) * 100;
204
+ if (durationPercent >= durationWarnPercent) {
205
+ warnings.push({
206
+ type: 'duration',
207
+ percentage: Math.round(durationPercent),
208
+ message: `Duration at ${Math.round(durationPercent)}% (${Math.round(elapsedSeconds)}s / ${this.config.maxDurationSeconds}s)`
209
+ });
210
+ }
211
+ }
212
+ if (this.config.maxCostDollars) {
213
+ const costPercent = (totalCost / this.config.maxCostDollars) * 100;
214
+ if (costPercent >= costWarnPercent) {
215
+ warnings.push({
216
+ type: 'cost',
217
+ percentage: Math.round(costPercent),
218
+ message: `Cost at ${Math.round(costPercent)}% ($${totalCost.toFixed(2)} / $${this.config.maxCostDollars.toFixed(2)})`
219
+ });
220
+ }
221
+ }
222
+ if (this.currentPhase && this.config.maxTokensPerPhase) {
223
+ const phaseLimits = this.config.maxTokensPerPhase;
224
+ let phaseLimit;
225
+ let phaseTokens;
226
+ if (this.currentPhase === 'discovery' && phaseLimits.discovery) {
227
+ phaseLimit = phaseLimits.discovery;
228
+ phaseTokens = this.getPhaseTokens(run, 'discovery');
229
+ }
230
+ else if (this.currentPhase === 'analysis' && phaseLimits.analysis) {
231
+ phaseLimit = phaseLimits.analysis;
232
+ phaseTokens = this.getPhaseTokens(run, 'analysis');
233
+ }
234
+ else if (this.currentPhase === 'sanityChecks' && phaseLimits.sanityChecks) {
235
+ phaseLimit = phaseLimits.sanityChecks;
236
+ phaseTokens = this.getPhaseTokens(run, 'sanityChecks');
237
+ }
238
+ if (phaseLimit && phaseTokens !== undefined) {
239
+ const phaseTokenPercent = (phaseTokens / phaseLimit) * 100;
240
+ if (phaseTokenPercent >= phaseTokenWarnPercent) {
241
+ warnings.push({
242
+ type: 'tokens_per_phase',
243
+ phase: this.currentPhase,
244
+ percentage: Math.round(phaseTokenPercent),
245
+ message: `Phase token usage at ${Math.round(phaseTokenPercent)}% (${phaseTokens.toLocaleString()} / ${phaseLimit.toLocaleString()})`
246
+ });
247
+ }
248
+ }
249
+ }
250
+ if (this.currentIteration > 0 && this.config.maxTokensPerIteration) {
251
+ const iterationTokens = this.getCurrentIterationTokens(run);
252
+ const iterationTokenPercent = (iterationTokens / this.config.maxTokensPerIteration) * 100;
253
+ if (iterationTokenPercent >= iterationTokenWarnPercent) {
254
+ warnings.push({
255
+ type: 'tokens_per_iteration',
256
+ iteration: this.currentIteration,
257
+ percentage: Math.round(iterationTokenPercent),
258
+ message: `Iteration token usage at ${Math.round(iterationTokenPercent)}% (${iterationTokens.toLocaleString()} / ${this.config.maxTokensPerIteration.toLocaleString()})`
259
+ });
260
+ }
261
+ }
262
+ return {
263
+ canContinue: true,
264
+ warnings: warnings.length > 0 ? warnings : undefined,
265
+ exceedances: exceedances.length > 0 ? exceedances : undefined
266
+ };
267
+ }
268
+ /**
269
+ * Record guardrail enforcement in the run
270
+ */
271
+ recordEnforcement(run, result) {
272
+ if (!result.warnings && !result.exceedances && result.canContinue) {
273
+ return; // Nothing to record
274
+ }
275
+ if (!run.guardrailsEnforced) {
276
+ run.guardrailsEnforced = {
277
+ exceedances: [],
278
+ warnings: []
279
+ };
280
+ }
281
+ if (result.exceedances) {
282
+ run.guardrailsEnforced.exceedances.push(...result.exceedances);
283
+ run.guardrailsEnforced.stoppedDueToGuardrails = true;
284
+ run.guardrailsEnforced.stoppedReason = result.reason;
285
+ }
286
+ if (result.warnings) {
287
+ run.guardrailsEnforced.warnings.push(...result.warnings);
288
+ }
289
+ }
290
+ /**
291
+ * Get tokens used in a specific phase
292
+ */
293
+ getPhaseTokens(run, phase) {
294
+ if (!run.phaseMetrics)
295
+ return 0;
296
+ if (phase === 'discovery') {
297
+ return run.phaseMetrics.discovery?.tokensUsed || 0;
298
+ }
299
+ else if (phase === 'analysis') {
300
+ return run.phaseMetrics.analysis?.tokensUsed || 0;
301
+ }
302
+ else if (phase === 'sanityChecks') {
303
+ return run.phaseMetrics.sanityChecks?.tokensUsed || 0;
304
+ }
305
+ return 0;
306
+ }
307
+ /**
308
+ * Get estimated cost for a specific phase
309
+ */
310
+ getPhaseCost(run, phase) {
311
+ if (!run.phaseMetrics)
312
+ return 0;
313
+ if (phase === 'discovery') {
314
+ return run.phaseMetrics.discovery?.estimatedCost || 0;
315
+ }
316
+ else if (phase === 'analysis') {
317
+ return run.phaseMetrics.analysis?.estimatedCost || 0;
318
+ }
319
+ else if (phase === 'sanityChecks') {
320
+ return run.phaseMetrics.sanityChecks?.estimatedCost || 0;
321
+ }
322
+ return 0;
323
+ }
324
+ /**
325
+ * Get tokens used in current iteration
326
+ */
327
+ getCurrentIterationTokens(run) {
328
+ if (!run.iterationMetrics || run.iterationMetrics.length === 0) {
329
+ return 0;
330
+ }
331
+ // Return tokens for current iteration only (latest entry)
332
+ const currentMetric = run.iterationMetrics[run.iterationMetrics.length - 1];
333
+ return currentMetric.tokensUsed || 0;
334
+ }
335
+ /**
336
+ * Create a stop result with warnings and exceedances
337
+ */
338
+ createStopResult(reason, warnings, exceedances) {
339
+ return {
340
+ canContinue: false,
341
+ reason,
342
+ warnings: warnings.length > 0 ? warnings : undefined,
343
+ exceedances: exceedances.length > 0 ? exceedances : undefined
344
+ };
345
+ }
346
+ /**
347
+ * Get current elapsed time in seconds
348
+ */
349
+ getElapsedSeconds() {
350
+ return (Date.now() - this.startTime) / 1000;
351
+ }
352
+ /**
353
+ * Get current phase token budget (remaining tokens)
354
+ */
355
+ getPhaseTokenBudgetRemaining(phase) {
356
+ if (!this.config.maxTokensPerPhase)
357
+ return undefined;
358
+ const limit = this.config.maxTokensPerPhase[phase];
359
+ if (!limit)
360
+ return undefined;
361
+ // This would need access to the current run to calculate remaining
362
+ // For now, just return the limit
363
+ return limit;
364
+ }
365
+ }
366
+ exports.GuardrailsManager = GuardrailsManager;
367
+ //# sourceMappingURL=GuardrailsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardrailsManager.js","sourceRoot":"","sources":["../../src/core/GuardrailsManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Exports for core module
3
+ */
4
+ export { AnalysisEngine } from './AnalysisEngine.js';
5
+ export { BackpropagationEngine } from './BackpropagationEngine.js';
6
+ export { ConvergenceDetector } from './ConvergenceDetector.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Exports for core module
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ConvergenceDetector = exports.BackpropagationEngine = exports.AnalysisEngine = void 0;
7
+ var AnalysisEngine_js_1 = require("./AnalysisEngine.js");
8
+ Object.defineProperty(exports, "AnalysisEngine", { enumerable: true, get: function () { return AnalysisEngine_js_1.AnalysisEngine; } });
9
+ var BackpropagationEngine_js_1 = require("./BackpropagationEngine.js");
10
+ Object.defineProperty(exports, "BackpropagationEngine", { enumerable: true, get: function () { return BackpropagationEngine_js_1.BackpropagationEngine; } });
11
+ var ConvergenceDetector_js_1 = require("./ConvergenceDetector.js");
12
+ Object.defineProperty(exports, "ConvergenceDetector", { enumerable: true, get: function () { return ConvergenceDetector_js_1.ConvergenceDetector; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAC9B,mEAA+D;AAAtD,6HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Database connection and introspection classes
3
+ * Primary interface for all database operations
4
+ */
5
+ import { BaseAutoDocDriver } from '../drivers/BaseAutoDocDriver.js';
6
+ import { AutoDocConnectionConfig } from '../types/driver.js';
7
+ import { SchemaDefinition, ColumnDefinition } from '../types/state.js';
8
+ import { SchemaFilterConfig, TableFilterConfig, AnalysisConfig } from '../types/config.js';
9
+ import '../drivers/SQLServerDriver.js';
10
+ import '../drivers/MySQLDriver.js';
11
+ import '../drivers/PostgreSQLDriver.js';
12
+ /**
13
+ * Create a database driver instance
14
+ */
15
+ export declare function createDriver(config: AutoDocConnectionConfig): BaseAutoDocDriver;
16
+ /**
17
+ * Database connection class
18
+ * Provides connection management and query execution
19
+ */
20
+ export declare class DatabaseConnection {
21
+ private driver;
22
+ constructor(dbConfig: AutoDocConnectionConfig);
23
+ connect(): Promise<void>;
24
+ test(): Promise<{
25
+ success: boolean;
26
+ message: string;
27
+ }>;
28
+ query<T = any>(queryText: string, maxRetries?: number): Promise<{
29
+ success: boolean;
30
+ data?: T[];
31
+ errorMessage?: string;
32
+ }>;
33
+ close(): Promise<void>;
34
+ getDriver(): BaseAutoDocDriver;
35
+ }
36
+ /**
37
+ * Database introspector
38
+ * Retrieves schema and table information from the database
39
+ */
40
+ export declare class Introspector {
41
+ private driver;
42
+ constructor(driver: BaseAutoDocDriver);
43
+ getSchemas(schemaFilter: SchemaFilterConfig, tableFilter: TableFilterConfig): Promise<SchemaDefinition[]>;
44
+ getExistingDescriptions(schemaName: string, tableName: string): Promise<Map<string, string>>;
45
+ }
46
+ /**
47
+ * Data sampler
48
+ * Analyzes table data and gathers column statistics
49
+ */
50
+ export declare class DataSampler {
51
+ private driver;
52
+ private config;
53
+ constructor(driver: BaseAutoDocDriver, config: AnalysisConfig);
54
+ analyzeTable(schemaName: string, tableName: string, columns: ColumnDefinition[]): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=Database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../src/database/Database.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAmB,gBAAgB,EAAuB,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AAExC;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAiB/E;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoB;gBAEtB,QAAQ,EAAE,uBAAuB;IAIhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAItD,KAAK,CAAC,CAAC,GAAG,GAAG,EACxB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAItD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,SAAS,IAAI,iBAAiB;CAGtC;AAED;;;GAGG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEhC,UAAU,CACrB,YAAY,EAAE,kBAAkB,EAChC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuEjB,uBAAuB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAWhC;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBADN,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,cAAc;IAGnB,YAAY,CACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC;CAkCjB"}