@duckcodeailabs/dql-agent 1.6.34 → 1.7.1

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 (95) hide show
  1. package/dist/agent-run-engine.d.ts +14 -1
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +123 -3
  4. package/dist/agent-run-engine.js.map +1 -1
  5. package/dist/agent-run-gates.d.ts.map +1 -1
  6. package/dist/agent-run-gates.js +6 -0
  7. package/dist/agent-run-gates.js.map +1 -1
  8. package/dist/answer-loop.d.ts +57 -4
  9. package/dist/answer-loop.d.ts.map +1 -1
  10. package/dist/answer-loop.js +435 -44
  11. package/dist/answer-loop.js.map +1 -1
  12. package/dist/app-builder.d.ts +36 -3
  13. package/dist/app-builder.d.ts.map +1 -1
  14. package/dist/app-builder.js +285 -22
  15. package/dist/app-builder.js.map +1 -1
  16. package/dist/cascade/budgets.d.ts.map +1 -1
  17. package/dist/cascade/budgets.js +8 -3
  18. package/dist/cascade/budgets.js.map +1 -1
  19. package/dist/cascade/route-policy.d.ts.map +1 -1
  20. package/dist/cascade/route-policy.js +5 -0
  21. package/dist/cascade/route-policy.js.map +1 -1
  22. package/dist/dashboard-story.d.ts +36 -0
  23. package/dist/dashboard-story.d.ts.map +1 -0
  24. package/dist/dashboard-story.js +140 -0
  25. package/dist/dashboard-story.js.map +1 -0
  26. package/dist/domain-context.d.ts +30 -0
  27. package/dist/domain-context.d.ts.map +1 -0
  28. package/dist/domain-context.js +76 -0
  29. package/dist/domain-context.js.map +1 -0
  30. package/dist/hints/git-store.d.ts +39 -3
  31. package/dist/hints/git-store.d.ts.map +1 -1
  32. package/dist/hints/git-store.js +172 -2
  33. package/dist/hints/git-store.js.map +1 -1
  34. package/dist/hints/types.d.ts +41 -0
  35. package/dist/hints/types.d.ts.map +1 -1
  36. package/dist/hints/types.js +1 -0
  37. package/dist/hints/types.js.map +1 -1
  38. package/dist/index.d.ts +10 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +39 -3
  41. package/dist/index.js.map +1 -1
  42. package/dist/kg/build.d.ts.map +1 -1
  43. package/dist/kg/build.js +220 -4
  44. package/dist/kg/build.js.map +1 -1
  45. package/dist/kg/sqlite-fts.d.ts.map +1 -1
  46. package/dist/kg/sqlite-fts.js +8 -3
  47. package/dist/kg/sqlite-fts.js.map +1 -1
  48. package/dist/kg/types.d.ts +9 -2
  49. package/dist/kg/types.d.ts.map +1 -1
  50. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  51. package/dist/metadata/analysis-planner.js +134 -18
  52. package/dist/metadata/analysis-planner.js.map +1 -1
  53. package/dist/metadata/analytical-policy.d.ts +51 -0
  54. package/dist/metadata/analytical-policy.d.ts.map +1 -0
  55. package/dist/metadata/analytical-policy.js +309 -0
  56. package/dist/metadata/analytical-policy.js.map +1 -0
  57. package/dist/metadata/block-fit.js +37 -4
  58. package/dist/metadata/block-fit.js.map +1 -1
  59. package/dist/metadata/catalog.d.ts +49 -1
  60. package/dist/metadata/catalog.d.ts.map +1 -1
  61. package/dist/metadata/catalog.js +365 -54
  62. package/dist/metadata/catalog.js.map +1 -1
  63. package/dist/metadata/dbt-first-safety.d.ts +19 -0
  64. package/dist/metadata/dbt-first-safety.d.ts.map +1 -0
  65. package/dist/metadata/dbt-first-safety.js +17 -0
  66. package/dist/metadata/dbt-first-safety.js.map +1 -0
  67. package/dist/metadata/sql-context-validation.d.ts.map +1 -1
  68. package/dist/metadata/sql-context-validation.js +42 -2
  69. package/dist/metadata/sql-context-validation.js.map +1 -1
  70. package/dist/metadata/sql-grounding.d.ts.map +1 -1
  71. package/dist/metadata/sql-grounding.js +25 -2
  72. package/dist/metadata/sql-grounding.js.map +1 -1
  73. package/dist/metadata/sql-retrieval.d.ts +2 -0
  74. package/dist/metadata/sql-retrieval.d.ts.map +1 -1
  75. package/dist/metadata/sql-retrieval.js +5 -1
  76. package/dist/metadata/sql-retrieval.js.map +1 -1
  77. package/dist/propose/build-from-prompt.d.ts +34 -0
  78. package/dist/propose/build-from-prompt.d.ts.map +1 -1
  79. package/dist/propose/build-from-prompt.js +199 -19
  80. package/dist/propose/build-from-prompt.js.map +1 -1
  81. package/dist/semantic-bridge/compose.d.ts.map +1 -1
  82. package/dist/semantic-bridge/compose.js +169 -5
  83. package/dist/semantic-bridge/compose.js.map +1 -1
  84. package/dist/skills/loader.d.ts +19 -0
  85. package/dist/skills/loader.d.ts.map +1 -1
  86. package/dist/skills/loader.js +107 -12
  87. package/dist/skills/loader.js.map +1 -1
  88. package/dist/synthesize.d.ts.map +1 -1
  89. package/dist/synthesize.js +152 -16
  90. package/dist/synthesize.js.map +1 -1
  91. package/dist/tools/registry.d.ts +1 -1
  92. package/dist/tools/registry.d.ts.map +1 -1
  93. package/dist/tools/registry.js +42 -0
  94. package/dist/tools/registry.js.map +1 -1
  95. package/package.json +4 -4
@@ -0,0 +1,309 @@
1
+ /** Deterministic manifest-v3 analytical path planning and SQL validation. */
2
+ import { analyzeSqlReferences, relationshipValidationProofFingerprint, } from '@duckcodeailabs/dql-core';
3
+ /**
4
+ * Re-check the complete executable-join invariant at the point of use.
5
+ *
6
+ * `automaticJoinAllowed` is the compiler's summary bit and remains mandatory,
7
+ * but consumers also validate its source proof so stale/corrupt hand-authored
8
+ * manifests cannot turn a review-only relationship into SQL authorization.
9
+ */
10
+ export function assessAnalyticalRelationship(relationship, manifest, now = new Date()) {
11
+ if (relationship.status !== 'certified') {
12
+ return denied('relationship_not_certified', `Relationship "${relationship.id}" is ${relationship.status}, not certified.`);
13
+ }
14
+ if (relationship.staleCertification) {
15
+ return denied('stale_certification', `Relationship "${relationship.id}" is stale and cannot authorize generated SQL.`);
16
+ }
17
+ if (!relationship.certificationFingerprint?.trim()) {
18
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" has no valid certification fingerprint.`);
19
+ }
20
+ const validation = relationship.validation;
21
+ if (!validation) {
22
+ return denied('relationship_evidence_missing', `Relationship "${relationship.id}" has no warehouse validation evidence.`);
23
+ }
24
+ if (validation.status !== 'passed') {
25
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" warehouse validation is ${validation.status}, not passed.`);
26
+ }
27
+ if (!validDate(validation.checkedAt) || !validation.queryFingerprint?.trim() || !validValidationCounts(validation)) {
28
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" has invalid warehouse validation proof.`);
29
+ }
30
+ const modeling = manifest?.modeling;
31
+ const fromEntity = modeling?.entities[relationship.from];
32
+ const toEntity = modeling?.entities[relationship.to];
33
+ const fromRelation = manifest?.dbtProvenance?.nodes[fromEntity?.dbtUniqueId ?? '']?.relation;
34
+ const toRelation = manifest?.dbtProvenance?.nodes[toEntity?.dbtUniqueId ?? '']?.relation;
35
+ if (!validation.proofFingerprint?.trim()) {
36
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" has legacy or unbound warehouse evidence; run relationship validation again.`);
37
+ }
38
+ if (!manifest || !fromEntity || !toEntity) {
39
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" validation proof cannot be bound to its manifest-v3 entities.`);
40
+ }
41
+ const expectedProof = relationshipValidationProofFingerprint({
42
+ fromRelation,
43
+ toRelation,
44
+ keys: relationship.keys,
45
+ cardinality: relationship.cardinality,
46
+ fanout: relationship.fanout,
47
+ queryFingerprint: validation.queryFingerprint,
48
+ });
49
+ if (validation.proofFingerprint !== expectedProof) {
50
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" validation proof no longer matches its query, relations, keys, cardinality, or fanout policy.`);
51
+ }
52
+ if (relationship.evidenceExpiresAt) {
53
+ const expiresAt = Date.parse(relationship.evidenceExpiresAt);
54
+ if (!Number.isFinite(expiresAt)) {
55
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" has an invalid evidence expiry timestamp.`);
56
+ }
57
+ if (expiresAt <= now.getTime()) {
58
+ return denied('relationship_evidence_expired', `Relationship "${relationship.id}" warehouse validation evidence expired at ${relationship.evidenceExpiresAt}.`);
59
+ }
60
+ }
61
+ if (relationship.keys.length === 0 || relationship.keys.some((key) => !key.from.trim() || !key.to.trim())) {
62
+ return denied('relationship_proof_invalid', `Relationship "${relationship.id}" has no valid physical join-key proof.`);
63
+ }
64
+ if (relationship.fanout !== 'safe'
65
+ || !['one_to_one', 'one_to_many', 'many_to_one'].includes(relationship.cardinality)) {
66
+ return denied('unsafe_relationship', `Relationship "${relationship.id}" is not fanout-safe for automatic joins.`);
67
+ }
68
+ if (!relationship.automaticJoinAllowed) {
69
+ return denied('unsafe_relationship', `Relationship "${relationship.id}" is not authorized for automatic joins.`);
70
+ }
71
+ return { executable: true, message: `Relationship "${relationship.id}" is certified for automatic joins.` };
72
+ }
73
+ export function planAnalyticalPath(manifest, request) {
74
+ const modeling = manifest.modeling;
75
+ if (manifest.manifestVersion !== 3 || !modeling)
76
+ return allowed([], []);
77
+ const requested = [...new Set(request.entityIds)];
78
+ const resolvedEntities = requested.map((id) => {
79
+ if (modeling.entities[id])
80
+ return id;
81
+ const ownerDomain = request.domainContext?.activeDomain ?? request.ownerDomain;
82
+ const matches = Object.entries(modeling.entities).filter(([, entity]) => entity.qualifiedId === id
83
+ || (Boolean(ownerDomain) && entity.domain === ownerDomain && entity.localId === id));
84
+ return matches.length === 1 ? matches[0][0] : undefined;
85
+ });
86
+ const unresolved = requested.filter((_id, index) => !resolvedEntities[index]);
87
+ if (unresolved.length > 0) {
88
+ return blocked('unbound_relation', [], [], `Unknown or ambiguous qualified analytical entity id(s): ${unresolved.join(', ')}.`);
89
+ }
90
+ const entities = resolvedEntities.filter((id) => Boolean(id)).sort();
91
+ if (entities.length < 2)
92
+ return allowed(entities, []);
93
+ const relationships = Object.values(modeling.relationships);
94
+ const directlyRelevant = relationships.filter((relationship) => entities.includes(relationship.from) || entities.includes(relationship.to));
95
+ const attribution = directlyRelevant.find((relationship) => relationship.fanout === 'attribution_required'
96
+ && entities.includes(relationship.from) && entities.includes(relationship.to));
97
+ if (attribution)
98
+ return blocked('attribution_policy_required', entities, [attribution], `Relationship "${attribution.id}" requires an attribution policy or allocation policy before DQL can join these entities.`);
99
+ const adjacency = new Map();
100
+ for (const entity of Object.keys(modeling.entities))
101
+ adjacency.set(entity, []);
102
+ for (const relationship of relationships.filter((value) => assessAnalyticalRelationship(value, manifest).executable)) {
103
+ adjacency.get(relationship.from)?.push({ next: relationship.to, relationship });
104
+ adjacency.get(relationship.to)?.push({ next: relationship.from, relationship });
105
+ }
106
+ const selected = new Map();
107
+ const connected = new Set([entities[0]]);
108
+ for (const target of entities.slice(1)) {
109
+ const path = shortestPath([...connected], target, adjacency);
110
+ if (!path) {
111
+ const candidate = relationships.find((relationship) => (connected.has(relationship.from) && relationship.to === target)
112
+ || (connected.has(relationship.to) && relationship.from === target));
113
+ if (candidate) {
114
+ const decision = assessAnalyticalRelationship(candidate, manifest);
115
+ if (!decision.executable && decision.code !== 'unsafe_relationship') {
116
+ return blocked(decision.code ?? 'unsafe_relationship', entities, [candidate], decision.message);
117
+ }
118
+ }
119
+ if (candidate?.crossDomain)
120
+ return blocked('relationship_not_exported', entities, candidate ? [candidate] : [], 'The cross-domain path is missing a certified export/import interface or valid purpose.');
121
+ return blocked('unsafe_relationship', entities, candidate ? [candidate] : [], `No certified, validated, fanout-safe DQL path connects ${entities.join(', ')}.`);
122
+ }
123
+ for (const relationship of path) {
124
+ selected.set(relationship.qualifiedId ?? relationship.id, relationship);
125
+ connected.add(relationship.from);
126
+ connected.add(relationship.to);
127
+ }
128
+ }
129
+ for (const relationship of selected.values()) {
130
+ if (relationship.crossDomain) {
131
+ const authorization = authorizeCrossDomainRelationship(manifest, relationship, request.domainContext, request.purpose);
132
+ if (!authorization.safe)
133
+ return blocked(authorization.code, entities, [relationship], authorization.message);
134
+ }
135
+ if (relationship.aggregation) {
136
+ const missingMeasure = request.measureEntities?.find((entity) => !relationship.aggregation?.measuresFrom.includes(entity));
137
+ const missingDimension = request.dimensionEntities?.find((entity) => !relationship.aggregation?.dimensionsFrom.includes(entity));
138
+ if (missingMeasure || missingDimension) {
139
+ return blocked('unsafe_relationship', entities, [relationship], `Relationship "${relationship.id}" does not authorize the requested measure/dimension direction.`);
140
+ }
141
+ }
142
+ }
143
+ return allowed(entities, [...selected.values()], manifest);
144
+ }
145
+ function denied(code, message) {
146
+ return { executable: false, code, message };
147
+ }
148
+ function authorizeCrossDomainRelationship(manifest, relationship, context, requestedPurpose) {
149
+ const purpose = context?.purpose?.trim();
150
+ if (!context || !purpose) {
151
+ return { safe: false, code: 'purpose_not_allowed', message: `Cross-domain relationship "${relationship.localId}" requires an explicit analytical purpose.` };
152
+ }
153
+ if (requestedPurpose?.trim() && requestedPurpose.trim() !== purpose) {
154
+ return { safe: false, code: 'purpose_not_allowed', message: `Requested purpose "${requestedPurpose}" does not match the resolved domain context purpose "${purpose}".` };
155
+ }
156
+ if (!context.activeDomain || (relationship.ownerDomain && context.activeDomain !== relationship.ownerDomain)) {
157
+ return { safe: false, code: 'relationship_not_exported', message: `Cross-domain relationship "${relationship.localId}" is not owned by the active domain context.` };
158
+ }
159
+ const importRefs = relationship.importRefs ?? [];
160
+ if (importRefs.length === 0) {
161
+ return { safe: false, code: 'relationship_not_exported', message: `Cross-domain relationship "${relationship.localId}" has no explicit import interface.` };
162
+ }
163
+ const exports = manifest.modeling?.interfaces?.exports ?? {};
164
+ const contracts = Object.values(manifest.modeling?.contracts ?? {});
165
+ for (const exportRef of importRefs) {
166
+ const allowed = context.allowedImports.find((value) => value.exportRef === exportRef && value.purpose === purpose);
167
+ const exported = exports[exportRef];
168
+ if (!allowed || !exported || exported.status !== 'certified') {
169
+ return { safe: false, code: 'relationship_not_exported', message: `Cross-domain relationship "${relationship.localId}" is missing a certified allowed import for "${exportRef}" and purpose "${purpose}".` };
170
+ }
171
+ const contract = exported.contract
172
+ ? contracts.find((value) => value.qualifiedId === exported.contract
173
+ || value.id === exported.contract
174
+ || (value.domain === exported.domain && value.localId === exported.contract))
175
+ : undefined;
176
+ const contractEntityCompatible = !exported.entity || Boolean(contract?.entities.includes(exported.entity));
177
+ const contractPurposeCompatible = !contract?.purpose || contract.purpose === purpose;
178
+ if (!contract || contract.status !== 'certified' || !contractEntityCompatible || !contractPurposeCompatible) {
179
+ return { safe: false, code: 'relationship_not_exported', message: `Cross-domain export "${exportRef}" has no compatible certified contract for purpose "${purpose}".` };
180
+ }
181
+ }
182
+ return { safe: true };
183
+ }
184
+ function validDate(value) {
185
+ return value.trim().length > 0 && Number.isFinite(Date.parse(value));
186
+ }
187
+ function validValidationCounts(validation) {
188
+ return [
189
+ validation.fromRows,
190
+ validation.toRows,
191
+ validation.joinedRows,
192
+ validation.fromNullKeys,
193
+ validation.toNullKeys,
194
+ validation.unmatchedFrom,
195
+ validation.maxFromPerKey,
196
+ validation.maxToPerKey,
197
+ ].every((value) => Number.isFinite(value) && value >= 0);
198
+ }
199
+ export function validateAnalyticalSql(sql, manifest, dialect = 'duckdb', purpose, domainContext) {
200
+ if (manifest.manifestVersion !== 3 || !manifest.modeling || !manifest.dbtProvenance)
201
+ return allowed([], []);
202
+ const analysis = analyzeSqlReferences(sql, dialect);
203
+ if (!analysis.parsed)
204
+ return blocked('unplanned_join', [], [], `DQL could not parse generated SQL for analytical policy validation: ${analysis.error ?? 'unknown parse error'}`);
205
+ const relationEntities = new Map();
206
+ for (const relation of analysis.tables) {
207
+ const entity = entityForRelation(relation, manifest);
208
+ const key = entity ? entityRecordKey(manifest, entity) : undefined;
209
+ if (entity && key)
210
+ relationEntities.set(normalizeRelation(relation), { key, entity });
211
+ }
212
+ if (analysis.joins.length > 0) {
213
+ const unbound = analysis.tables.filter((relation) => !entityForRelation(relation, manifest));
214
+ if (unbound.length > 0)
215
+ return blocked('unbound_relation', [...new Set([...relationEntities.values()].map((value) => value.key))], [], `Generated join references unbound relation(s): ${unbound.join(', ')}.`);
216
+ }
217
+ const plan = planAnalyticalPath(manifest, {
218
+ entityIds: [...new Set([...relationEntities.values()].map((value) => value.key))],
219
+ purpose,
220
+ domainContext,
221
+ });
222
+ if (!plan.safe)
223
+ return plan;
224
+ for (const join of analysis.joins) {
225
+ const left = join.leftRelation ? entityForRelation(join.leftRelation, manifest) : undefined;
226
+ const right = join.rightRelation ? entityForRelation(join.rightRelation, manifest) : undefined;
227
+ if (!left || !right)
228
+ return blocked('unbound_relation', plan.entities, [], 'Every generated join endpoint must bind to a DQL analytical entity.');
229
+ const leftKey = entityRecordKey(manifest, left);
230
+ const rightKey = entityRecordKey(manifest, right);
231
+ if (!leftKey || !rightKey)
232
+ return blocked('unbound_relation', plan.entities, [], 'Every generated join endpoint must resolve to a qualified DQL analytical entity.');
233
+ const relationship = plan.relationshipIds
234
+ .map((id) => manifest.modeling?.relationships[id])
235
+ .find((value) => value && ((value.from === leftKey && value.to === rightKey) || (value.from === rightKey && value.to === leftKey)));
236
+ if (!relationship)
237
+ return blocked('unplanned_join', plan.entities, [], `No planned relationship authorizes ${left.id} to ${right.id}.`);
238
+ const matches = relationship.keys.some((key) => {
239
+ const direct = relationship.from === leftKey && normalizeColumn(join.leftColumn) === normalizeColumn(key.from) && normalizeColumn(join.rightColumn) === normalizeColumn(key.to);
240
+ const reverse = relationship.from === rightKey && normalizeColumn(join.leftColumn) === normalizeColumn(key.to) && normalizeColumn(join.rightColumn) === normalizeColumn(key.from);
241
+ return direct || reverse;
242
+ });
243
+ if (!matches)
244
+ return blocked('join_key_mismatch', plan.entities, [relationship], `Join predicate ${join.leftColumn} = ${join.rightColumn} does not match certified keys for "${relationship.id}".`);
245
+ }
246
+ return plan;
247
+ }
248
+ function entityRecordKey(manifest, entity) {
249
+ return Object.entries(manifest.modeling?.entities ?? {}).find(([, candidate]) => candidate === entity || (Boolean(entity.qualifiedId) && candidate.qualifiedId === entity.qualifiedId))?.[0];
250
+ }
251
+ function shortestPath(starts, target, adjacency) {
252
+ const queue = starts.map((entity) => ({ entity, path: [] }));
253
+ const seen = new Set(starts);
254
+ while (queue.length > 0) {
255
+ const current = queue.shift();
256
+ if (current.entity === target)
257
+ return current.path;
258
+ for (const edge of adjacency.get(current.entity) ?? []) {
259
+ if (seen.has(edge.next))
260
+ continue;
261
+ seen.add(edge.next);
262
+ queue.push({ entity: edge.next, path: [...current.path, edge.relationship] });
263
+ }
264
+ }
265
+ return undefined;
266
+ }
267
+ function entityForRelation(relation, manifest) {
268
+ const normalized = normalizeRelation(relation);
269
+ return Object.values(manifest.modeling?.entities ?? {}).find((entity) => {
270
+ const node = manifest.dbtProvenance?.nodes[entity.dbtUniqueId];
271
+ return [node?.name, node?.relation].filter(Boolean).some((value) => {
272
+ const candidate = normalizeRelation(String(value));
273
+ return candidate === normalized || candidate.endsWith(`.${normalized}`) || normalized.endsWith(`.${candidate}`);
274
+ });
275
+ });
276
+ }
277
+ function allowed(entities, relationships, manifest) {
278
+ return {
279
+ safe: true,
280
+ entities,
281
+ relationshipIds: relationships.map((relationship) => relationshipRecordKey(manifest, relationship)),
282
+ edges: relationships.map((relationship) => ({
283
+ relationshipId: relationship.id,
284
+ fromEntity: relationship.from,
285
+ toEntity: relationship.to,
286
+ fromRelation: manifest?.dbtProvenance?.nodes[manifest.modeling?.entities[relationship.from]?.dbtUniqueId ?? '']?.relation,
287
+ toRelation: manifest?.dbtProvenance?.nodes[manifest.modeling?.entities[relationship.to]?.dbtUniqueId ?? '']?.relation,
288
+ keys: relationship.keys,
289
+ cardinality: relationship.cardinality,
290
+ fanout: relationship.fanout,
291
+ importRefs: relationship.importRefs ?? [],
292
+ })),
293
+ };
294
+ }
295
+ function relationshipRecordKey(manifest, relationship) {
296
+ return Object.entries(manifest?.modeling?.relationships ?? {}).find(([, candidate]) => candidate === relationship || (Boolean(relationship.qualifiedId) && candidate.qualifiedId === relationship.qualifiedId))?.[0]
297
+ ?? relationship.qualifiedId
298
+ ?? relationship.id;
299
+ }
300
+ function blocked(code, entities, relationships, message) {
301
+ return { safe: false, code, message, entities, relationshipIds: relationships.map((relationship) => relationship.id), edges: [] };
302
+ }
303
+ function normalizeRelation(value) {
304
+ return value.replace(/["`\[\]]/g, '').trim().toLowerCase();
305
+ }
306
+ function normalizeColumn(value) {
307
+ return value.replace(/["`\[\]]/g, '').split('.').at(-1)?.trim().toLowerCase() ?? value.toLowerCase();
308
+ }
309
+ //# sourceMappingURL=analytical-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytical-policy.js","sourceRoot":"","sources":["../../src/metadata/analytical-policy.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EACL,oBAAoB,EACpB,sCAAsC,GAIvC,MAAM,0BAA0B,CAAC;AAsDlC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAAuC,EACvC,QAAsB,EACtB,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,QAAQ,YAAY,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,YAAY,CAAC,EAAE,gDAAgD,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,2CAA2C,CAAC,CAAC;IAC3H,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC,+BAA+B,EAAE,iBAAiB,YAAY,CAAC,EAAE,yCAAyC,CAAC,CAAC;IAC5H,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,6BAA6B,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnH,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,2CAA2C,CAAC,CAAC;IAC3H,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;IACpC,MAAM,UAAU,GAAG,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC;IAC7F,MAAM,UAAU,GAAG,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC;IACzF,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,gFAAgF,CAAC,CAAC;IAChK,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,iEAAiE,CAAC,CAAC;IACjJ,CAAC;IACD,MAAM,aAAa,GAAG,sCAAsC,CAAC;QAC3D,YAAY;QACZ,UAAU;QACV,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;KAC9C,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,gBAAgB,KAAK,aAAa,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,iGAAiG,CAAC,CAAC;IACjL,CAAC;IACD,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,6CAA6C,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,+BAA+B,EAAE,iBAAiB,YAAY,CAAC,EAAE,8CAA8C,YAAY,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAClK,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1G,OAAO,MAAM,CAAC,4BAA4B,EAAE,iBAAiB,YAAY,CAAC,EAAE,yCAAyC,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM;WAC7B,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACtF,OAAO,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,YAAY,CAAC,EAAE,2CAA2C,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,YAAY,CAAC,EAAE,0CAA0C,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,YAAY,CAAC,EAAE,qCAAqC,EAAE,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAqB,EAAE,OAA8B;IACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,QAAQ,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAC5C,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CACtE,MAAM,CAAC,WAAW,KAAK,EAAE;eACtB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,2DAA2D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClI,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5I,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,KAAK,sBAAsB;WACrG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,IAAI,WAAW;QAAE,OAAO,OAAO,CAAC,6BAA6B,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,iBAAiB,WAAW,CAAC,EAAE,2FAA2F,CAAC,CAAC;IAEpN,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4E,CAAC;IACtG,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/E,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QACrH,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAChF,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CACpD,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,MAAM,CAAC;mBAC7D,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;YACvE,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,4BAA4B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACnE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACpE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,qBAAqB,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClG,CAAC;YACH,CAAC;YACD,IAAI,SAAS,EAAE,WAAW;gBAAE,OAAO,OAAO,CAAC,2BAA2B,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,wFAAwF,CAAC,CAAC;YAC1M,OAAO,OAAO,CAAC,qBAAqB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,0DAA0D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClK,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,IAAI,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YACxE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,gCAAgC,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACvH,IAAI,CAAC,aAAa,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAK,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,OAAQ,CAAC,CAAC;QACjH,CAAC;QACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3H,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACjI,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,OAAO,CAAC,qBAAqB,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,iBAAiB,YAAY,CAAC,EAAE,iEAAiE,CAAC,CAAC;YACrK,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,MAAM,CAAC,IAA0B,EAAE,OAAe;IACzD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,gCAAgC,CACvC,QAAqB,EACrB,YAAuC,EACvC,OAA0C,EAC1C,gBAAoC;IAEpC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,8BAA8B,YAAY,CAAC,OAAO,4CAA4C,EAAE,CAAC;IAC/J,CAAC;IACD,IAAI,gBAAgB,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,sBAAsB,gBAAgB,yDAAyD,OAAO,IAAI,EAAE,CAAC;IAC3K,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7G,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,8BAA8B,YAAY,CAAC,OAAO,8CAA8C,EAAE,CAAC;IACvK,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,8BAA8B,YAAY,CAAC,OAAO,qCAAqC,EAAE,CAAC;IAC9J,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACpE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACnH,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,8BAA8B,YAAY,CAAC,OAAO,gDAAgD,SAAS,kBAAkB,OAAO,IAAI,EAAE,CAAC;QAC/M,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAChC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,QAAQ;mBAC9D,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ;mBAC9B,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,wBAAwB,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3G,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC;QACrF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,wBAAwB,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC5G,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,wBAAwB,SAAS,uDAAuD,OAAO,IAAI,EAAE,CAAC;QAC1K,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAgE;IAC7F,OAAO;QACL,UAAU,CAAC,QAAQ;QACnB,UAAU,CAAC,MAAM;QACjB,UAAU,CAAC,UAAU;QACrB,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,UAAU;QACrB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,WAAW;KACvB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,QAAqB,EACrB,OAAO,GAAG,QAAQ,EAClB,OAAgB,EAChB,aAAqC;IAErC,IAAI,QAAQ,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,uEAAuE,QAAQ,CAAC,KAAK,IAAI,qBAAqB,EAAE,CAAC,CAAC;IACjL,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAwD,CAAC;IACzF,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,IAAI,MAAM,IAAI,GAAG;YAAE,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClN,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE;QACxC,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,qEAAqE,CAAC,CAAC;QAClJ,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,kFAAkF,CAAC,CAAC;QACrK,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe;aACtC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QACtI,IAAI,CAAC,YAAY;YAAE,OAAO,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,sCAAsC,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACxI,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChL,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClL,OAAO,MAAM,IAAI,OAAO,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,kBAAkB,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,WAAW,uCAAuC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;IACtM,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,QAAqB,EAAE,MAA2B;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/L,CAAC;AAED,SAAS,YAAY,CACnB,MAAgB,EAChB,MAAc,EACd,SAAwF;IAExF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAiC,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,QAAqB;IAChE,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,OAAO,SAAS,KAAK,UAAU,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,QAAkB,EAAE,aAA0C,EAAE,QAAsB;IACrG,OAAO;QACL,IAAI,EAAE,IAAI;QACV,QAAQ;QACR,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnG,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC1C,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,UAAU,EAAE,YAAY,CAAC,IAAI;YAC7B,QAAQ,EAAE,YAAY,CAAC,EAAE;YACzB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,QAAQ;YACzH,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,QAAQ;YACrH,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,EAAE;SAC1C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAiC,EAAE,YAAuC;IACvG,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;WAC/M,YAAY,CAAC,WAAW;WACxB,YAAY,CAAC,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,OAAO,CAAC,IAA0B,EAAE,QAAkB,EAAE,aAA0C,EAAE,OAAe;IAC1H,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACpI,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AACvG,CAAC"}
@@ -30,7 +30,7 @@ export function evaluateCertifiedBlockFit(input) {
30
30
  const missingOutputs = uniqueStrings(requiredOutputs.filter((output) => !outputRequirementCovered(output, block)));
31
31
  const measureMatch = requestedMeasures.length === 0
32
32
  || requestedMeasures.some((measure) => blockMeasures.has(measure) || block.textTokens.has(measure) || outputHasEntity(blockOutputs, measure));
33
- const unsupportedFilters = unsupportedRequestedFilters(requested, block);
33
+ const unsupportedFilters = unsupportedRequestedFilters(requested, block, input.question);
34
34
  const grainMismatch = requested.grain && block.grain && canonicalToken(requested.grain) !== block.grain
35
35
  && !blockDimensions.has(canonicalToken(requested.grain))
36
36
  ? `certified block grain=${block.grain} does not cover requested grain=${canonicalToken(requested.grain)}`
@@ -135,6 +135,8 @@ function blockShape(block) {
135
135
  ...stringArray(record.allowedFilters),
136
136
  ...filterBindingNames(payload.filterBindings),
137
137
  ...filterBindingNames(record.filterBindings),
138
+ ...parameterNames(payload.parameters),
139
+ ...parameterNames(record.parameters),
138
140
  ].map(canonicalToken).filter(Boolean));
139
141
  const grain = canonicalToken(stringValue(payload.grain) ?? stringValue(record.grain) ?? explicitDimensions[0] ?? '');
140
142
  const relevance = outputs.length + dimensions.length + measures.length;
@@ -150,6 +152,13 @@ function blockShape(block) {
150
152
  inferredContract: stringArray(payload.declaredOutputs).length === 0 && stringArray(record.declaredOutputs).length === 0,
151
153
  };
152
154
  }
155
+ function parameterNames(value) {
156
+ if (!Array.isArray(value))
157
+ return [];
158
+ return value.flatMap((item) => item && typeof item === 'object' && typeof item.name === 'string'
159
+ ? [item.name]
160
+ : []);
161
+ }
153
162
  function inferredTextDimensions(text) {
154
163
  const normalized = text.replace(/[_-]+/g, ' ').toLowerCase();
155
164
  const inferred = [];
@@ -164,16 +173,40 @@ function inferredTextDimensions(text) {
164
173
  }
165
174
  return uniqueStrings(inferred);
166
175
  }
167
- function unsupportedRequestedFilters(requested, block) {
176
+ function unsupportedRequestedFilters(requested, block, question) {
168
177
  const requestedFilters = uniqueStrings([
169
178
  ...requested.filters,
170
179
  ...requested.followUpReferences.flatMap((ref) => ref.resolvedValues ?? []),
171
- ].map(canonicalToken).filter(Boolean));
172
- if (requestedFilters.length === 0 || block.filters.length === 0)
180
+ ].map(canonicalToken).filter((filter) => Boolean(filter) && !isTemporalFilter(filter)));
181
+ if (requestedFilters.length === 0)
173
182
  return [];
183
+ // A filtered question cannot be answered exactly by an unparameterized block.
184
+ // Returning [] here used to erase the user's restriction and let a broad
185
+ // certified ranking (for example all-customer lifetime spend) answer a
186
+ // category-specific question. A block may still be useful as context, but it
187
+ // cannot terminate the certified lane unless it exposes the requested value
188
+ // through a filter or dimension contract.
189
+ if (block.filters.length === 0) {
190
+ // A certified breakdown can be safely narrowed on one of its own output
191
+ // dimensions when the question explicitly names that binding ("by segment
192
+ // for Enterprise"). The adaptation lane applies the actual restriction.
193
+ const explicitlyFilterable = block.dimensions.some((dimension) => {
194
+ const words = dimension.replace(/_/g, '[ _-]+');
195
+ return new RegExp(`\\b(?:by|per)\\s+${words}\\b`, 'i').test(question)
196
+ || new RegExp(`\\b${words}\\s*(?:=|:|is|equals)`, 'i').test(question);
197
+ });
198
+ if (explicitlyFilterable)
199
+ return [];
200
+ return requestedFilters.filter((filter) => !block.dimensions.includes(filter));
201
+ }
174
202
  const blockFilters = new Set(block.filters);
175
203
  return requestedFilters.filter((filter) => !blockFilters.has(filter) && !block.dimensions.includes(filter));
176
204
  }
205
+ function isTemporalFilter(filter) {
206
+ return /^(?:day|week|month|quarter|year|season)$/.test(filter)
207
+ || /^(?:last|this|next|previous|prior|current)_(?:day|week|month|quarter|year|season)$/.test(filter)
208
+ || /^\d{4}$/.test(filter);
209
+ }
177
210
  function topNFitAction(requested, block) {
178
211
  if (!requested.topN)
179
212
  return 'none';
@@ -1 +1 @@
1
- {"version":3,"file":"block-fit.js","sourceRoot":"","sources":["../../src/metadata/block-fit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-fit.js","sourceRoot":"","sources":["../../src/metadata/block-fit.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,12 @@
7
7
  * context pack before answering.
8
8
  */
9
9
  import { type DQLManifest, type ManifestConflictDetail, type SemanticLayer, type DqlArtifactReference, type ResolvedTrustLabel } from '@duckcodeailabs/dql-core';
10
+ import type { DomainContextEnvelope } from '../domain-context.js';
10
11
  import { type AnalysisQuestionPlan, type CertifiedBlockApplicability } from './analysis-planner.js';
11
12
  import { type RuntimeValueIndexEntry } from '../grounding/value-index.js';
12
13
  import { type GrainGateResult } from './grain-gate.js';
13
14
  import { type CertifiedBlockFit } from './block-fit.js';
15
+ import { type Skill } from '../skills/loader.js';
14
16
  /** An approved scoped hint folded into a context pack (after certified routing). */
15
17
  export interface AppliedContextHint {
16
18
  hintId: string;
@@ -86,6 +88,8 @@ export interface MetadataDomainShard {
86
88
  export interface EnsureMetadataCatalogOptions {
87
89
  manifest?: DQLManifest;
88
90
  semanticLayer?: SemanticLayer | null;
91
+ /** Parsed skills from the same project read used to prepare the KG. */
92
+ skills?: Skill[];
89
93
  force?: boolean;
90
94
  }
91
95
  export interface EnsureMetadataCatalogResult {
@@ -120,6 +124,14 @@ export interface BuildLocalContextPackRequest {
120
124
  reusePolicy?: 'off' | 'seed' | 'reuse_on_refinement';
121
125
  /** How the conversation layer classified this question vs the ongoing topic. */
122
126
  conversationTopicRelation?: 'continuation' | 'refinement' | 'shift' | 'return';
127
+ /** Server-resolved domain scope applied before retrieval and graph expansion. */
128
+ domainContext?: DomainContextEnvelope;
129
+ /**
130
+ * Fingerprint returned by `ensureAgentProjectReady` for this same immutable
131
+ * project snapshot. When it still matches the catalog, retrieval skips the
132
+ * expensive snapshot reconstruction and performs zero dbt artifact reads.
133
+ */
134
+ preparedMetadataFingerprint?: string;
123
135
  }
124
136
  export interface CertifiedFitConfirmationRequest {
125
137
  question: string;
@@ -278,6 +290,33 @@ export interface PlanAgentAnswerResult {
278
290
  warnings: string[];
279
291
  freshness: LocalContextPack['freshness'];
280
292
  }
293
+ /** Compact skill payload selected for one context-pack snapshot. */
294
+ export interface LocalContextSkill {
295
+ objectKey: string;
296
+ id: string;
297
+ qualifiedId?: string;
298
+ domain?: string;
299
+ domains: string[];
300
+ modelAreaRefs: string[];
301
+ kind?: Skill['kind'];
302
+ status?: Skill['status'];
303
+ owner?: string;
304
+ description?: string;
305
+ triggers: string[];
306
+ exclusions: string[];
307
+ preferredMetrics: string[];
308
+ preferredBlocks: string[];
309
+ preferredDimensions: string[];
310
+ requiredFilters: string[];
311
+ clarifyWhen: string[];
312
+ vocabulary: Record<string, string>;
313
+ /** Bounded prompt-safe guidance; the full source remains fingerprinted in the catalog. */
314
+ guidance: string;
315
+ guidanceTruncated: boolean;
316
+ sourceRefs: string[];
317
+ provenance: string;
318
+ sourcePath?: string;
319
+ }
281
320
  export interface LocalContextPack {
282
321
  id: string;
283
322
  question: string;
@@ -289,6 +328,12 @@ export interface LocalContextPack {
289
328
  /** Canonical shared trust vocabulary; additive companion to legacy `trustLabel`. */
290
329
  trustLabelInfo?: ResolvedTrustLabel;
291
330
  objects: MetadataObject[];
331
+ /**
332
+ * Bounded, in-scope guidance selected from the immutable catalog snapshot.
333
+ * This is separate from generic retrieved objects so hosts can render the
334
+ * exact skill provenance without re-reading mutable files mid-run.
335
+ */
336
+ skills: LocalContextSkill[];
292
337
  edges: MetadataEdge[];
293
338
  queryRuns: QueryRunSummary[];
294
339
  citations: Array<{
@@ -330,6 +375,9 @@ export interface LocalContextPack {
330
375
  }>;
331
376
  retrievalDiagnostics: {
332
377
  strategy: 'sqlite_fts' | 'reused_pack_refinement' | 'expanded_context' | 'full_catalog';
378
+ /** Qualified focused Model Area selected explicitly or inferred inside the active domain. */
379
+ focusedModelAreaId?: string;
380
+ modelAreaSource?: 'explicit' | 'inferred';
333
381
  /** How many times this pack lineage has been widened by expand_context. */
334
382
  regroundAttempts?: number;
335
383
  selectedObjects: number;
@@ -444,7 +492,7 @@ export declare function recordQueryRun(projectRoot: string, run: Omit<QueryRunSu
444
492
  export declare function recordRuntimeSchemaSnapshot(projectRoot: string, snapshot: RuntimeSchemaSnapshot): RuntimeSchemaSnapshot;
445
493
  /** The most-recent stored live-warehouse schema snapshot for a project, or null. */
446
494
  export declare function latestRuntimeSchemaSnapshotForProject(projectRoot: string): RuntimeSchemaSnapshot | null;
447
- export declare function buildMetadataSnapshot(projectRoot: string, manifest: DQLManifest, semanticLayer?: SemanticLayer): MetadataSnapshot;
495
+ export declare function buildMetadataSnapshot(projectRoot: string, manifest: DQLManifest, semanticLayer?: SemanticLayer, skills?: Skill[]): MetadataSnapshot;
448
496
  export declare class MetadataCatalog {
449
497
  private readonly dbPath;
450
498
  private readonly db;