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.
Files changed (279) hide show
  1. package/README.md +74 -3
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +6 -2
  4. package/dist/client.js.map +1 -1
  5. package/dist/coalesce/api/environments.d.ts +0 -12
  6. package/dist/coalesce/api/environments.d.ts.map +1 -1
  7. package/dist/coalesce/api/environments.js +0 -4
  8. package/dist/coalesce/api/environments.js.map +1 -1
  9. package/dist/coalesce/api/jobs.d.ts +3 -5
  10. package/dist/coalesce/api/jobs.d.ts.map +1 -1
  11. package/dist/coalesce/api/jobs.js +3 -6
  12. package/dist/coalesce/api/jobs.js.map +1 -1
  13. package/dist/coalesce/api/nodes.d.ts +3 -3
  14. package/dist/coalesce/api/nodes.d.ts.map +1 -1
  15. package/dist/coalesce/api/nodes.js +6 -4
  16. package/dist/coalesce/api/nodes.js.map +1 -1
  17. package/dist/coalesce/api/runs.d.ts.map +1 -1
  18. package/dist/coalesce/api/runs.js +11 -1
  19. package/dist/coalesce/api/runs.js.map +1 -1
  20. package/dist/coalesce/api/scan.d.ts +14 -0
  21. package/dist/coalesce/api/scan.d.ts.map +1 -0
  22. package/dist/coalesce/api/scan.js +64 -0
  23. package/dist/coalesce/api/scan.js.map +1 -0
  24. package/dist/coalesce/api/subgraphs.d.ts +3 -2
  25. package/dist/coalesce/api/subgraphs.d.ts.map +1 -1
  26. package/dist/coalesce/api/subgraphs.js +3 -2
  27. package/dist/coalesce/api/subgraphs.js.map +1 -1
  28. package/dist/coalesce/run-schemas.d.ts.map +1 -1
  29. package/dist/coalesce/run-schemas.js +26 -16
  30. package/dist/coalesce/run-schemas.js.map +1 -1
  31. package/dist/coalesce/tool-response.d.ts +1 -13
  32. package/dist/coalesce/tool-response.d.ts.map +1 -1
  33. package/dist/coalesce/tool-response.js +20 -6
  34. package/dist/coalesce/tool-response.js.map +1 -1
  35. package/dist/coalesce/tool-schemas.d.ts +1 -2
  36. package/dist/coalesce/tool-schemas.d.ts.map +1 -1
  37. package/dist/coalesce/tool-schemas.js +368 -5
  38. package/dist/coalesce/tool-schemas.js.map +1 -1
  39. package/dist/coalesce/types.d.ts +8 -0
  40. package/dist/coalesce/types.d.ts.map +1 -1
  41. package/dist/coalesce/types.js +3 -1
  42. package/dist/coalesce/types.js.map +1 -1
  43. package/dist/constants.d.ts +18 -0
  44. package/dist/constants.d.ts.map +1 -0
  45. package/dist/constants.js +21 -0
  46. package/dist/constants.js.map +1 -0
  47. package/dist/mcp/cache.d.ts +2 -1
  48. package/dist/mcp/cache.d.ts.map +1 -1
  49. package/dist/mcp/cache.js +122 -138
  50. package/dist/mcp/cache.js.map +1 -1
  51. package/dist/mcp/environments.d.ts +2 -1
  52. package/dist/mcp/environments.d.ts.map +1 -1
  53. package/dist/mcp/environments.js +56 -112
  54. package/dist/mcp/environments.js.map +1 -1
  55. package/dist/mcp/git-accounts.d.ts +2 -1
  56. package/dist/mcp/git-accounts.d.ts.map +1 -1
  57. package/dist/mcp/git-accounts.js +74 -96
  58. package/dist/mcp/git-accounts.js.map +1 -1
  59. package/dist/mcp/jobs.d.ts +2 -1
  60. package/dist/mcp/jobs.d.ts.map +1 -1
  61. package/dist/mcp/jobs.js +68 -122
  62. package/dist/mcp/jobs.js.map +1 -1
  63. package/dist/mcp/lineage.d.ts +5 -0
  64. package/dist/mcp/lineage.d.ts.map +1 -0
  65. package/dist/mcp/lineage.js +410 -0
  66. package/dist/mcp/lineage.js.map +1 -0
  67. package/dist/mcp/node-type-corpus.d.ts +2 -1
  68. package/dist/mcp/node-type-corpus.d.ts.map +1 -1
  69. package/dist/mcp/node-type-corpus.js +148 -151
  70. package/dist/mcp/node-type-corpus.js.map +1 -1
  71. package/dist/mcp/nodes.d.ts +2 -1
  72. package/dist/mcp/nodes.d.ts.map +1 -1
  73. package/dist/mcp/nodes.js +358 -464
  74. package/dist/mcp/nodes.js.map +1 -1
  75. package/dist/mcp/pipelines.d.ts +2 -1
  76. package/dist/mcp/pipelines.d.ts.map +1 -1
  77. package/dist/mcp/pipelines.js +514 -314
  78. package/dist/mcp/pipelines.js.map +1 -1
  79. package/dist/mcp/projects.d.ts +2 -1
  80. package/dist/mcp/projects.d.ts.map +1 -1
  81. package/dist/mcp/projects.js +66 -100
  82. package/dist/mcp/projects.js.map +1 -1
  83. package/dist/mcp/repo-node-types.d.ts +2 -1
  84. package/dist/mcp/repo-node-types.d.ts.map +1 -1
  85. package/dist/mcp/repo-node-types.js +92 -121
  86. package/dist/mcp/repo-node-types.js.map +1 -1
  87. package/dist/mcp/runs.d.ts +3 -2
  88. package/dist/mcp/runs.d.ts.map +1 -1
  89. package/dist/mcp/runs.js +93 -148
  90. package/dist/mcp/runs.js.map +1 -1
  91. package/dist/mcp/skills.d.ts +13 -0
  92. package/dist/mcp/skills.d.ts.map +1 -0
  93. package/dist/mcp/skills.js +85 -0
  94. package/dist/mcp/skills.js.map +1 -0
  95. package/dist/mcp/subgraphs.d.ts +2 -1
  96. package/dist/mcp/subgraphs.d.ts.map +1 -1
  97. package/dist/mcp/subgraphs.js +61 -98
  98. package/dist/mcp/subgraphs.js.map +1 -1
  99. package/dist/mcp/tool-helpers.d.ts +37 -0
  100. package/dist/mcp/tool-helpers.d.ts.map +1 -0
  101. package/dist/mcp/tool-helpers.js +82 -0
  102. package/dist/mcp/tool-helpers.js.map +1 -0
  103. package/dist/mcp/users.d.ts +2 -1
  104. package/dist/mcp/users.d.ts.map +1 -1
  105. package/dist/mcp/users.js +92 -145
  106. package/dist/mcp/users.js.map +1 -1
  107. package/dist/mcp/workshop.d.ts +2 -1
  108. package/dist/mcp/workshop.d.ts.map +1 -1
  109. package/dist/mcp/workshop.js +66 -101
  110. package/dist/mcp/workshop.js.map +1 -1
  111. package/dist/mcp/workspaces.d.ts +2 -1
  112. package/dist/mcp/workspaces.d.ts.map +1 -1
  113. package/dist/mcp/workspaces.js +19 -34
  114. package/dist/mcp/workspaces.js.map +1 -1
  115. package/dist/prompts/index.d.ts.map +1 -1
  116. package/dist/prompts/index.js +85 -0
  117. package/dist/prompts/index.js.map +1 -1
  118. package/dist/resources/context/pipeline-workshop-guide.md +1 -1
  119. package/dist/resources/context/tool-usage.md +7 -0
  120. package/dist/resources/index.d.ts +13 -0
  121. package/dist/resources/index.d.ts.map +1 -1
  122. package/dist/resources/index.js +105 -5
  123. package/dist/resources/index.js.map +1 -1
  124. package/dist/schemas/node-payloads.d.ts +2 -2
  125. package/dist/server.d.ts +2 -1
  126. package/dist/server.d.ts.map +1 -1
  127. package/dist/server.js +158 -41
  128. package/dist/server.js.map +1 -1
  129. package/dist/services/cache/snapshots.d.ts.map +1 -1
  130. package/dist/services/cache/snapshots.js +9 -5
  131. package/dist/services/cache/snapshots.js.map +1 -1
  132. package/dist/services/config/schema-resolver.d.ts.map +1 -1
  133. package/dist/services/config/schema-resolver.js +3 -6
  134. package/dist/services/config/schema-resolver.js.map +1 -1
  135. package/dist/services/lineage/lineage-cache.d.ts +53 -0
  136. package/dist/services/lineage/lineage-cache.d.ts.map +1 -0
  137. package/dist/services/lineage/lineage-cache.js +335 -0
  138. package/dist/services/lineage/lineage-cache.js.map +1 -0
  139. package/dist/services/lineage/lineage-documentation.d.ts +29 -0
  140. package/dist/services/lineage/lineage-documentation.d.ts.map +1 -0
  141. package/dist/services/lineage/lineage-documentation.js +80 -0
  142. package/dist/services/lineage/lineage-documentation.js.map +1 -0
  143. package/dist/services/lineage/lineage-propagation.d.ts +47 -0
  144. package/dist/services/lineage/lineage-propagation.d.ts.map +1 -0
  145. package/dist/services/lineage/lineage-propagation.js +176 -0
  146. package/dist/services/lineage/lineage-propagation.js.map +1 -0
  147. package/dist/services/lineage/lineage-search.d.ts +33 -0
  148. package/dist/services/lineage/lineage-search.d.ts.map +1 -0
  149. package/dist/services/lineage/lineage-search.js +133 -0
  150. package/dist/services/lineage/lineage-search.js.map +1 -0
  151. package/dist/services/lineage/lineage-traversal.d.ts +34 -0
  152. package/dist/services/lineage/lineage-traversal.d.ts.map +1 -0
  153. package/dist/services/lineage/lineage-traversal.js +283 -0
  154. package/dist/services/lineage/lineage-traversal.js.map +1 -0
  155. package/dist/services/pipelines/clause-extraction.d.ts +3 -0
  156. package/dist/services/pipelines/clause-extraction.d.ts.map +1 -0
  157. package/dist/services/pipelines/clause-extraction.js +27 -0
  158. package/dist/services/pipelines/clause-extraction.js.map +1 -0
  159. package/dist/services/pipelines/column-helpers.d.ts +8 -0
  160. package/dist/services/pipelines/column-helpers.d.ts.map +1 -0
  161. package/dist/services/pipelines/column-helpers.js +125 -0
  162. package/dist/services/pipelines/column-helpers.js.map +1 -0
  163. package/dist/services/pipelines/cte-parsing.d.ts +29 -0
  164. package/dist/services/pipelines/cte-parsing.d.ts.map +1 -0
  165. package/dist/services/pipelines/cte-parsing.js +160 -0
  166. package/dist/services/pipelines/cte-parsing.js.map +1 -0
  167. package/dist/services/pipelines/cte-planning.d.ts +22 -0
  168. package/dist/services/pipelines/cte-planning.d.ts.map +1 -0
  169. package/dist/services/pipelines/cte-planning.js +206 -0
  170. package/dist/services/pipelines/cte-planning.js.map +1 -0
  171. package/dist/services/pipelines/execution.d.ts.map +1 -1
  172. package/dist/services/pipelines/execution.js +0 -1
  173. package/dist/services/pipelines/execution.js.map +1 -1
  174. package/dist/services/pipelines/intent-parsing.d.ts +24 -0
  175. package/dist/services/pipelines/intent-parsing.d.ts.map +1 -0
  176. package/dist/services/pipelines/intent-parsing.js +245 -0
  177. package/dist/services/pipelines/intent-parsing.js.map +1 -0
  178. package/dist/services/pipelines/intent-resolution.d.ts +24 -0
  179. package/dist/services/pipelines/intent-resolution.d.ts.map +1 -0
  180. package/dist/services/pipelines/intent-resolution.js +141 -0
  181. package/dist/services/pipelines/intent-resolution.js.map +1 -0
  182. package/dist/services/pipelines/intent.d.ts +4 -45
  183. package/dist/services/pipelines/intent.d.ts.map +1 -1
  184. package/dist/services/pipelines/intent.js +14 -408
  185. package/dist/services/pipelines/intent.js.map +1 -1
  186. package/dist/services/pipelines/node-type-candidates.d.ts +6 -0
  187. package/dist/services/pipelines/node-type-candidates.d.ts.map +1 -0
  188. package/dist/services/pipelines/node-type-candidates.js +165 -0
  189. package/dist/services/pipelines/node-type-candidates.js.map +1 -0
  190. package/dist/services/pipelines/node-type-intent.d.ts +1 -5
  191. package/dist/services/pipelines/node-type-intent.d.ts.map +1 -1
  192. package/dist/services/pipelines/node-type-intent.js +1 -5
  193. package/dist/services/pipelines/node-type-intent.js.map +1 -1
  194. package/dist/services/pipelines/node-type-scoring.d.ts +13 -0
  195. package/dist/services/pipelines/node-type-scoring.d.ts.map +1 -0
  196. package/dist/services/pipelines/node-type-scoring.js +322 -0
  197. package/dist/services/pipelines/node-type-scoring.js.map +1 -0
  198. package/dist/services/pipelines/node-type-selection.d.ts +22 -2
  199. package/dist/services/pipelines/node-type-selection.d.ts.map +1 -1
  200. package/dist/services/pipelines/node-type-selection.js +16 -538
  201. package/dist/services/pipelines/node-type-selection.js.map +1 -1
  202. package/dist/services/pipelines/plan-builder.d.ts +33 -0
  203. package/dist/services/pipelines/plan-builder.d.ts.map +1 -0
  204. package/dist/services/pipelines/plan-builder.js +224 -0
  205. package/dist/services/pipelines/plan-builder.js.map +1 -0
  206. package/dist/services/pipelines/planning-types.d.ts +543 -0
  207. package/dist/services/pipelines/planning-types.d.ts.map +1 -0
  208. package/dist/services/pipelines/planning-types.js +85 -0
  209. package/dist/services/pipelines/planning-types.js.map +1 -0
  210. package/dist/services/pipelines/planning.d.ts +8 -537
  211. package/dist/services/pipelines/planning.d.ts.map +1 -1
  212. package/dist/services/pipelines/planning.js +10 -1956
  213. package/dist/services/pipelines/planning.js.map +1 -1
  214. package/dist/services/pipelines/review.d.ts.map +1 -1
  215. package/dist/services/pipelines/review.js +3 -8
  216. package/dist/services/pipelines/review.js.map +1 -1
  217. package/dist/services/pipelines/select-parsing.d.ts +7 -0
  218. package/dist/services/pipelines/select-parsing.d.ts.map +1 -0
  219. package/dist/services/pipelines/select-parsing.js +185 -0
  220. package/dist/services/pipelines/select-parsing.js.map +1 -0
  221. package/dist/services/pipelines/source-parsing.d.ts +8 -0
  222. package/dist/services/pipelines/source-parsing.d.ts.map +1 -0
  223. package/dist/services/pipelines/source-parsing.js +151 -0
  224. package/dist/services/pipelines/source-parsing.js.map +1 -0
  225. package/dist/services/pipelines/sql-parsing.d.ts +8 -0
  226. package/dist/services/pipelines/sql-parsing.d.ts.map +1 -0
  227. package/dist/services/pipelines/sql-parsing.js +9 -0
  228. package/dist/services/pipelines/sql-parsing.js.map +1 -0
  229. package/dist/services/pipelines/sql-tokenizer.d.ts +42 -0
  230. package/dist/services/pipelines/sql-tokenizer.d.ts.map +1 -0
  231. package/dist/services/pipelines/sql-tokenizer.js +493 -0
  232. package/dist/services/pipelines/sql-tokenizer.js.map +1 -0
  233. package/dist/services/pipelines/sql-utils.d.ts +30 -0
  234. package/dist/services/pipelines/sql-utils.d.ts.map +1 -0
  235. package/dist/services/pipelines/sql-utils.js +62 -0
  236. package/dist/services/pipelines/sql-utils.js.map +1 -0
  237. package/dist/services/pipelines/workshop.d.ts.map +1 -1
  238. package/dist/services/pipelines/workshop.js +53 -25
  239. package/dist/services/pipelines/workshop.js.map +1 -1
  240. package/dist/services/pipelines/workspace-resolution.d.ts +18 -0
  241. package/dist/services/pipelines/workspace-resolution.d.ts.map +1 -0
  242. package/dist/services/pipelines/workspace-resolution.js +279 -0
  243. package/dist/services/pipelines/workspace-resolution.js.map +1 -0
  244. package/dist/services/runs/diagnostics.d.ts.map +1 -1
  245. package/dist/services/runs/diagnostics.js +3 -8
  246. package/dist/services/runs/diagnostics.js.map +1 -1
  247. package/dist/services/shared/elicitation.d.ts +14 -0
  248. package/dist/services/shared/elicitation.d.ts.map +1 -0
  249. package/dist/services/shared/elicitation.js +56 -0
  250. package/dist/services/shared/elicitation.js.map +1 -0
  251. package/dist/services/workspace/node-creation.d.ts.map +1 -1
  252. package/dist/services/workspace/node-creation.js +5 -1
  253. package/dist/services/workspace/node-creation.js.map +1 -1
  254. package/dist/services/workspace/node-update-helpers.d.ts.map +1 -1
  255. package/dist/services/workspace/node-update-helpers.js +3 -8
  256. package/dist/services/workspace/node-update-helpers.js.map +1 -1
  257. package/dist/utils.d.ts +11 -0
  258. package/dist/utils.d.ts.map +1 -1
  259. package/dist/utils.js +20 -1
  260. package/dist/utils.js.map +1 -1
  261. package/dist/workflows/get-environment-health.d.ts +49 -0
  262. package/dist/workflows/get-environment-health.d.ts.map +1 -0
  263. package/dist/workflows/get-environment-health.js +310 -0
  264. package/dist/workflows/get-environment-health.js.map +1 -0
  265. package/dist/workflows/get-environment-overview.d.ts +2 -1
  266. package/dist/workflows/get-environment-overview.d.ts.map +1 -1
  267. package/dist/workflows/get-environment-overview.js +13 -19
  268. package/dist/workflows/get-environment-overview.js.map +1 -1
  269. package/dist/workflows/get-run-details.d.ts +2 -2
  270. package/dist/workflows/get-run-details.d.ts.map +1 -1
  271. package/dist/workflows/get-run-details.js +14 -19
  272. package/dist/workflows/get-run-details.js.map +1 -1
  273. package/dist/workflows/retry-and-wait.d.ts.map +1 -1
  274. package/dist/workflows/retry-and-wait.js +3 -2
  275. package/dist/workflows/retry-and-wait.js.map +1 -1
  276. package/dist/workflows/run-and-wait.d.ts.map +1 -1
  277. package/dist/workflows/run-and-wait.js +3 -2
  278. package/dist/workflows/run-and-wait.js.map +1 -1
  279. 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 pattern info if the type should not be used.
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;;;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"}
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 pattern info if the type should not be used.
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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACxI,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAalC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAAC,OAAyC;IAM3E,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5F,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;IAE5C,oEAAoE;IACpE,MAAM,mBAAmB,GACvB,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3C,sCAAsC;IACtC,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3D,kDAAkD;IAClD,MAAM,gBAAgB,GACpB,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzB,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErC,gCAAgC;IAChC,MAAM,UAAU,GACd,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1B,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,kEAAkE;IAClE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;IAEjD,MAAM,uBAAuB,GAAyE;QACpG,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE;QAC1D,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;QAC5D,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;QAClE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;KACzC,CAAC;IAEF,oCAAoC;IACpC,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,EAAE,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,EAAE,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAC/G,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,EAAE,eAAe,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IACtH,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1D,OAAO,EAAE,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IACpG,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,uBAAuB,EAAE,CAAC;QAC7D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,IAAI,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,CAAC;SAC3D,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC;SAC1D,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAE9C,MAAM,eAAe,GACnB,SAAS,GAAG,UAAU;QACpB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;AAC5F,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,SAAS,WAAW,CAClB,SAA4C,EAC5C,OAAkF;IAElF,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE9C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAChE,MAAM,cAAc,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,CAAC,mBAAmB,SAAS,CAAC,MAAM,kCAAkC,CAAC,CAAC;YACxF,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,GAAG,GAAG,cAAc;gBAC3B,OAAO;aACR,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,CAAC,mDAAmD,CAAC;aAC/D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,wEAAwE;IACxE,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,KAAK;YACL,OAAO,EAAE,CAAC,eAAe,QAAQ,cAAc,SAAS,CAAC,MAAM,GAAG,CAAC;SACpE,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChE,OAAO;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,CAAC,gCAAgC,QAAQ,WAAW,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAC5B,SAA4C,EAC5C,OAAyC;IAEzC,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACpD,KAAK,IAAI,IAAI,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,uBAAuB,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACjF,KAAK,IAAI,GAAG,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,GAAG,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,WAAW,IAAI,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QACrG,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,0DAA0D,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAC1F,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IAED,sBAAsB;IACtB,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3E,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,kCAAkC,SAAS,CAAC,MAAM,WAAW,CAAC,CAAC;IAC9E,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,sBAAsB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAClE,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,0FAA0F,CAAC,CAAC;IAC9H,CAAC;IAED,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChH,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACzF,IAAI,iBAAiB,EAAE,CAAC;QACtB,KAAK,GAAG,CAAC,QAAQ,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,6BAA6B,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACnF,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,+BAA+B,aAAa,UAAU,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IACE,OAAO,CAAC,QAAQ,KAAK,YAAY;QACjC,SAAS,CAAC,MAAM,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM;QAC7F,CACE,CAAC,SAAS,CAAC,YAAY,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACvE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxC,EACD,CAAC;QACD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,KAAK,GAAG,CAAC,QAAQ,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACnF,OAAO,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,iBAAiB,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1E,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChG,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAClE,CAAC;aAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC1C,KAAK,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY;gBACnC,CAAC,CAAC,qBAAqB,SAAS,CAAC,YAAY,GAAG;gBAChD,CAAC,CAAC,qBAAqB,SAAS,CAAC,QAAQ,GAAG,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,mFAAmF,CAAC,CAAC;YACrH,OAAO,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IACE,SAAS,CAAC,WAAW;QACrB,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAC7C,CAAC,OAAO,CAAC,gBAAgB,EACzB,CAAC;QACD,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,WAAW,0CAA0C,CAAC,CAAC;IACpF,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAChE,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC7B,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,SAAS,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,IAAI,SAAS,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CACV,uCAAuC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CACV,oCAAoC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAChC,SAA4C,EAC5C,OAAyC,EACzC,WAAmB;IAEnB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAE/C,kBAAkB;IAClB,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACzE,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,CAAC,MAAM,yDAAyD,CAC7E,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,gBAAgB,GAAG;QACvB,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,WAAW,IAAI,EAAE;QAC3B,SAAS,CAAC,SAAS,IAAI,EAAE;KAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,kBAAkB,GAAG,+BAA+B,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC1F,IAAI,kBAAkB,EAAE,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,MAAM,oBAAoB,GACxB,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC;YAC9C,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC5C,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,oBAAoB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,CAAC,MAAM,4FAA4F,CAChH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAClF,MAAM,gBAAgB,GAA6B;QACjD,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM;QACnE,MAAM,EAAE,MAAM,EAAE,OAAO;KACxB,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM;YAAE,SAAS;QAC1C,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,SAAS;QACjG,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CACb,mCAAmC,MAAM,qBAAqB,SAAS,CAAC,MAAM,EAAE,CACjF,CAAC;YACF,MAAM;QACR,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC1B,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxF,UAAU,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,MAAM,wBAAwB,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxE,UAAU,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,MAAM,gBAAgB,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnG,UAAU,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,MAAM,iCAAiC,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IACE,SAAS,CAAC,YAAY;QACtB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAChD,CAAC,SAAS,CAAC,mBAAmB;QAC9B,yCAAyC,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5D,CAAC;QACD,UAAU,CAAC,IAAI,CACb,6BAA6B,SAAS,CAAC,YAAY,oDAAoD,CACxG,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,IAAI,SAAS,CAAC,WAAW,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3E,UAAU,CAAC,IAAI,CACb,IAAI,SAAS,CAAC,WAAW,mDAAmD,CAC7E,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAC5B,UAA+C;IAE/C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC"}