coalesce-transform-mcp 0.3.0 → 0.4.2
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 +74 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -2
- package/dist/client.js.map +1 -1
- package/dist/coalesce/api/environments.d.ts +0 -12
- package/dist/coalesce/api/environments.d.ts.map +1 -1
- package/dist/coalesce/api/environments.js +0 -4
- package/dist/coalesce/api/environments.js.map +1 -1
- package/dist/coalesce/api/jobs.d.ts +3 -5
- package/dist/coalesce/api/jobs.d.ts.map +1 -1
- package/dist/coalesce/api/jobs.js +3 -6
- package/dist/coalesce/api/jobs.js.map +1 -1
- package/dist/coalesce/api/nodes.d.ts +3 -3
- package/dist/coalesce/api/nodes.d.ts.map +1 -1
- package/dist/coalesce/api/nodes.js +6 -4
- package/dist/coalesce/api/nodes.js.map +1 -1
- package/dist/coalesce/api/runs.d.ts.map +1 -1
- package/dist/coalesce/api/runs.js +11 -1
- package/dist/coalesce/api/runs.js.map +1 -1
- package/dist/coalesce/api/scan.d.ts +14 -0
- package/dist/coalesce/api/scan.d.ts.map +1 -0
- package/dist/coalesce/api/scan.js +64 -0
- package/dist/coalesce/api/scan.js.map +1 -0
- package/dist/coalesce/api/subgraphs.d.ts +3 -2
- package/dist/coalesce/api/subgraphs.d.ts.map +1 -1
- package/dist/coalesce/api/subgraphs.js +3 -2
- package/dist/coalesce/api/subgraphs.js.map +1 -1
- package/dist/coalesce/run-schemas.d.ts.map +1 -1
- package/dist/coalesce/run-schemas.js +26 -16
- package/dist/coalesce/run-schemas.js.map +1 -1
- package/dist/coalesce/tool-response.d.ts +1 -13
- package/dist/coalesce/tool-response.d.ts.map +1 -1
- package/dist/coalesce/tool-response.js +20 -6
- package/dist/coalesce/tool-response.js.map +1 -1
- package/dist/coalesce/tool-schemas.d.ts +1 -2
- package/dist/coalesce/tool-schemas.d.ts.map +1 -1
- package/dist/coalesce/tool-schemas.js +368 -5
- package/dist/coalesce/tool-schemas.js.map +1 -1
- package/dist/coalesce/types.d.ts +8 -0
- package/dist/coalesce/types.d.ts.map +1 -1
- package/dist/coalesce/types.js +3 -1
- package/dist/coalesce/types.js.map +1 -1
- package/dist/constants.d.ts +18 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/mcp/cache.d.ts +2 -1
- package/dist/mcp/cache.d.ts.map +1 -1
- package/dist/mcp/cache.js +122 -138
- package/dist/mcp/cache.js.map +1 -1
- package/dist/mcp/environments.d.ts +2 -1
- package/dist/mcp/environments.d.ts.map +1 -1
- package/dist/mcp/environments.js +56 -112
- package/dist/mcp/environments.js.map +1 -1
- package/dist/mcp/git-accounts.d.ts +2 -1
- package/dist/mcp/git-accounts.d.ts.map +1 -1
- package/dist/mcp/git-accounts.js +74 -96
- package/dist/mcp/git-accounts.js.map +1 -1
- package/dist/mcp/jobs.d.ts +2 -1
- package/dist/mcp/jobs.d.ts.map +1 -1
- package/dist/mcp/jobs.js +68 -122
- package/dist/mcp/jobs.js.map +1 -1
- package/dist/mcp/lineage.d.ts +5 -0
- package/dist/mcp/lineage.d.ts.map +1 -0
- package/dist/mcp/lineage.js +410 -0
- package/dist/mcp/lineage.js.map +1 -0
- package/dist/mcp/node-type-corpus.d.ts +2 -1
- package/dist/mcp/node-type-corpus.d.ts.map +1 -1
- package/dist/mcp/node-type-corpus.js +148 -151
- package/dist/mcp/node-type-corpus.js.map +1 -1
- package/dist/mcp/nodes.d.ts +2 -1
- package/dist/mcp/nodes.d.ts.map +1 -1
- package/dist/mcp/nodes.js +358 -464
- package/dist/mcp/nodes.js.map +1 -1
- package/dist/mcp/pipelines.d.ts +2 -1
- package/dist/mcp/pipelines.d.ts.map +1 -1
- package/dist/mcp/pipelines.js +514 -314
- package/dist/mcp/pipelines.js.map +1 -1
- package/dist/mcp/projects.d.ts +2 -1
- package/dist/mcp/projects.d.ts.map +1 -1
- package/dist/mcp/projects.js +66 -100
- package/dist/mcp/projects.js.map +1 -1
- package/dist/mcp/repo-node-types.d.ts +2 -1
- package/dist/mcp/repo-node-types.d.ts.map +1 -1
- package/dist/mcp/repo-node-types.js +92 -121
- package/dist/mcp/repo-node-types.js.map +1 -1
- package/dist/mcp/runs.d.ts +3 -2
- package/dist/mcp/runs.d.ts.map +1 -1
- package/dist/mcp/runs.js +93 -148
- package/dist/mcp/runs.js.map +1 -1
- package/dist/mcp/skills.d.ts +13 -0
- package/dist/mcp/skills.d.ts.map +1 -0
- package/dist/mcp/skills.js +85 -0
- package/dist/mcp/skills.js.map +1 -0
- package/dist/mcp/subgraphs.d.ts +2 -1
- package/dist/mcp/subgraphs.d.ts.map +1 -1
- package/dist/mcp/subgraphs.js +61 -98
- package/dist/mcp/subgraphs.js.map +1 -1
- package/dist/mcp/tool-helpers.d.ts +37 -0
- package/dist/mcp/tool-helpers.d.ts.map +1 -0
- package/dist/mcp/tool-helpers.js +82 -0
- package/dist/mcp/tool-helpers.js.map +1 -0
- package/dist/mcp/users.d.ts +2 -1
- package/dist/mcp/users.d.ts.map +1 -1
- package/dist/mcp/users.js +92 -145
- package/dist/mcp/users.js.map +1 -1
- package/dist/mcp/workshop.d.ts +2 -1
- package/dist/mcp/workshop.d.ts.map +1 -1
- package/dist/mcp/workshop.js +66 -101
- package/dist/mcp/workshop.js.map +1 -1
- package/dist/mcp/workspaces.d.ts +2 -1
- package/dist/mcp/workspaces.d.ts.map +1 -1
- package/dist/mcp/workspaces.js +19 -34
- package/dist/mcp/workspaces.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +85 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/context/pipeline-workshop-guide.md +1 -1
- package/dist/resources/context/tool-usage.md +7 -0
- package/dist/resources/index.d.ts +13 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +105 -5
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/node-payloads.d.ts +2 -2
- package/dist/server.d.ts +2 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +158 -41
- package/dist/server.js.map +1 -1
- package/dist/services/cache/snapshots.d.ts.map +1 -1
- package/dist/services/cache/snapshots.js +9 -5
- package/dist/services/cache/snapshots.js.map +1 -1
- package/dist/services/config/schema-resolver.d.ts.map +1 -1
- package/dist/services/config/schema-resolver.js +3 -6
- package/dist/services/config/schema-resolver.js.map +1 -1
- package/dist/services/lineage/lineage-cache.d.ts +53 -0
- package/dist/services/lineage/lineage-cache.d.ts.map +1 -0
- package/dist/services/lineage/lineage-cache.js +335 -0
- package/dist/services/lineage/lineage-cache.js.map +1 -0
- package/dist/services/lineage/lineage-documentation.d.ts +29 -0
- package/dist/services/lineage/lineage-documentation.d.ts.map +1 -0
- package/dist/services/lineage/lineage-documentation.js +80 -0
- package/dist/services/lineage/lineage-documentation.js.map +1 -0
- package/dist/services/lineage/lineage-propagation.d.ts +47 -0
- package/dist/services/lineage/lineage-propagation.d.ts.map +1 -0
- package/dist/services/lineage/lineage-propagation.js +176 -0
- package/dist/services/lineage/lineage-propagation.js.map +1 -0
- package/dist/services/lineage/lineage-search.d.ts +33 -0
- package/dist/services/lineage/lineage-search.d.ts.map +1 -0
- package/dist/services/lineage/lineage-search.js +133 -0
- package/dist/services/lineage/lineage-search.js.map +1 -0
- package/dist/services/lineage/lineage-traversal.d.ts +34 -0
- package/dist/services/lineage/lineage-traversal.d.ts.map +1 -0
- package/dist/services/lineage/lineage-traversal.js +283 -0
- package/dist/services/lineage/lineage-traversal.js.map +1 -0
- package/dist/services/pipelines/clause-extraction.d.ts +3 -0
- package/dist/services/pipelines/clause-extraction.d.ts.map +1 -0
- package/dist/services/pipelines/clause-extraction.js +27 -0
- package/dist/services/pipelines/clause-extraction.js.map +1 -0
- package/dist/services/pipelines/column-helpers.d.ts +8 -0
- package/dist/services/pipelines/column-helpers.d.ts.map +1 -0
- package/dist/services/pipelines/column-helpers.js +125 -0
- package/dist/services/pipelines/column-helpers.js.map +1 -0
- package/dist/services/pipelines/cte-parsing.d.ts +29 -0
- package/dist/services/pipelines/cte-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/cte-parsing.js +160 -0
- package/dist/services/pipelines/cte-parsing.js.map +1 -0
- package/dist/services/pipelines/cte-planning.d.ts +22 -0
- package/dist/services/pipelines/cte-planning.d.ts.map +1 -0
- package/dist/services/pipelines/cte-planning.js +206 -0
- package/dist/services/pipelines/cte-planning.js.map +1 -0
- package/dist/services/pipelines/execution.d.ts.map +1 -1
- package/dist/services/pipelines/execution.js +0 -1
- package/dist/services/pipelines/execution.js.map +1 -1
- package/dist/services/pipelines/intent-parsing.d.ts +24 -0
- package/dist/services/pipelines/intent-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/intent-parsing.js +245 -0
- package/dist/services/pipelines/intent-parsing.js.map +1 -0
- package/dist/services/pipelines/intent-resolution.d.ts +24 -0
- package/dist/services/pipelines/intent-resolution.d.ts.map +1 -0
- package/dist/services/pipelines/intent-resolution.js +141 -0
- package/dist/services/pipelines/intent-resolution.js.map +1 -0
- package/dist/services/pipelines/intent.d.ts +4 -45
- package/dist/services/pipelines/intent.d.ts.map +1 -1
- package/dist/services/pipelines/intent.js +14 -408
- package/dist/services/pipelines/intent.js.map +1 -1
- package/dist/services/pipelines/node-type-candidates.d.ts +6 -0
- package/dist/services/pipelines/node-type-candidates.d.ts.map +1 -0
- package/dist/services/pipelines/node-type-candidates.js +165 -0
- package/dist/services/pipelines/node-type-candidates.js.map +1 -0
- package/dist/services/pipelines/node-type-intent.d.ts +1 -5
- package/dist/services/pipelines/node-type-intent.d.ts.map +1 -1
- package/dist/services/pipelines/node-type-intent.js +1 -5
- package/dist/services/pipelines/node-type-intent.js.map +1 -1
- package/dist/services/pipelines/node-type-scoring.d.ts +13 -0
- package/dist/services/pipelines/node-type-scoring.d.ts.map +1 -0
- package/dist/services/pipelines/node-type-scoring.js +322 -0
- package/dist/services/pipelines/node-type-scoring.js.map +1 -0
- package/dist/services/pipelines/node-type-selection.d.ts +22 -2
- package/dist/services/pipelines/node-type-selection.d.ts.map +1 -1
- package/dist/services/pipelines/node-type-selection.js +16 -538
- package/dist/services/pipelines/node-type-selection.js.map +1 -1
- package/dist/services/pipelines/plan-builder.d.ts +33 -0
- package/dist/services/pipelines/plan-builder.d.ts.map +1 -0
- package/dist/services/pipelines/plan-builder.js +224 -0
- package/dist/services/pipelines/plan-builder.js.map +1 -0
- package/dist/services/pipelines/planning-types.d.ts +543 -0
- package/dist/services/pipelines/planning-types.d.ts.map +1 -0
- package/dist/services/pipelines/planning-types.js +85 -0
- package/dist/services/pipelines/planning-types.js.map +1 -0
- package/dist/services/pipelines/planning.d.ts +8 -537
- package/dist/services/pipelines/planning.d.ts.map +1 -1
- package/dist/services/pipelines/planning.js +10 -1956
- package/dist/services/pipelines/planning.js.map +1 -1
- package/dist/services/pipelines/review.d.ts.map +1 -1
- package/dist/services/pipelines/review.js +3 -8
- package/dist/services/pipelines/review.js.map +1 -1
- package/dist/services/pipelines/select-parsing.d.ts +7 -0
- package/dist/services/pipelines/select-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/select-parsing.js +185 -0
- package/dist/services/pipelines/select-parsing.js.map +1 -0
- package/dist/services/pipelines/source-parsing.d.ts +8 -0
- package/dist/services/pipelines/source-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/source-parsing.js +151 -0
- package/dist/services/pipelines/source-parsing.js.map +1 -0
- package/dist/services/pipelines/sql-parsing.d.ts +8 -0
- package/dist/services/pipelines/sql-parsing.d.ts.map +1 -0
- package/dist/services/pipelines/sql-parsing.js +9 -0
- package/dist/services/pipelines/sql-parsing.js.map +1 -0
- package/dist/services/pipelines/sql-tokenizer.d.ts +42 -0
- package/dist/services/pipelines/sql-tokenizer.d.ts.map +1 -0
- package/dist/services/pipelines/sql-tokenizer.js +493 -0
- package/dist/services/pipelines/sql-tokenizer.js.map +1 -0
- package/dist/services/pipelines/sql-utils.d.ts +30 -0
- package/dist/services/pipelines/sql-utils.d.ts.map +1 -0
- package/dist/services/pipelines/sql-utils.js +62 -0
- package/dist/services/pipelines/sql-utils.js.map +1 -0
- package/dist/services/pipelines/workshop.d.ts.map +1 -1
- package/dist/services/pipelines/workshop.js +53 -25
- package/dist/services/pipelines/workshop.js.map +1 -1
- package/dist/services/pipelines/workspace-resolution.d.ts +18 -0
- package/dist/services/pipelines/workspace-resolution.d.ts.map +1 -0
- package/dist/services/pipelines/workspace-resolution.js +279 -0
- package/dist/services/pipelines/workspace-resolution.js.map +1 -0
- package/dist/services/runs/diagnostics.d.ts.map +1 -1
- package/dist/services/runs/diagnostics.js +3 -8
- package/dist/services/runs/diagnostics.js.map +1 -1
- package/dist/services/shared/elicitation.d.ts +14 -0
- package/dist/services/shared/elicitation.d.ts.map +1 -0
- package/dist/services/shared/elicitation.js +56 -0
- package/dist/services/shared/elicitation.js.map +1 -0
- package/dist/services/workspace/node-creation.d.ts.map +1 -1
- package/dist/services/workspace/node-creation.js +5 -1
- package/dist/services/workspace/node-creation.js.map +1 -1
- package/dist/services/workspace/node-update-helpers.d.ts.map +1 -1
- package/dist/services/workspace/node-update-helpers.js +3 -8
- package/dist/services/workspace/node-update-helpers.js.map +1 -1
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +20 -1
- package/dist/utils.js.map +1 -1
- package/dist/workflows/get-environment-health.d.ts +49 -0
- package/dist/workflows/get-environment-health.d.ts.map +1 -0
- package/dist/workflows/get-environment-health.js +310 -0
- package/dist/workflows/get-environment-health.js.map +1 -0
- package/dist/workflows/get-environment-overview.d.ts +2 -1
- package/dist/workflows/get-environment-overview.d.ts.map +1 -1
- package/dist/workflows/get-environment-overview.js +13 -19
- package/dist/workflows/get-environment-overview.js.map +1 -1
- package/dist/workflows/get-run-details.d.ts +2 -2
- package/dist/workflows/get-run-details.d.ts.map +1 -1
- package/dist/workflows/get-run-details.js +14 -19
- package/dist/workflows/get-run-details.js.map +1 -1
- package/dist/workflows/retry-and-wait.d.ts.map +1 -1
- package/dist/workflows/retry-and-wait.js +3 -2
- package/dist/workflows/retry-and-wait.js.map +1 -1
- package/dist/workflows/run-and-wait.d.ts.map +1 -1
- package/dist/workflows/run-and-wait.js +3 -2
- package/dist/workflows/run-and-wait.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { resolveRepoNodeType, } from "../repo/parser.js";
|
|
2
|
+
import { buildSetWorkspaceNodeTemplateFromDefinition } from "../templates/nodes.js";
|
|
3
|
+
import { isPlainObject } from "../../utils.js";
|
|
4
|
+
import { inferFamily, isAutoExecutableFamily, matchesNodeTypeIdentity, } from "./node-type-selection.js";
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Helpers
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
function getString(value) {
|
|
9
|
+
return typeof value === "string" ? value : null;
|
|
10
|
+
}
|
|
11
|
+
function compareStrings(left, right) {
|
|
12
|
+
return left.localeCompare(right, undefined, {
|
|
13
|
+
numeric: true,
|
|
14
|
+
sensitivity: "case",
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function getDefinitionConfigItems(nodeDefinition) {
|
|
18
|
+
const groups = Array.isArray(nodeDefinition.config)
|
|
19
|
+
? nodeDefinition.config.filter(isPlainObject)
|
|
20
|
+
: [];
|
|
21
|
+
return groups.flatMap((group) => Array.isArray(group.items) ? group.items.filter(isPlainObject) : []);
|
|
22
|
+
}
|
|
23
|
+
function analyzeDefinition(nodeDefinition) {
|
|
24
|
+
if (!nodeDefinition) {
|
|
25
|
+
return {
|
|
26
|
+
semanticSignals: [],
|
|
27
|
+
missingDefaultFields: [],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const semanticSignals = new Set();
|
|
31
|
+
const missingDefaultFields = new Set();
|
|
32
|
+
for (const item of getDefinitionConfigItems(nodeDefinition)) {
|
|
33
|
+
const label = getString(item.attributeName) ??
|
|
34
|
+
getString(item.displayName) ??
|
|
35
|
+
getString(item.type) ??
|
|
36
|
+
"unknown";
|
|
37
|
+
const normalizedLabel = label.toLowerCase();
|
|
38
|
+
const itemType = getString(item.type) ?? "";
|
|
39
|
+
const hasDefault = Object.prototype.hasOwnProperty.call(item, "default");
|
|
40
|
+
if (/(business.?key|surrogate|scd|effective|current.?flag|grain|hash|hub|satellite|link|fact|dimension|merge.?key)/u.test(normalizedLabel)) {
|
|
41
|
+
semanticSignals.add(label);
|
|
42
|
+
}
|
|
43
|
+
if (!hasDefault &&
|
|
44
|
+
itemType !== "materializationSelector" &&
|
|
45
|
+
itemType !== "multisourceToggle" &&
|
|
46
|
+
itemType !== "overrideSQLToggle") {
|
|
47
|
+
missingDefaultFields.add(label);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
semanticSignals: Array.from(semanticSignals).sort(compareStrings),
|
|
52
|
+
missingDefaultFields: Array.from(missingDefaultFields).sort(compareStrings),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Repo resolution collection
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
export function collectRepoResolutions(parsedRepo) {
|
|
59
|
+
const resolutions = [];
|
|
60
|
+
for (const [id, matches] of parsedRepo.nodeTypesByID.entries()) {
|
|
61
|
+
if (matches.length !== 1) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
resolutions.push(resolveRepoNodeType(parsedRepo, id));
|
|
65
|
+
}
|
|
66
|
+
for (const packageRecord of parsedRepo.packages) {
|
|
67
|
+
const packageMatches = parsedRepo.packagesByAlias.get(packageRecord.alias) ?? [];
|
|
68
|
+
if (packageMatches.length !== 1) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
for (const definitionID of packageRecord.resolvedDefinitionIDs) {
|
|
72
|
+
resolutions.push(resolveRepoNodeType(parsedRepo, `${packageRecord.alias}:::${definitionID}`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return resolutions.sort((left, right) => compareStrings(left.resolvedNodeType, right.resolvedNodeType));
|
|
76
|
+
}
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Candidate builders
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
export function buildRepoCandidate(resolution, workspaceNodeTypes, workspaceNodeTypeCounts) {
|
|
81
|
+
const generated = resolution.nodeTypeRecord.nodeDefinition
|
|
82
|
+
? buildSetWorkspaceNodeTemplateFromDefinition(resolution.nodeTypeRecord.nodeDefinition, { nodeType: resolution.resolvedNodeType })
|
|
83
|
+
: undefined;
|
|
84
|
+
const displayName = getString(resolution.nodeTypeRecord.outerDefinition.name) ??
|
|
85
|
+
generated?.definitionSummary.capitalized ??
|
|
86
|
+
null;
|
|
87
|
+
const shortName = generated?.definitionSummary.short ?? null;
|
|
88
|
+
const family = inferFamily([
|
|
89
|
+
resolution.resolvedNodeType,
|
|
90
|
+
resolution.nodeTypeRecord.dirName,
|
|
91
|
+
displayName ?? "",
|
|
92
|
+
shortName ?? "",
|
|
93
|
+
generated?.definitionSummary.capitalized ?? "",
|
|
94
|
+
].filter((value) => value.length > 0));
|
|
95
|
+
const insights = analyzeDefinition(resolution.nodeTypeRecord.nodeDefinition);
|
|
96
|
+
const observedInWorkspace = workspaceNodeTypes.some((nodeType) => matchesNodeTypeIdentity(nodeType, resolution.resolvedNodeType));
|
|
97
|
+
const workspaceUsageCount = workspaceNodeTypes.reduce((sum, nodeType) => {
|
|
98
|
+
if (!matchesNodeTypeIdentity(nodeType, resolution.resolvedNodeType)) {
|
|
99
|
+
return sum;
|
|
100
|
+
}
|
|
101
|
+
return sum + (workspaceNodeTypeCounts[nodeType] ?? 0);
|
|
102
|
+
}, 0);
|
|
103
|
+
const autoExecutable = (isAutoExecutableFamily(family) ||
|
|
104
|
+
(family === "unknown" &&
|
|
105
|
+
insights.semanticSignals.length === 0 &&
|
|
106
|
+
insights.missingDefaultFields.length === 0 &&
|
|
107
|
+
!!generated)) &&
|
|
108
|
+
!generated?.warnings.some((warning) => warning.includes("does not map cleanly"));
|
|
109
|
+
const reasons = [];
|
|
110
|
+
if (resolution.usageCount > 0) {
|
|
111
|
+
reasons.push(`used ${resolution.usageCount} time(s) in committed nodes`);
|
|
112
|
+
}
|
|
113
|
+
if (observedInWorkspace) {
|
|
114
|
+
reasons.push("already observed in current workspace nodes");
|
|
115
|
+
}
|
|
116
|
+
if (displayName) {
|
|
117
|
+
reasons.push(`definition resolves to ${displayName}`);
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
nodeType: resolution.resolvedNodeType,
|
|
121
|
+
displayName,
|
|
122
|
+
shortName,
|
|
123
|
+
family,
|
|
124
|
+
usageCount: resolution.usageCount,
|
|
125
|
+
workspaceUsageCount,
|
|
126
|
+
observedInWorkspace,
|
|
127
|
+
autoExecutable,
|
|
128
|
+
semanticSignals: insights.semanticSignals,
|
|
129
|
+
missingDefaultFields: insights.missingDefaultFields,
|
|
130
|
+
templateWarnings: generated?.warnings ?? [],
|
|
131
|
+
templateDefaults: generated
|
|
132
|
+
? {
|
|
133
|
+
inferredTopLevelFields: generated.inferredTopLevelFields,
|
|
134
|
+
inferredConfig: generated.inferredConfig,
|
|
135
|
+
}
|
|
136
|
+
: undefined,
|
|
137
|
+
score: resolution.usageCount * 20 + workspaceUsageCount * 10 + (generated ? 5 : 0),
|
|
138
|
+
reasons,
|
|
139
|
+
source: "repo",
|
|
140
|
+
resolutionKind: resolution.resolutionKind,
|
|
141
|
+
...(resolution.resolutionKind === "package"
|
|
142
|
+
? { packageAlias: resolution.packageAlias }
|
|
143
|
+
: {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export function buildWorkspaceCandidate(nodeType, workspaceNodeTypeCounts) {
|
|
147
|
+
const family = inferFamily([nodeType]);
|
|
148
|
+
return {
|
|
149
|
+
nodeType,
|
|
150
|
+
displayName: nodeType,
|
|
151
|
+
shortName: null,
|
|
152
|
+
family,
|
|
153
|
+
usageCount: 0,
|
|
154
|
+
workspaceUsageCount: workspaceNodeTypeCounts[nodeType] ?? 0,
|
|
155
|
+
observedInWorkspace: true,
|
|
156
|
+
autoExecutable: isAutoExecutableFamily(family),
|
|
157
|
+
semanticSignals: [],
|
|
158
|
+
missingDefaultFields: [],
|
|
159
|
+
templateWarnings: [],
|
|
160
|
+
score: (workspaceNodeTypeCounts[nodeType] ?? 0) * 10,
|
|
161
|
+
reasons: ["observed in current workspace nodes"],
|
|
162
|
+
source: "workspace",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=node-type-candidates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-type-candidates.js","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,13 +77,9 @@ export declare function hasAntiSignal(family: PipelineNodeTypeFamily, text: stri
|
|
|
77
77
|
* Check whether a use case matches a family's strong signals.
|
|
78
78
|
*/
|
|
79
79
|
export declare function hasStrongSignal(family: PipelineNodeTypeFamily, text: string): boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Detect specialized materialization patterns in a candidate and return
|
|
82
|
-
* the penalty to apply if the context doesn't explicitly request it.
|
|
83
|
-
*/
|
|
84
80
|
/**
|
|
85
81
|
* Detect if a candidate matches a specialized pattern where the context
|
|
86
|
-
* does NOT request it. Returns the
|
|
82
|
+
* does NOT request it. Returns the penalty to apply if found, or null otherwise.
|
|
87
83
|
*/
|
|
88
84
|
export declare function detectSpecializedPatternPenalty(candidateSignals: string, contextText: string): {
|
|
89
85
|
penalty: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-type-intent.d.ts","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,sBAAsB,EAAE,OAAO,CAAC;IAChC,sDAAsD;IACtD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAwM3E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAoFpD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAErF;AAED;;;GAGG;AACH
|
|
1
|
+
{"version":3,"file":"node-type-intent.d.ts","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,sBAAsB,EAAE,OAAO,CAAC;IAChC,sDAAsD;IACtD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAwM3E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAoFpD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAErF;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc5C;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAWf"}
|
|
@@ -319,13 +319,9 @@ export function hasAntiSignal(family, text) {
|
|
|
319
319
|
export function hasStrongSignal(family, text) {
|
|
320
320
|
return NODE_TYPE_INTENT[family].strongSignals.test(text.toLowerCase());
|
|
321
321
|
}
|
|
322
|
-
/**
|
|
323
|
-
* Detect specialized materialization patterns in a candidate and return
|
|
324
|
-
* the penalty to apply if the context doesn't explicitly request it.
|
|
325
|
-
*/
|
|
326
322
|
/**
|
|
327
323
|
* Detect if a candidate matches a specialized pattern where the context
|
|
328
|
-
* does NOT request it. Returns the
|
|
324
|
+
* does NOT request it. Returns the penalty to apply if found, or null otherwise.
|
|
329
325
|
*/
|
|
330
326
|
export function detectSpecializedPatternPenalty(candidateSignals, contextText) {
|
|
331
327
|
const lower = candidateSignals.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-type-intent.js","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-intent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"node-type-intent.js","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type PipelineNodeTypeFamily, type InternalPipelineNodeTypeCandidate, type PipelineNodeTypeSelectionContext } from "./node-type-selection.js";
|
|
2
|
+
type NodeTypeCategory = "general-purpose" | "view" | "persistent" | "dimensional" | "data-vault";
|
|
3
|
+
export declare function buildUseCaseContext(context: PipelineNodeTypeSelectionContext): {
|
|
4
|
+
desiredFamilies: PipelineNodeTypeFamily[];
|
|
5
|
+
category: NodeTypeCategory;
|
|
6
|
+
dimensionalModeling: boolean;
|
|
7
|
+
multiSource: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function scoreCandidate(candidate: InternalPipelineNodeTypeCandidate, context: PipelineNodeTypeSelectionContext): InternalPipelineNodeTypeCandidate;
|
|
10
|
+
export declare function challengeCandidate(candidate: InternalPipelineNodeTypeCandidate, context: PipelineNodeTypeSelectionContext, contextText: string): string[];
|
|
11
|
+
export declare function rankCandidates(candidates: InternalPipelineNodeTypeCandidate[]): InternalPipelineNodeTypeCandidate[];
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=node-type-scoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-type-scoring.d.ts","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-scoring.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,EACtC,MAAM,0BAA0B,CAAC;AAMlC,KAAK,gBAAgB,GACjB,iBAAiB,GACjB,MAAM,GACN,YAAY,GACZ,aAAa,GACb,YAAY,CAAC;AAMjB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gCAAgC,GAAG;IAC9E,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB,CA2EA;AA8DD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,iCAAiC,EAC5C,OAAO,EAAE,gCAAgC,GACxC,iCAAiC,CA8InC;AAMD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iCAAiC,EAC5C,OAAO,EAAE,gCAAgC,EACzC,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,CA4FV;AAMD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,iCAAiC,EAAE,GAC9C,iCAAiC,EAAE,CAErC"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { NODE_TYPE_INTENT, hasAntiSignal, detectSpecializedPatternPenalty, detectSpecializedPatternMatch } from "./node-type-intent.js";
|
|
2
|
+
import { inferFamily, isAutoExecutableFamily, matchesNodeTypeIdentity, } from "./node-type-selection.js";
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Use-case context
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export function buildUseCaseContext(context) {
|
|
7
|
+
const freeText = [context.goal, context.targetName].filter(Boolean).join(" ").toLowerCase();
|
|
8
|
+
const multiSource = context.sourceCount > 1;
|
|
9
|
+
// Dimensional modeling requires explicit intent — not just GROUP BY
|
|
10
|
+
const dimensionalModeling = /\bdimension(al)?\s+model/u.test(freeText) ||
|
|
11
|
+
/\bstar\s+schema\b/u.test(freeText) ||
|
|
12
|
+
/\bsnowflake\s+schema\b/u.test(freeText);
|
|
13
|
+
// Data Vault requires explicit intent
|
|
14
|
+
const dataVaultIntent = /\bdata\s*vault\b/u.test(freeText);
|
|
15
|
+
// CDC / persistent stage requires explicit intent
|
|
16
|
+
const persistentIntent = /\bpersistent\s*stage\b/u.test(freeText) ||
|
|
17
|
+
/\bcdc\b/u.test(freeText) ||
|
|
18
|
+
/\bchange\s*track/u.test(freeText);
|
|
19
|
+
// View requires explicit intent
|
|
20
|
+
const viewIntent = /\bview\b/u.test(freeText) ||
|
|
21
|
+
/\bno\s+materialization/u.test(freeText) ||
|
|
22
|
+
/\bvirtual\s+table/u.test(freeText);
|
|
23
|
+
// Check name-based strong signals ONLY for specialized categories
|
|
24
|
+
const targetName = (context.targetName ?? "").toLowerCase();
|
|
25
|
+
const combinedText = `${targetName} ${freeText}`;
|
|
26
|
+
const specializedSignalChecks = [
|
|
27
|
+
{ category: "persistent", families: ["persistent-stage"] },
|
|
28
|
+
{ category: "dimensional", families: ["dimension", "fact"] },
|
|
29
|
+
{ category: "data-vault", families: ["hub", "satellite", "link"] },
|
|
30
|
+
{ category: "view", families: ["view"] },
|
|
31
|
+
];
|
|
32
|
+
// 1. Explicit intent from goal text
|
|
33
|
+
if (dataVaultIntent) {
|
|
34
|
+
return { desiredFamilies: ["hub", "satellite", "link"], category: "data-vault", dimensionalModeling, multiSource };
|
|
35
|
+
}
|
|
36
|
+
if (dimensionalModeling) {
|
|
37
|
+
return { desiredFamilies: ["dimension", "fact"], category: "dimensional", dimensionalModeling, multiSource };
|
|
38
|
+
}
|
|
39
|
+
if (persistentIntent) {
|
|
40
|
+
return { desiredFamilies: ["persistent-stage", "stage"], category: "persistent", dimensionalModeling, multiSource };
|
|
41
|
+
}
|
|
42
|
+
if (viewIntent && !context.hasJoin && !context.hasGroupBy) {
|
|
43
|
+
return { desiredFamilies: ["view", "stage"], category: "view", dimensionalModeling, multiSource };
|
|
44
|
+
}
|
|
45
|
+
// 2. Strong signal from name (only for specialized families)
|
|
46
|
+
for (const { category, families } of specializedSignalChecks) {
|
|
47
|
+
for (const family of families) {
|
|
48
|
+
const intent = NODE_TYPE_INTENT[family];
|
|
49
|
+
if (intent.strongSignals.test(combinedText)) {
|
|
50
|
+
return { desiredFamilies: families, category, dimensionalModeling, multiSource };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// 3. General-purpose — stage and work are interchangeable.
|
|
55
|
+
const counts = context.workspaceNodeTypeCounts ?? {};
|
|
56
|
+
const stageUsage = Object.entries(counts)
|
|
57
|
+
.filter(([nodeType]) => inferFamily([nodeType]) === "stage")
|
|
58
|
+
.reduce((sum, [, count]) => sum + count, 0);
|
|
59
|
+
const workUsage = Object.entries(counts)
|
|
60
|
+
.filter(([nodeType]) => inferFamily([nodeType]) === "work")
|
|
61
|
+
.reduce((sum, [, count]) => sum + count, 0);
|
|
62
|
+
const desiredFamilies = workUsage > stageUsage
|
|
63
|
+
? ["work", "stage", "view"]
|
|
64
|
+
: ["stage", "work", "view"];
|
|
65
|
+
return { desiredFamilies, category: "general-purpose", dimensionalModeling, multiSource };
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// Family scoring
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
function familyScore(candidate, useCase) {
|
|
71
|
+
const { desiredFamilies, category } = useCase;
|
|
72
|
+
if (desiredFamilies.length === 0) {
|
|
73
|
+
return { score: 0, reasons: [] };
|
|
74
|
+
}
|
|
75
|
+
if (category === "general-purpose") {
|
|
76
|
+
if (candidate.family === "stage" || candidate.family === "work") {
|
|
77
|
+
const workspaceBonus = candidate.observedInWorkspace ? 20 : 0;
|
|
78
|
+
const reasons = [`general-purpose ${candidate.family} node — fits standard transforms`];
|
|
79
|
+
if (workspaceBonus > 0) {
|
|
80
|
+
reasons.push("preferred — already used in this workspace");
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
score: 120 + workspaceBonus,
|
|
84
|
+
reasons,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (candidate.family === "view") {
|
|
88
|
+
return {
|
|
89
|
+
score: 60,
|
|
90
|
+
reasons: ["view is acceptable for general-purpose transforms"],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return { score: 0, reasons: [] };
|
|
94
|
+
}
|
|
95
|
+
// For specialized categories, rank by position in desired families list
|
|
96
|
+
if (desiredFamilies.includes(candidate.family)) {
|
|
97
|
+
const position = desiredFamilies.indexOf(candidate.family);
|
|
98
|
+
const score = position === 0 ? 120 : 60;
|
|
99
|
+
return {
|
|
100
|
+
score,
|
|
101
|
+
reasons: [`matches the ${category} category (${candidate.family})`],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// General-purpose families are always a fallback for specialized categories
|
|
105
|
+
if (candidate.family === "stage" || candidate.family === "work") {
|
|
106
|
+
return {
|
|
107
|
+
score: 25,
|
|
108
|
+
reasons: [`general-purpose fallback for ${category} category`],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return { score: 0, reasons: [] };
|
|
112
|
+
}
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// Candidate scoring
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
export function scoreCandidate(candidate, context) {
|
|
117
|
+
const reasons = [...candidate.reasons];
|
|
118
|
+
let score = candidate.score;
|
|
119
|
+
const useCase = buildUseCaseContext(context);
|
|
120
|
+
if (context.explicitNodeType) {
|
|
121
|
+
if (candidate.nodeType === context.explicitNodeType) {
|
|
122
|
+
score += 1000;
|
|
123
|
+
reasons.push("matches the explicit targetNodeType override");
|
|
124
|
+
}
|
|
125
|
+
else if (matchesNodeTypeIdentity(candidate.nodeType, context.explicitNodeType)) {
|
|
126
|
+
score += 900;
|
|
127
|
+
reasons.push("matches the explicit targetNodeType ID");
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
score -= 200;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const familyMatch = familyScore(candidate, useCase);
|
|
134
|
+
score += familyMatch.score;
|
|
135
|
+
reasons.push(...familyMatch.reasons);
|
|
136
|
+
if (useCase.multiSource && isAutoExecutableFamily(candidate.family)) {
|
|
137
|
+
score += 15;
|
|
138
|
+
reasons.push("fits a multisource projection workflow");
|
|
139
|
+
}
|
|
140
|
+
if (useCase.dimensionalModeling && (candidate.family === "dimension" || candidate.family === "fact")) {
|
|
141
|
+
score += 40;
|
|
142
|
+
reasons.push(`${candidate.family} is designed for dimensional modeling with business keys`);
|
|
143
|
+
}
|
|
144
|
+
if (!useCase.multiSource && (candidate.family === "stage" || candidate.family === "work")) {
|
|
145
|
+
score += 10;
|
|
146
|
+
reasons.push("general-purpose node for single-source transforms");
|
|
147
|
+
}
|
|
148
|
+
// Anti-signal penalty
|
|
149
|
+
const contextText = [context.goal, context.targetName].filter(Boolean).join(" ");
|
|
150
|
+
if (contextText.length > 0 && hasAntiSignal(candidate.family, contextText)) {
|
|
151
|
+
score -= 30;
|
|
152
|
+
reasons.push(`context suggests this is not a ${candidate.family} use case`);
|
|
153
|
+
}
|
|
154
|
+
// Semantic config penalty
|
|
155
|
+
const intent = NODE_TYPE_INTENT[candidate.family];
|
|
156
|
+
if (intent.requiresSemanticConfig && !useCase.dimensionalModeling) {
|
|
157
|
+
score -= 15;
|
|
158
|
+
reasons.push(`${candidate.family} requires semantic config (business keys, SCD) — no dimensional modeling intent detected`);
|
|
159
|
+
}
|
|
160
|
+
// Specialized materialization patterns
|
|
161
|
+
const candidateSignals = [candidate.nodeType, candidate.displayName ?? "", candidate.shortName ?? ""].join(" ");
|
|
162
|
+
const specializedResult = detectSpecializedPatternPenalty(candidateSignals, contextText);
|
|
163
|
+
if (specializedResult) {
|
|
164
|
+
score = -Infinity;
|
|
165
|
+
reasons.push(`not applicable: ${specializedResult.reason}`);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const positiveMatch = detectSpecializedPatternMatch(candidateSignals, contextText);
|
|
169
|
+
if (positiveMatch) {
|
|
170
|
+
score += 50;
|
|
171
|
+
reasons.push(`context explicitly requests ${positiveMatch} pattern`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Hard exclusion: data-vault package types
|
|
175
|
+
if (useCase.category !== "data-vault" &&
|
|
176
|
+
candidate.family !== "hub" && candidate.family !== "satellite" && candidate.family !== "link" &&
|
|
177
|
+
((candidate.packageAlias && /data.vault/iu.test(candidate.packageAlias)) ||
|
|
178
|
+
/data.vault/iu.test(candidate.nodeType))) {
|
|
179
|
+
const hasDataVaultIntent = /\bdata\s*vault\b/iu.test(contextText);
|
|
180
|
+
if (!hasDataVaultIntent) {
|
|
181
|
+
score = -Infinity;
|
|
182
|
+
reasons.push(`data vault package type excluded — no data vault intent in context`);
|
|
183
|
+
return { ...candidate, score, reasons: Array.from(new Set(reasons)) };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Non-base type exclusion for general-purpose selections
|
|
187
|
+
if (useCase.category === "general-purpose" && candidate.source === "repo") {
|
|
188
|
+
const isBasePackage = candidate.packageAlias && /base.node.type/iu.test(candidate.packageAlias);
|
|
189
|
+
if (isBasePackage) {
|
|
190
|
+
score += 15;
|
|
191
|
+
reasons.push("from base node type package — preferred default");
|
|
192
|
+
}
|
|
193
|
+
else if (!candidate.observedInWorkspace) {
|
|
194
|
+
score = -Infinity;
|
|
195
|
+
const source = candidate.packageAlias
|
|
196
|
+
? `non-base package "${candidate.packageAlias}"`
|
|
197
|
+
: `custom repo type "${candidate.nodeType}"`;
|
|
198
|
+
reasons.push(`excluded: ${source} — not observed in workspace. Use base node types or workspace-established types.`);
|
|
199
|
+
return { ...candidate, score, reasons: Array.from(new Set(reasons)) };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Penalize "Copy of" types
|
|
203
|
+
if (candidate.displayName &&
|
|
204
|
+
/\bcopy\s+of\b/iu.test(candidate.displayName) &&
|
|
205
|
+
!context.explicitNodeType) {
|
|
206
|
+
score -= 30;
|
|
207
|
+
reasons.push(`"${candidate.displayName}" is a cloned type — prefer the original`);
|
|
208
|
+
}
|
|
209
|
+
// Unknown family types penalty
|
|
210
|
+
if (candidate.family === "unknown" && !context.explicitNodeType) {
|
|
211
|
+
score -= 50;
|
|
212
|
+
reasons.push("unknown node type family — cannot verify suitability for this use case");
|
|
213
|
+
}
|
|
214
|
+
if (candidate.autoExecutable) {
|
|
215
|
+
score += 25;
|
|
216
|
+
reasons.push("supports template-based automatic creation");
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
score -= 25;
|
|
220
|
+
reasons.push("likely needs extra semantic configuration before automatic creation");
|
|
221
|
+
}
|
|
222
|
+
if (candidate.missingDefaultFields.length > 0) {
|
|
223
|
+
score -= candidate.missingDefaultFields.length * 8;
|
|
224
|
+
reasons.push(`has config fields without defaults: ${candidate.missingDefaultFields.join(", ")}`);
|
|
225
|
+
}
|
|
226
|
+
if (candidate.semanticSignals.length > 0) {
|
|
227
|
+
score -= candidate.semanticSignals.length * 6;
|
|
228
|
+
reasons.push(`exposes semantic config signals: ${candidate.semanticSignals.join(", ")}`);
|
|
229
|
+
}
|
|
230
|
+
if (candidate.templateWarnings.length > 0) {
|
|
231
|
+
score -= Math.min(candidate.templateWarnings.length, 3) * 3;
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
...candidate,
|
|
235
|
+
score,
|
|
236
|
+
reasons: Array.from(new Set(reasons)),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
// ---------------------------------------------------------------------------
|
|
240
|
+
// Candidate challenge
|
|
241
|
+
// ---------------------------------------------------------------------------
|
|
242
|
+
export function challengeCandidate(candidate, context, contextText) {
|
|
243
|
+
const challenges = [];
|
|
244
|
+
const intent = NODE_TYPE_INTENT[candidate.family];
|
|
245
|
+
const contextLower = contextText.toLowerCase();
|
|
246
|
+
// 1. Anti-signals
|
|
247
|
+
if (intent.antiSignals !== null && intent.antiSignals.test(contextLower)) {
|
|
248
|
+
challenges.push(`${candidate.family} anti-signal matched — intent says not for this context`);
|
|
249
|
+
}
|
|
250
|
+
// 2. Specialized pattern penalty
|
|
251
|
+
const candidateSignals = [
|
|
252
|
+
candidate.nodeType,
|
|
253
|
+
candidate.displayName ?? "",
|
|
254
|
+
candidate.shortName ?? "",
|
|
255
|
+
].join(" ");
|
|
256
|
+
const specializedPenalty = detectSpecializedPatternPenalty(candidateSignals, contextText);
|
|
257
|
+
if (specializedPenalty) {
|
|
258
|
+
challenges.push(specializedPenalty.reason);
|
|
259
|
+
}
|
|
260
|
+
// 3. Requires semantic config but no dimensional modeling intent
|
|
261
|
+
if (intent.requiresSemanticConfig) {
|
|
262
|
+
const hasDimensionalIntent = /\bdimension(al)?\s+model/u.test(contextLower) ||
|
|
263
|
+
/\bstar\s+schema\b/u.test(contextLower) ||
|
|
264
|
+
/\bsnowflake\s+schema\b/u.test(contextLower) ||
|
|
265
|
+
/\bdata\s*vault\b/u.test(contextLower);
|
|
266
|
+
const hasOwnStrongSignal = intent.strongSignals.test(contextLower);
|
|
267
|
+
if (!hasDimensionalIntent && !hasOwnStrongSignal) {
|
|
268
|
+
challenges.push(`${candidate.family} requires semantic config (business keys, SCD) but no dimensional modeling intent detected`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// 4. Another family has a strong signal match but this candidate is a different CATEGORY
|
|
272
|
+
const generalPurposeFamilies = new Set(["stage", "work"]);
|
|
273
|
+
const signalCheckOrder = [
|
|
274
|
+
"persistent-stage", "dimension", "fact", "hub", "satellite", "link",
|
|
275
|
+
"view", "work", "stage",
|
|
276
|
+
];
|
|
277
|
+
for (const family of signalCheckOrder) {
|
|
278
|
+
if (family === candidate.family)
|
|
279
|
+
continue;
|
|
280
|
+
if (generalPurposeFamilies.has(family) && generalPurposeFamilies.has(candidate.family))
|
|
281
|
+
continue;
|
|
282
|
+
const otherIntent = NODE_TYPE_INTENT[family];
|
|
283
|
+
if (otherIntent.strongSignals.test(contextLower)) {
|
|
284
|
+
challenges.push(`context has a strong signal for ${family} but candidate is ${candidate.family}`);
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// 5. doNotUseWhen
|
|
289
|
+
for (const antiPattern of intent.doNotUseWhen) {
|
|
290
|
+
const antiLower = antiPattern.toLowerCase();
|
|
291
|
+
if (antiLower.length > 10) {
|
|
292
|
+
if (/cte\s+decomposition/u.test(antiLower) && /cte\s+decomposition/u.test(contextLower)) {
|
|
293
|
+
challenges.push(`intent says do not use ${candidate.family} for CTE decomposition`);
|
|
294
|
+
}
|
|
295
|
+
if (/batch\s+etl/u.test(antiLower) && /batch\s+etl/u.test(contextLower)) {
|
|
296
|
+
challenges.push(`intent says do not use ${candidate.family} for batch ETL`);
|
|
297
|
+
}
|
|
298
|
+
if (/general.purpose|simple\s+stag/u.test(antiLower) && /general|simple|basic/u.test(contextLower)) {
|
|
299
|
+
challenges.push(`intent says do not use ${candidate.family} for general-purpose transforms`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// 6. Package-level challenge
|
|
304
|
+
if (candidate.packageAlias &&
|
|
305
|
+
!/base.node.type/iu.test(candidate.packageAlias) &&
|
|
306
|
+
!candidate.observedInWorkspace &&
|
|
307
|
+
/batch\s+etl|staging|transform|general/iu.test(contextLower)) {
|
|
308
|
+
challenges.push(`from specialized package "${candidate.packageAlias}" — not appropriate for general-purpose transforms`);
|
|
309
|
+
}
|
|
310
|
+
// 7. "Copy of" types
|
|
311
|
+
if (candidate.displayName && /\bcopy\s+of\b/iu.test(candidate.displayName)) {
|
|
312
|
+
challenges.push(`"${candidate.displayName}" is a cloned type — original should be preferred`);
|
|
313
|
+
}
|
|
314
|
+
return challenges;
|
|
315
|
+
}
|
|
316
|
+
// ---------------------------------------------------------------------------
|
|
317
|
+
// Ranking
|
|
318
|
+
// ---------------------------------------------------------------------------
|
|
319
|
+
export function rankCandidates(candidates) {
|
|
320
|
+
return [...candidates].sort((a, b) => b.score - a.score);
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=node-type-scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-type-scoring.js","sourceRoot":"","sources":["../../../src/services/pipelines/node-type-scoring.ts"],"names":[],"mappings":"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"}
|