@duckcodeailabs/dql-agent 1.6.20 → 1.6.22

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 (160) hide show
  1. package/dist/agent-run-engine.d.ts +287 -0
  2. package/dist/agent-run-engine.d.ts.map +1 -0
  3. package/dist/agent-run-engine.js +916 -0
  4. package/dist/agent-run-engine.js.map +1 -0
  5. package/dist/agent-run-gates.d.ts +26 -0
  6. package/dist/agent-run-gates.d.ts.map +1 -0
  7. package/dist/agent-run-gates.js +170 -0
  8. package/dist/agent-run-gates.js.map +1 -0
  9. package/dist/agent-run-planner.d.ts +32 -0
  10. package/dist/agent-run-planner.d.ts.map +1 -0
  11. package/dist/agent-run-planner.js +280 -0
  12. package/dist/agent-run-planner.js.map +1 -0
  13. package/dist/answer-loop.d.ts +49 -0
  14. package/dist/answer-loop.d.ts.map +1 -1
  15. package/dist/answer-loop.js +292 -17
  16. package/dist/answer-loop.js.map +1 -1
  17. package/dist/app-builder.d.ts +44 -2
  18. package/dist/app-builder.d.ts.map +1 -1
  19. package/dist/app-builder.js +558 -123
  20. package/dist/app-builder.js.map +1 -1
  21. package/dist/app-planner.d.ts +78 -0
  22. package/dist/app-planner.d.ts.map +1 -0
  23. package/dist/app-planner.js +145 -0
  24. package/dist/app-planner.js.map +1 -0
  25. package/dist/embeddings/provider.d.ts +66 -0
  26. package/dist/embeddings/provider.d.ts.map +1 -0
  27. package/dist/embeddings/provider.js +105 -0
  28. package/dist/embeddings/provider.js.map +1 -0
  29. package/dist/hints/git-store.d.ts +69 -0
  30. package/dist/hints/git-store.d.ts.map +1 -0
  31. package/dist/hints/git-store.js +244 -0
  32. package/dist/hints/git-store.js.map +1 -0
  33. package/dist/hints/retrieval.d.ts +49 -0
  34. package/dist/hints/retrieval.d.ts.map +1 -0
  35. package/dist/hints/retrieval.js +60 -0
  36. package/dist/hints/retrieval.js.map +1 -0
  37. package/dist/hints/store.d.ts +39 -0
  38. package/dist/hints/store.d.ts.map +1 -0
  39. package/dist/hints/store.js +279 -0
  40. package/dist/hints/store.js.map +1 -0
  41. package/dist/hints/types.d.ts +147 -0
  42. package/dist/hints/types.d.ts.map +1 -0
  43. package/dist/hints/types.js +92 -0
  44. package/dist/hints/types.js.map +1 -0
  45. package/dist/index.d.ts +43 -6
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +35 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/intent-controller.d.ts +63 -0
  50. package/dist/intent-controller.d.ts.map +1 -0
  51. package/dist/intent-controller.js +150 -0
  52. package/dist/intent-controller.js.map +1 -0
  53. package/dist/kg/build.d.ts.map +1 -1
  54. package/dist/kg/build.js +2 -0
  55. package/dist/kg/build.js.map +1 -1
  56. package/dist/kg/sqlite-fts.js +4 -0
  57. package/dist/kg/sqlite-fts.js.map +1 -1
  58. package/dist/kg/types.d.ts +10 -0
  59. package/dist/kg/types.d.ts.map +1 -1
  60. package/dist/metadata/catalog.d.ts +81 -4
  61. package/dist/metadata/catalog.d.ts.map +1 -1
  62. package/dist/metadata/catalog.js +208 -1
  63. package/dist/metadata/catalog.js.map +1 -1
  64. package/dist/metadata/drafts.d.ts +22 -0
  65. package/dist/metadata/drafts.d.ts.map +1 -1
  66. package/dist/metadata/drafts.js +126 -2
  67. package/dist/metadata/drafts.js.map +1 -1
  68. package/dist/metadata/grain-gate.d.ts +61 -0
  69. package/dist/metadata/grain-gate.d.ts.map +1 -0
  70. package/dist/metadata/grain-gate.js +265 -0
  71. package/dist/metadata/grain-gate.js.map +1 -0
  72. package/dist/metadata/identity.d.ts +47 -0
  73. package/dist/metadata/identity.d.ts.map +1 -0
  74. package/dist/metadata/identity.js +147 -0
  75. package/dist/metadata/identity.js.map +1 -0
  76. package/dist/metadata/metric-match.d.ts +93 -0
  77. package/dist/metadata/metric-match.d.ts.map +1 -0
  78. package/dist/metadata/metric-match.js +233 -0
  79. package/dist/metadata/metric-match.js.map +1 -0
  80. package/dist/metadata/sql-grounding.d.ts +149 -0
  81. package/dist/metadata/sql-grounding.d.ts.map +1 -0
  82. package/dist/metadata/sql-grounding.js +397 -0
  83. package/dist/metadata/sql-grounding.js.map +1 -0
  84. package/dist/metadata/sql-retrieval.d.ts +29 -0
  85. package/dist/metadata/sql-retrieval.d.ts.map +1 -0
  86. package/dist/metadata/sql-retrieval.js +79 -0
  87. package/dist/metadata/sql-retrieval.js.map +1 -0
  88. package/dist/narrate.d.ts +52 -0
  89. package/dist/narrate.d.ts.map +1 -0
  90. package/dist/narrate.js +263 -0
  91. package/dist/narrate.js.map +1 -0
  92. package/dist/propose/build-from-prompt.d.ts +160 -0
  93. package/dist/propose/build-from-prompt.d.ts.map +1 -0
  94. package/dist/propose/build-from-prompt.js +815 -0
  95. package/dist/propose/build-from-prompt.js.map +1 -0
  96. package/dist/propose/classify.d.ts +55 -0
  97. package/dist/propose/classify.d.ts.map +1 -0
  98. package/dist/propose/classify.js +167 -0
  99. package/dist/propose/classify.js.map +1 -0
  100. package/dist/propose/config.d.ts +39 -0
  101. package/dist/propose/config.d.ts.map +1 -0
  102. package/dist/propose/config.js +52 -0
  103. package/dist/propose/config.js.map +1 -0
  104. package/dist/propose/dbt-artifacts.d.ts +134 -0
  105. package/dist/propose/dbt-artifacts.d.ts.map +1 -0
  106. package/dist/propose/dbt-artifacts.js +320 -0
  107. package/dist/propose/dbt-artifacts.js.map +1 -0
  108. package/dist/propose/edit-block.d.ts +74 -0
  109. package/dist/propose/edit-block.d.ts.map +1 -0
  110. package/dist/propose/edit-block.js +133 -0
  111. package/dist/propose/edit-block.js.map +1 -0
  112. package/dist/propose/enrich.d.ts +48 -0
  113. package/dist/propose/enrich.d.ts.map +1 -0
  114. package/dist/propose/enrich.js +125 -0
  115. package/dist/propose/enrich.js.map +1 -0
  116. package/dist/propose/generate-sql.d.ts +61 -0
  117. package/dist/propose/generate-sql.d.ts.map +1 -0
  118. package/dist/propose/generate-sql.js +180 -0
  119. package/dist/propose/generate-sql.js.map +1 -0
  120. package/dist/propose/index.d.ts +24 -0
  121. package/dist/propose/index.d.ts.map +1 -0
  122. package/dist/propose/index.js +15 -0
  123. package/dist/propose/index.js.map +1 -0
  124. package/dist/propose/propose.d.ts +226 -0
  125. package/dist/propose/propose.d.ts.map +1 -0
  126. package/dist/propose/propose.js +668 -0
  127. package/dist/propose/propose.js.map +1 -0
  128. package/dist/propose/reflect-block.d.ts +99 -0
  129. package/dist/propose/reflect-block.d.ts.map +1 -0
  130. package/dist/propose/reflect-block.js +220 -0
  131. package/dist/propose/reflect-block.js.map +1 -0
  132. package/dist/propose/write-draft.d.ts +90 -0
  133. package/dist/propose/write-draft.d.ts.map +1 -0
  134. package/dist/propose/write-draft.js +185 -0
  135. package/dist/propose/write-draft.js.map +1 -0
  136. package/dist/providers/claude.d.ts +13 -1
  137. package/dist/providers/claude.d.ts.map +1 -1
  138. package/dist/providers/claude.js +20 -2
  139. package/dist/providers/claude.js.map +1 -1
  140. package/dist/providers/gemini.d.ts +13 -1
  141. package/dist/providers/gemini.d.ts.map +1 -1
  142. package/dist/providers/gemini.js +24 -3
  143. package/dist/providers/gemini.js.map +1 -1
  144. package/dist/providers/index.d.ts +3 -3
  145. package/dist/providers/index.d.ts.map +1 -1
  146. package/dist/providers/index.js +3 -3
  147. package/dist/providers/index.js.map +1 -1
  148. package/dist/research-loop.d.ts +62 -0
  149. package/dist/research-loop.d.ts.map +1 -0
  150. package/dist/research-loop.js +210 -0
  151. package/dist/research-loop.js.map +1 -0
  152. package/dist/skills/defaults.d.ts +37 -0
  153. package/dist/skills/defaults.d.ts.map +1 -0
  154. package/dist/skills/defaults.js +152 -0
  155. package/dist/skills/defaults.js.map +1 -0
  156. package/dist/skills/loader.d.ts +60 -0
  157. package/dist/skills/loader.d.ts.map +1 -1
  158. package/dist/skills/loader.js +164 -2
  159. package/dist/skills/loader.js.map +1 -1
  160. package/package.json +7 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-from-prompt.js","sourceRoot":"","sources":["../../src/propose/build-from-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Convention-agnostic, deterministic business-layer classifier for `dql propose`.
3
+ *
4
+ * Real enterprise dbt repos (1k–10k models) are NOT organized like jaffle-shop:
5
+ * naming conventions vary, folders vary, some teams lean entirely on `meta`. So
6
+ * the classifier uses a weighted CASCADE from the most authoritative signal to
7
+ * the weakest fallback, and records human-readable `evidence` for every decision
8
+ * so a reviewer can see *why* a model was kept or skipped:
9
+ *
10
+ * 1. dbt `meta` — meta.dql.business (bool), meta.layer/domain/owner
11
+ * 2. exposure linkage — model feeds a dbt exposure → business
12
+ * 3. semantic binding — model backs a MetricFlow metric/measure → business
13
+ * 4. folder / fqn path — marts/core/reporting ⇒ business; staging/… ⇒ plumbing
14
+ * 5. tags — mart/reporting/certified vs staging/base
15
+ * 6. name prefix/suffix — stg_/int_/base_ (LAST RESORT only)
16
+ *
17
+ * `plumbing` models are EXCLUDED from generation (not merely ranked down).
18
+ * `niche` is "not obviously business, not obviously plumbing" — also excluded
19
+ * from the bounded seed, but kept in the plan totals so the count is honest.
20
+ *
21
+ * This module is 100% deterministic: no LLM, reproducible offline, auditable.
22
+ */
23
+ import type { DbtModelNode } from './dbt-artifacts.js';
24
+ import type { ProposeConfig } from './config.js';
25
+ export type Classification = 'business' | 'plumbing' | 'niche';
26
+ export interface ClassifierContext {
27
+ /** uniqueIds that feed at least one dbt exposure. */
28
+ exposureLinked: Set<string>;
29
+ /** Lowercased model names that back a semantic metric/measure. */
30
+ metricModels: Set<string>;
31
+ config: ProposeConfig;
32
+ }
33
+ export interface ClassificationResult {
34
+ classification: Classification;
35
+ /** Resolved domain label for grouping (already cascade-derived). */
36
+ domain: string;
37
+ /** Owner stamped from meta.owner when present. */
38
+ owner?: string;
39
+ /** Human-readable signals that drove the decision (highest-priority first). */
40
+ evidence: string[];
41
+ }
42
+ /** Owner from meta.owner / meta.dql.owner (un-lowercased — it's an identity). */
43
+ export declare function metaOwner(model: DbtModelNode): string | undefined;
44
+ /**
45
+ * Resolve a model's domain label deterministically with the same cascade
46
+ * priority as classification: meta.domain → meta.layer/group → folder → fqn.
47
+ * Falls back to the pre-computed `domainHint` from the artifacts reader.
48
+ */
49
+ export declare function resolveDomain(model: DbtModelNode): string;
50
+ /**
51
+ * Classify a single model via the weighted cascade. Returns the classification,
52
+ * the resolved domain, an optional owner, and the evidence chain.
53
+ */
54
+ export declare function classifyModel(model: DbtModelNode, ctx: ClassifierContext): ClassificationResult;
55
+ //# sourceMappingURL=classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/propose/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,kEAAkE;IAClE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAiCD,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAOjE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CASzD;AAwBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,GAAG,oBAAoB,CAwE/F"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Convention-agnostic, deterministic business-layer classifier for `dql propose`.
3
+ *
4
+ * Real enterprise dbt repos (1k–10k models) are NOT organized like jaffle-shop:
5
+ * naming conventions vary, folders vary, some teams lean entirely on `meta`. So
6
+ * the classifier uses a weighted CASCADE from the most authoritative signal to
7
+ * the weakest fallback, and records human-readable `evidence` for every decision
8
+ * so a reviewer can see *why* a model was kept or skipped:
9
+ *
10
+ * 1. dbt `meta` — meta.dql.business (bool), meta.layer/domain/owner
11
+ * 2. exposure linkage — model feeds a dbt exposure → business
12
+ * 3. semantic binding — model backs a MetricFlow metric/measure → business
13
+ * 4. folder / fqn path — marts/core/reporting ⇒ business; staging/… ⇒ plumbing
14
+ * 5. tags — mart/reporting/certified vs staging/base
15
+ * 6. name prefix/suffix — stg_/int_/base_ (LAST RESORT only)
16
+ *
17
+ * `plumbing` models are EXCLUDED from generation (not merely ranked down).
18
+ * `niche` is "not obviously business, not obviously plumbing" — also excluded
19
+ * from the bounded seed, but kept in the plan totals so the count is honest.
20
+ *
21
+ * This module is 100% deterministic: no LLM, reproducible offline, auditable.
22
+ */
23
+ // Name prefixes/suffixes are the LAST resort. Kept narrow on purpose.
24
+ const PLUMBING_NAME_RE = /^(stg_|int_|base_|raw_)|(_stg|_int|_base)$/i;
25
+ const BUSINESS_NAME_RE = /^(dim_|fct_|fact_|mart_|rpt_|report_|agg_)/i;
26
+ const BUSINESS_TAGS = new Set(['mart', 'marts', 'reporting', 'certified', 'core', 'curated']);
27
+ const PLUMBING_TAGS = new Set(['staging', 'stg', 'base', 'intermediate', 'int', 'raw', 'source']);
28
+ function lower(v) {
29
+ return typeof v === 'string' && v.trim() ? v.trim().toLowerCase() : undefined;
30
+ }
31
+ function asRecord(value) {
32
+ if (!value || typeof value !== 'object' || Array.isArray(value))
33
+ return {};
34
+ return value;
35
+ }
36
+ /** Read the `dql` sub-object from a model's meta (config.meta is a fallback). */
37
+ function dqlMeta(model) {
38
+ const direct = asRecord(model.meta.dql);
39
+ if (Object.keys(direct).length > 0)
40
+ return direct;
41
+ const configMeta = asRecord(model.config.meta);
42
+ return asRecord(configMeta.dql);
43
+ }
44
+ function metaString(model, key) {
45
+ const direct = lower(model.meta[key]);
46
+ if (direct)
47
+ return direct;
48
+ const configMeta = asRecord(model.config.meta);
49
+ return lower(configMeta[key]);
50
+ }
51
+ /** Owner from meta.owner / meta.dql.owner (un-lowercased — it's an identity). */
52
+ export function metaOwner(model) {
53
+ const dql = dqlMeta(model);
54
+ const candidates = [dql.owner, model.meta.owner, asRecord(model.config.meta).owner];
55
+ for (const c of candidates) {
56
+ if (typeof c === 'string' && c.trim())
57
+ return c.trim();
58
+ }
59
+ return undefined;
60
+ }
61
+ /**
62
+ * Resolve a model's domain label deterministically with the same cascade
63
+ * priority as classification: meta.domain → meta.layer/group → folder → fqn.
64
+ * Falls back to the pre-computed `domainHint` from the artifacts reader.
65
+ */
66
+ export function resolveDomain(model) {
67
+ const dql = dqlMeta(model);
68
+ const candidate = lower(dql.domain) ??
69
+ metaString(model, 'domain') ??
70
+ metaString(model, 'group') ??
71
+ (model.domainHint ? model.domainHint.toLowerCase() : undefined) ??
72
+ (model.folder ? model.folder.toLowerCase() : undefined);
73
+ return normalizeDomain(candidate);
74
+ }
75
+ function normalizeDomain(value) {
76
+ const safe = (value ?? '')
77
+ .trim()
78
+ .toLowerCase()
79
+ .replace(/[^a-z0-9/_-]+/g, '-')
80
+ .replace(/^[-/]+|[-/]+$/g, '');
81
+ return safe || 'uncategorized';
82
+ }
83
+ /** True when `token` matches any configured layer token (folder OR tag). */
84
+ function matchesLayer(model, layers) {
85
+ const folder = model.folder?.toLowerCase();
86
+ if (folder && layers.includes(folder))
87
+ return true;
88
+ const path = model.path?.toLowerCase() ?? '';
89
+ for (const layer of layers) {
90
+ // Path segment match (e.g. "models/reporting/finance/...").
91
+ if (path.includes(`/${layer}/`) || path.startsWith(`${layer}/`))
92
+ return true;
93
+ }
94
+ const tags = model.tags.map((t) => t.toLowerCase());
95
+ return layers.some((layer) => tags.includes(layer));
96
+ }
97
+ /**
98
+ * Classify a single model via the weighted cascade. Returns the classification,
99
+ * the resolved domain, an optional owner, and the evidence chain.
100
+ */
101
+ export function classifyModel(model, ctx) {
102
+ const evidence = [];
103
+ const domain = resolveDomain(model);
104
+ const owner = metaOwner(model);
105
+ const config = ctx.config;
106
+ // ── 1. dbt meta (authoritative) ──────────────────────────────────────────
107
+ const dql = dqlMeta(model);
108
+ if (typeof dql.business === 'boolean') {
109
+ evidence.push(`meta.dql.business = ${dql.business}`);
110
+ return { classification: dql.business ? 'business' : 'plumbing', domain, owner, evidence };
111
+ }
112
+ const metaLayer = lower(dql.layer) ?? metaString(model, 'layer');
113
+ if (metaLayer) {
114
+ if (config.businessLayers.includes(metaLayer)) {
115
+ evidence.push(`meta.layer = "${metaLayer}" (business)`);
116
+ return { classification: 'business', domain, owner, evidence };
117
+ }
118
+ if (config.excludeLayers.includes(metaLayer)) {
119
+ evidence.push(`meta.layer = "${metaLayer}" (plumbing)`);
120
+ return { classification: 'plumbing', domain, owner, evidence };
121
+ }
122
+ }
123
+ // ── 2. exposure linkage ──────────────────────────────────────────────────
124
+ if (ctx.exposureLinked.has(model.uniqueId)) {
125
+ evidence.push('feeds a dbt exposure');
126
+ return { classification: 'business', domain, owner, evidence };
127
+ }
128
+ // ── 3. semantic binding ──────────────────────────────────────────────────
129
+ if (ctx.metricModels.has(model.name.toLowerCase())) {
130
+ evidence.push('backs a semantic metric');
131
+ return { classification: 'business', domain, owner, evidence };
132
+ }
133
+ // ── 4. folder / fqn path ─────────────────────────────────────────────────
134
+ if (matchesLayer(model, config.businessLayers)) {
135
+ const folder = model.folder?.toLowerCase();
136
+ evidence.push(folder ? `${folder}/ folder (business layer)` : 'business-layer path');
137
+ return { classification: 'business', domain, owner, evidence };
138
+ }
139
+ if (matchesLayer(model, config.excludeLayers)) {
140
+ const folder = model.folder?.toLowerCase();
141
+ evidence.push(folder ? `${folder}/ folder (plumbing layer)` : 'plumbing-layer path');
142
+ return { classification: 'plumbing', domain, owner, evidence };
143
+ }
144
+ // ── 5. tags ──────────────────────────────────────────────────────────────
145
+ const tags = model.tags.map((t) => t.toLowerCase());
146
+ if (tags.some((t) => BUSINESS_TAGS.has(t))) {
147
+ evidence.push(`tag: ${tags.find((t) => BUSINESS_TAGS.has(t))}`);
148
+ return { classification: 'business', domain, owner, evidence };
149
+ }
150
+ if (tags.some((t) => PLUMBING_TAGS.has(t))) {
151
+ evidence.push(`tag: ${tags.find((t) => PLUMBING_TAGS.has(t))}`);
152
+ return { classification: 'plumbing', domain, owner, evidence };
153
+ }
154
+ // ── 6. name prefix/suffix (LAST RESORT) ──────────────────────────────────
155
+ if (PLUMBING_NAME_RE.test(model.name)) {
156
+ evidence.push(`name pattern "${model.name}" (plumbing prefix)`);
157
+ return { classification: 'plumbing', domain, owner, evidence };
158
+ }
159
+ if (BUSINESS_NAME_RE.test(model.name)) {
160
+ evidence.push(`name pattern "${model.name}" (business prefix)`);
161
+ return { classification: 'business', domain, owner, evidence };
162
+ }
163
+ // No decisive signal → niche (excluded from the bounded seed, but counted).
164
+ evidence.push('no business signal (folder/meta/exposure/semantic/tag/name)');
165
+ return { classification: 'niche', domain, owner, evidence };
166
+ }
167
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/propose/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAyBH,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AACvE,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;AAEvE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9F,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElG,SAAS,KAAK,CAAC,CAAU;IACvB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3E,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,iFAAiF;AACjF,SAAS,OAAO,CAAC,KAAmB;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAE,KAAK,CAAC,MAAkC,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB,EAAE,GAAW;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAE,KAAK,CAAC,MAAkC,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAE,KAAK,CAAC,MAAkC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IACjH,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,SAAS,GACb,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACjB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC3B,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1B,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,IAAI,IAAI,eAAe,CAAC;AACjC,CAAC;AAED,4EAA4E;AAC5E,SAAS,YAAY,CAAC,KAAmB,EAAE,MAAgB;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,4DAA4D;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/E,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmB,EAAE,GAAsB;IACvE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,4EAA4E;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7F,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,iBAAiB,SAAS,cAAc,CAAC,CAAC;YACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,iBAAiB,SAAS,cAAc,CAAC,CAAC;YACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,4EAA4E;IAC5E,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,4EAA4E;IAC5E,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACrF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACrF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,4EAA4E;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,4EAA4E;IAC5E,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAChE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjE,CAAC;IAED,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Resolved configuration for the `dql propose` engine.
3
+ *
4
+ * Conventions are **convention-agnostic by default**: with no config the
5
+ * classifier falls back to a weighted cascade (meta → exposure → semantic →
6
+ * folder → tag → name). The optional `propose` block in `dql.config.json` only
7
+ * *overrides* the defaults — it is additive and backward-compatible.
8
+ *
9
+ * Everything here is deterministic. There is no LLM input to config resolution.
10
+ */
11
+ /** Raw shape a user may put under `"propose"` in `dql.config.json`. */
12
+ export interface ProposeConfigInput {
13
+ /** Folder/tag tokens that mean "business layer". */
14
+ businessLayers?: string[];
15
+ /** Folder/tag tokens that mean "plumbing" (excluded from generation). */
16
+ excludeLayers?: string[];
17
+ /** Max candidates generated per domain. */
18
+ maxPerDomain?: number;
19
+ /** Minimum demand score a candidate needs to be selected. */
20
+ minScore?: number;
21
+ /** Whether the optional AI enrichment hook may run. */
22
+ aiEnrichment?: 'auto' | 'on' | 'off';
23
+ }
24
+ /** Fully-resolved config (defaults applied). */
25
+ export interface ProposeConfig {
26
+ businessLayers: string[];
27
+ excludeLayers: string[];
28
+ maxPerDomain: number;
29
+ minScore: number;
30
+ aiEnrichment: 'auto' | 'on' | 'off';
31
+ }
32
+ export declare const DEFAULT_PROPOSE_CONFIG: ProposeConfig;
33
+ /**
34
+ * Resolve a user-supplied `propose` config block into a complete config, with
35
+ * sensible defaults for every field. Unknown / malformed values fall back to the
36
+ * default — config can only refine behaviour, never break it.
37
+ */
38
+ export declare function resolveProposeConfig(input?: ProposeConfigInput | null): ProposeConfig;
39
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/propose/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;CACtC;AAED,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;CACrC;AAED,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC;AAWF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,aAAa,CAyBrF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Resolved configuration for the `dql propose` engine.
3
+ *
4
+ * Conventions are **convention-agnostic by default**: with no config the
5
+ * classifier falls back to a weighted cascade (meta → exposure → semantic →
6
+ * folder → tag → name). The optional `propose` block in `dql.config.json` only
7
+ * *overrides* the defaults — it is additive and backward-compatible.
8
+ *
9
+ * Everything here is deterministic. There is no LLM input to config resolution.
10
+ */
11
+ export const DEFAULT_PROPOSE_CONFIG = {
12
+ businessLayers: ['marts', 'core', 'reporting'],
13
+ excludeLayers: ['staging', 'intermediate', 'base'],
14
+ maxPerDomain: 8,
15
+ minScore: 0,
16
+ aiEnrichment: 'auto',
17
+ };
18
+ function normalizeTokens(values, fallback) {
19
+ if (!Array.isArray(values))
20
+ return fallback;
21
+ const out = values
22
+ .filter((v) => typeof v === 'string')
23
+ .map((v) => v.trim().toLowerCase())
24
+ .filter(Boolean);
25
+ return out.length > 0 ? Array.from(new Set(out)) : fallback;
26
+ }
27
+ /**
28
+ * Resolve a user-supplied `propose` config block into a complete config, with
29
+ * sensible defaults for every field. Unknown / malformed values fall back to the
30
+ * default — config can only refine behaviour, never break it.
31
+ */
32
+ export function resolveProposeConfig(input) {
33
+ if (!input || typeof input !== 'object')
34
+ return { ...DEFAULT_PROPOSE_CONFIG };
35
+ const maxPerDomain = typeof input.maxPerDomain === 'number' && Number.isFinite(input.maxPerDomain) && input.maxPerDomain > 0
36
+ ? Math.floor(input.maxPerDomain)
37
+ : DEFAULT_PROPOSE_CONFIG.maxPerDomain;
38
+ const minScore = typeof input.minScore === 'number' && Number.isFinite(input.minScore)
39
+ ? input.minScore
40
+ : DEFAULT_PROPOSE_CONFIG.minScore;
41
+ const aiEnrichment = input.aiEnrichment === 'on' || input.aiEnrichment === 'off' || input.aiEnrichment === 'auto'
42
+ ? input.aiEnrichment
43
+ : DEFAULT_PROPOSE_CONFIG.aiEnrichment;
44
+ return {
45
+ businessLayers: normalizeTokens(input.businessLayers, DEFAULT_PROPOSE_CONFIG.businessLayers),
46
+ excludeLayers: normalizeTokens(input.excludeLayers, DEFAULT_PROPOSE_CONFIG.excludeLayers),
47
+ maxPerDomain,
48
+ minScore,
49
+ aiEnrichment,
50
+ };
51
+ }
52
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/propose/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IAC9C,aAAa,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC;IAClD,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,MAAM;CACrB,CAAC;AAEF,SAAS,eAAe,CAAC,MAAe,EAAE,QAAkB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM;SACf,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAiC;IACpE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE9E,MAAM,YAAY,GAChB,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;QACrG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;QAChC,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC;IAE1C,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnE,CAAC,CAAC,KAAK,CAAC,QAAQ;QAChB,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC;IAEtC,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM;QAC1F,CAAC,CAAC,KAAK,CAAC,YAAY;QACpB,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC;IAE1C,OAAO;QACL,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC;QAC5F,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,sBAAsB,CAAC,aAAa,CAAC;QACzF,YAAY;QACZ,QAAQ;QACR,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Read-only readers for dbt build artifacts used by `dql propose`.
3
+ *
4
+ * These parse the raw JSON shapes that dbt writes to `target/`:
5
+ * - `manifest.json` — models, sources, depends_on, tags, schema, description
6
+ * - `catalog.json` — column names + types (from the warehouse)
7
+ * - `semantic_manifest.json` (or manifest.json semantic nodes) — metrics/dimensions
8
+ * - `run_results.json` — per-node execution records (used for run-frequency ranking)
9
+ *
10
+ * We deliberately do NOT reuse the manifest builder's `importDbtManifest`: that
11
+ * function is private and tightly coupled to a full DQL project scan (it walks
12
+ * the DQL-referenced anchor set). `dql propose` runs *before* a DQL layer
13
+ * exists, so it reads the dbt artifacts directly. The field shapes mirror those
14
+ * the builder consumes, so the two stay aligned.
15
+ */
16
+ export interface DbtColumn {
17
+ name: string;
18
+ type?: string;
19
+ description?: string;
20
+ }
21
+ export interface DbtModelNode {
22
+ uniqueId: string;
23
+ name: string;
24
+ resourceType: 'model';
25
+ schema?: string;
26
+ database?: string;
27
+ /** dbt `alias` (the warehouse relation name), when it differs from `name`. */
28
+ alias?: string;
29
+ /**
30
+ * Fully-qualified warehouse relation `database.schema.alias` (e.g.
31
+ * `dev.order_items`), built from the existing manifest fields. This is the
32
+ * REAL relation a `FROM` clause in an ad-hoc cell must reference — never the
33
+ * bare model name. Falls back to the most-qualified form available.
34
+ */
35
+ qualifiedRelation: string;
36
+ /** The dbt `{{ ref('<name>') }}` form for governed BLOCK SQL. */
37
+ refForm: string;
38
+ description?: string;
39
+ materialized?: string;
40
+ tags: string[];
41
+ /** Folder segment after `models/`, e.g. `marts` or `staging`. */
42
+ folder?: string;
43
+ /** Domain hint from meta/group/fqn/package. */
44
+ domainHint?: string;
45
+ /** Upstream uniqueIds. */
46
+ dependsOn: string[];
47
+ /** Columns declared in the dbt model YAML (name + description; type may be empty). */
48
+ columns: DbtColumn[];
49
+ /** dbt model config + meta, kept for grain/primary-key inference. */
50
+ meta: Record<string, unknown>;
51
+ config: Record<string, unknown>;
52
+ /** Path relative to the dbt project root. */
53
+ path?: string;
54
+ }
55
+ export interface DbtSourceNode {
56
+ uniqueId: string;
57
+ name: string;
58
+ resourceType: 'source';
59
+ schema?: string;
60
+ database?: string;
61
+ /** Fully-qualified warehouse relation `database.schema.identifier`. */
62
+ qualifiedRelation: string;
63
+ /** The dbt `{{ source('<source>', '<table>') }}` form, when derivable. */
64
+ refForm?: string;
65
+ description?: string;
66
+ tags: string[];
67
+ }
68
+ /**
69
+ * Build the fully-qualified warehouse relation for a node from its
70
+ * `database` / `schema` / relation-name fields. Returns the most-qualified
71
+ * dotted form available (`db.schema.name` → `schema.name` → `name`) so a
72
+ * `FROM` clause always references the REAL relation, never a bare model name.
73
+ */
74
+ export declare function buildQualifiedRelation(parts: {
75
+ database?: string;
76
+ schema?: string;
77
+ name: string;
78
+ }): string;
79
+ export interface DbtExposureNode {
80
+ uniqueId: string;
81
+ name: string;
82
+ /** Downstream node uniqueIds this exposure depends on. */
83
+ dependsOn: string[];
84
+ }
85
+ export interface DbtArtifacts {
86
+ projectName?: string;
87
+ models: DbtModelNode[];
88
+ sources: DbtSourceNode[];
89
+ exposures: DbtExposureNode[];
90
+ /** model uniqueId -> column metadata from catalog.json (richer types). */
91
+ catalogColumns: Map<string, DbtColumn[]>;
92
+ /** node uniqueId -> number of recorded runs in run_results.json. */
93
+ runCounts: Map<string, number>;
94
+ /** Whether a semantic manifest with metrics/saved-queries was present. */
95
+ hasSemantic: boolean;
96
+ /** Semantic metric names keyed by the model they bind to (best-effort). */
97
+ semanticMetrics: SemanticMetricRef[];
98
+ /** Semantic models keyed by bound dbt model name (for entity/agg generation). */
99
+ semanticModels: Map<string, SemanticModelRef>;
100
+ }
101
+ export interface SemanticMetricRef {
102
+ name: string;
103
+ description?: string;
104
+ /** Model name the metric's measure resolves to, when derivable. */
105
+ model?: string;
106
+ /** Underlying measure name (MetricFlow). */
107
+ measure?: string;
108
+ /** Aggregation type for the measure (sum, count_distinct, average, …). */
109
+ agg?: string;
110
+ /** The column/expr the measure aggregates over, when declared. */
111
+ expr?: string;
112
+ /** Metric type from the semantic manifest (simple, ratio, derived, …). */
113
+ metricType?: string;
114
+ }
115
+ /** A semantic model's queryable shape (for entity/aggregation generation). */
116
+ export interface SemanticModelRef {
117
+ /** Bound dbt model name (node_relation.alias, else the semantic model name). */
118
+ model: string;
119
+ /** Dimension column names declared on the semantic model. */
120
+ dimensions: string[];
121
+ /** Primary entity column name, when one is declared. */
122
+ primaryEntity?: string;
123
+ /** All entity column names. */
124
+ entities: string[];
125
+ /** Time dimension column names. */
126
+ timeDimensions: string[];
127
+ }
128
+ /**
129
+ * Load all dbt artifacts that live alongside `manifest.json` (same `target/`
130
+ * directory). Only `manifest.json` is required; the rest are optional and the
131
+ * loader degrades gracefully when they are missing.
132
+ */
133
+ export declare function loadDbtArtifacts(manifestPath: string): DbtArtifacts;
134
+ //# sourceMappingURL=dbt-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbt-artifacts.d.ts","sourceRoot":"","sources":["../../src/propose/dbt-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sFAAsF;IACtF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,QAAQ,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAKT;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,oEAAoE;IACpE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,iFAAiF;IACjF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mCAAmC;IACnC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAkED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CA8FnE"}