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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +95 -0
  2. package/dist/commands/analyze.d.ts +1 -0
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +6 -0
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/export.d.ts +28 -19
  7. package/dist/commands/export.d.ts.map +1 -1
  8. package/dist/commands/export.js +91 -12
  9. package/dist/commands/export.js.map +1 -1
  10. package/dist/core/AnalysisEngine.d.ts +15 -6
  11. package/dist/core/AnalysisEngine.d.ts.map +1 -1
  12. package/dist/core/AnalysisEngine.js +41 -40
  13. package/dist/core/AnalysisEngine.js.map +1 -1
  14. package/dist/core/AnalysisOrchestrator.d.ts +20 -1
  15. package/dist/core/AnalysisOrchestrator.d.ts.map +1 -1
  16. package/dist/core/AnalysisOrchestrator.js +131 -27
  17. package/dist/core/AnalysisOrchestrator.js.map +1 -1
  18. package/dist/core/PKProposalGate.d.ts +22 -0
  19. package/dist/core/PKProposalGate.d.ts.map +1 -0
  20. package/dist/core/PKProposalGate.js +52 -0
  21. package/dist/core/PKProposalGate.js.map +1 -0
  22. package/dist/database/Database.d.ts +8 -0
  23. package/dist/database/Database.d.ts.map +1 -1
  24. package/dist/database/Database.js +23 -1
  25. package/dist/database/Database.js.map +1 -1
  26. package/dist/discovery/EnumCandidateGate.d.ts +19 -0
  27. package/dist/discovery/EnumCandidateGate.d.ts.map +1 -1
  28. package/dist/discovery/EnumCandidateGate.js +47 -5
  29. package/dist/discovery/EnumCandidateGate.js.map +1 -1
  30. package/dist/discovery/FKGraphWalker.d.ts +35 -0
  31. package/dist/discovery/FKGraphWalker.d.ts.map +1 -1
  32. package/dist/discovery/FKGraphWalker.js +113 -12
  33. package/dist/discovery/FKGraphWalker.js.map +1 -1
  34. package/dist/discovery/LLMDiscoveryValidator.d.ts +2 -0
  35. package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -1
  36. package/dist/discovery/LLMDiscoveryValidator.js +20 -9
  37. package/dist/discovery/LLMDiscoveryValidator.js.map +1 -1
  38. package/dist/discovery/OrganicKeyDetector.d.ts.map +1 -1
  39. package/dist/discovery/OrganicKeyDetector.js +8 -2
  40. package/dist/discovery/OrganicKeyDetector.js.map +1 -1
  41. package/dist/discovery/StructuralPhase.d.ts +27 -5
  42. package/dist/discovery/StructuralPhase.d.ts.map +1 -1
  43. package/dist/discovery/StructuralPhase.js +42 -9
  44. package/dist/discovery/StructuralPhase.js.map +1 -1
  45. package/dist/discovery/TransitiveBridgeDetector.d.ts +5 -1
  46. package/dist/discovery/TransitiveBridgeDetector.d.ts.map +1 -1
  47. package/dist/discovery/TransitiveBridgeDetector.js +25 -3
  48. package/dist/discovery/TransitiveBridgeDetector.js.map +1 -1
  49. package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -1
  50. package/dist/drivers/BaseAutoDocDriver.js +3 -5
  51. package/dist/drivers/BaseAutoDocDriver.js.map +1 -1
  52. package/dist/drivers/PostgreSQLDriver.d.ts +9 -1
  53. package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -1
  54. package/dist/drivers/PostgreSQLDriver.js +41 -19
  55. package/dist/drivers/PostgreSQLDriver.js.map +1 -1
  56. package/dist/drivers/SQLServerDriver.d.ts.map +1 -1
  57. package/dist/drivers/SQLServerDriver.js +2 -1
  58. package/dist/drivers/SQLServerDriver.js.map +1 -1
  59. package/dist/generators/AdditionalSchemaInfoGenerator.d.ts +34 -0
  60. package/dist/generators/AdditionalSchemaInfoGenerator.d.ts.map +1 -1
  61. package/dist/generators/AdditionalSchemaInfoGenerator.js +85 -4
  62. package/dist/generators/AdditionalSchemaInfoGenerator.js.map +1 -1
  63. package/dist/generators/ErdClusterGenerator.d.ts +44 -0
  64. package/dist/generators/ErdClusterGenerator.d.ts.map +1 -0
  65. package/dist/generators/ErdClusterGenerator.js +216 -0
  66. package/dist/generators/ErdClusterGenerator.js.map +1 -0
  67. package/dist/generators/ErdClusterer.d.ts +130 -0
  68. package/dist/generators/ErdClusterer.d.ts.map +1 -0
  69. package/dist/generators/ErdClusterer.js +308 -0
  70. package/dist/generators/ErdClusterer.js.map +1 -0
  71. package/dist/generators/HTMLGenerator.d.ts +6 -0
  72. package/dist/generators/HTMLGenerator.d.ts.map +1 -1
  73. package/dist/generators/HTMLGenerator.js +41 -6
  74. package/dist/generators/HTMLGenerator.js.map +1 -1
  75. package/dist/generators/MermaidGenerator.d.ts +3 -0
  76. package/dist/generators/MermaidGenerator.d.ts.map +1 -1
  77. package/dist/generators/MermaidGenerator.js +4 -0
  78. package/dist/generators/MermaidGenerator.js.map +1 -1
  79. package/dist/generators/index.d.ts +2 -0
  80. package/dist/generators/index.d.ts.map +1 -1
  81. package/dist/generators/index.js +2 -0
  82. package/dist/generators/index.js.map +1 -1
  83. package/dist/types/analysis.d.ts +2 -0
  84. package/dist/types/analysis.d.ts.map +1 -1
  85. package/dist/types/config.d.ts +46 -0
  86. package/dist/types/config.d.ts.map +1 -1
  87. package/dist/types/config.js +7 -1
  88. package/dist/types/config.js.map +1 -1
  89. package/dist/types/discovery.d.ts +2 -0
  90. package/dist/types/discovery.d.ts.map +1 -1
  91. package/dist/types/state.d.ts +27 -0
  92. package/dist/types/state.d.ts.map +1 -1
  93. package/dist/utils/config-loader.d.ts +5 -0
  94. package/dist/utils/config-loader.d.ts.map +1 -1
  95. package/dist/utils/config-loader.js +37 -0
  96. package/dist/utils/config-loader.js.map +1 -1
  97. package/dist/utils/index-hints.d.ts +36 -0
  98. package/dist/utils/index-hints.d.ts.map +1 -0
  99. package/dist/utils/index-hints.js +65 -0
  100. package/dist/utils/index-hints.js.map +1 -0
  101. package/dist/utils/index.d.ts +1 -0
  102. package/dist/utils/index.d.ts.map +1 -1
  103. package/dist/utils/index.js +1 -0
  104. package/dist/utils/index.js.map +1 -1
  105. package/dist/utils/llm-factory.d.ts +1 -0
  106. package/dist/utils/llm-factory.d.ts.map +1 -1
  107. package/dist/utils/llm-factory.js +6 -1
  108. package/dist/utils/llm-factory.js.map +1 -1
  109. package/package.json +5 -5
  110. package/prompts/fk-pruning-table.md +13 -1
  111. package/prompts/pk-pruning-table.md +10 -0
  112. package/prompts/table-analysis.md +11 -0
@@ -19,8 +19,18 @@ const DEFAULT_CONFIG = {
19
19
  /Description$/i,
20
20
  /Comment$/i,
21
21
  /Address/i,
22
+ // MJ's own system columns: their domain is defined by MJ, not by whatever a sample holds.
23
+ /^__mj_/i,
24
+ // Audit columns naming who wrote the row (e.g. CreatedBy, cst_add_user): a list of users, not a closed set.
25
+ /(^|_)(add|change|changed|create|created|modify|modified|update|updated|delete|deleted|insert|inserted)_?(user|usr|by|login)$/i,
22
26
  ],
23
27
  };
28
+ /** Value shapes that make a column a poor closed list even when its cardinality is low. */
29
+ const VALUE_SHAPES_NOT_ENUM = [
30
+ /^(19|20)\d{2}$/, // years
31
+ /^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i, // GUIDs
32
+ /^\d{4}-\d{2}-\d{2}([ T].*)?$/, // ISO dates and timestamps
33
+ ];
24
34
  /** Set of data-type base names eligible for enum detection (string types) */
25
35
  const STRING_TYPES = new Set([
26
36
  'char', 'nchar', 'varchar', 'nvarchar',
@@ -56,7 +66,7 @@ export class EnumCandidateGate {
56
66
  EvaluateColumn(column, tableRowCount) {
57
67
  if (!this.passesDataTypeGate(column.dataType))
58
68
  return null;
59
- if (!this.passesColumnLengthGate(column.dataType))
69
+ if (!this.passesColumnLengthGate(column))
60
70
  return null;
61
71
  if (!this.passesNameExclusionGate(column.name))
62
72
  return null;
@@ -74,6 +84,8 @@ export class EnumCandidateGate {
74
84
  const values = this.extractValues(stats);
75
85
  if (values.length < 2)
76
86
  return null;
87
+ if (!this.passesValueShapeGate(values))
88
+ return null;
77
89
  return {
78
90
  columnName: column.name,
79
91
  values,
@@ -81,9 +93,23 @@ export class EnumCandidateGate {
81
93
  totalRows: tableRowCount,
82
94
  cardinalityRatio: tableRowCount > 0 ? stats.distinctCount / tableRowCount : 1,
83
95
  dataType: column.dataType,
84
- maxLength: this.parseDeclaredLength(column.dataType) ?? undefined,
96
+ maxLength: this.declaredLength(column) ?? undefined,
85
97
  };
86
98
  }
99
+ /**
100
+ * Checks an LLM value-list verdict against the data. The verdict counts only for a column that
101
+ * passes every gate here, and its values are cut down to the ones observed in that column, so a
102
+ * value the model invented never reaches the output. Returns the values to keep, or null when
103
+ * the verdict should be dropped (not a candidate, or fewer than two observed values remain).
104
+ */
105
+ FilterVerdictValues(column, tableRowCount, verdictValues) {
106
+ const candidate = this.EvaluateColumn(column, tableRowCount);
107
+ if (!candidate)
108
+ return null;
109
+ const observed = new Set(candidate.values);
110
+ const kept = verdictValues.filter(v => observed.has(v));
111
+ return kept.length >= 2 ? kept : null;
112
+ }
87
113
  /** @deprecated Use {@link EvaluateColumn}. */
88
114
  evaluateColumn(column, tableRowCount) {
89
115
  return this.EvaluateColumn(column, tableRowCount);
@@ -100,10 +126,15 @@ export class EnumCandidateGate {
100
126
  /**
101
127
  * Gate: declared column length must be ≤ maxColumnLength.
102
128
  * Unbounded text/varchar(max) is excluded.
129
+ *
130
+ * The drivers report the bare type name (`varchar`, `nvarchar`) with the length in
131
+ * `column.maxLength`, so the length comes from there when the type string carries none.
132
+ * Reading only the type string made every varchar/nvarchar column look unbounded, so no
133
+ * string column was ever a candidate.
103
134
  */
104
- passesColumnLengthGate(dataType) {
105
- const baseType = this.parseBaseType(dataType);
106
- const length = this.parseDeclaredLength(dataType);
135
+ passesColumnLengthGate(column) {
136
+ const baseType = this.parseBaseType(column.dataType);
137
+ const length = this.declaredLength(column);
107
138
  // Unbounded text type — exclude
108
139
  if (baseType === 'text' && length === null)
109
140
  return false;
@@ -135,6 +166,13 @@ export class EnumCandidateGate {
135
166
  return true;
136
167
  return !EXCLUDED_PATTERNS.has(stats.dataPattern);
137
168
  }
169
+ /**
170
+ * Gate: the observed values must not all be years, GUIDs or dates. A year column grows every
171
+ * year, and GUIDs and dates are keys or timestamps, so none of them is a closed set.
172
+ */
173
+ passesValueShapeGate(values) {
174
+ return !VALUE_SHAPES_NOT_ENUM.some(shape => values.every(v => shape.test(v)));
175
+ }
138
176
  /**
139
177
  * Gate: distinct count must be ≥ 2 and ≤ maxDistinctValues.
140
178
  */
@@ -163,6 +201,10 @@ export class EnumCandidateGate {
163
201
  const base = dataType.replace(/\(.*\)/, '').trim().toLowerCase();
164
202
  return base;
165
203
  }
204
+ /** The declared length: from the type string when it carries one, else from the driver's maxLength. */
205
+ declaredLength(column) {
206
+ return this.parseDeclaredLength(column.dataType) ?? column.maxLength ?? null;
207
+ }
166
208
  /**
167
209
  * Parse the declared length from a type string.
168
210
  * Returns null for unbounded types or types without length.
@@ -1 +1 @@
1
- {"version":3,"file":"EnumCandidateGate.js","sourceRoot":"","sources":["../../src/discovery/EnumCandidateGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnumCandidateGate.js","sourceRoot":"","sources":["../../src/discovery/EnumCandidateGate.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,28 @@ export interface FKGraphWalkerOptions {
85
85
  * Default true.
86
86
  */
87
87
  PruneCycles?: boolean;
88
+ /**
89
+ * Hard ceiling on the number of BFS states held at once for a single
90
+ * (spoke → hub) search. See {@link bfsPaths} for why an unbounded frontier
91
+ * is not a theoretical concern.
92
+ */
93
+ MaxFrontier?: number;
94
+ /** Hard ceiling on the paths retained per (spoke → hub) search. */
95
+ MaxPathsPerPair?: number;
96
+ /** Hard ceiling on the paths retained across the whole walk. */
97
+ MaxTotalPaths?: number;
98
+ }
99
+ /** What a bounded walk found, and whether a bound stopped it finding more. */
100
+ export interface BridgePathWalkResult {
101
+ Paths: BridgePath[];
102
+ /** True when any cap (frontier, per-pair, or total) truncated the search. */
103
+ Truncated: boolean;
104
+ /** Which caps fired, for logging. Empty when the walk ran to completion. */
105
+ TruncationReasons: Array<'frontier' | 'pathsPerPair' | 'totalPaths'>;
106
+ /** (spoke, hub) pairs actually searched, after skipping pairs with no graph edge. */
107
+ PairsSearched: number;
108
+ /** (spoke, hub) pairs skipped because the spoke has no FK edge at all. */
109
+ PairsSkipped: number;
88
110
  }
89
111
  /**
90
112
  * Build the join graph and find all bridge paths from each spoke candidate to
@@ -105,6 +127,19 @@ export declare function FindBridgePaths(edges: FKEdge[], hubs: Array<{
105
127
  schema: string;
106
128
  table: string;
107
129
  }>, opts?: FKGraphWalkerOptions): BridgePath[];
130
+ /**
131
+ * The bounded walk. {@link FindBridgePaths} is the historical shape (paths only);
132
+ * this one also reports whether a bound truncated the search, which is the
133
+ * difference between "this schema has no bridges" and "we stopped looking".
134
+ */
135
+ export declare function WalkBridgePaths(edges: FKEdge[], hubs: Array<{
136
+ schema: string;
137
+ table: string;
138
+ keyField: string;
139
+ }>, spokes: Array<{
140
+ schema: string;
141
+ table: string;
142
+ }>, opts?: FKGraphWalkerOptions): BridgePathWalkResult;
108
143
  /** @deprecated Use {@link FindBridgePaths}. */
109
144
  export declare function findBridgePaths(edges: FKEdge[], hubs: Array<{
110
145
  schema: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FKGraphWalker.d.ts","sourceRoot":"","sources":["../../src/discovery/FKGraphWalker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,uDAAuD;AACvD,MAAM,WAAW,MAAM;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACvB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,IAAI,GAAE,oBAAyB,GAChC,UAAU,EAAE,CA2Bd;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,IAAI,GAAE,oBAAyB,GAChC,UAAU,EAAE,CAEd"}
1
+ {"version":3,"file":"FKGraphWalker.d.ts","sourceRoot":"","sources":["../../src/discovery/FKGraphWalker.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,13 @@ const DEFAULTS = {
27
27
  MaxHops: 3,
28
28
  MinSoftFKConfidence: 0.6,
29
29
  PruneCycles: true,
30
+ // THE NUMBERS ARE CEILINGS, NOT TUNING. They exist so that a graph nobody
31
+ // anticipated cannot take the process down; a schema that hits one is a
32
+ // schema whose bridge set was never going to be usable anyway, and the
33
+ // truncation is reported rather than swallowed.
34
+ MaxFrontier: 50_000,
35
+ MaxPathsPerPair: 50,
36
+ MaxTotalPaths: 25_000,
30
37
  };
31
38
  /**
32
39
  * Build the join graph and find all bridge paths from each spoke candidate to
@@ -40,23 +47,69 @@ const DEFAULTS = {
40
47
  * table in the database except the hub itself.
41
48
  */
42
49
  export function FindBridgePaths(edges, hubs, spokes, opts = {}) {
43
- const o = { ...DEFAULTS, ...opts };
50
+ return WalkBridgePaths(edges, hubs, spokes, opts).Paths;
51
+ }
52
+ /**
53
+ * The bounded walk. {@link FindBridgePaths} is the historical shape (paths only);
54
+ * this one also reports whether a bound truncated the search, which is the
55
+ * difference between "this schema has no bridges" and "we stopped looking".
56
+ */
57
+ export function WalkBridgePaths(edges, hubs, spokes, opts = {}) {
58
+ // `{ ...DEFAULTS, ...opts }` would let an explicitly-undefined option UNSET a ceiling, which
59
+ // is the one way a caller could accidentally un-bound the walk. Only defined keys override.
60
+ const o = { ...DEFAULTS };
61
+ for (const key of Object.keys(DEFAULTS)) {
62
+ const supplied = opts[key];
63
+ if (supplied !== undefined) {
64
+ o[key] = supplied;
65
+ }
66
+ }
44
67
  // Build the adjacency map keyed by "schema.table".
45
68
  const adjacency = buildAdjacency(edges, o.MinSoftFKConfidence);
69
+ const reasons = new Set();
46
70
  const out = [];
47
- for (const hub of hubs) {
71
+ let pairsSearched = 0;
72
+ let pairsSkipped = 0;
73
+ // GATE ON THE GRAPH, NOT ON THE INPUTS. An empty adjacency means no table is
74
+ // joined to any other, so every BFS below would dequeue its start node, find
75
+ // no neighbours and return nothing — `hubs × spokes` times.
76
+ if (adjacency.size === 0) {
77
+ return { Paths: [], Truncated: false, TruncationReasons: [], PairsSearched: 0, PairsSkipped: hubs.length * spokes.length };
78
+ }
79
+ outer: for (const hub of hubs) {
48
80
  const hubKey = `${hub.schema}.${hub.table}`;
81
+ // A hub with no edge of its own is unreachable from every spoke.
82
+ if (!adjacency.has(hubKey)) {
83
+ pairsSkipped += spokes.length;
84
+ continue;
85
+ }
49
86
  for (const spoke of spokes) {
50
87
  const spokeKey = `${spoke.schema}.${spoke.table}`;
51
88
  if (spokeKey === hubKey)
52
89
  continue;
90
+ // A spoke with no edge of its own cannot reach anything. Skipping it here is
91
+ // what turns "one BFS per hub × EVERY TABLE IN THE DATABASE" back into one
92
+ // BFS per hub × every table that is actually joined to something.
93
+ if (!adjacency.has(spokeKey)) {
94
+ pairsSkipped++;
95
+ continue;
96
+ }
97
+ pairsSearched++;
53
98
  // BFS from spoke → hub.
54
- const paths = bfsPaths(adjacency, spokeKey, hubKey, o.MaxHops, o.PruneCycles);
55
- for (const p of paths) {
99
+ const search = bfsPaths(adjacency, spokeKey, hubKey, o.MaxHops, o.PruneCycles, o.MaxFrontier, o.MaxPathsPerPair);
100
+ if (search.frontierTruncated)
101
+ reasons.add('frontier');
102
+ if (search.pathsTruncated)
103
+ reasons.add('pathsPerPair');
104
+ for (const p of search.paths) {
56
105
  if (p.length === 0)
57
106
  continue; // self
58
107
  if (p.length === 1)
59
108
  continue; // direct FK already handled by existing relationship system
109
+ if (out.length >= o.MaxTotalPaths) {
110
+ reasons.add('totalPaths');
111
+ break outer;
112
+ }
60
113
  out.push(materializeBridgePath(p, hub, spoke));
61
114
  }
62
115
  }
@@ -67,7 +120,13 @@ export function FindBridgePaths(edges, hubs, spokes, opts = {}) {
67
120
  return a.PathLength - b.PathLength;
68
121
  return b.PathConfidence - a.PathConfidence;
69
122
  });
70
- return out;
123
+ return {
124
+ Paths: out,
125
+ Truncated: reasons.size > 0,
126
+ TruncationReasons: [...reasons],
127
+ PairsSearched: pairsSearched,
128
+ PairsSkipped: pairsSkipped,
129
+ };
71
130
  }
72
131
  /** @deprecated Use {@link FindBridgePaths}. */
73
132
  export function findBridgePaths(edges, hubs, spokes, opts = {}) {
@@ -110,17 +169,46 @@ function push(map, key, value) {
110
169
  else
111
170
  map.set(key, [value]);
112
171
  }
113
- // ─── BFS ────────────────────────────────────────────────────────────────────
114
- /** Path of adjacency edges from `start` to `goal`. Returns empty if none found. */
115
- function bfsPaths(adjacency, start, goal, maxHops, pruneCycles) {
172
+ /**
173
+ * Path of adjacency edges from `start` to `goal`, bounded in both frontier size and
174
+ * result count. Returns empty paths if none found.
175
+ *
176
+ * WHY THE BOUNDS AND THE CURSOR ARE NOT MICRO-OPTIMISATION. Three properties compounded
177
+ * into an out-of-memory kill on a large schema before the phase could emit anything:
178
+ *
179
+ * 1. Every enqueued state carried a FRESH `Set<string>` and a FRESH path array, allocated
180
+ * per neighbour per dequeued node. On a dense graph with `maxHops` 3 that is
181
+ * O(branching³) live Sets, each holding up to `maxHops + 1` strings.
182
+ * 2. The queue was drained with `Array.shift()`, which is O(n) on a large array, so
183
+ * draining it was quadratic on top of the allocation.
184
+ * 3. Nothing bounded either the queue or the result array.
185
+ *
186
+ * The cursor fixes (2) outright. The caps fix (1) and (3) by refusing to grow past a
187
+ * ceiling and SAYING SO, rather than by silently returning a partial answer. The visited
188
+ * Set is still copied per state — a path-specific visited set is what `pruneCycles` means,
189
+ * and a shared one would wrongly prune valid alternate paths — but it can no longer be
190
+ * copied an unbounded number of times.
191
+ */
192
+ function bfsPaths(adjacency, start, goal, maxHops, pruneCycles, maxFrontier, maxPaths) {
116
193
  if (start === goal)
117
- return [[]];
194
+ return { paths: [[]], frontierTruncated: false, pathsTruncated: false };
118
195
  const queue = [
119
196
  { node: start, pathEdges: [], visited: new Set([start]) },
120
197
  ];
198
+ // Index cursor instead of Array.shift(): shift() is O(n) on a large array, which made
199
+ // draining the queue quadratic in the number of enqueued states.
200
+ let head = 0;
121
201
  const found = [];
122
- while (queue.length > 0) {
123
- const { node, pathEdges, visited } = queue.shift();
202
+ let frontierTruncated = false;
203
+ let pathsTruncated = false;
204
+ while (head < queue.length) {
205
+ const { node, pathEdges, visited } = queue[head];
206
+ // Release the slot as we pass it. An index cursor alone keeps every state ever enqueued
207
+ // reachable from the array — including its visited Set — which would trade Array.shift()'s
208
+ // O(n) drain for a retained-memory leak over a long walk. Nulling gives O(1) dequeue AND
209
+ // lets the frontier bound below actually bound live memory.
210
+ queue[head] = undefined;
211
+ head++;
124
212
  if (pathEdges.length >= maxHops)
125
213
  continue;
126
214
  const neighbors = adjacency.get(node) ?? [];
@@ -130,15 +218,28 @@ function bfsPaths(adjacency, start, goal, maxHops, pruneCycles) {
130
218
  continue;
131
219
  const newPath = [...pathEdges, edge];
132
220
  if (nextNode === goal) {
221
+ if (found.length >= maxPaths) {
222
+ pathsTruncated = true;
223
+ break;
224
+ }
133
225
  found.push(newPath);
134
226
  continue; // don't extend past the goal
135
227
  }
228
+ // The live frontier is what is enqueued but not yet expanded. Bounding THAT
229
+ // rather than total enqueues keeps a long, narrow walk working while still
230
+ // refusing to hold an unbounded number of visited-set copies at once.
231
+ if (queue.length - head >= maxFrontier) {
232
+ frontierTruncated = true;
233
+ break;
234
+ }
136
235
  const nextVisited = new Set(visited);
137
236
  nextVisited.add(nextNode);
138
237
  queue.push({ node: nextNode, pathEdges: newPath, visited: nextVisited });
139
238
  }
239
+ if (pathsTruncated)
240
+ break;
140
241
  }
141
- return found;
242
+ return { paths: found, frontierTruncated, pathsTruncated };
142
243
  }
143
244
  // ─── Bridge path materialization ────────────────────────────────────────────
144
245
  function materializeBridgePath(edgePath, hub, spoke) {
@@ -1 +1 @@
1
- {"version":3,"file":"FKGraphWalker.js","sourceRoot":"","sources":["../../src/discovery/FKGraphWalker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FKGraphWalker.js","sourceRoot":"","sources":["../../src/discovery/FKGraphWalker.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,8 @@ export declare class LLMDiscoveryValidator {
26
26
  * Build rich context for a table including stats from cache
27
27
  */
28
28
  private buildTableContext;
29
+ /** Existing indexes on the table as prompt lines, from the introspected schema. */
30
+ private indexHintLines;
29
31
  /**
30
32
  * Find tables that might be related based on column name patterns
31
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LLMDiscoveryValidator.d.ts","sourceRoot":"","sources":["../../src/discovery/LLMDiscoveryValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,WAAW,EAGX,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE3E,qBAAa,qBAAqB;IAI9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,GAAG,CAAU;gBAGX,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,gBAAgB,EAAE;IAkBrC;;OAEG;IACU,0BAA0B,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,EAAE,WAAW,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAsF/B,0DAA0D;IAC7C,0BAA0B,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,EAAE,WAAW,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgFzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqFzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyBjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA2F9B"}
1
+ {"version":3,"file":"LLMDiscoveryValidator.d.ts","sourceRoot":"","sources":["../../src/discovery/LLMDiscoveryValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,WAAW,EAGX,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE3E,qBAAa,qBAAqB;IAI9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,GAAG,CAAU;gBAGX,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,gBAAgB,EAAE;IAQrC;;OAEG;IACU,0BAA0B,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,EAAE,WAAW,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAsF/B,0DAA0D;IAC7C,0BAA0B,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,WAAW,EAAE,EAC3B,YAAY,EAAE,WAAW,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiFzB,mFAAmF;IACnF,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqFzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyBjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAoG9B"}
@@ -3,8 +3,8 @@
3
3
  * Uses LLM reasoning to validate and refine PK/FK candidates discovered through statistical analysis
4
4
  * Processes one table at a time with rich statistical context
5
5
  */
6
- import { BaseLLM } from '@memberjunction/ai';
7
- import { MJGlobal } from '@memberjunction/global';
6
+ import { CreateLLMInstance } from '../utils/llm-factory.js';
7
+ import { BuildIndexHints, FormatIndexHint } from '../utils/index-hints.js';
8
8
  export class LLMDiscoveryValidator {
9
9
  constructor(driver, config, aiConfig, statsCache, schemas) {
10
10
  this.driver = driver;
@@ -12,12 +12,10 @@ export class LLMDiscoveryValidator {
12
12
  this.aiConfig = aiConfig;
13
13
  this.statsCache = statsCache;
14
14
  this.schemas = schemas;
15
- // Create LLM instance using MJ ClassFactory
16
- const llm = MJGlobal.Instance.ClassFactory.CreateInstance(BaseLLM, aiConfig.provider, aiConfig.apiKey);
17
- if (!llm) {
18
- throw new Error(`Failed to create LLM instance for provider: ${aiConfig.provider}. Check that the provider name matches a registered BaseLLM subclass.`);
19
- }
20
- this.llm = llm;
15
+ // Resolve the provider name (e.g. 'gemini') to its driver class (e.g. 'GeminiLLM'), as the rest
16
+ // of DBAutoDoc does. Using the raw provider name as the registration key resolved to nothing and
17
+ // left a bare BaseLLM, so every validation call failed.
18
+ this.llm = CreateLLMInstance(aiConfig.provider, aiConfig.apiKey);
21
19
  }
22
20
  /**
23
21
  * Validate PK/FK candidates for a single table using LLM reasoning
@@ -155,9 +153,15 @@ export class LLMDiscoveryValidator {
155
153
  TargetTable: targetTable,
156
154
  RelatedTables: relatedTables,
157
155
  pkCandidates: pkContext,
158
- fkCandidates: fkContext
156
+ fkCandidates: fkContext,
157
+ ExistingIndexes: this.indexHintLines(schemaName, tableName)
159
158
  };
160
159
  }
160
+ /** Existing indexes on the table as prompt lines, from the introspected schema. */
161
+ indexHintLines(schemaName, tableName) {
162
+ const table = this.schemas.find(s => s.name === schemaName)?.tables.find(t => t.name === tableName);
163
+ return BuildIndexHints(table).map(FormatIndexHint);
164
+ }
161
165
  /**
162
166
  * Find tables that might be related based on column name patterns
163
167
  */
@@ -389,6 +393,13 @@ ${context.RelatedTables
389
393
  `
390
394
  : ''}
391
395
 
396
+ ${context.ExistingIndexes && context.ExistingIndexes.length > 0
397
+ ? `### Existing Indexes (declared in the database):
398
+ ${context.ExistingIndexes.map(line => `- ${line}`).join('\n')}
399
+
400
+ Indexes are evidence, not proof: a UNIQUE index or PRIMARY KEY on non-null columns strongly supports a PK candidate on exactly those columns; a non-unique index led by an ID-like column often marks a foreign key. "(expression)" is a computed key part.
401
+ `
402
+ : ''}
392
403
  ### Statistical Analysis Found:
393
404
 
394
405
  **Primary Key Candidates:**
@@ -1 +1 @@
1
- {"version":3,"file":"LLMDiscoveryValidator.js","sourceRoot":"","sources":["../../src/discovery/LLMDiscoveryValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LLMDiscoveryValidator.js","sourceRoot":"","sources":["../../src/discovery/LLMDiscoveryValidator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrganicKeyDetector.d.ts","sourceRoot":"","sources":["../../src/discovery/OrganicKeyDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,OAAO,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,2BAA2B,EAAE,MAAM,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACL;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,qBAAa,kBAAkB;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAPtC;;;OAGG;gBAEkB,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,CAAC,EAAE,kBAAkB;IAG7C,MAAM,CACf,KAAK,EAAE,qBAAqB,EAC5B,IAAI,GAAE,kBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IAmDrC,sCAAsC;IACzB,MAAM,CACf,KAAK,EAAE,qBAAqB,EAC5B,IAAI,GAAE,kBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IAIrC,OAAO,CAAC,YAAY;CAMvB"}
1
+ {"version":3,"file":"OrganicKeyDetector.d.ts","sourceRoot":"","sources":["../../src/discovery/OrganicKeyDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,OAAO,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,2BAA2B,EAAE,MAAM,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACL;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,qBAAa,kBAAkB;IAMvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAPtC;;;OAGG;gBAEkB,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,CAAC,EAAE,kBAAkB;IAG7C,MAAM,CACf,KAAK,EAAE,qBAAqB,EAC5B,IAAI,GAAE,kBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IA2DrC,sCAAsC;IACzB,MAAM,CACf,KAAK,EAAE,qBAAqB,EAC5B,IAAI,GAAE,kBAAuB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IAIrC,OAAO,CAAC,YAAY;CAMvB"}
@@ -32,8 +32,14 @@ export class OrganicKeyDetector {
32
32
  const progress = opts.OnProgress ?? (() => { });
33
33
  const startedAt = new Date().toISOString();
34
34
  const a = await RunSemanticPhase(state, this.config, this.aiConfig, progress);
35
- const b = RunStructuralPhase(state, a.clusters, this.databaseProvider);
36
- progress(`structural: ${b.Summary.transitiveBridgesFound} bridges`);
35
+ const b = RunStructuralPhase(state, a.clusters, { Provider: this.databaseProvider });
36
+ // Say WHY when the phase produced nothing: "0 bridges" from a completed walk and
37
+ // "0 bridges" from a walk that never ran are different facts, and a truncated walk
38
+ // is a third. Reporting them separately is the difference between a schema with no
39
+ // transitive bridges and a schema whose walk we bounded.
40
+ progress(b.Summary.walked
41
+ ? `structural: ${b.Summary.transitiveBridgesFound} bridges${b.Summary.truncationReasons ? ` (walk truncated: ${b.Summary.truncationReasons.join(', ')})` : ''}`
42
+ : `structural: skipped (${b.Summary.skipReason})`);
37
43
  const c = Compose(a.clusters, b.Bridges);
38
44
  progress(`compose: emitted ${c.Emitted}/${a.clusters.length} clusters (${c.Summary.outputKeys} keys, ${c.Summary.outputSpokes} spokes)`);
39
45
  // Net additional clusters produced by the concept-name split (sub-clusters created
@@ -1 +1 @@
1
- {"version":3,"file":"OrganicKeyDetector.js","sourceRoot":"","sources":["../../src/discovery/OrganicKeyDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrganicKeyDetector.js","sourceRoot":"","sources":["../../src/discovery/OrganicKeyDetector.ts"],"names":[],"mappings":"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"}