@duckcodeailabs/dql-core 1.6.34 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/apps/app-document.d.ts +3 -1
  2. package/dist/apps/app-document.d.ts.map +1 -1
  3. package/dist/apps/app-document.js +26 -11
  4. package/dist/apps/app-document.js.map +1 -1
  5. package/dist/apps/dashboard-document.d.ts +5 -0
  6. package/dist/apps/dashboard-document.d.ts.map +1 -1
  7. package/dist/apps/dashboard-document.js +4 -0
  8. package/dist/apps/dashboard-document.js.map +1 -1
  9. package/dist/apps/index.d.ts +2 -0
  10. package/dist/apps/index.d.ts.map +1 -1
  11. package/dist/apps/index.js +1 -0
  12. package/dist/apps/index.js.map +1 -1
  13. package/dist/apps/product-domain-context.d.ts +23 -0
  14. package/dist/apps/product-domain-context.d.ts.map +1 -0
  15. package/dist/apps/product-domain-context.js +25 -0
  16. package/dist/apps/product-domain-context.js.map +1 -0
  17. package/dist/artifacts/dql-artifact.d.ts +13 -0
  18. package/dist/artifacts/dql-artifact.d.ts.map +1 -1
  19. package/dist/artifacts/dql-artifact.js +69 -0
  20. package/dist/artifacts/dql-artifact.js.map +1 -1
  21. package/dist/artifacts/index.d.ts +1 -1
  22. package/dist/artifacts/index.d.ts.map +1 -1
  23. package/dist/ast/index.d.ts +1 -1
  24. package/dist/ast/index.d.ts.map +1 -1
  25. package/dist/ast/index.js.map +1 -1
  26. package/dist/ast/nodes.d.ts +10 -1
  27. package/dist/ast/nodes.d.ts.map +1 -1
  28. package/dist/ast/printer.js +4 -0
  29. package/dist/ast/printer.js.map +1 -1
  30. package/dist/blocks/index.d.ts +2 -0
  31. package/dist/blocks/index.d.ts.map +1 -0
  32. package/dist/blocks/index.js +2 -0
  33. package/dist/blocks/index.js.map +1 -0
  34. package/dist/blocks/parameters.d.ts +55 -0
  35. package/dist/blocks/parameters.d.ts.map +1 -0
  36. package/dist/blocks/parameters.js +160 -0
  37. package/dist/blocks/parameters.js.map +1 -0
  38. package/dist/format/diff.d.ts.map +1 -1
  39. package/dist/format/diff.js +19 -11
  40. package/dist/format/diff.js.map +1 -1
  41. package/dist/format/notebook.d.ts +1 -1
  42. package/dist/format/notebook.js +2 -2
  43. package/dist/formatter/formatter.js +23 -1
  44. package/dist/formatter/formatter.js.map +1 -1
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/manifest/builder.d.ts +5 -0
  50. package/dist/manifest/builder.d.ts.map +1 -1
  51. package/dist/manifest/builder.js +143 -9
  52. package/dist/manifest/builder.js.map +1 -1
  53. package/dist/manifest/datalex-migration.d.ts +68 -0
  54. package/dist/manifest/datalex-migration.d.ts.map +1 -0
  55. package/dist/manifest/datalex-migration.js +369 -0
  56. package/dist/manifest/datalex-migration.js.map +1 -0
  57. package/dist/manifest/dbt-first-authoring.d.ts +210 -0
  58. package/dist/manifest/dbt-first-authoring.d.ts.map +1 -0
  59. package/dist/manifest/dbt-first-authoring.js +510 -0
  60. package/dist/manifest/dbt-first-authoring.js.map +1 -0
  61. package/dist/manifest/dbt-first-modeling.d.ts +34 -0
  62. package/dist/manifest/dbt-first-modeling.d.ts.map +1 -0
  63. package/dist/manifest/dbt-first-modeling.js +931 -0
  64. package/dist/manifest/dbt-first-modeling.js.map +1 -0
  65. package/dist/manifest/domain-discovery.d.ts +98 -0
  66. package/dist/manifest/domain-discovery.d.ts.map +1 -0
  67. package/dist/manifest/domain-discovery.js +503 -0
  68. package/dist/manifest/domain-discovery.js.map +1 -0
  69. package/dist/manifest/domain-package-registry.d.ts +20 -0
  70. package/dist/manifest/domain-package-registry.d.ts.map +1 -0
  71. package/dist/manifest/domain-package-registry.js +265 -0
  72. package/dist/manifest/domain-package-registry.js.map +1 -0
  73. package/dist/manifest/domain-writer.d.ts +4 -0
  74. package/dist/manifest/domain-writer.d.ts.map +1 -1
  75. package/dist/manifest/domain-writer.js +3 -0
  76. package/dist/manifest/domain-writer.js.map +1 -1
  77. package/dist/manifest/index.d.ts +7 -1
  78. package/dist/manifest/index.d.ts.map +1 -1
  79. package/dist/manifest/index.js +6 -0
  80. package/dist/manifest/index.js.map +1 -1
  81. package/dist/manifest/project-snapshot.d.ts +30 -0
  82. package/dist/manifest/project-snapshot.d.ts.map +1 -0
  83. package/dist/manifest/project-snapshot.js +68 -0
  84. package/dist/manifest/project-snapshot.js.map +1 -0
  85. package/dist/manifest/types.d.ts +289 -3
  86. package/dist/manifest/types.d.ts.map +1 -1
  87. package/dist/parser/parser.d.ts.map +1 -1
  88. package/dist/parser/parser.js +40 -6
  89. package/dist/parser/parser.js.map +1 -1
  90. package/dist/semantic/analyzer.js +1 -1
  91. package/dist/semantic/analyzer.js.map +1 -1
  92. package/dist/semantic/semantic-layer.d.ts +6 -0
  93. package/dist/semantic/semantic-layer.d.ts.map +1 -1
  94. package/dist/semantic/semantic-layer.js +68 -2
  95. package/dist/semantic/semantic-layer.js.map +1 -1
  96. package/package.json +1 -1
@@ -0,0 +1,503 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, readFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { loadDomainPackageRegistry } from './domain-package-registry.js';
5
+ /**
6
+ * AGT-002 / API-001 — evidence-bounded, deterministic dbt domain discovery.
7
+ *
8
+ * Resolve dbt model membership without writes or AI inference.
9
+ *
10
+ * Evidence is evaluated in the locked order below. If the strongest available
11
+ * evidence names more than one domain, the model remains unassigned. Lower
12
+ * ranked disagreement is retained as a review conflict but cannot silently
13
+ * override stronger evidence.
14
+ */
15
+ export function discoverDbtDomains(options) {
16
+ const rawSource = readFileSync(options.dbtManifestPath, 'utf8');
17
+ const manifest = asRecord(JSON.parse(rawSource));
18
+ const semanticPath = options.semanticManifestPath
19
+ ?? siblingIfPresent(options.dbtManifestPath, 'semantic_manifest.json');
20
+ const semanticSource = semanticPath ? readFileSync(semanticPath, 'utf8') : '';
21
+ const semanticManifest = semanticSource ? asRecord(JSON.parse(semanticSource)) : {};
22
+ const registry = loadDomainPackageRegistry(options.projectRoot);
23
+ const packages = registry.values();
24
+ const models = collectModels(manifest);
25
+ const indexes = buildEvidenceIndexes(manifest, semanticManifest, models);
26
+ const groupOwners = collectGroupOwners(manifest);
27
+ const memberships = models.map((model) => resolveMembership(model, packages, indexes, groupOwners));
28
+ const assigned = new Map(memberships
29
+ .filter((membership) => Boolean(membership.proposedDomain))
30
+ .map((membership) => [membership.dbtUniqueId, membership]));
31
+ const proposals = buildDomainProposals(memberships, packages);
32
+ const unassignedModels = memberships
33
+ .filter((membership) => !membership.proposedDomain)
34
+ .map((membership) => ({
35
+ dbtUniqueId: membership.dbtUniqueId,
36
+ modelName: membership.modelName,
37
+ sourcePath: membership.sourcePath,
38
+ reason: membership.evidence.length === 0 ? 'no_evidence' : 'ambiguous_membership',
39
+ candidateDomains: unique(membership.evidence.map((item) => item.domain)),
40
+ evidence: membership.evidence,
41
+ }));
42
+ return {
43
+ version: 1,
44
+ sourceFingerprint: discoveryFingerprint(rawSource, semanticSource, packages),
45
+ generator: 'deterministic',
46
+ proposals,
47
+ memberships,
48
+ unassignedModels,
49
+ relationshipDraftCandidates: collectRelationshipDrafts(manifest, assigned),
50
+ skillDraftCandidates: proposals.map((proposal) => ({
51
+ id: `${proposal.id.replace(/\./g, '_')}_analyst`,
52
+ domain: proposal.id,
53
+ lifecycle: 'draft',
54
+ requiresReview: true,
55
+ certificationAllowed: false,
56
+ suggestedScope: `Use reviewed ${proposal.name} vocabulary, policies, and certified assets only.`,
57
+ evidenceDbtUniqueIds: proposal.matchedDbtUniqueIds,
58
+ })),
59
+ };
60
+ }
61
+ function discoveryFingerprint(manifestSource, semanticSource, packages) {
62
+ const selectors = packages.map((pkg) => ({
63
+ id: pkg.id,
64
+ parent: pkg.parent,
65
+ owner: pkg.owner,
66
+ dbtGroups: pkg.domain.dbtGroups ?? [],
67
+ dbtPaths: pkg.domain.dbtPaths ?? [],
68
+ dbtTags: pkg.domain.dbtTags ?? [],
69
+ semanticDomains: pkg.domain.semanticDomains ?? [],
70
+ semanticTags: pkg.domain.semanticTags ?? [],
71
+ }));
72
+ return createHash('sha256')
73
+ .update(manifestSource)
74
+ .update('\0')
75
+ .update(semanticSource)
76
+ .update('\0')
77
+ .update(JSON.stringify(selectors))
78
+ .digest('hex');
79
+ }
80
+ function resolveMembership(model, packages, indexes, groupOwners) {
81
+ const evidence = collectModelEvidence(model, packages, indexes, groupOwners);
82
+ const strongestRank = evidence[0]?.rank;
83
+ const strongest = strongestRank === undefined
84
+ ? []
85
+ : evidence.filter((item) => item.rank === strongestRank);
86
+ const strongestDomains = unique(strongest.map((item) => item.domain));
87
+ const proposedDomain = strongestDomains.length === 1 ? strongestDomains[0] : null;
88
+ const winningEvidence = proposedDomain
89
+ ? strongest.filter((item) => item.domain === proposedDomain)
90
+ : [];
91
+ const confidenceScore = winningEvidence.length > 0
92
+ ? Math.max(...winningEvidence.map((item) => item.confidence))
93
+ : 0;
94
+ const conflicts = proposedDomain
95
+ ? unique(evidence.filter((item) => item.domain !== proposedDomain).map((item) => item.domain))
96
+ : strongestDomains;
97
+ const owners = unique(winningEvidence.map((item) => item.owner).filter(isString));
98
+ return {
99
+ dbtUniqueId: model.uniqueId,
100
+ modelName: model.name,
101
+ sourcePath: model.sourcePath,
102
+ proposedDomain,
103
+ confidence: confidenceLabel(confidenceScore),
104
+ confidenceScore,
105
+ owner: owners.length === 1 ? owners[0] : undefined,
106
+ evidence,
107
+ conflicts,
108
+ requiresReview: !proposedDomain || conflicts.length > 0,
109
+ };
110
+ }
111
+ function collectModelEvidence(model, packages, indexes, groupOwners) {
112
+ const output = [];
113
+ const raw = model.raw;
114
+ const dqlMeta = asRecord(asRecord(raw.meta).dql);
115
+ const explicitDomains = domainValues(dqlMeta.domain);
116
+ for (const domain of explicitDomains) {
117
+ output.push(evidence('explicit_meta', domain, String(dqlMeta.domain), 1, 1, model));
118
+ }
119
+ const group = stringValue(raw.group) ?? stringValue(asRecord(raw.config).group);
120
+ if (group) {
121
+ const domain = normalizeDomainId(group);
122
+ if (domain)
123
+ output.push(evidence('dbt_group', domain, group, 2, 0.95, model, groupOwners.get(group)));
124
+ }
125
+ output.push(...(indexes.semantic.get(model.uniqueId) ?? []));
126
+ output.push(...(indexes.exposures.get(model.uniqueId) ?? []));
127
+ const tags = unique([
128
+ ...stringArray(raw.tags),
129
+ ...stringArray(asRecord(raw.config).tags),
130
+ ]);
131
+ for (const tag of tags) {
132
+ const domain = domainFromTag(tag, packages);
133
+ if (domain)
134
+ output.push(evidence('dbt_tag', domain, tag, 5, 0.72, model));
135
+ }
136
+ for (const pkg of packages) {
137
+ for (const match of matchingSelectors(model, raw, tags, pkg, indexes)) {
138
+ output.push(evidence('configured_selector', pkg.id, match.value, 6, 0.68, model, pkg.owner, match.selector));
139
+ }
140
+ }
141
+ const pathDomain = domainFromPath(model.sourcePath);
142
+ if (pathDomain)
143
+ output.push(evidence('model_path', pathDomain, model.sourcePath ?? '', 7, 0.55, model));
144
+ return dedupeEvidence(output).sort(compareEvidence);
145
+ }
146
+ function buildEvidenceIndexes(manifest, semanticManifest, models) {
147
+ const modelIds = new Set(models.map((model) => model.uniqueId));
148
+ const semantic = new Map();
149
+ const semanticDomains = new Map();
150
+ const semanticTags = new Map();
151
+ const semanticModelDependencies = new Map();
152
+ const semanticRecords = [
153
+ ...recordEntries(manifest.semantic_models, 'semantic_model.manifest'),
154
+ ...recordEntries(semanticManifest.semantic_models, 'semantic_model.semantic_manifest'),
155
+ ].sort(([a], [b]) => a.localeCompare(b));
156
+ for (const [uniqueId, value] of semanticRecords) {
157
+ const raw = asRecord(value);
158
+ const dqlMeta = asRecord(asRecord(raw.meta).dql);
159
+ const config = asRecord(raw.config);
160
+ const configDql = asRecord(asRecord(config.meta).dql);
161
+ const domains = unique([
162
+ ...domainValues(dqlMeta.domain),
163
+ ...domainValues(configDql.domain),
164
+ ...domainValues(raw.domain),
165
+ ...domainValues(config.domain),
166
+ ]);
167
+ const tags = unique([...stringArray(raw.tags), ...stringArray(config.tags)]);
168
+ const dependencies = dependentModelIds(raw, modelIds, models);
169
+ const semanticName = stringValue(raw.name) ?? uniqueId;
170
+ semanticModelDependencies.set(semanticName, dependencies);
171
+ for (const modelId of dependencies) {
172
+ const target = models.find((model) => model.uniqueId === modelId);
173
+ if (!target)
174
+ continue;
175
+ appendStrings(semanticDomains, modelId, domains);
176
+ appendStrings(semanticTags, modelId, tags);
177
+ for (const domain of domains)
178
+ appendEvidence(semantic, modelId, evidence('metricflow_semantic_domain', domain, semanticName, 3, 0.88, target, stringValue(asRecord(raw.owner).email) ?? stringValue(asRecord(raw.owner).name), uniqueId));
179
+ }
180
+ }
181
+ const metricRecords = [
182
+ ...recordEntries(manifest.metrics, 'metric.manifest'),
183
+ ...recordEntries(semanticManifest.metrics, 'metric.semantic_manifest'),
184
+ ].sort(([a], [b]) => a.localeCompare(b));
185
+ for (const [uniqueId, value] of metricRecords) {
186
+ const raw = asRecord(value);
187
+ const config = asRecord(raw.config);
188
+ const dqlMeta = asRecord(asRecord(raw.meta).dql);
189
+ const configDql = asRecord(asRecord(config.meta).dql);
190
+ const domains = unique([
191
+ ...domainValues(dqlMeta.domain),
192
+ ...domainValues(configDql.domain),
193
+ ...domainValues(raw.domain),
194
+ ...domainValues(config.domain),
195
+ ]);
196
+ if (domains.length === 0)
197
+ continue;
198
+ const semanticName = stringValue(raw.semantic_model)
199
+ ?? stringValue(raw.semantic_model_name)
200
+ ?? stringValue(asRecord(raw.type_params).semantic_model);
201
+ if (!semanticName)
202
+ continue;
203
+ for (const modelId of semanticModelDependencies.get(semanticName) ?? []) {
204
+ const target = models.find((model) => model.uniqueId === modelId);
205
+ if (!target)
206
+ continue;
207
+ appendStrings(semanticDomains, modelId, domains);
208
+ for (const domain of domains)
209
+ appendEvidence(semantic, modelId, evidence('metricflow_semantic_domain', domain, stringValue(raw.name) ?? uniqueId, 3, 0.88, target, stringValue(asRecord(raw.owner).email) ?? stringValue(asRecord(raw.owner).name), uniqueId));
210
+ }
211
+ }
212
+ const exposures = new Map();
213
+ for (const [uniqueId, value] of Object.entries(asRecord(manifest.exposures)).sort(([a], [b]) => a.localeCompare(b))) {
214
+ const raw = asRecord(value);
215
+ const meta = asRecord(raw.meta);
216
+ const dqlMeta = asRecord(meta.dql);
217
+ const domains = unique([
218
+ ...domainValues(dqlMeta.domain),
219
+ ...domainValues(dqlMeta.scope),
220
+ ...domainValues(meta.domain),
221
+ ...domainValues(meta.scope),
222
+ ...domainValues(raw.domain),
223
+ ...domainValues(raw.group),
224
+ ]);
225
+ if (domains.length === 0)
226
+ continue;
227
+ const ownerRaw = asRecord(raw.owner);
228
+ const owner = stringValue(ownerRaw.email) ?? stringValue(ownerRaw.name);
229
+ for (const modelId of dependentModelIds(raw, modelIds, models)) {
230
+ const target = models.find((model) => model.uniqueId === modelId);
231
+ if (!target)
232
+ continue;
233
+ for (const domain of domains)
234
+ appendEvidence(exposures, modelId, evidence('exposure_owner_scope', domain, stringValue(raw.name) ?? uniqueId, 4, 0.8, target, owner, uniqueId));
235
+ }
236
+ }
237
+ return { semantic, exposures, semanticDomains, semanticTags };
238
+ }
239
+ function buildDomainProposals(memberships, packages) {
240
+ const packageById = new Map(packages.map((pkg) => [pkg.id, pkg]));
241
+ const byDomain = new Map();
242
+ for (const membership of memberships) {
243
+ if (!membership.proposedDomain)
244
+ continue;
245
+ const values = byDomain.get(membership.proposedDomain) ?? [];
246
+ values.push(membership);
247
+ byDomain.set(membership.proposedDomain, values);
248
+ }
249
+ return [...byDomain.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([id, values]) => {
250
+ const existing = packageById.get(id);
251
+ const owners = unique([
252
+ ...(existing?.owner ? [existing.owner] : []),
253
+ ...values.map((value) => value.owner).filter(isString),
254
+ ]);
255
+ const confidenceScore = Math.min(...values.map((value) => value.confidenceScore));
256
+ return {
257
+ id,
258
+ name: existing?.name ?? displayName(id),
259
+ owner: owners.length === 1 ? owners[0] : undefined,
260
+ proposedParent: existing?.parent ?? parentDomain(id),
261
+ matchedDbtUniqueIds: values.map((value) => value.dbtUniqueId).sort(),
262
+ confidence: confidenceLabel(confidenceScore),
263
+ confidenceScore,
264
+ evidence: dedupeEvidence(values.flatMap((value) => value.evidence.filter((item) => item.domain === id))).sort(compareEvidence),
265
+ requiresReview: values.some((value) => value.requiresReview) || !existing,
266
+ };
267
+ });
268
+ }
269
+ function collectRelationshipDrafts(manifest, assigned) {
270
+ const output = [];
271
+ for (const [testUniqueId, value] of Object.entries(asRecord(manifest.nodes)).sort(([a], [b]) => a.localeCompare(b))) {
272
+ const raw = asRecord(value);
273
+ if (raw.resource_type !== 'test')
274
+ continue;
275
+ const metadata = asRecord(raw.test_metadata);
276
+ const testName = stringValue(metadata.name) ?? stringValue(raw.name);
277
+ if (!testName || !testName.toLowerCase().includes('relationship'))
278
+ continue;
279
+ const dependencies = stringArray(asRecord(raw.depends_on).nodes).filter((id) => assigned.has(id));
280
+ const attached = stringValue(raw.attached_node);
281
+ const from = attached && assigned.has(attached) ? attached : dependencies[0];
282
+ const to = dependencies.find((id) => id !== from);
283
+ if (!from || !to)
284
+ continue;
285
+ const kwargs = asRecord(metadata.kwargs);
286
+ const fromColumn = stringValue(raw.column_name) ?? stringValue(kwargs.column_name) ?? 'unknown';
287
+ const toColumn = stringValue(kwargs.field) ?? stringValue(kwargs.to_field) ?? 'unknown';
288
+ const fromMembership = assigned.get(from);
289
+ const toMembership = assigned.get(to);
290
+ output.push({
291
+ id: `${safeId(from)}_to_${safeId(to)}_${safeId(fromColumn)}`,
292
+ lifecycle: 'draft',
293
+ requiresReview: true,
294
+ automaticJoinAllowed: false,
295
+ fromDbtUniqueId: from,
296
+ toDbtUniqueId: to,
297
+ fromDomain: fromMembership.proposedDomain,
298
+ toDomain: toMembership.proposedDomain,
299
+ keys: [{ from: fromColumn, to: toColumn }],
300
+ evidence: [{
301
+ dbtUniqueId: testUniqueId,
302
+ sourcePath: stringValue(raw.original_file_path) ?? stringValue(raw.path),
303
+ kind: 'dbt_relationship_test',
304
+ }],
305
+ });
306
+ }
307
+ return output.sort((a, b) => a.id.localeCompare(b.id));
308
+ }
309
+ function matchingSelectors(model, raw, tags, pkg, indexes) {
310
+ const output = [];
311
+ const group = stringValue(raw.group) ?? stringValue(asRecord(raw.config).group);
312
+ if (group && (pkg.domain.dbtGroups ?? []).includes(group))
313
+ output.push({ selector: 'dbt_group', value: group });
314
+ for (const tag of tags) {
315
+ if ((pkg.domain.dbtTags ?? []).includes(tag))
316
+ output.push({ selector: 'dbt_tag', value: tag });
317
+ }
318
+ for (const domain of indexes.semanticDomains.get(model.uniqueId) ?? []) {
319
+ if ((pkg.domain.semanticDomains ?? []).map(normalizeDomainId).includes(domain)) {
320
+ output.push({ selector: 'semantic_domain', value: domain });
321
+ }
322
+ }
323
+ for (const tag of indexes.semanticTags.get(model.uniqueId) ?? []) {
324
+ if ((pkg.domain.semanticTags ?? []).includes(tag))
325
+ output.push({ selector: 'semantic_tag', value: tag });
326
+ }
327
+ for (const pattern of pkg.domain.dbtPaths ?? []) {
328
+ if (model.sourcePath && globMatches(model.sourcePath, pattern))
329
+ output.push({ selector: 'dbt_path', value: pattern });
330
+ }
331
+ return output;
332
+ }
333
+ function collectModels(manifest) {
334
+ return Object.entries(asRecord(manifest.nodes))
335
+ .filter(([, value]) => asRecord(value).resource_type === 'model')
336
+ .map(([uniqueId, value]) => {
337
+ const raw = asRecord(value);
338
+ return {
339
+ uniqueId,
340
+ name: stringValue(raw.alias) ?? stringValue(raw.name) ?? uniqueId,
341
+ sourcePath: stringValue(raw.original_file_path) ?? stringValue(raw.path),
342
+ raw,
343
+ };
344
+ })
345
+ .sort((a, b) => a.uniqueId.localeCompare(b.uniqueId));
346
+ }
347
+ function collectGroupOwners(manifest) {
348
+ const owners = new Map();
349
+ for (const [, value] of Object.entries(asRecord(manifest.groups)).sort(([a], [b]) => a.localeCompare(b))) {
350
+ const group = asRecord(value);
351
+ const name = stringValue(group.name);
352
+ const owner = stringValue(asRecord(group.owner).email) ?? stringValue(asRecord(group.owner).name);
353
+ if (name && owner)
354
+ owners.set(name, owner);
355
+ }
356
+ return owners;
357
+ }
358
+ function dependentModelIds(raw, modelIds, models) {
359
+ const direct = stringArray(asRecord(raw.depends_on).nodes).filter((id) => modelIds.has(id));
360
+ const model = stringValue(raw.model);
361
+ if (model && modelIds.has(model))
362
+ direct.push(model);
363
+ const refName = model?.match(/ref\(['"]([^'"]+)['"]\)/)?.[1]
364
+ ?? stringValue(asRecord(raw.node_relation).alias)
365
+ ?? stringValue(asRecord(raw.node_relation).name);
366
+ if (refName) {
367
+ const matches = models.filter((candidate) => candidate.name === refName);
368
+ if (matches.length === 1)
369
+ direct.push(matches[0].uniqueId);
370
+ }
371
+ return unique(direct);
372
+ }
373
+ function domainFromTag(tag, packages) {
374
+ const explicit = tag.match(/^domain[:/_-](.+)$/i)?.[1];
375
+ if (explicit)
376
+ return normalizeDomainId(explicit);
377
+ const normalized = normalizeDomainId(tag);
378
+ if (!normalized || GENERIC_TAGS.has(normalized))
379
+ return undefined;
380
+ const existing = packages.find((pkg) => pkg.id === normalized || normalizeDomainId(pkg.name) === normalized);
381
+ return existing?.id ?? normalized;
382
+ }
383
+ function domainFromPath(sourcePath) {
384
+ if (!sourcePath)
385
+ return undefined;
386
+ const parts = sourcePath.replace(/\\/g, '/').split('/').filter(Boolean);
387
+ const modelsAt = parts.lastIndexOf('models');
388
+ const folders = parts.slice(modelsAt >= 0 ? modelsAt + 1 : 0, -1)
389
+ .map(normalizeDomainId)
390
+ .filter((part) => typeof part === 'string' && !GENERIC_PATHS.has(part));
391
+ if (folders.length === 0)
392
+ return undefined;
393
+ return folders.slice(0, 3).join('.');
394
+ }
395
+ function domainValues(value) {
396
+ const values = Array.isArray(value) ? value : value === undefined || value === null ? [] : [value];
397
+ return unique(values.map((item) => normalizeDomainId(String(item))).filter(isString));
398
+ }
399
+ function normalizeDomainId(value) {
400
+ const normalized = value.trim().toLowerCase()
401
+ .replace(/[\\/]+/g, '.')
402
+ .replace(/[^a-z0-9.]+/g, '_')
403
+ .replace(/\.{2,}/g, '.')
404
+ .replace(/^[_\.]+|[_\.]+$/g, '');
405
+ return normalized || undefined;
406
+ }
407
+ function evidence(kind, domain, value, rank, confidence, model, owner, selector) {
408
+ return {
409
+ kind,
410
+ domain,
411
+ value,
412
+ rank,
413
+ confidence,
414
+ sourceUniqueId: model.uniqueId,
415
+ sourcePath: model.sourcePath,
416
+ owner,
417
+ selector,
418
+ };
419
+ }
420
+ function appendEvidence(index, uniqueId, item) {
421
+ const values = index.get(uniqueId) ?? [];
422
+ values.push(item);
423
+ index.set(uniqueId, values);
424
+ }
425
+ function appendStrings(index, uniqueId, items) {
426
+ index.set(uniqueId, unique([...(index.get(uniqueId) ?? []), ...items]));
427
+ }
428
+ function recordEntries(value, prefix) {
429
+ if (Array.isArray(value)) {
430
+ return value.map((item, index) => {
431
+ const raw = asRecord(item);
432
+ return [stringValue(raw.unique_id) ?? stringValue(raw.name) ?? `${prefix}.${index}`, item];
433
+ });
434
+ }
435
+ return Object.entries(asRecord(value));
436
+ }
437
+ function dedupeEvidence(values) {
438
+ const output = new Map();
439
+ for (const value of values) {
440
+ const key = [value.kind, value.domain, value.value, value.sourceUniqueId, value.selector ?? ''].join('|');
441
+ if (!output.has(key))
442
+ output.set(key, value);
443
+ }
444
+ return [...output.values()];
445
+ }
446
+ function compareEvidence(a, b) {
447
+ return a.rank - b.rank
448
+ || a.domain.localeCompare(b.domain)
449
+ || a.sourceUniqueId.localeCompare(b.sourceUniqueId)
450
+ || a.value.localeCompare(b.value);
451
+ }
452
+ function confidenceLabel(value) {
453
+ if (value >= 0.85)
454
+ return 'high';
455
+ if (value >= 0.65)
456
+ return 'medium';
457
+ return 'low';
458
+ }
459
+ function displayName(id) {
460
+ const local = id.split('.').at(-1) ?? id;
461
+ return local.split('_').filter(Boolean).map((part) => `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`).join(' ');
462
+ }
463
+ function parentDomain(id) {
464
+ const parts = id.split('.');
465
+ return parts.length > 1 ? parts.slice(0, -1).join('.') : undefined;
466
+ }
467
+ function safeId(value) {
468
+ return value.replace(/[^a-zA-Z0-9]+/g, '_').replace(/^_+|_+$/g, '').toLowerCase();
469
+ }
470
+ function globMatches(value, pattern) {
471
+ const normalizedValue = value.replace(/\\/g, '/');
472
+ const normalizedPattern = pattern.replace(/\\/g, '/');
473
+ const marker = '\u0000';
474
+ const source = normalizedPattern
475
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
476
+ .replace(/\*\*/g, marker)
477
+ .replace(/\*/g, '[^/]*')
478
+ .replace(new RegExp(marker, 'g'), '.*')
479
+ .replace(/\?/g, '[^/]');
480
+ return new RegExp(`^${source}$`).test(normalizedValue);
481
+ }
482
+ function siblingIfPresent(manifestPath, name) {
483
+ const candidate = join(dirname(manifestPath), name);
484
+ return existsSync(candidate) ? candidate : undefined;
485
+ }
486
+ function asRecord(value) {
487
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
488
+ }
489
+ function stringValue(value) {
490
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
491
+ }
492
+ function stringArray(value) {
493
+ return Array.isArray(value) ? value.filter(isString) : [];
494
+ }
495
+ function unique(values) {
496
+ return [...new Set(values)].sort();
497
+ }
498
+ function isString(value) {
499
+ return typeof value === 'string' && value.length > 0;
500
+ }
501
+ const GENERIC_PATHS = new Set(['staging', 'stage', 'marts', 'mart', 'intermediate', 'base', 'core', 'sources', 'source']);
502
+ const GENERIC_TAGS = new Set(['daily', 'hourly', 'weekly', 'pii', 'published', 'mart', 'marts', 'staging', 'intermediate']);
503
+ //# sourceMappingURL=domain-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-discovery.js","sourceRoot":"","sources":["../../src/manifest/domain-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ManifestDiagnostic, ManifestDomain, ManifestDomainPackage } from './types.js';
2
+ export interface DomainPackageRecord extends ManifestDomainPackage {
3
+ name: string;
4
+ root: string;
5
+ declarationPath: string;
6
+ legacyYamlPath?: string;
7
+ domain: ManifestDomain;
8
+ ancestry: string[];
9
+ depth: number;
10
+ }
11
+ export interface DomainPackageRegistryResult {
12
+ packages: Map<string, DomainPackageRecord>;
13
+ diagnostics: ManifestDiagnostic[];
14
+ get(id: string): DomainPackageRecord | undefined;
15
+ values(): DomainPackageRecord[];
16
+ packageForPath(filePath: string): DomainPackageRecord | undefined;
17
+ descendants(id: string): DomainPackageRecord[];
18
+ }
19
+ export declare function loadDomainPackageRegistry(projectRoot: string): DomainPackageRegistryResult;
20
+ //# sourceMappingURL=domain-package-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-package-registry.d.ts","sourceRoot":"","sources":["../../src/manifest/domain-package-registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAI5F,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3C,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACjD,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAChC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAClE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAAC;CAChD;AAWD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,2BAA2B,CAkH1F"}