@duckcodeailabs/dql-agent 1.9.5 → 1.10.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 (94) hide show
  1. package/dist/agent-run-engine.d.ts +13 -0
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +65 -2
  4. package/dist/agent-run-engine.js.map +1 -1
  5. package/dist/analytical-compatibility.d.ts +61 -0
  6. package/dist/analytical-compatibility.d.ts.map +1 -0
  7. package/dist/analytical-compatibility.js +515 -0
  8. package/dist/analytical-compatibility.js.map +1 -0
  9. package/dist/analytical-execution-graph.d.ts +174 -0
  10. package/dist/analytical-execution-graph.d.ts.map +1 -0
  11. package/dist/analytical-execution-graph.js +599 -0
  12. package/dist/analytical-execution-graph.js.map +1 -0
  13. package/dist/analytical-failure-repair.d.ts +91 -0
  14. package/dist/analytical-failure-repair.d.ts.map +1 -0
  15. package/dist/analytical-failure-repair.js +325 -0
  16. package/dist/analytical-failure-repair.js.map +1 -0
  17. package/dist/analytical-frame.d.ts +19 -0
  18. package/dist/analytical-frame.d.ts.map +1 -0
  19. package/dist/analytical-frame.js +299 -0
  20. package/dist/analytical-frame.js.map +1 -0
  21. package/dist/analytical-period-resolution.d.ts +53 -0
  22. package/dist/analytical-period-resolution.d.ts.map +1 -0
  23. package/dist/analytical-period-resolution.js +218 -0
  24. package/dist/analytical-period-resolution.js.map +1 -0
  25. package/dist/analytical-readiness.d.ts +17 -0
  26. package/dist/analytical-readiness.d.ts.map +1 -0
  27. package/dist/analytical-readiness.js +95 -0
  28. package/dist/analytical-readiness.js.map +1 -0
  29. package/dist/analytical-result-facts.d.ts +79 -0
  30. package/dist/analytical-result-facts.d.ts.map +1 -0
  31. package/dist/analytical-result-facts.js +301 -0
  32. package/dist/analytical-result-facts.js.map +1 -0
  33. package/dist/answer-loop.d.ts +82 -2
  34. package/dist/answer-loop.d.ts.map +1 -1
  35. package/dist/answer-loop.js +1129 -38
  36. package/dist/answer-loop.js.map +1 -1
  37. package/dist/embeddings/provider.d.ts +1 -1
  38. package/dist/embeddings/provider.d.ts.map +1 -1
  39. package/dist/embeddings/provider.js.map +1 -1
  40. package/dist/governed-relational-compiler.d.ts +189 -0
  41. package/dist/governed-relational-compiler.d.ts.map +1 -0
  42. package/dist/governed-relational-compiler.js +458 -0
  43. package/dist/governed-relational-compiler.js.map +1 -0
  44. package/dist/index.d.ts +25 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +15 -4
  47. package/dist/index.js.map +1 -1
  48. package/dist/intent-controller.d.ts +5 -0
  49. package/dist/intent-controller.d.ts.map +1 -1
  50. package/dist/intent-controller.js.map +1 -1
  51. package/dist/kg/build.d.ts +2 -2
  52. package/dist/kg/build.d.ts.map +1 -1
  53. package/dist/kg/build.js +329 -9
  54. package/dist/kg/build.js.map +1 -1
  55. package/dist/meaning-resolution.d.ts +17 -0
  56. package/dist/meaning-resolution.d.ts.map +1 -1
  57. package/dist/meaning-resolution.js +83 -4
  58. package/dist/meaning-resolution.js.map +1 -1
  59. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  60. package/dist/metadata/analysis-planner.js +37 -7
  61. package/dist/metadata/analysis-planner.js.map +1 -1
  62. package/dist/metadata/catalog.d.ts +86 -3
  63. package/dist/metadata/catalog.d.ts.map +1 -1
  64. package/dist/metadata/catalog.js +607 -36
  65. package/dist/metadata/catalog.js.map +1 -1
  66. package/dist/metadata/meaning-evidence.d.ts +18 -2
  67. package/dist/metadata/meaning-evidence.d.ts.map +1 -1
  68. package/dist/metadata/meaning-evidence.js +182 -7
  69. package/dist/metadata/meaning-evidence.js.map +1 -1
  70. package/dist/plan-execution-adapter.d.ts +131 -0
  71. package/dist/plan-execution-adapter.d.ts.map +1 -0
  72. package/dist/plan-execution-adapter.js +447 -0
  73. package/dist/plan-execution-adapter.js.map +1 -0
  74. package/dist/research-governance.d.ts +56 -0
  75. package/dist/research-governance.d.ts.map +1 -0
  76. package/dist/research-governance.js +68 -0
  77. package/dist/research-governance.js.map +1 -0
  78. package/dist/research-loop.d.ts +14 -0
  79. package/dist/research-loop.d.ts.map +1 -1
  80. package/dist/research-loop.js +77 -23
  81. package/dist/research-loop.js.map +1 -1
  82. package/dist/resolved-analytical-plan.d.ts +123 -0
  83. package/dist/resolved-analytical-plan.d.ts.map +1 -0
  84. package/dist/resolved-analytical-plan.js +400 -0
  85. package/dist/resolved-analytical-plan.js.map +1 -0
  86. package/dist/router.d.ts +3 -0
  87. package/dist/router.d.ts.map +1 -1
  88. package/dist/router.js +195 -25
  89. package/dist/router.js.map +1 -1
  90. package/dist/skills/loader.d.ts +17 -0
  91. package/dist/skills/loader.d.ts.map +1 -1
  92. package/dist/skills/loader.js +62 -4
  93. package/dist/skills/loader.js.map +1 -1
  94. package/package.json +4 -4
@@ -0,0 +1,458 @@
1
+ /**
2
+ * Constrained relational compiler. It accepts only qualified registry IDs and
3
+ * certified relationship proof; the model never writes relations, joins,
4
+ * columns, aliases, parameters, or SQL text.
5
+ *
6
+ * Acceptance: AGT-015, API-006.
7
+ */
8
+ import { createHash } from 'node:crypto';
9
+ import { getDialect } from '@duckcodeailabs/dql-core';
10
+ export function buildGovernedRelationalRegistry(input) {
11
+ const provenance = Object.values(input.manifest?.dbtProvenance?.nodes ?? {});
12
+ const entities = Object.values(input.manifest?.modeling?.entities ?? {});
13
+ const relations = input.schemaContext.map((table) => {
14
+ const dbt = provenance.find((node) => node.relation === table.relation || node.name === table.name || node.name === table.relation);
15
+ const entity = dbt ? entities.find((candidate) => candidate.dbtUniqueId === dbt.uniqueId) : undefined;
16
+ const qualifiedId = dbt?.uniqueId ?? `runtime:relation:${table.relation}`;
17
+ return {
18
+ qualifiedId,
19
+ sqlName: table.relation,
20
+ entityId: entity?.qualifiedId ?? entity?.id,
21
+ identities: unique([qualifiedId, table.relation, table.name, dbt?.name, dbt ? `dbt:model:${dbt.name}` : undefined]),
22
+ columns: table.columns.map((column) => ({
23
+ qualifiedId: `dbt:column:${dbt?.name ?? table.name ?? table.relation}.${column.name}`,
24
+ name: column.name,
25
+ type: column.type,
26
+ description: column.description,
27
+ isTime: /(?:date|time|timestamp)/i.test(column.type ?? '') || /(?:^|_)(date|time|timestamp|month|week|year)(?:_|$)/i.test(column.name),
28
+ identities: unique([
29
+ `dbt:column:${dbt?.name ?? table.name ?? table.relation}.${column.name}`,
30
+ `runtime:column:${table.relation}.${column.name}`,
31
+ `warehouse:column:${table.relation}.${column.name}`,
32
+ `${qualifiedId}::column::${column.name}`,
33
+ `${table.relation}.${column.name}`,
34
+ ]),
35
+ })),
36
+ };
37
+ });
38
+ const byEntity = new Map(relations.flatMap((relation) => relation.entityId ? [[relation.entityId, relation]] : []));
39
+ const relationships = Object.values(input.manifest?.modeling?.relationships ?? {}).flatMap((relationship) => {
40
+ const from = byEntity.get(relationship.from);
41
+ const to = byEntity.get(relationship.to);
42
+ if (!from || !to)
43
+ return [];
44
+ const keys = relationship.keys.flatMap((key) => {
45
+ const fromColumn = findColumnByName(from, key.from);
46
+ const toColumn = findColumnByName(to, key.to);
47
+ return fromColumn && toColumn ? [{ fromColumnId: fromColumn.qualifiedId, toColumnId: toColumn.qualifiedId }] : [];
48
+ });
49
+ if (keys.length !== relationship.keys.length)
50
+ return [];
51
+ return [{
52
+ qualifiedId: relationship.qualifiedId,
53
+ fromRelationId: from.qualifiedId,
54
+ toRelationId: to.qualifiedId,
55
+ keys,
56
+ joinType: relationship.joinTypes?.includes('left') ? 'left' : 'inner',
57
+ cardinality: relationship.cardinality,
58
+ fanout: relationship.fanout,
59
+ status: relationship.status,
60
+ automaticJoinAllowed: relationship.automaticJoinAllowed,
61
+ staleCertification: relationship.staleCertification,
62
+ identities: unique([relationship.qualifiedId, relationship.id, relationship.localId]),
63
+ }];
64
+ });
65
+ const payload = { snapshotId: input.snapshotId, relations, relationships };
66
+ return { ...payload, fingerprint: hash(stableStringify(payload)) };
67
+ }
68
+ export function compileGovernedRelationalPlan(input) {
69
+ const { plan, registry } = input;
70
+ if (plan.capability !== 'governed_relational') {
71
+ return blocked('CAPABILITY_MISMATCH', `Plan capability ${plan.capability} is not governed relational.`);
72
+ }
73
+ if (plan.snapshotId !== registry.snapshotId) {
74
+ return blocked('SNAPSHOT_MISMATCH', `Plan snapshot ${plan.snapshotId} does not match relational registry ${registry.snapshotId}.`);
75
+ }
76
+ const measures = plan.query.measures.map((binding) => bindColumn(binding, registry));
77
+ const dimensions = plan.query.dimensions.map((binding) => bindColumn(binding, registry));
78
+ const filterColumns = plan.query.filters.map((filter) => bindColumn(filter.binding, registry));
79
+ const failed = [...measures, ...dimensions, ...filterColumns].find((binding) => binding.status !== 'resolved');
80
+ if (failed) {
81
+ return blocked(failed.status === 'ambiguous' ? 'MEMBER_AMBIGUOUS' : 'MEMBER_UNRESOLVED', failed.reason, failed.candidateIds);
82
+ }
83
+ const boundMeasures = measures;
84
+ const boundDimensions = dimensions;
85
+ const boundFilters = filterColumns;
86
+ const relationIds = unique([
87
+ ...boundMeasures.map((item) => item.relation.qualifiedId),
88
+ ...boundDimensions.map((item) => item.relation.qualifiedId),
89
+ ...boundFilters.map((item) => item.relation.qualifiedId),
90
+ ]);
91
+ if (relationIds.length === 0)
92
+ return blocked('MEMBER_UNRESOLVED', 'The plan does not bind any executable relational columns.');
93
+ const base = boundMeasures[0]?.relation ?? boundDimensions[0]?.relation ?? boundFilters[0].relation;
94
+ const joins = [];
95
+ const joined = new Set([base.qualifiedId]);
96
+ while (joined.size < relationIds.length) {
97
+ const relationship = registry.relationships.find((candidate) => plan.relationshipPathIds.some((identity) => candidate.identities.includes(identity))
98
+ && ((joined.has(candidate.fromRelationId) && relationIds.includes(candidate.toRelationId) && !joined.has(candidate.toRelationId))
99
+ || (joined.has(candidate.toRelationId) && relationIds.includes(candidate.fromRelationId) && !joined.has(candidate.fromRelationId))));
100
+ if (!relationship) {
101
+ return blocked('RELATIONSHIP_PROOF_REQUIRED', `No selected relationship proof connects ${[...joined].join(', ')} to ${relationIds.filter((id) => !joined.has(id)).join(', ')}.`);
102
+ }
103
+ if (relationship.status !== 'certified' || relationship.staleCertification || !relationship.automaticJoinAllowed) {
104
+ return blocked('RELATIONSHIP_NOT_EXECUTABLE', `Relationship ${relationship.qualifiedId} is not fresh, certified, and automatic-join safe.`);
105
+ }
106
+ const next = joined.has(relationship.fromRelationId) ? relationship.toRelationId : relationship.fromRelationId;
107
+ joins.push({ relationshipId: relationship.qualifiedId, relationId: next, joinType: relationship.joinType });
108
+ joined.add(next);
109
+ }
110
+ const astMeasures = [];
111
+ for (let index = 0; index < boundMeasures.length; index += 1) {
112
+ const aggregation = normalizeAggregate(plan.query.measures[index].aggregation);
113
+ if (!aggregation) {
114
+ return blocked('AGGREGATION_REQUIRED', `Measure ${plan.query.measures[index].requested} has no allowlisted aggregation.`);
115
+ }
116
+ astMeasures.push({
117
+ columnId: boundMeasures[index].column.qualifiedId,
118
+ aggregate: aggregation,
119
+ alias: safeAlias(plan.query.measures[index].requested, `measure_${index + 1}`),
120
+ });
121
+ }
122
+ const astDimensions = boundDimensions.map((binding, index) => ({
123
+ columnId: binding.column.qualifiedId,
124
+ alias: safeAlias(plan.query.dimensions[index].requested, `dimension_${index + 1}`),
125
+ ...(binding.column.isTime && plan.query.timeGrain ? { timeGrain: plan.query.timeGrain } : {}),
126
+ }));
127
+ const parameters = {};
128
+ const filters = plan.query.filters.map((filter, index) => {
129
+ const parameterName = `p${index + 1}`;
130
+ parameters[parameterName] = filter.value;
131
+ return { columnId: boundFilters[index].column.qualifiedId, operator: 'eq', parameterName };
132
+ });
133
+ if (plan.query.timeRange && !plan.query.timeBounds) {
134
+ return blocked('UNSUPPORTED_TIME_RANGE', `Time range "${plan.query.timeRange}" has no typed bounds.`);
135
+ }
136
+ if (plan.query.timeBounds) {
137
+ const frameTimeId = plan.analyticalFrame?.timeContext?.timeDimensionId;
138
+ const exactFrameTime = frameTimeId ? bindQualifiedColumn(frameTimeId, registry) : undefined;
139
+ const time = boundDimensions.find((binding) => binding.column.isTime)
140
+ ?? (exactFrameTime?.status === 'resolved' && exactFrameTime.column.isTime ? exactFrameTime : undefined);
141
+ if (!time)
142
+ return blocked('MEMBER_UNRESOLVED', 'Typed time bounds require a qualified time dimension.');
143
+ parameters.time_start = plan.query.timeBounds.startInclusive;
144
+ parameters.time_end = plan.query.timeBounds.endExclusive;
145
+ filters.push({ columnId: time.column.qualifiedId, operator: 'gte', parameterName: 'time_start' }, { columnId: time.column.qualifiedId, operator: 'lt', parameterName: 'time_end' });
146
+ }
147
+ const orderAlias = astMeasures[0]?.alias ?? astDimensions[0]?.alias;
148
+ const ast = {
149
+ kind: 'select',
150
+ fromRelationId: base.qualifiedId,
151
+ joins,
152
+ measures: astMeasures,
153
+ dimensions: astDimensions,
154
+ filters,
155
+ orderBy: orderAlias && plan.query.order ? [{ alias: orderAlias, direction: plan.query.order }] : [],
156
+ limit: Math.min(Math.max(1, plan.query.limit ?? 100), input.maxRows ?? 10_000),
157
+ };
158
+ const sql = renderGovernedRelationalAst(ast, registry, input.driver);
159
+ const outputColumns = [...ast.dimensions.map((item) => item.alias), ...ast.measures.map((item) => item.alias)];
160
+ const receipt = {
161
+ schemaVersion: 1,
162
+ planId: plan.planId,
163
+ planFingerprint: plan.fingerprint,
164
+ snapshotId: plan.snapshotId,
165
+ registryFingerprint: registry.fingerprint,
166
+ astFingerprint: hash(stableStringify(ast)),
167
+ sqlFingerprint: hash(sql),
168
+ relationIds,
169
+ columnIds: unique([...ast.dimensions.map((item) => item.columnId), ...ast.measures.map((item) => item.columnId), ...ast.filters.map((item) => item.columnId)]),
170
+ relationshipIds: ast.joins.map((item) => item.relationshipId),
171
+ parameters: Object.entries(parameters).map(([name, value]) => ({ name, valueFingerprint: hash(stableStringify(value)) })),
172
+ outputColumns,
173
+ };
174
+ return { status: 'compiled', ast, sql, parameterValues: parameters, receipt };
175
+ }
176
+ /**
177
+ * Compile every governed-relational source node independently. Alignment,
178
+ * arithmetic, and ranking remain typed graph operations and therefore happen
179
+ * only after each period has been safely aggregated at the declared grain.
180
+ *
181
+ * Acceptance: AGT-015, AGT-018, AGT-019.
182
+ */
183
+ export function compileGovernedRelationalExecutionGraph(input) {
184
+ const { graph, plan, registry } = input;
185
+ const graphBlocked = (code, reason, nodeId, candidateIds) => ({
186
+ status: 'blocked',
187
+ code,
188
+ reason,
189
+ ...(nodeId ? { nodeId } : {}),
190
+ ...(candidateIds?.length ? { candidateIds } : {}),
191
+ });
192
+ if (graph.planId !== plan.planId ||
193
+ graph.planFingerprint !== plan.fingerprint ||
194
+ graph.snapshotId !== plan.snapshotId) {
195
+ return graphBlocked('EXECUTION_GRAPH_MISMATCH', 'The executable graph does not bind the supplied immutable plan.');
196
+ }
197
+ if (graph.route !== 'governed_sql') {
198
+ return graphBlocked('EXECUTION_GRAPH_ROUTE_MISMATCH', `Graph route ${graph.route} is not governed SQL.`);
199
+ }
200
+ if (graph.snapshotId !== registry.snapshotId) {
201
+ return graphBlocked('SNAPSHOT_MISMATCH', `Graph snapshot ${graph.snapshotId} does not match relational registry ${registry.snapshotId}.`);
202
+ }
203
+ const measureBindings = plan.query.measures.filter((binding) => binding.status === 'resolved' && binding.qualifiedId);
204
+ if (measureBindings.length !== 1) {
205
+ return graphBlocked('MEASURE_BINDING_REQUIRED', 'The governed graph requires exactly one resolved physical measure binding.');
206
+ }
207
+ const measureBinding = measureBindings[0];
208
+ const statements = [];
209
+ const sources = graph.nodes.filter((node) => node.kind === 'source_invocation');
210
+ for (const source of sources) {
211
+ if (source.strategy !== 'period_aggregate' || !source.outputAliases.metric) {
212
+ return graphBlocked('EXECUTION_GRAPH_ROUTE_MISMATCH', 'Governed SQL requires period-aggregate source nodes.', source.id);
213
+ }
214
+ if (source.memberFilters.some((filter) => filter.canonicalValues.length !== 1)) {
215
+ return graphBlocked('MULTI_VALUE_FILTER_UNSUPPORTED', 'The current governed relational operator requires exactly one canonical value per filter.', source.id);
216
+ }
217
+ const dimensions = source.outputAliases.dimensions.map((dimension) => ({
218
+ requested: dimension.outputId,
219
+ qualifiedId: dimension.dimensionId,
220
+ status: 'resolved',
221
+ candidateIds: [dimension.dimensionId],
222
+ }));
223
+ const filters = source.memberFilters.map((filter) => ({
224
+ field: filter.dimensionId,
225
+ value: String(filter.canonicalValues[0]),
226
+ binding: {
227
+ requested: filter.dimensionId,
228
+ qualifiedId: filter.dimensionId,
229
+ status: 'resolved',
230
+ candidateIds: [filter.dimensionId],
231
+ },
232
+ }));
233
+ const periodPlan = {
234
+ ...plan,
235
+ capability: 'governed_relational',
236
+ query: {
237
+ measures: [{
238
+ ...measureBinding,
239
+ requested: source.outputAliases.metric.outputId,
240
+ }],
241
+ dimensions,
242
+ filters,
243
+ ...(source.period
244
+ ? {
245
+ timeBounds: {
246
+ expression: source.period.id,
247
+ startInclusive: source.period.startInclusive,
248
+ endExclusive: source.period.endExclusive,
249
+ timeZone: 'UTC',
250
+ },
251
+ }
252
+ : {}),
253
+ limit: Math.min(Math.max(1, input.maxRows ?? 10_000), 100_000),
254
+ },
255
+ outputContract: {
256
+ measures: [source.outputAliases.metric.outputId],
257
+ dimensions: dimensions.map((dimension) => dimension.requested),
258
+ fields: [
259
+ ...source.outputAliases.dimensions.map((dimension) => dimension.outputId),
260
+ source.outputAliases.metric.outputId,
261
+ ],
262
+ ...(source.period ? { periodIds: [source.period.id] } : {}),
263
+ },
264
+ };
265
+ const compiled = compileGovernedRelationalPlan({
266
+ plan: periodPlan,
267
+ registry,
268
+ driver: input.driver,
269
+ maxRows: input.maxRows,
270
+ });
271
+ if (compiled.status === 'blocked') {
272
+ return graphBlocked(compiled.code, compiled.reason, source.id, compiled.candidateIds);
273
+ }
274
+ statements.push({
275
+ nodeId: source.id,
276
+ sql: compiled.sql,
277
+ parameterValues: compiled.parameterValues,
278
+ ast: compiled.ast,
279
+ receipt: compiled.receipt,
280
+ outputAliases: structuredClone(source.outputAliases),
281
+ });
282
+ }
283
+ const statementFingerprints = statements.map((statement) => ({
284
+ nodeId: statement.nodeId,
285
+ astFingerprint: statement.receipt.astFingerprint,
286
+ sqlFingerprint: statement.receipt.sqlFingerprint,
287
+ }));
288
+ const receiptPayload = {
289
+ schemaVersion: 1,
290
+ graphId: graph.graphId,
291
+ graphFingerprint: graph.fingerprint,
292
+ planId: plan.planId,
293
+ planFingerprint: plan.fingerprint,
294
+ snapshotId: plan.snapshotId,
295
+ registryFingerprint: registry.fingerprint,
296
+ statementFingerprints,
297
+ };
298
+ return {
299
+ status: 'compiled',
300
+ graph,
301
+ statements,
302
+ receipt: {
303
+ ...receiptPayload,
304
+ fingerprint: hash(stableStringify(receiptPayload)),
305
+ },
306
+ };
307
+ }
308
+ export function renderGovernedRelationalAst(ast, registry, driver) {
309
+ const dialect = getDialect(driver);
310
+ const relations = new Map(registry.relations.map((relation) => [relation.qualifiedId, relation]));
311
+ const aliases = new Map([[ast.fromRelationId, 'r0']]);
312
+ ast.joins.forEach((join, index) => aliases.set(join.relationId, `r${index + 1}`));
313
+ const locateColumn = (columnId) => {
314
+ for (const relation of registry.relations) {
315
+ const column = relation.columns.find((candidate) => candidate.qualifiedId === columnId);
316
+ if (column)
317
+ return { relation, column };
318
+ }
319
+ throw new Error(`Unknown governed column ${columnId}`);
320
+ };
321
+ const expression = (columnId) => {
322
+ const { relation, column } = locateColumn(columnId);
323
+ return `${aliases.get(relation.qualifiedId)}.${dialect.quoteIdentifier(column.name)}`;
324
+ };
325
+ const selections = [
326
+ ...ast.dimensions.map((item) => {
327
+ const raw = expression(item.columnId);
328
+ return `${item.timeGrain ? dialect.dateTrunc(item.timeGrain, raw) : raw} AS ${dialect.quoteIdentifier(item.alias)}`;
329
+ }),
330
+ ...ast.measures.map((item) => {
331
+ const raw = expression(item.columnId);
332
+ const aggregate = item.aggregate === 'count_distinct' ? `COUNT(DISTINCT ${raw})` : `${item.aggregate.toUpperCase()}(${raw})`;
333
+ return `${aggregate} AS ${dialect.quoteIdentifier(item.alias)}`;
334
+ }),
335
+ ];
336
+ let sql = `SELECT\n ${selections.join(',\n ')}\nFROM ${quoteRelation(relations.get(ast.fromRelationId).sqlName, dialect.quoteIdentifier.bind(dialect))} AS r0`;
337
+ const joined = new Set([ast.fromRelationId]);
338
+ for (const join of ast.joins) {
339
+ const relationship = registry.relationships.find((candidate) => candidate.qualifiedId === join.relationshipId);
340
+ const relation = relations.get(join.relationId);
341
+ const conditions = relationship.keys.map((key) => `${expression(key.fromColumnId)} = ${expression(key.toColumnId)}`);
342
+ sql += `\n${join.joinType.toUpperCase()} JOIN ${quoteRelation(relation.sqlName, dialect.quoteIdentifier.bind(dialect))} AS ${aliases.get(relation.qualifiedId)} ON ${conditions.join(' AND ')}`;
343
+ joined.add(relation.qualifiedId);
344
+ }
345
+ if (ast.filters.length) {
346
+ const operators = { eq: '=', gte: '>=', lt: '<' };
347
+ sql += `\nWHERE ${ast.filters.map((filter) => `${expression(filter.columnId)} ${operators[filter.operator]} :${filter.parameterName}`).join(' AND ')}`;
348
+ }
349
+ if (ast.measures.length && ast.dimensions.length) {
350
+ sql += `\nGROUP BY ${ast.dimensions.map((item) => item.timeGrain ? dialect.dateTrunc(item.timeGrain, expression(item.columnId)) : expression(item.columnId)).join(', ')}`;
351
+ }
352
+ if (ast.orderBy.length)
353
+ sql += `\nORDER BY ${ast.orderBy.map((item) => `${dialect.quoteIdentifier(item.alias)} ${item.direction.toUpperCase()}`).join(', ')}`;
354
+ if (dialect.limitAtEnd)
355
+ sql += `\n${dialect.limitClause(ast.limit)}`;
356
+ return sql;
357
+ }
358
+ export function finalizeGovernedCompilationReceipt(receipt, result) {
359
+ const actual = result.columns.map((column) => typeof column === 'string' ? column : String(column));
360
+ const missing = receipt.outputColumns.filter((column) => !actual.includes(column));
361
+ if (missing.length)
362
+ throw new Error(`Result contract is missing: ${missing.join(', ')}.`);
363
+ return {
364
+ ...receipt,
365
+ result: {
366
+ rowCount: result.rowCount,
367
+ resultFingerprint: hash(stableStringify({ columns: actual, rows: result.rows, rowCount: result.rowCount })),
368
+ },
369
+ };
370
+ }
371
+ export function renderGovernedRelationalDqlArtifact(compiled) {
372
+ const name = `resolved_plan_${compiled.receipt.planId.replace(/[^a-z0-9]+/gi, '_').replace(/^_+|_+$/g, '').slice(-40)}`;
373
+ const declarations = Object.entries(compiled.parameterValues).map(([parameter, value]) => {
374
+ const type = typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : 'string';
375
+ return ` ${parameter}: ${type}`;
376
+ });
377
+ const parameterizedSql = compiled.sql.replace(/:([a-zA-Z][a-zA-Z0-9_]*)\b/g, (_match, parameter) => `\${${parameter}}`);
378
+ const source = [
379
+ `block "${name}" {`,
380
+ ' type = "custom"',
381
+ ' status = "draft"',
382
+ ...(declarations.length ? [' params {', ...declarations, ' }'] : []),
383
+ ' query = """',
384
+ ...parameterizedSql.split('\n').map((line) => ` ${line}`),
385
+ ' """',
386
+ '}',
387
+ ].join('\n');
388
+ return {
389
+ kind: 'sql_block',
390
+ name,
391
+ source,
392
+ compiledSql: compiled.sql,
393
+ parameterValues: compiled.parameterValues,
394
+ persistence: 'transient',
395
+ trustState: 'governed',
396
+ limit: compiled.ast.limit,
397
+ };
398
+ }
399
+ function bindColumn(binding, registry) {
400
+ if (binding.status !== 'resolved' || !binding.qualifiedId) {
401
+ return { status: binding.status === 'ambiguous' ? 'ambiguous' : 'missing', reason: `${binding.requested} is ${binding.status}.`, candidateIds: binding.candidateIds };
402
+ }
403
+ const matches = registry.relations.flatMap((relation) => relation.columns
404
+ .filter((column) => column.qualifiedId === binding.qualifiedId || column.identities.includes(binding.qualifiedId))
405
+ .map((column) => ({ relation, column })));
406
+ if (matches.length !== 1) {
407
+ return { status: matches.length > 1 ? 'ambiguous' : 'missing', reason: `${binding.qualifiedId} resolves to ${matches.length} columns.`, candidateIds: matches.map((item) => item.column.qualifiedId) };
408
+ }
409
+ return { status: 'resolved', ...matches[0] };
410
+ }
411
+ function bindQualifiedColumn(qualifiedId, registry) {
412
+ return bindColumn({
413
+ requested: qualifiedId,
414
+ qualifiedId,
415
+ status: 'resolved',
416
+ candidateIds: [qualifiedId],
417
+ }, registry);
418
+ }
419
+ function normalizeAggregate(value) {
420
+ const normalized = value?.toLowerCase().replace(/\s+/g, '_');
421
+ if (normalized === 'sum' || normalized === 'avg' || normalized === 'min' || normalized === 'max' || normalized === 'count' || normalized === 'count_distinct')
422
+ return normalized;
423
+ if (normalized === 'average')
424
+ return 'avg';
425
+ if (normalized === 'distinct_count')
426
+ return 'count_distinct';
427
+ return undefined;
428
+ }
429
+ function findColumnByName(relation, name) {
430
+ return relation.columns.find((column) => column.name === name);
431
+ }
432
+ function blocked(code, reason, candidateIds) {
433
+ return { status: 'blocked', code, reason, ...(candidateIds?.length ? { candidateIds } : {}) };
434
+ }
435
+ function safeAlias(value, fallback) {
436
+ return value.toLowerCase().replace(/[^a-z0-9_]+/g, '_').replace(/^_+|_+$/g, '') || fallback;
437
+ }
438
+ function quoteRelation(value, quote) {
439
+ return value.split('.').map(quote).join('.');
440
+ }
441
+ function unique(values) {
442
+ return [...new Set(values.filter((value) => Boolean(value)))]
443
+ .sort();
444
+ }
445
+ function hash(value) {
446
+ return createHash('sha256').update(value).digest('hex');
447
+ }
448
+ function stableStringify(value) {
449
+ if (value === undefined || value === null)
450
+ return 'null';
451
+ if (typeof value !== 'object')
452
+ return JSON.stringify(value);
453
+ if (Array.isArray(value))
454
+ return `[${value.map(stableStringify).join(',')}]`;
455
+ const record = value;
456
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(',')}}`;
457
+ }
458
+ //# sourceMappingURL=governed-relational-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governed-relational-compiler.js","sourceRoot":"","sources":["../src/governed-relational-compiler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,7 +19,11 @@ export { seedDomainSkills, buildDomainReferenceSkills } from "./skills/domain-sk
19
19
  export { draftDomainSkillBootstrap, buildDomainSkillBootstrapPrompt, mergeDomainSkillBootstrapEnrichment, } from "./skills/bootstrap.js";
20
20
  export type { DomainBootstrapCandidate, DomainSkillBootstrapAiDraft, DomainSkillBootstrapEnrichment, } from "./skills/bootstrap.js";
21
21
  export type { SeedDefaultSkillsOptions, SeedDefaultSkillsResult, } from "./skills/defaults.js";
22
- export { answer, parseProposal, compactSemanticRuntimeFailure } from "./answer-loop.js";
22
+ export { answer, parseProposal, compactSemanticRuntimeFailure, materializeKnowledgeLensSkills } from "./answer-loop.js";
23
+ export { classifyAnalyticalFailure, createAnalyticalFailure, deriveAnalyticalRepair, redactAnalyticalDiagnostic, } from './analytical-failure-repair.js';
24
+ export { resolveAnalyticalPeriods } from './analytical-period-resolution.js';
25
+ export type { AnalyticalFreshnessObservationV1, AnalyticalFreshnessRequestV1, ResolveAnalyticalPeriodsResult, } from './analytical-period-resolution.js';
26
+ export type { AnalyticalFailedBindingInput, AnalyticalFailedRunV1, AnalyticalRepairAction, AnalyticalRepairDerivationResult, AnalyticalRepairDerivationV1, AnalyticalRepairRequestV1, CreateAnalyticalFailureInput, } from './analytical-failure-repair.js';
23
27
  export { detectResultSetOperation, computeResultSetOperation } from "./conversation/result-ops.js";
24
28
  export type { ResultSetOperation, PriorResultData, ResultSetComputation } from "./conversation/result-ops.js";
25
29
  export type { SemanticQueryCompiler } from "./answer-loop.js";
@@ -27,11 +31,11 @@ export { resolveDomainContextEnvelope, domainContextSearchDomains } from './doma
27
31
  export type { DomainContextEnvelope, KnowledgeLens, ResolveDomainContextInput } from './domain-context.js';
28
32
  export { stampTrustLabel, trustLabelIdForAnswer, type TrustStampableAnswer, } from "./trust/stamp.js";
29
33
  export { decideAgentAction, classifyConversationalTurn, looksLikeComposeApp, looksLikeFollowUp, type AgentAction, type ConversationalKind, type IntentDecision, type IntentDecisionInput, type IntentSignals, } from "./intent-controller.js";
30
- export { AgentRunEngine, AGENT_RUN_ESCALATION_MAP, createDeterministicAgentRunPlanner, defaultSuccessCriteria, FileAgentRunStore, InMemoryAgentRunStore, defaultAgentRunStorePath, selectRoute, routeReasoningEffort, } from "./agent-run-engine.js";
34
+ export { AgentRunEngine, AGENT_RUN_ESCALATION_MAP, createDeterministicAgentRunPlanner, defaultSuccessCriteria, FileAgentRunStore, InMemoryAgentRunStore, defaultAgentRunStorePath, selectRoute, routeReasoningEffort, compareResolvedPlanShadow, } from "./agent-run-engine.js";
31
35
  export type { FileAgentRunStoreOptions } from "./agent-run-engine.js";
32
36
  export { readMetadataCatalogHealth, readAgentRunStoreHealth, type MetadataCatalogHealth, type AgentRunStoreHealth, } from "./metadata/health.js";
33
37
  export { SqliteAgentRunStore, defaultAgentRunSqlitePath, resolveAgentRunRetention, type SqliteAgentRunStoreOptions, } from "./agent-run-store.js";
34
- export type { AgentRouteExecutionContext, AgentRouteExecutor, AgentRouteExecutorResult, AgentRouter, AgentRun, AgentRunAnswerKind, AgentRunArtifact, AgentRunArtifactKind, AgentRunAudience, AgentRunEngineOptions, AgentRunEvaluation, AgentRunEvaluationSeverity, AgentRunEvent, AgentRunExecutors, AgentRunGate, AgentRunGateContext, AgentRunGates, AgentRunNextAction, AgentRunPlan, AgentRunPlanInput, AgentRunPlanner, AgentRunPlanSource, AgentRunPlannedStep, AgentRunReplanDecision, AgentRunReplanInput, AgentRunRepairAction, AgentRunRequest, AgentRunRequestedMode, AgentRunRoute, AgentRunSelectedObject, AgentRunStatus, AgentRunStep, AgentRunStepStatus, AgentRunStopReason, AgentRunStore, AgentRunTrustState, } from "./agent-run-engine.js";
38
+ export type { AgentRouteExecutionContext, AgentRouteExecutor, AgentRouteExecutorResult, AgentRouter, AgentRun, AgentRunAnswerKind, AgentRunArtifact, AgentRunArtifactKind, AgentRunAudience, AgentRunEngineOptions, AgentRunEvaluation, AgentRunEvaluationSeverity, AgentRunEvent, AgentRunExecutors, AgentRunGate, AgentRunGateContext, AgentRunGates, AgentRunNextAction, AgentRunPlan, AgentRunPlanInput, AgentRunPlanner, AgentRunPlanSource, AgentRunPlannedStep, AgentRunReplanDecision, AgentRunReplanInput, AgentRunRepairAction, AgentRunRequest, AgentRunRequestedMode, AgentRunRoute, AgentRunSelectedObject, AgentRunStatus, AgentRunStep, AgentRunStepStatus, AgentRunStopReason, AgentRunStore, AgentRunTrustState, ResolvedPlanShadowComparison, } from "./agent-run-engine.js";
35
39
  export { defaultAgentRunGates } from "./agent-run-gates.js";
36
40
  export { narrateResult, type NarrateInput, type NarrateItem, type NarrateResult, type NarrateResultData, type NarrateCompletion, type NarrateOptions, } from "./narrate.js";
37
41
  export { createLlmAgentRunPlanner, type AgentRunPlannerCompletion, type LlmAgentRunPlannerOptions, } from "./agent-run-planner.js";
@@ -43,6 +47,22 @@ export { planApp, type AppPlan as AgentAppPlan, type AppPlanSection, type AppPla
43
47
  export { planResearch, type ResearchPlan, type ResearchStep, type ResearchFollowUp, } from "./research-loop.js";
44
48
  export { loadSemanticMetrics } from "./propose/build-from-prompt.js";
45
49
  export type { AgentAnalysisPlan, AgentAnswer, AgentCitation, AgentDqlArtifactReference, AgentEvidence, AgentEvidenceAsset, AgentEvidenceContextItem, AgentEvidenceLineageNode, AgentEvidenceLineageRole, AgentEvidenceOutcome, AgentEvidenceRouteStatus, AgentEvidenceRouteStep, AgentEvidenceToolCall, AgentFollowUpContext, AgentMemberBinding, AgentJoinPath, AgentIntent, AgentPriorResultReference, AgentResultPayload, CertifiedBlockInvocationInput, AgentSchemaColumn, AgentSchemaTable, AnalysisDepth, AnswerKind, AnswerLoopInput, AiRoute, AiRouteTier, } from "./answer-loop.js";
50
+ export { buildResolvedAnalyticalPlan, deriveResolvedAnalyticalPlan, resolvePlanTimeRange } from './resolved-analytical-plan.js';
51
+ export type { BuildResolvedAnalyticalPlanInput, ResolvedAnalyticalPlan, ResolvedAnalyticalPlanDelta, ResolvedPlanCapability, ResolvedPlanCompatibilityProof, ResolvedPlanMemberBinding, } from './resolved-analytical-plan.js';
52
+ export { adaptAnalyticalFreshnessRequest, adaptAnalyticalSemanticGraph, adaptResolvedAnalyticalPlan, buildPlanExecutionRegistry, } from './plan-execution-adapter.js';
53
+ export type { AnalyticalFreshnessAdapterBinding } from './plan-execution-adapter.js';
54
+ export { normalizeEvidenceAnalyticalCapability, solveAnalyticalCompatibility, type AnalyticalCapabilityCandidate, type AnalyticalCapabilityNormalizationResult, type AnalyticalCompatibilityCode, type AnalyticalCompatibilityFailure, type AnalyticalCompatibilityResult, type AnalyticalFitClass, } from './analytical-compatibility.js';
55
+ export { buildDeterministicAnalyticalFrame } from './analytical-frame.js';
56
+ export { buildAnalyticalCapabilityReadiness, type AnalyticalCapabilityReadiness, type AnalyticalReadinessQuestion, } from './analytical-readiness.js';
57
+ export { buildAnalyticalExecutionGraph, executeAnalyticalExecutionGraph, } from './analytical-execution-graph.js';
58
+ export type { AnalyticalExecutionGraphV1, AnalyticalExecutionGraphNode, AnalyticalExecutionGraphBlockedCode, AnalyticalExecutionReceiptV1, AnalyticalExecutionRoute, AnalyticalGraphAlignNode, AnalyticalGraphCalculateNode, AnalyticalGraphExecutionFailureCode, AnalyticalGraphExecutionResult, AnalyticalGraphMemberFilter, AnalyticalGraphRankNode, AnalyticalGraphSourceInvocationNode, AnalyticalGraphValidateNode, AnalyticalSourceResult, BuildAnalyticalExecutionGraphResult, } from './analytical-execution-graph.js';
59
+ export { buildAnalyticalResultFacts, renderDeterministicAnalyticalNarrative, validateAnalyticalNarrativeClaims, } from './analytical-result-facts.js';
60
+ export type { AnalyticalNarrativeClaimV1, AnalyticalNarrativeV1, AnalyticalNarrativeValidationResult, AnalyticalResultFactKind, AnalyticalResultFactSetV1, AnalyticalResultFactV1, BuildAnalyticalResultFactsResult, } from './analytical-result-facts.js';
61
+ export { buildGovernedRelationalRegistry, compileGovernedRelationalExecutionGraph, compileGovernedRelationalPlan, finalizeGovernedCompilationReceipt, renderGovernedRelationalAst, renderGovernedRelationalDqlArtifact, } from './governed-relational-compiler.js';
62
+ export { buildTypedResearchBranches, gateResearchConclusion, ResearchBudgetController, ResearchBudgetExceededError, } from './research-governance.js';
63
+ export type { ResearchBudgetCounter, ResearchConclusionGate, ResearchObservation, TypedResearchBranch, TypedResearchBranchInput, } from './research-governance.js';
64
+ export type { GovernedCompilationReceipt, GovernedAnalyticalGraphCompilationReceipt, GovernedAnalyticalGraphCompileResult, GovernedRelation, GovernedRelationColumn, GovernedRelationship, GovernedRelationalAst, GovernedRelationalCompileResult, GovernedRelationalRegistry, RelationalAggregate, } from './governed-relational-compiler.js';
65
+ export type { AdaptResolvedAnalyticalPlanInput, PlanExecutionBinding, PlanExecutionBlockedCode, PlanExecutionRegistryEntry, SemanticGraphExecutionBinding, SemanticGraphInvocation, } from './plan-execution-adapter.js';
46
66
  export { matchSemanticMetric } from "./metadata/metric-match.js";
47
67
  export { aggregationIntegrityIssuesForSql, buildGrainLedger, detectFanoutRisks, fanoutWarningsForSql, type AggregationIntegrityIssue, type AggregationIntegrityIssueKind, type FanoutRisk, type GrainLedger, type RelationGrain, } from "./metadata/grain-ledger.js";
48
68
  export { runAgenticToolLoop, parseTextToolCall, type AgenticToolLoopOptions, } from "./agentic/tool-loop.js";
@@ -67,7 +87,7 @@ export type { ConversationTopicFrame, ConversationWorkingState, TopicRelation, }
67
87
  export { updateRollingSummary } from "./conversation/rolling-summary.js";
68
88
  export { advanceThreadState, buildConversationSnapshot, recallRelevantTurns, } from "./conversation/snapshot.js";
69
89
  export type { ConversationSnapshot, ConversationSnapshotTurn, } from "./conversation/snapshot.js";
70
- export { MetadataCatalog, buildLocalContextPack, buildMetadataSnapshot, defaultMetadataPath, metadataSnapshotPath, activeMetadataSnapshotPath, currentMetadataFingerprint, ensureMetadataCatalogFresh, metadataObjectToAllowedSqlRelation, openMetadataCatalog, openActiveKnowledgeSnapshot, readIndexedDomainKnowledge, readIndexedKnowledge360, planAgentAnswer, recordRuntimeSchemaSnapshot, latestRuntimeSchemaSnapshotForProject, recordQueryRun, toAgentRetrievalEvidence, upsertMetadataSnapshot, } from "./metadata/catalog.js";
90
+ export { MetadataCatalog, buildLocalContextPack, buildMetadataSnapshot, defaultMetadataPath, metadataSnapshotPath, activeMetadataSnapshotPath, acquireActiveKnowledgeSnapshot, activeKnowledgeSnapshotLeaseCount, currentMetadataFingerprint, ensureMetadataCatalogFresh, metadataObjectToAllowedSqlRelation, openMetadataCatalog, openActiveKnowledgeSnapshot, readIndexedDomainKnowledge, readIndexedKnowledge360, retrieveMetadataSnapshotCandidates, planAgentAnswer, recordRuntimeSchemaSnapshot, latestRuntimeSchemaSnapshotForProject, recordQueryRun, applyContextPackCompatibility, toAgentRetrievalEvidence, upsertMetadataSnapshot, } from "./metadata/catalog.js";
71
91
  export { buildBlockBusinessFingerprint, buildBlockSqlFingerprints, fingerprintSql, normalizeBusinessFingerprintToken, normalizeSqlForFingerprint, } from "./metadata/block-fingerprints.js";
72
92
  export type { BlockBusinessFingerprint, BlockSqlFingerprints, BuildBlockBusinessFingerprintInput, } from "./metadata/block-fingerprints.js";
73
93
  export { buildAnalysisQuestionPlan, certifiedApplicabilityForObject, scoreAllowedSqlRelationWithAnalysisPlan, scoreMetadataObjectWithAnalysisPlan, sortAllowedSqlContextForAnalysisPlan, } from "./metadata/analysis-planner.js";
@@ -93,7 +113,7 @@ export type { ProposeOptions, ProposeSummary, ProposalResult, ProposalInference,
93
113
  export { reflectAndReviseBlock } from "./propose/index.js";
94
114
  export { mineJoinPatterns, type JoinPatternCandidate } from "./propose/join-mining.js";
95
115
  export { analyzeFailureClusters, improvementProposalsFromKg, type FailureSignal, type ImprovementProposal, } from "./propose/failure-analysis.js";
96
- export type { BuildLocalContextPackRequest, CertifiedFitConfirmation, CertifiedFitConfirmationRequest, CertifiedFitConfirmationResult, EnsureMetadataCatalogOptions, EnsureMetadataCatalogResult, DqlContextPack, LocalContextPack, MetadataCandidateConflict, MetadataDiagnostic, MetadataEdge, MetadataAgentIntent, MetadataAllowedSqlContext, MetadataAnswerRoute, MetadataEvidenceRole, MetadataFollowUpContext, MetadataMissingContext, MetadataObject, MetadataRouteDecision, GrainGateRouteInfo, MetadataDomainShard, MetadataSourceFingerprint, MetadataSnapshot, MetadataTrustLabel, PlanAgentAnswerResult, QueryRunSummary, RuntimeSchemaSnapshot, RuntimeSchemaTable, RuntimeSchemaColumn, } from "./metadata/catalog.js";
116
+ export type { BuildLocalContextPackRequest, CertifiedFitConfirmation, CertifiedFitConfirmationRequest, CertifiedFitConfirmationResult, EnsureMetadataCatalogOptions, EnsureMetadataCatalogResult, ActiveKnowledgeSnapshotLease, DqlContextPack, LocalContextPack, MetadataCandidateConflict, MetadataDiagnostic, MetadataEdge, MetadataAgentIntent, MetadataAllowedSqlContext, MetadataAnswerRoute, MetadataEvidenceRole, MetadataFollowUpContext, MetadataMissingContext, MetadataObject, MetadataIdentityResolution, MetadataRetrievalLaneCandidate, MetadataRetrievalLaneName, MetadataRetrievalLaneResult, MetadataSnapshotRetrievalResult, MetadataVectorSearchResult, MetadataRouteDecision, GrainGateRouteInfo, MetadataDomainShard, MetadataSourceFingerprint, MetadataSnapshot, MetadataTrustLabel, PlanAgentAnswerResult, QueryRunSummary, RuntimeSchemaSnapshot, RuntimeSchemaTable, RuntimeSchemaColumn, } from "./metadata/catalog.js";
97
117
  export type { SqlContextValidationCode, SqlContextValidationOffending, SqlContextValidationOptions, SqlContextValidationResult, } from "./metadata/sql-context-validation.js";
98
118
  export type { GeneratedDraftBlock, GeneratedDraftRecord, } from "./metadata/drafts.js";
99
119
  export { HintStore, } from "./hints/store.js";