@memberjunction/db-auto-doc 6.2.0-edge.4 → 6.2.0-edge.6
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.
- package/README.md +105 -0
- package/dist/api/DBAutoDocAPI.d.ts +2 -0
- package/dist/api/DBAutoDocAPI.d.ts.map +1 -1
- package/dist/api/DBAutoDocAPI.js +2 -1
- package/dist/api/DBAutoDocAPI.js.map +1 -1
- package/dist/commands/analyze.d.ts +1 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +6 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/export.d.ts +28 -19
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +91 -12
- package/dist/commands/export.js.map +1 -1
- package/dist/core/AnalysisEngine.d.ts +39 -6
- package/dist/core/AnalysisEngine.d.ts.map +1 -1
- package/dist/core/AnalysisEngine.js +144 -50
- package/dist/core/AnalysisEngine.js.map +1 -1
- package/dist/core/AnalysisOrchestrator.d.ts +20 -1
- package/dist/core/AnalysisOrchestrator.d.ts.map +1 -1
- package/dist/core/AnalysisOrchestrator.js +144 -28
- package/dist/core/AnalysisOrchestrator.js.map +1 -1
- package/dist/core/PKProposalGate.d.ts +22 -0
- package/dist/core/PKProposalGate.d.ts.map +1 -0
- package/dist/core/PKProposalGate.js +52 -0
- package/dist/core/PKProposalGate.js.map +1 -0
- package/dist/database/Database.d.ts +8 -0
- package/dist/database/Database.d.ts.map +1 -1
- package/dist/database/Database.js +23 -1
- package/dist/database/Database.js.map +1 -1
- package/dist/discovery/ColumnNormalizer.d.ts +31 -0
- package/dist/discovery/ColumnNormalizer.d.ts.map +1 -1
- package/dist/discovery/ColumnNormalizer.js +68 -2
- package/dist/discovery/ColumnNormalizer.js.map +1 -1
- package/dist/discovery/Composer.d.ts +33 -2
- package/dist/discovery/Composer.d.ts.map +1 -1
- package/dist/discovery/Composer.js +126 -5
- package/dist/discovery/Composer.js.map +1 -1
- package/dist/discovery/DiscoveryEngine.d.ts +3 -0
- package/dist/discovery/DiscoveryEngine.d.ts.map +1 -1
- package/dist/discovery/DiscoveryEngine.js +1 -1
- package/dist/discovery/DiscoveryEngine.js.map +1 -1
- package/dist/discovery/EmbeddingProvider.d.ts +6 -1
- package/dist/discovery/EmbeddingProvider.d.ts.map +1 -1
- package/dist/discovery/EmbeddingProvider.js +11 -1
- package/dist/discovery/EmbeddingProvider.js.map +1 -1
- package/dist/discovery/EnumCandidateGate.d.ts +19 -0
- package/dist/discovery/EnumCandidateGate.d.ts.map +1 -1
- package/dist/discovery/EnumCandidateGate.js +47 -5
- package/dist/discovery/EnumCandidateGate.js.map +1 -1
- package/dist/discovery/FKGraphWalker.d.ts +35 -0
- package/dist/discovery/FKGraphWalker.d.ts.map +1 -1
- package/dist/discovery/FKGraphWalker.js +113 -12
- package/dist/discovery/FKGraphWalker.js.map +1 -1
- package/dist/discovery/IndexKeyEvidence.d.ts +36 -0
- package/dist/discovery/IndexKeyEvidence.d.ts.map +1 -0
- package/dist/discovery/IndexKeyEvidence.js +42 -0
- package/dist/discovery/IndexKeyEvidence.js.map +1 -0
- package/dist/discovery/JoinProbe.d.ts +148 -0
- package/dist/discovery/JoinProbe.d.ts.map +1 -0
- package/dist/discovery/JoinProbe.js +233 -0
- package/dist/discovery/JoinProbe.js.map +1 -0
- package/dist/discovery/LLMDiscoveryValidator.d.ts +10 -1
- package/dist/discovery/LLMDiscoveryValidator.d.ts.map +1 -1
- package/dist/discovery/LLMDiscoveryValidator.js +44 -12
- package/dist/discovery/LLMDiscoveryValidator.js.map +1 -1
- package/dist/discovery/LLMSanityChecker.d.ts.map +1 -1
- package/dist/discovery/LLMSanityChecker.js +10 -1
- package/dist/discovery/LLMSanityChecker.js.map +1 -1
- package/dist/discovery/OrganicKeyDetector.d.ts +29 -1
- package/dist/discovery/OrganicKeyDetector.d.ts.map +1 -1
- package/dist/discovery/OrganicKeyDetector.js +34 -5
- package/dist/discovery/OrganicKeyDetector.js.map +1 -1
- package/dist/discovery/OrganicKeyTranslator.d.ts +24 -5
- package/dist/discovery/OrganicKeyTranslator.d.ts.map +1 -1
- package/dist/discovery/OrganicKeyTranslator.js +32 -14
- package/dist/discovery/OrganicKeyTranslator.js.map +1 -1
- package/dist/discovery/PKDetector.d.ts +9 -0
- package/dist/discovery/PKDetector.d.ts.map +1 -1
- package/dist/discovery/PKDetector.js +86 -8
- package/dist/discovery/PKDetector.js.map +1 -1
- package/dist/discovery/SemanticPhase.d.ts +25 -0
- package/dist/discovery/SemanticPhase.d.ts.map +1 -1
- package/dist/discovery/SemanticPhase.js +55 -11
- package/dist/discovery/SemanticPhase.js.map +1 -1
- package/dist/discovery/StructuralPhase.d.ts +27 -5
- package/dist/discovery/StructuralPhase.d.ts.map +1 -1
- package/dist/discovery/StructuralPhase.js +42 -9
- package/dist/discovery/StructuralPhase.js.map +1 -1
- package/dist/discovery/TransitiveBridgeDetector.d.ts +5 -1
- package/dist/discovery/TransitiveBridgeDetector.d.ts.map +1 -1
- package/dist/discovery/TransitiveBridgeDetector.js +25 -3
- package/dist/discovery/TransitiveBridgeDetector.js.map +1 -1
- package/dist/discovery/embedding-provider-default.d.ts +25 -0
- package/dist/discovery/embedding-provider-default.d.ts.map +1 -0
- package/dist/discovery/embedding-provider-default.js +47 -0
- package/dist/discovery/embedding-provider-default.js.map +1 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts +63 -0
- package/dist/drivers/BaseAutoDocDriver.d.ts.map +1 -1
- package/dist/drivers/BaseAutoDocDriver.js +3 -5
- package/dist/drivers/BaseAutoDocDriver.js.map +1 -1
- package/dist/drivers/MySQLDriver.d.ts +21 -1
- package/dist/drivers/MySQLDriver.d.ts.map +1 -1
- package/dist/drivers/MySQLDriver.js +64 -0
- package/dist/drivers/MySQLDriver.js.map +1 -1
- package/dist/drivers/PostgreSQLDriver.d.ts +43 -2
- package/dist/drivers/PostgreSQLDriver.d.ts.map +1 -1
- package/dist/drivers/PostgreSQLDriver.js +132 -19
- package/dist/drivers/PostgreSQLDriver.js.map +1 -1
- package/dist/drivers/SQLServerDriver.d.ts +28 -1
- package/dist/drivers/SQLServerDriver.d.ts.map +1 -1
- package/dist/drivers/SQLServerDriver.js +108 -1
- package/dist/drivers/SQLServerDriver.js.map +1 -1
- package/dist/drivers/probeErrors.d.ts +30 -0
- package/dist/drivers/probeErrors.d.ts.map +1 -0
- package/dist/drivers/probeErrors.js +94 -0
- package/dist/drivers/probeErrors.js.map +1 -0
- package/dist/generators/AdditionalSchemaInfoGenerator.d.ts +34 -18
- package/dist/generators/AdditionalSchemaInfoGenerator.d.ts.map +1 -1
- package/dist/generators/AdditionalSchemaInfoGenerator.js +130 -8
- package/dist/generators/AdditionalSchemaInfoGenerator.js.map +1 -1
- package/dist/generators/ErdClusterGenerator.d.ts +44 -0
- package/dist/generators/ErdClusterGenerator.d.ts.map +1 -0
- package/dist/generators/ErdClusterGenerator.js +216 -0
- package/dist/generators/ErdClusterGenerator.js.map +1 -0
- package/dist/generators/ErdClusterer.d.ts +130 -0
- package/dist/generators/ErdClusterer.d.ts.map +1 -0
- package/dist/generators/ErdClusterer.js +308 -0
- package/dist/generators/ErdClusterer.js.map +1 -0
- package/dist/generators/HTMLGenerator.d.ts +6 -0
- package/dist/generators/HTMLGenerator.d.ts.map +1 -1
- package/dist/generators/HTMLGenerator.js +41 -6
- package/dist/generators/HTMLGenerator.js.map +1 -1
- package/dist/generators/MermaidGenerator.d.ts +3 -0
- package/dist/generators/MermaidGenerator.d.ts.map +1 -1
- package/dist/generators/MermaidGenerator.js +4 -0
- package/dist/generators/MermaidGenerator.js.map +1 -1
- package/dist/generators/index.d.ts +2 -0
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +2 -0
- package/dist/generators/index.js.map +1 -1
- package/dist/prompts/PromptEngine.d.ts.map +1 -1
- package/dist/prompts/PromptEngine.js +10 -1
- package/dist/prompts/PromptEngine.js.map +1 -1
- package/dist/types/analysis.d.ts +2 -0
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/config.d.ts +128 -4
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +7 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/discovery.d.ts +41 -0
- package/dist/types/discovery.d.ts.map +1 -1
- package/dist/types/state.d.ts +29 -0
- package/dist/types/state.d.ts.map +1 -1
- package/dist/utils/call-deadline.d.ts +43 -0
- package/dist/utils/call-deadline.d.ts.map +1 -0
- package/dist/utils/call-deadline.js +81 -0
- package/dist/utils/call-deadline.js.map +1 -0
- package/dist/utils/config-loader.d.ts +5 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +37 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/index-hints.d.ts +43 -0
- package/dist/utils/index-hints.d.ts.map +1 -0
- package/dist/utils/index-hints.js +80 -0
- package/dist/utils/index-hints.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/llm-factory.d.ts +1 -0
- package/dist/utils/llm-factory.d.ts.map +1 -1
- package/dist/utils/llm-factory.js +6 -1
- package/dist/utils/llm-factory.js.map +1 -1
- package/dist/utils/seed-context.d.ts +23 -0
- package/dist/utils/seed-context.d.ts.map +1 -0
- package/dist/utils/seed-context.js +38 -0
- package/dist/utils/seed-context.js.map +1 -0
- package/package.json +5 -5
- package/prompts/fk-pruning-holistic.md +7 -0
- package/prompts/fk-pruning-table.md +20 -1
- package/prompts/pk-pruning-holistic.md +7 -0
- package/prompts/pk-pruning-table.md +17 -0
- package/prompts/table-analysis.md +11 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Probe failure classification.
|
|
3
|
+
*
|
|
4
|
+
* A probe's failure reason is persisted into `additionalSchemaInfo` next to the key
|
|
5
|
+
* it explains, so it leaves the database and lands in a file a human reads. Database
|
|
6
|
+
* error messages routinely quote the offending value — PostgreSQL's
|
|
7
|
+
* `invalid input syntax for type uuid: "0f3c-not-a-uuid"`, SQL Server's
|
|
8
|
+
* `Conversion failed when converting the varchar value 'AA:1000000'` — which would
|
|
9
|
+
* smuggle customer data into the output of a component whose contract is counts only.
|
|
10
|
+
*
|
|
11
|
+
* So a raw driver error is never persisted. It is classified into one of a fixed set
|
|
12
|
+
* of reasons, and anything that could be a value is stripped from whatever tail is
|
|
13
|
+
* kept. {@link SanitizeErrorText} is the belt to the classifier's braces.
|
|
14
|
+
*/
|
|
15
|
+
/** Fixed causes a probe can fail for. The persisted reason is always one of these. */
|
|
16
|
+
const PROBE_FAILURE_PATTERNS = [
|
|
17
|
+
// Type incompatibility — the shape that matters most, because a silent 0 here is
|
|
18
|
+
// what hides a real cross-type soft key.
|
|
19
|
+
{ test: /operator does not exist|no operator matches|cannot be compared|operand type clash|invalid input syntax|conversion failed|data type .* is invalid|incompatible types|could not identify an equality operator/i,
|
|
20
|
+
reason: 'columns are not comparable (type mismatch)' },
|
|
21
|
+
// Cancellation / timeout.
|
|
22
|
+
{ test: /statement timeout|canceling statement|query was cancelled|query timeout|execution timeout|timeout expired|lock timeout|ETIMEDOUT/i,
|
|
23
|
+
reason: 'probe exceeded its timeout' },
|
|
24
|
+
// Authorization.
|
|
25
|
+
{ test: /permission denied|access is denied|insufficient privilege|not authorized|the SELECT permission was denied|must be owner/i,
|
|
26
|
+
reason: 'no permission to read one of the columns' },
|
|
27
|
+
// Missing object.
|
|
28
|
+
{ test: /does not exist|invalid object name|invalid column name|undefined table|undefined column|unknown column|relation .* does not exist/i,
|
|
29
|
+
reason: 'table or column no longer exists' },
|
|
30
|
+
// Connectivity.
|
|
31
|
+
{ test: /ECONNREFUSED|ECONNRESET|EPIPE|connection terminated|connection closed|server closed the connection|socket hang up|no connection|client has encountered/i,
|
|
32
|
+
reason: 'lost the database connection during the probe' },
|
|
33
|
+
// Resource pressure.
|
|
34
|
+
{ test: /out of memory|insufficient resources|too many connections|disk full|no space left|temporary file size exceeds/i,
|
|
35
|
+
reason: 'database refused the probe for lack of resources' },
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Remove anything from a message that could be a data value: single- or double-quoted
|
|
39
|
+
* runs, backticked runs, bracketed runs, and any long unbroken token. What survives is
|
|
40
|
+
* prose.
|
|
41
|
+
*/
|
|
42
|
+
export function SanitizeErrorText(text) {
|
|
43
|
+
return text
|
|
44
|
+
.replace(/'[^']*'/g, "'?'")
|
|
45
|
+
.replace(/"[^"]*"/g, '"?"')
|
|
46
|
+
.replace(/`[^`]*`/g, '`?`')
|
|
47
|
+
.replace(/\[[^\]]*\]/g, '[?]')
|
|
48
|
+
// Any remaining token of 25+ non-space characters is far more likely to be a
|
|
49
|
+
// value, identifier or key than a word of explanation.
|
|
50
|
+
.replace(/\S{25,}/g, '?')
|
|
51
|
+
.replace(/\s+/g, ' ')
|
|
52
|
+
.trim();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Classify a driver error into a fixed, value-free reason.
|
|
56
|
+
*
|
|
57
|
+
* Unrecognised errors fall back to a sanitised, length-capped tail so a novel failure
|
|
58
|
+
* is still debuggable, but it goes through {@link SanitizeErrorText} first.
|
|
59
|
+
*/
|
|
60
|
+
export function DescribeProbeFailure(error) {
|
|
61
|
+
const raw = errorMessage(error);
|
|
62
|
+
for (const { test, reason } of PROBE_FAILURE_PATTERNS) {
|
|
63
|
+
if (test.test(raw))
|
|
64
|
+
return reason;
|
|
65
|
+
}
|
|
66
|
+
const cleaned = SanitizeErrorText(raw);
|
|
67
|
+
const capped = cleaned.length > 120 ? `${cleaned.slice(0, 120)}…` : cleaned;
|
|
68
|
+
return capped.length > 0 ? `probe failed: ${capped}` : 'probe failed for an unknown reason';
|
|
69
|
+
}
|
|
70
|
+
/** Pull a provider error code (PostgreSQL SQLSTATE, MySQL errno, SQL Server number) if present. */
|
|
71
|
+
export function ExtractSqlState(error) {
|
|
72
|
+
if (error === null || typeof error !== 'object')
|
|
73
|
+
return undefined;
|
|
74
|
+
const rec = error;
|
|
75
|
+
const code = rec.code ?? rec.number ?? rec.errno;
|
|
76
|
+
if (typeof code === 'string' && code.length > 0)
|
|
77
|
+
return code;
|
|
78
|
+
if (typeof code === 'number')
|
|
79
|
+
return String(code);
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
function errorMessage(error) {
|
|
83
|
+
if (error instanceof Error)
|
|
84
|
+
return error.message;
|
|
85
|
+
if (typeof error === 'string')
|
|
86
|
+
return error;
|
|
87
|
+
if (error !== null && typeof error === 'object') {
|
|
88
|
+
const m = error.message;
|
|
89
|
+
if (typeof m === 'string')
|
|
90
|
+
return m;
|
|
91
|
+
}
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=probeErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probeErrors.js","sourceRoot":"","sources":["../../src/drivers/probeErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates additionalSchemaInfo.json compatible with MemberJunction CodeGen.
|
|
3
|
-
*
|
|
4
|
-
* CodeGen uses this file to set IsSoftPrimaryKey / IsSoftForeignKey flags on
|
|
5
|
-
* EntityField records, enabling relationship metadata for databases that lack
|
|
6
|
-
* proper FK/PK constraints.
|
|
7
|
-
*
|
|
8
|
-
* The output format is:
|
|
9
|
-
* {
|
|
10
|
-
* "<schemaName>": [
|
|
11
|
-
* {
|
|
12
|
-
* "TableName": "<tableName>",
|
|
13
|
-
* "PrimaryKey": [{ "FieldName": "...", "Description": "..." }],
|
|
14
|
-
* "ForeignKeys": [{ "FieldName": "...", "SchemaName": "...", "RelatedTable": "...", "RelatedField": "...", "Description": "..." }]
|
|
15
|
-
* }
|
|
16
|
-
* ]
|
|
17
|
-
* }
|
|
18
|
-
*/
|
|
19
1
|
import { DatabaseDocumentation } from '../types/state.js';
|
|
20
2
|
import { DetectedOrganicKeysOutput } from '../discovery/OrganicKeyTranslator.js';
|
|
21
3
|
export interface AdditionalSchemaInfoOptions {
|
|
@@ -49,6 +31,7 @@ export interface FieldValueListEntry {
|
|
|
49
31
|
Confidence?: number;
|
|
50
32
|
}
|
|
51
33
|
export declare class AdditionalSchemaInfoGenerator {
|
|
34
|
+
private readonly enumCandidateGate;
|
|
52
35
|
/**
|
|
53
36
|
* Generate additionalSchemaInfo JSON from analysis state.
|
|
54
37
|
*
|
|
@@ -101,6 +84,15 @@ export declare class AdditionalSchemaInfoGenerator {
|
|
|
101
84
|
* Collect value-list field entries from columns with enum verdicts.
|
|
102
85
|
* Only includes columns where the LLM marked isEnum=true and confidence
|
|
103
86
|
* meets the threshold.
|
|
87
|
+
*
|
|
88
|
+
* Unless a user approved the column, the verdict must also pass the enum candidate gate against
|
|
89
|
+
* the column's statistics, and only values observed in the column are kept. That way, a state
|
|
90
|
+
* file written before the gate existed does not export `__mj_*`, audit, year or GUID lists, or
|
|
91
|
+
* invented values. A list is closed (`List`) only when a user approved it; a list inferred from
|
|
92
|
+
* data is `ListOrUserEntry`, since the data cannot show that no other value is allowed. That holds
|
|
93
|
+
* for a column with a CHECK constraint too: CodeGen builds the closed list from a value-list
|
|
94
|
+
* CHECK itself, and a CHECK that is not a value list (e.g. `Status <> ''`) allows values the
|
|
95
|
+
* data does not hold.
|
|
104
96
|
*/
|
|
105
97
|
private collectValueListFields;
|
|
106
98
|
/**
|
|
@@ -111,6 +103,30 @@ export declare class AdditionalSchemaInfoGenerator {
|
|
|
111
103
|
* Collect foreign key columns from introspected table definition.
|
|
112
104
|
*/
|
|
113
105
|
private collectIntrospectedFKs;
|
|
106
|
+
/**
|
|
107
|
+
* MJ models a foreign key as one column, so a composite key is written as one entry per column
|
|
108
|
+
* pair. Only a pair whose target is unique on its own is kept: the other columns of a composite
|
|
109
|
+
* key usually point at columns that repeat in the target table (a join on them alone multiplies
|
|
110
|
+
* rows), so they are left out rather than guessed. A column of the constraint that points
|
|
111
|
+
* somewhere else (a different, real target) is kept; single-column keys are unchanged.
|
|
112
|
+
* A constraint read as a cross product (see {@link isCrossProduct}) keeps none of its pairs.
|
|
113
|
+
*/
|
|
114
|
+
private dropNonUniqueCompositePairs;
|
|
115
|
+
/** The introspected column pairs of each multi-column foreign key constraint, by constraint name. */
|
|
116
|
+
private compositeConstraints;
|
|
117
|
+
/**
|
|
118
|
+
* True when a constraint's pairs repeat a source column. A foreign key pairs each source column
|
|
119
|
+
* with exactly one referenced column, so a repeat can only be the N x N cross product the
|
|
120
|
+
* PostgreSQL driver produced before it read pg_constraint. Which pairing is right is unknown, so
|
|
121
|
+
* a state file written then must be re-introspected rather than exported as it is.
|
|
122
|
+
*/
|
|
123
|
+
private isCrossProduct;
|
|
124
|
+
/**
|
|
125
|
+
* Whether a column identifies one row of its table by itself: it is the table's only primary
|
|
126
|
+
* key column, or it has a unique, unfiltered single-column index. A target table that is not in
|
|
127
|
+
* the analysed state cannot be checked, so it counts as not unique.
|
|
128
|
+
*/
|
|
129
|
+
private isUniqueOnItsOwn;
|
|
114
130
|
/**
|
|
115
131
|
* Collect discovered PKs from the key detection phase.
|
|
116
132
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdditionalSchemaInfoGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/AdditionalSchemaInfoGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdditionalSchemaInfoGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/AdditionalSchemaInfoGenerator.ts"],"names":[],"mappings":"AA6DA,OAAO,EAAE,qBAAqB,EAAuD,MAAM,mBAAmB,CAAC;AAE/G,OAAO,EAAE,yBAAyB,EAAoB,MAAM,sCAAsC,CAAC;AAGnG,MAAM,WAAW,2BAA2B;IAC1C,uFAAuF;IACvF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4EAA4E;IAC5E,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAwBD,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC1C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyBD,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAE7D;;;;;;;;;;;;;OAaG;IACI,QAAQ,CACb,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,2BAAgC,GACxC,MAAM;IA6DT,wCAAwC;IACjC,QAAQ,CACb,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,2BAAgC,GACxC,MAAM;IAIT;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmDtB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IAiC9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IAiBnC,qGAAqG;IACrG,OAAO,CAAC,oBAAoB;IAU5B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAItB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
|
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describe a discovered FK, including what the probe measured.
|
|
3
|
+
*
|
|
4
|
+
* The confidence number alone is the LLM's self-report; the containment counts are the
|
|
5
|
+
* only part of this sentence grounded in the data.
|
|
6
|
+
*/
|
|
7
|
+
function describeDiscoveredFK(fk) {
|
|
8
|
+
const base = `AI-discovered relationship (confidence: ${fk.confidence}%)`;
|
|
9
|
+
const v = fk.verification;
|
|
10
|
+
if (!v)
|
|
11
|
+
return base;
|
|
12
|
+
if (v.Verification === 'Verified' && v.MatchedRows !== null && v.SampledRows !== null) {
|
|
13
|
+
return `${base} — join verified, ${v.MatchedRows}/${v.SampledRows} sampled values matched`;
|
|
14
|
+
}
|
|
15
|
+
if (v.Verification === 'Refuted') {
|
|
16
|
+
return `${base} — join REFUTED: ${v.VerificationNote}`;
|
|
17
|
+
}
|
|
18
|
+
return `${base} — join NOT verified: ${v.VerificationNote}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Find the verification stamp for a column that was stamped `isForeignKey` by a
|
|
22
|
+
* discovery stage, so the introspected-FK branch can report provenance for keys that
|
|
23
|
+
* did not actually come from a database constraint.
|
|
24
|
+
*
|
|
25
|
+
* Returns undefined for a genuinely introspected FK — a real constraint needs no probe,
|
|
26
|
+
* and claiming a verification nobody performed would be the same defect in reverse.
|
|
27
|
+
*/
|
|
28
|
+
function findVerificationForColumn(schemaName, tableName, columnName, discoveredFKs) {
|
|
29
|
+
const match = discoveredFKs.find(fk => fk.schemaName === schemaName &&
|
|
30
|
+
fk.sourceTable === tableName &&
|
|
31
|
+
fk.sourceColumn === columnName);
|
|
32
|
+
return match?.verification;
|
|
33
|
+
}
|
|
1
34
|
/**
|
|
2
35
|
* Generates additionalSchemaInfo.json compatible with MemberJunction CodeGen.
|
|
3
36
|
*
|
|
@@ -16,7 +49,12 @@
|
|
|
16
49
|
* ]
|
|
17
50
|
* }
|
|
18
51
|
*/
|
|
52
|
+
import { IsUniquelyIndexed } from '../utils/index-hints.js';
|
|
53
|
+
import { EnumCandidateGate } from '../discovery/EnumCandidateGate.js';
|
|
19
54
|
export class AdditionalSchemaInfoGenerator {
|
|
55
|
+
constructor() {
|
|
56
|
+
this.enumCandidateGate = new EnumCandidateGate();
|
|
57
|
+
}
|
|
20
58
|
/**
|
|
21
59
|
* Generate additionalSchemaInfo JSON from analysis state.
|
|
22
60
|
*
|
|
@@ -45,7 +83,7 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
45
83
|
if (options.ApprovedOnly && !table.userApproved) {
|
|
46
84
|
continue;
|
|
47
85
|
}
|
|
48
|
-
const tableInfo = this.buildTableInfo(schema, table, discoveredPKs, discoveredFKs, options.DiscoveredOnly ?? false, options.ValueListConfidenceThreshold ?? 85, options.ExcludeValueLists ?? false, options.ConfirmedOnly ?? false);
|
|
86
|
+
const tableInfo = this.buildTableInfo(state, schema, table, discoveredPKs, discoveredFKs, options.DiscoveredOnly ?? false, options.ValueListConfidenceThreshold ?? 85, options.ExcludeValueLists ?? false, options.ConfirmedOnly ?? false);
|
|
49
87
|
if (tableInfo) {
|
|
50
88
|
// Attach organic keys for this table when detection output is present.
|
|
51
89
|
const orgKeys = this.getOrganicKeysForTable(options.OrganicKeys, schema.name, table.name);
|
|
@@ -157,17 +195,20 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
157
195
|
* Build a single table's schema info entry by combining
|
|
158
196
|
* introspected and discovered keys, plus value-list fields.
|
|
159
197
|
*/
|
|
160
|
-
buildTableInfo(schema, table, discoveredPKs, discoveredFKs, discoveredOnly, valueListThreshold, excludeValueLists, confirmedOnly) {
|
|
198
|
+
buildTableInfo(state, schema, table, discoveredPKs, discoveredFKs, discoveredOnly, valueListThreshold, excludeValueLists, confirmedOnly) {
|
|
161
199
|
const pks = [];
|
|
162
200
|
const fks = [];
|
|
163
201
|
// Source 1: Hard keys from introspection (skip if discoveredOnly)
|
|
164
202
|
if (!discoveredOnly) {
|
|
165
203
|
this.collectIntrospectedPKs(table, pks);
|
|
166
|
-
this.collectIntrospectedFKs(schema, table, fks);
|
|
204
|
+
this.collectIntrospectedFKs(schema, table, fks, discoveredFKs);
|
|
167
205
|
}
|
|
168
206
|
// Source 2: AI-discovered keys
|
|
169
207
|
this.collectDiscoveredPKs(schema.name, table.name, discoveredPKs, pks);
|
|
170
208
|
this.collectDiscoveredFKs(schema.name, table.name, discoveredFKs, fks);
|
|
209
|
+
// A composite FK's column pairs whose target is not unique on its own are dropped whichever
|
|
210
|
+
// source proposed them: introspection, a discovery pass, or the LLM confirming the constraint.
|
|
211
|
+
this.dropNonUniqueCompositePairs(state, schema, table, fks);
|
|
171
212
|
// Source 3: Value-list fields from enum detection
|
|
172
213
|
const fields = excludeValueLists
|
|
173
214
|
? []
|
|
@@ -191,6 +232,15 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
191
232
|
* Collect value-list field entries from columns with enum verdicts.
|
|
192
233
|
* Only includes columns where the LLM marked isEnum=true and confidence
|
|
193
234
|
* meets the threshold.
|
|
235
|
+
*
|
|
236
|
+
* Unless a user approved the column, the verdict must also pass the enum candidate gate against
|
|
237
|
+
* the column's statistics, and only values observed in the column are kept. That way, a state
|
|
238
|
+
* file written before the gate existed does not export `__mj_*`, audit, year or GUID lists, or
|
|
239
|
+
* invented values. A list is closed (`List`) only when a user approved it; a list inferred from
|
|
240
|
+
* data is `ListOrUserEntry`, since the data cannot show that no other value is allowed. That holds
|
|
241
|
+
* for a column with a CHECK constraint too: CodeGen builds the closed list from a value-list
|
|
242
|
+
* CHECK itself, and a CHECK that is not a value list (e.g. `Status <> ''`) allows values the
|
|
243
|
+
* data does not hold.
|
|
194
244
|
*/
|
|
195
245
|
collectValueListFields(table, threshold, confirmedOnly) {
|
|
196
246
|
const fields = [];
|
|
@@ -202,11 +252,16 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
202
252
|
continue;
|
|
203
253
|
if (confirmedOnly && !col.userApproved)
|
|
204
254
|
continue;
|
|
255
|
+
const values = col.userApproved
|
|
256
|
+
? verdict.values
|
|
257
|
+
: this.enumCandidateGate.FilterVerdictValues(col, table.rowCount, verdict.values);
|
|
258
|
+
if (!values)
|
|
259
|
+
continue;
|
|
205
260
|
// Sort values alphabetically — matches CHECK-constraint pass behavior
|
|
206
|
-
const sortedValues = [...
|
|
261
|
+
const sortedValues = [...values].sort();
|
|
207
262
|
fields.push({
|
|
208
263
|
FieldName: col.name,
|
|
209
|
-
ValueListType: verdict.type,
|
|
264
|
+
ValueListType: col.userApproved ? verdict.type : 'ListOrUserEntry',
|
|
210
265
|
PossibleValues: sortedValues,
|
|
211
266
|
Description: col.description ?? undefined,
|
|
212
267
|
Confidence: Math.round(verdict.confidence * 100),
|
|
@@ -231,7 +286,7 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
231
286
|
/**
|
|
232
287
|
* Collect foreign key columns from introspected table definition.
|
|
233
288
|
*/
|
|
234
|
-
collectIntrospectedFKs(schema, table, fks) {
|
|
289
|
+
collectIntrospectedFKs(schema, table, fks, discoveredFKs = []) {
|
|
235
290
|
const existingKeys = new Set(fks.map(f => `${f.FieldName}->${f.RelatedTable}.${f.RelatedField}`));
|
|
236
291
|
// From column-level foreignKeyReferences
|
|
237
292
|
for (const col of table.columns) {
|
|
@@ -240,12 +295,19 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
240
295
|
const key = `${col.name}->${ref.table}.${ref.referencedColumn}`;
|
|
241
296
|
if (!existingKeys.has(key)) {
|
|
242
297
|
existingKeys.add(key);
|
|
298
|
+
// NOTE: this branch has no confidence, status or containment gate — whatever
|
|
299
|
+
// set `col.isForeignKey` gets emitted. The LLM-proposed FK path stamps exactly
|
|
300
|
+
// these two fields on the column, so before the probe gate existed an
|
|
301
|
+
// unverified key reached the output here even when the `discovered.foreignKeys`
|
|
302
|
+
// filter would have rejected it. The provenance below is what makes that
|
|
303
|
+
// visible rather than indistinguishable from a real introspected constraint.
|
|
243
304
|
fks.push({
|
|
244
305
|
FieldName: col.name,
|
|
245
306
|
SchemaName: ref.schema || schema.name,
|
|
246
307
|
RelatedTable: ref.table,
|
|
247
308
|
RelatedField: ref.referencedColumn,
|
|
248
|
-
Description: col.description
|
|
309
|
+
Description: col.description,
|
|
310
|
+
Verification: findVerificationForColumn(schema.name, table.name, col.name, discoveredFKs)
|
|
249
311
|
});
|
|
250
312
|
}
|
|
251
313
|
}
|
|
@@ -264,6 +326,65 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
264
326
|
}
|
|
265
327
|
}
|
|
266
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* MJ models a foreign key as one column, so a composite key is written as one entry per column
|
|
331
|
+
* pair. Only a pair whose target is unique on its own is kept: the other columns of a composite
|
|
332
|
+
* key usually point at columns that repeat in the target table (a join on them alone multiplies
|
|
333
|
+
* rows), so they are left out rather than guessed. A column of the constraint that points
|
|
334
|
+
* somewhere else (a different, real target) is kept; single-column keys are unchanged.
|
|
335
|
+
* A constraint read as a cross product (see {@link isCrossProduct}) keeps none of its pairs.
|
|
336
|
+
*/
|
|
337
|
+
dropNonUniqueCompositePairs(state, schema, table, fks) {
|
|
338
|
+
const drop = new Set();
|
|
339
|
+
for (const pairs of this.compositeConstraints(table).values()) {
|
|
340
|
+
const crossProduct = this.isCrossProduct(pairs);
|
|
341
|
+
for (const dep of pairs) {
|
|
342
|
+
if (crossProduct || !this.isUniqueOnItsOwn(state, dep.schema || schema.name, dep.table, dep.referencedColumn)) {
|
|
343
|
+
drop.add(`${dep.column}->${dep.table}.${dep.referencedColumn}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (drop.size === 0) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const kept = fks.filter(f => !drop.has(`${f.FieldName}->${f.RelatedTable}.${f.RelatedField}`));
|
|
351
|
+
fks.splice(0, fks.length, ...kept);
|
|
352
|
+
}
|
|
353
|
+
/** The introspected column pairs of each multi-column foreign key constraint, by constraint name. */
|
|
354
|
+
compositeConstraints(table) {
|
|
355
|
+
const byConstraint = new Map();
|
|
356
|
+
for (const dep of table.dependsOn) {
|
|
357
|
+
if (dep.constraintName) {
|
|
358
|
+
byConstraint.set(dep.constraintName, [...(byConstraint.get(dep.constraintName) ?? []), dep]);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return new Map([...byConstraint].filter(([, pairs]) => pairs.length > 1));
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* True when a constraint's pairs repeat a source column. A foreign key pairs each source column
|
|
365
|
+
* with exactly one referenced column, so a repeat can only be the N x N cross product the
|
|
366
|
+
* PostgreSQL driver produced before it read pg_constraint. Which pairing is right is unknown, so
|
|
367
|
+
* a state file written then must be re-introspected rather than exported as it is.
|
|
368
|
+
*/
|
|
369
|
+
isCrossProduct(pairs) {
|
|
370
|
+
return new Set(pairs.map(p => p.column.toLowerCase())).size < pairs.length;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Whether a column identifies one row of its table by itself: it is the table's only primary
|
|
374
|
+
* key column, or it has a unique, unfiltered single-column index. A target table that is not in
|
|
375
|
+
* the analysed state cannot be checked, so it counts as not unique.
|
|
376
|
+
*/
|
|
377
|
+
isUniqueOnItsOwn(state, schemaName, tableName, columnName) {
|
|
378
|
+
const target = state.schemas.find(s => s.name === schemaName)?.tables.find(t => t.name === tableName);
|
|
379
|
+
if (!target) {
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
const pkColumns = target.columns.filter(c => c.isPrimaryKey);
|
|
383
|
+
if (pkColumns.length === 1 && pkColumns[0].name.toLowerCase() === columnName.toLowerCase()) {
|
|
384
|
+
return true;
|
|
385
|
+
}
|
|
386
|
+
return IsUniquelyIndexed(target, columnName) === true;
|
|
387
|
+
}
|
|
267
388
|
/**
|
|
268
389
|
* Collect discovered PKs from the key detection phase.
|
|
269
390
|
*/
|
|
@@ -297,7 +418,8 @@ export class AdditionalSchemaInfoGenerator {
|
|
|
297
418
|
SchemaName: fk.targetSchema || schemaName,
|
|
298
419
|
RelatedTable: fk.targetTable,
|
|
299
420
|
RelatedField: fk.targetColumn,
|
|
300
|
-
Description:
|
|
421
|
+
Description: describeDiscoveredFK(fk),
|
|
422
|
+
Verification: fk.verification
|
|
301
423
|
});
|
|
302
424
|
}
|
|
303
425
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdditionalSchemaInfoGenerator.js","sourceRoot":"","sources":["../../src/generators/AdditionalSchemaInfoGenerator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdditionalSchemaInfoGenerator.js","sourceRoot":"","sources":["../../src/generators/AdditionalSchemaInfoGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders an ErdClusterPlan as one Mermaid ERD per cluster page, each wrapped in a standalone HTML
|
|
3
|
+
* page, plus an index (HTML and Markdown) that lists the subject areas, the reference tables and the
|
|
4
|
+
* tables no diagram shows. Every page stays well inside Mermaid's text limit by drawing primary and
|
|
5
|
+
* foreign key columns only (configurable).
|
|
6
|
+
*/
|
|
7
|
+
import { DatabaseDocumentation } from '../types/state.js';
|
|
8
|
+
import { ErdColumnMode } from '../types/config.js';
|
|
9
|
+
import { ErdCluster, ErdClusterPage, ErdClusterPlan } from './ErdClusterer.js';
|
|
10
|
+
export interface ErdClusterGeneratorOptions {
|
|
11
|
+
/** Which columns each entity shows. Default `keys`. */
|
|
12
|
+
columns?: ErdColumnMode;
|
|
13
|
+
}
|
|
14
|
+
export interface ErdClusterFile {
|
|
15
|
+
/** File name without extension, e.g. `cluster-Customer-2`. */
|
|
16
|
+
BaseName: string;
|
|
17
|
+
Title: string;
|
|
18
|
+
Cluster: ErdCluster;
|
|
19
|
+
Page: ErdClusterPage;
|
|
20
|
+
Mermaid: string;
|
|
21
|
+
Html: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ErdClusterOutput {
|
|
24
|
+
Files: ErdClusterFile[];
|
|
25
|
+
IndexHtml: string;
|
|
26
|
+
IndexMarkdown: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class ErdClusterGenerator {
|
|
29
|
+
Generate(state: DatabaseDocumentation, plan: ErdClusterPlan, options?: ErdClusterGeneratorOptions): ErdClusterOutput;
|
|
30
|
+
/** The Mermaid source for one page: its tables and the FK edges between them. */
|
|
31
|
+
RenderPage(plan: ErdClusterPlan, cluster: ErdCluster, page: ErdClusterPage, columns?: ErdColumnMode): string;
|
|
32
|
+
private showColumn;
|
|
33
|
+
/** Mermaid entity and attribute names allow only word characters. */
|
|
34
|
+
private identifier;
|
|
35
|
+
/** `label` plus the tables at the far end of `edges`, each with how many edges reach it. */
|
|
36
|
+
private linkedAreas;
|
|
37
|
+
private renderPageHtml;
|
|
38
|
+
private renderIndexHtml;
|
|
39
|
+
private renderIndexMarkdown;
|
|
40
|
+
/** The one-paragraph description of how the plan was built, shared by both indexes. */
|
|
41
|
+
private planSummary;
|
|
42
|
+
private escape;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ErdClusterGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErdClusterGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/ErdClusterGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAoB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAW,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,0BAA0B;IACzC,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AASD,qBAAa,mBAAmB;IACvB,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,0BAA+B,GAAG,gBAAgB;IAwB/H,iFAAiF;IAC1E,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,aAAsB,GAAG,MAAM;IAwB3H,OAAO,CAAC,UAAU;IAMlB,qEAAqE;IACrE,OAAO,CAAC,UAAU;IAIlB,4FAA4F;IAC5F,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,mBAAmB;IA2B3B,uFAAuF;IACvF,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,MAAM;CAGf"}
|