@duckcodeailabs/dql-agent 1.14.1 → 1.14.3-rc.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.
- package/dist/agent-run-engine.d.ts +71 -2
- package/dist/agent-run-engine.d.ts.map +1 -1
- package/dist/agent-run-engine.js +1048 -31
- package/dist/agent-run-engine.js.map +1 -1
- package/dist/agent-run-gates.d.ts.map +1 -1
- package/dist/agent-run-gates.js +12 -0
- package/dist/agent-run-gates.js.map +1 -1
- package/dist/agent-run-planner.d.ts +6 -0
- package/dist/agent-run-planner.d.ts.map +1 -1
- package/dist/agent-run-planner.js +2 -0
- package/dist/agent-run-planner.js.map +1 -1
- package/dist/agent-run-store.d.ts.map +1 -1
- package/dist/agent-run-store.js +48 -3
- package/dist/agent-run-store.js.map +1 -1
- package/dist/agentic/analyst-loop.d.ts +7 -1
- package/dist/agentic/analyst-loop.d.ts.map +1 -1
- package/dist/agentic/analyst-loop.js +211 -28
- package/dist/agentic/analyst-loop.js.map +1 -1
- package/dist/agentic/assumptions.d.ts +1 -1
- package/dist/agentic/assumptions.d.ts.map +1 -1
- package/dist/agentic/assumptions.js.map +1 -1
- package/dist/agentic/research/synthesis.d.ts +4 -0
- package/dist/agentic/research/synthesis.d.ts.map +1 -1
- package/dist/agentic/research/synthesis.js +23 -8
- package/dist/agentic/research/synthesis.js.map +1 -1
- package/dist/agentic/research-agent.d.ts.map +1 -1
- package/dist/agentic/research-agent.js +13 -3
- package/dist/agentic/research-agent.js.map +1 -1
- package/dist/agentic/sql-authorization.d.ts +8 -0
- package/dist/agentic/sql-authorization.d.ts.map +1 -1
- package/dist/agentic/sql-authorization.js +233 -2
- package/dist/agentic/sql-authorization.js.map +1 -1
- package/dist/analytical-compatibility.d.ts.map +1 -1
- package/dist/analytical-compatibility.js +8 -1
- package/dist/analytical-compatibility.js.map +1 -1
- package/dist/analytical-failure-repair.d.ts.map +1 -1
- package/dist/analytical-failure-repair.js +6 -2
- package/dist/analytical-failure-repair.js.map +1 -1
- package/dist/analytical-frame.d.ts +23 -1
- package/dist/analytical-frame.d.ts.map +1 -1
- package/dist/analytical-frame.js +332 -17
- package/dist/analytical-frame.js.map +1 -1
- package/dist/analytical-orchestration.d.ts +613 -0
- package/dist/analytical-orchestration.d.ts.map +1 -1
- package/dist/analytical-orchestration.js +1007 -0
- package/dist/analytical-orchestration.js.map +1 -1
- package/dist/answer-loop.d.ts +110 -6
- package/dist/answer-loop.d.ts.map +1 -1
- package/dist/answer-loop.js +1180 -125
- package/dist/answer-loop.js.map +1 -1
- package/dist/answer-shape.d.ts +32 -1
- package/dist/answer-shape.d.ts.map +1 -1
- package/dist/answer-shape.js +49 -3
- package/dist/answer-shape.js.map +1 -1
- package/dist/ask-observability/index.d.ts +11 -0
- package/dist/ask-observability/index.d.ts.map +1 -0
- package/dist/ask-observability/index.js +7 -0
- package/dist/ask-observability/index.js.map +1 -0
- package/dist/ask-observability/instrumentation.d.ts +35 -0
- package/dist/ask-observability/instrumentation.d.ts.map +1 -0
- package/dist/ask-observability/instrumentation.js +472 -0
- package/dist/ask-observability/instrumentation.js.map +1 -0
- package/dist/ask-observability/observer.d.ts +62 -0
- package/dist/ask-observability/observer.d.ts.map +1 -0
- package/dist/ask-observability/observer.js +537 -0
- package/dist/ask-observability/observer.js.map +1 -0
- package/dist/ask-observability/portable.d.ts +98 -0
- package/dist/ask-observability/portable.d.ts.map +1 -0
- package/dist/ask-observability/portable.js +527 -0
- package/dist/ask-observability/portable.js.map +1 -0
- package/dist/ask-observability/store.d.ts +130 -0
- package/dist/ask-observability/store.d.ts.map +1 -0
- package/dist/ask-observability/store.js +1114 -0
- package/dist/ask-observability/store.js.map +1 -0
- package/dist/ask-observability/types.d.ts +357 -0
- package/dist/ask-observability/types.d.ts.map +1 -0
- package/dist/ask-observability/types.js +2 -0
- package/dist/ask-observability/types.js.map +1 -0
- package/dist/ask-observability/utils.d.ts +21 -0
- package/dist/ask-observability/utils.d.ts.map +1 -0
- package/dist/ask-observability/utils.js +102 -0
- package/dist/ask-observability/utils.js.map +1 -0
- package/dist/conversation/snapshot.d.ts +20 -0
- package/dist/conversation/snapshot.d.ts.map +1 -1
- package/dist/conversation/snapshot.js +30 -1
- package/dist/conversation/snapshot.js.map +1 -1
- package/dist/fixtures/ask-ai-office-shaped.d.ts +153 -0
- package/dist/fixtures/ask-ai-office-shaped.d.ts.map +1 -0
- package/dist/fixtures/ask-ai-office-shaped.js +94 -0
- package/dist/fixtures/ask-ai-office-shaped.js.map +1 -0
- package/dist/generated-analytical-proposal.d.ts +37 -1
- package/dist/generated-analytical-proposal.d.ts.map +1 -1
- package/dist/generated-analytical-proposal.js +211 -3
- package/dist/generated-analytical-proposal.js.map +1 -1
- package/dist/governed-relational-compiler.d.ts +15 -0
- package/dist/governed-relational-compiler.d.ts.map +1 -1
- package/dist/governed-relational-compiler.js +99 -1
- package/dist/governed-relational-compiler.js.map +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/intent-controller.d.ts +38 -0
- package/dist/intent-controller.d.ts.map +1 -1
- package/dist/intent-controller.js +31 -1
- package/dist/intent-controller.js.map +1 -1
- package/dist/meaning-resolution.d.ts +141 -2
- package/dist/meaning-resolution.d.ts.map +1 -1
- package/dist/meaning-resolution.js +444 -30
- package/dist/meaning-resolution.js.map +1 -1
- package/dist/metadata/analysis-planner.d.ts.map +1 -1
- package/dist/metadata/analysis-planner.js +144 -7
- package/dist/metadata/analysis-planner.js.map +1 -1
- package/dist/metadata/block-fit.d.ts +18 -0
- package/dist/metadata/block-fit.d.ts.map +1 -1
- package/dist/metadata/block-fit.js +250 -38
- package/dist/metadata/block-fit.js.map +1 -1
- package/dist/metadata/catalog.d.ts.map +1 -1
- package/dist/metadata/catalog.js +58 -12
- package/dist/metadata/catalog.js.map +1 -1
- package/dist/metadata/meaning-evidence.d.ts +19 -3
- package/dist/metadata/meaning-evidence.d.ts.map +1 -1
- package/dist/metadata/meaning-evidence.js +518 -54
- package/dist/metadata/meaning-evidence.js.map +1 -1
- package/dist/plan-execution-adapter.d.ts +9 -1
- package/dist/plan-execution-adapter.d.ts.map +1 -1
- package/dist/plan-execution-adapter.js +93 -13
- package/dist/plan-execution-adapter.js.map +1 -1
- package/dist/provider-egress.d.ts +24 -10
- package/dist/provider-egress.d.ts.map +1 -1
- package/dist/provider-egress.js +22 -17
- package/dist/provider-egress.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +10 -9
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/dispatch.d.ts +27 -1
- package/dist/providers/dispatch.d.ts.map +1 -1
- package/dist/providers/dispatch.js +63 -1
- package/dist/providers/dispatch.js.map +1 -1
- package/dist/providers/gemini.js +10 -10
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.js +15 -15
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.js +22 -22
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +52 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/relationship-proof.d.ts +81 -0
- package/dist/relationship-proof.d.ts.map +1 -1
- package/dist/relationship-proof.js +228 -4
- package/dist/relationship-proof.js.map +1 -1
- package/dist/research-loop.d.ts.map +1 -1
- package/dist/research-loop.js +23 -1
- package/dist/research-loop.js.map +1 -1
- package/dist/resolved-analytical-plan.d.ts +22 -1
- package/dist/resolved-analytical-plan.d.ts.map +1 -1
- package/dist/resolved-analytical-plan.js +773 -49
- package/dist/resolved-analytical-plan.js.map +1 -1
- package/dist/router.d.ts +14 -4
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +3668 -425
- package/dist/router.js.map +1 -1
- package/dist/semantic-bridge/compose.d.ts.map +1 -1
- package/dist/semantic-bridge/compose.js +23 -4
- package/dist/semantic-bridge/compose.js.map +1 -1
- package/dist/semantic-bridge/member-select.d.ts.map +1 -1
- package/dist/semantic-bridge/member-select.js +39 -21
- package/dist/semantic-bridge/member-select.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,86 @@
|
|
|
1
1
|
import { buildGeneratedAnalyticalSqlSignature, buildSqlOutputExpressionSignature, } from '@duckcodeailabs/dql-core';
|
|
2
2
|
export const GENERATED_ANALYTICAL_TUPLE_DRIFT_MESSAGE = 'Generated query changed the resolved analytical plan and was not executed';
|
|
3
|
+
/**
|
|
4
|
+
* Return only aliases bound by the immutable resolved plan. These are not
|
|
5
|
+
* phrase matches and are never derived from model-provided `outputs` text.
|
|
6
|
+
*/
|
|
7
|
+
export function frozenRequiredOutputAliasesForPlan(plan) {
|
|
8
|
+
return [...new Set((plan.outputContract?.requiredOutputs ?? [])
|
|
9
|
+
.map((binding) => binding.outputName ?? outputLeaf(binding.qualifiedId))
|
|
10
|
+
.filter((value) => Boolean(value && parserIdentifier(value)))
|
|
11
|
+
.map(normalizeOutputAlias))];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Return the source binding each new exploratory authorization must prove.
|
|
15
|
+
* A binding that lacks a physical dbt/runtime column is intentionally absent:
|
|
16
|
+
* `validateFrozenRequiredOutputProjection` treats that as a terminal proof
|
|
17
|
+
* gap rather than guessing a source from an output alias.
|
|
18
|
+
*/
|
|
19
|
+
export function frozenRequiredOutputBindingProofsForPlan(plan) {
|
|
20
|
+
return (plan.outputContract?.requiredOutputs ?? []).flatMap((binding) => {
|
|
21
|
+
const outputName = frozenOutputAlias(binding);
|
|
22
|
+
const source = frozenPhysicalOutputSource(binding.qualifiedId);
|
|
23
|
+
return outputName && source && binding.qualifiedId
|
|
24
|
+
? [{
|
|
25
|
+
version: 1,
|
|
26
|
+
outputName,
|
|
27
|
+
qualifiedId: binding.qualifiedId,
|
|
28
|
+
relation: source.relation,
|
|
29
|
+
column: source.column,
|
|
30
|
+
}]
|
|
31
|
+
: [];
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Enforce every explicit host output at the SQL authorization boundary. The
|
|
36
|
+
* caller may still apply stricter capability/closure checks; this helper never
|
|
37
|
+
* accepts an unbound term or model-supplied alias.
|
|
38
|
+
*/
|
|
39
|
+
export function validateFrozenRequiredOutputProjection(input) {
|
|
40
|
+
const expectedOutputs = frozenRequiredOutputAliasesForPlan(input.plan);
|
|
41
|
+
if (expectedOutputs.length === 0)
|
|
42
|
+
return { ok: true, expectedOutputs, bindingProofs: [] };
|
|
43
|
+
const signature = buildGeneratedAnalyticalSqlSignature(input.sql, input.dialect);
|
|
44
|
+
const actual = new Set((signature?.outputs ?? []).map((output) => normalizeOutputAlias(output.outputAlias)));
|
|
45
|
+
const missingOutputs = expectedOutputs.filter((output) => !actual.has(output));
|
|
46
|
+
const bindingMismatches = [];
|
|
47
|
+
const bindingProofs = [];
|
|
48
|
+
const expectedBindingProofs = frozenRequiredOutputBindingProofsForPlan(input.plan);
|
|
49
|
+
for (const binding of input.plan.outputContract?.requiredOutputs ?? []) {
|
|
50
|
+
const outputName = frozenOutputAlias(binding);
|
|
51
|
+
const expectedProof = outputName
|
|
52
|
+
? expectedBindingProofs.find((proof) => normalizeOutputAlias(proof.outputName) === normalizeOutputAlias(outputName))
|
|
53
|
+
: undefined;
|
|
54
|
+
if (!outputName || !expectedProof) {
|
|
55
|
+
bindingMismatches.push(outputName ?? binding.requested);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const output = signature?.outputs.find((candidate) => normalizeOutputAlias(candidate.outputAlias) === normalizeOutputAlias(outputName));
|
|
59
|
+
if (!output)
|
|
60
|
+
continue;
|
|
61
|
+
// A named alias by itself is never proof. This output expression must
|
|
62
|
+
// contain exactly one parser-resolved physical column and that source must
|
|
63
|
+
// be the one selected before the plan froze. In particular,
|
|
64
|
+
// `product_id AS order_id` has the expected alias but fails here.
|
|
65
|
+
const references = output.columnReferences;
|
|
66
|
+
const exactSource = references.length === 1
|
|
67
|
+
&& normalizePhysicalIdentifier(references[0].column) === expectedProof.column
|
|
68
|
+
&& relationMatchesFrozenPhysicalSource(input.plan, references[0].relation ?? '', expectedProof.relation);
|
|
69
|
+
if (!exactSource) {
|
|
70
|
+
bindingMismatches.push(outputName);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
bindingProofs.push(expectedProof);
|
|
74
|
+
}
|
|
75
|
+
return missingOutputs.length === 0 && bindingMismatches.length === 0
|
|
76
|
+
? { ok: true, expectedOutputs, bindingProofs }
|
|
77
|
+
: {
|
|
78
|
+
ok: false,
|
|
79
|
+
expectedOutputs,
|
|
80
|
+
missingOutputs,
|
|
81
|
+
bindingMismatches: [...new Set(bindingMismatches)],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
3
84
|
/**
|
|
4
85
|
* Structural gate for the one optional generated-SQL proposal downstream of a
|
|
5
86
|
* frozen RAP. The proposal carries identifiers, not prose. Both the declared
|
|
@@ -31,9 +112,12 @@ export function validateGeneratedAnalyticalProposal(input) {
|
|
|
31
112
|
? { metricId: expectedMetricIds[0], direction: plan.query.order }
|
|
32
113
|
: undefined;
|
|
33
114
|
const expectedLimit = frame?.ranking?.limit ?? plan.query.limit;
|
|
34
|
-
const expectedOutputs =
|
|
35
|
-
|
|
36
|
-
|
|
115
|
+
const expectedOutputs = [...new Set([
|
|
116
|
+
...(frame?.requestedOutputs.map((output) => output.id)
|
|
117
|
+
?? plan.outputContract.fields
|
|
118
|
+
?? [...plan.outputContract.dimensions, ...plan.outputContract.measures]),
|
|
119
|
+
...frozenRequiredOutputAliasesForPlan(plan),
|
|
120
|
+
])];
|
|
37
121
|
const signature = buildGeneratedAnalyticalSqlSignature(proposal.sql, input.dialect);
|
|
38
122
|
if (!signature) {
|
|
39
123
|
driftCodes.push('SQL_PARSE_EVIDENCE_MISSING');
|
|
@@ -42,6 +126,17 @@ export function validateGeneratedAnalyticalProposal(input) {
|
|
|
42
126
|
const sqlOutputs = signature.outputs.map((output) => output.outputAlias);
|
|
43
127
|
if (!sameSet(sqlOutputs, expectedOutputs))
|
|
44
128
|
driftCodes.push('OUTPUT_TUPLE_DRIFT');
|
|
129
|
+
// An output alias is not enough authority: the expression must be backed
|
|
130
|
+
// by the exact qualified physical source that the frozen plan selected.
|
|
131
|
+
// This is deliberately evaluated from the parser-owned projection facts,
|
|
132
|
+
// not query-wide lexical references or model output labels.
|
|
133
|
+
if (!validateFrozenRequiredOutputProjection({
|
|
134
|
+
plan,
|
|
135
|
+
sql: proposal.sql,
|
|
136
|
+
...(input.dialect ? { dialect: input.dialect } : {}),
|
|
137
|
+
}).ok) {
|
|
138
|
+
driftCodes.push('OUTPUT_BINDING_TUPLE_DRIFT');
|
|
139
|
+
}
|
|
45
140
|
const capability = plan.selectedCapability;
|
|
46
141
|
if (!capability || expectedMetricIds.length !== 1) {
|
|
47
142
|
driftCodes.push('METRIC_TUPLE_DRIFT');
|
|
@@ -216,4 +311,117 @@ function sameSet(expected, actual) {
|
|
|
216
311
|
function normalizeId(value) {
|
|
217
312
|
return value.replace(/["`]/g, '').split(/[:.]/).at(-1).toLowerCase();
|
|
218
313
|
}
|
|
314
|
+
function outputLeaf(value) {
|
|
315
|
+
const leaf = value?.replace(/["`]/g, '').split(/[:.]/).at(-1)?.trim();
|
|
316
|
+
return leaf && parserIdentifier(leaf) ? leaf : undefined;
|
|
317
|
+
}
|
|
318
|
+
function frozenOutputAlias(binding) {
|
|
319
|
+
const alias = binding.outputName ?? outputLeaf(binding.qualifiedId);
|
|
320
|
+
return alias && parserIdentifier(alias) ? alias : undefined;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* A frozen exploratory projection must identify a physical dbt/runtime column.
|
|
324
|
+
* Semantic/certified members can still use output contracts on their own
|
|
325
|
+
* execution lanes, but they are not sufficient proof for raw SQL. Do not
|
|
326
|
+
* guess a relation from an alias or from another SELECT expression.
|
|
327
|
+
*/
|
|
328
|
+
function frozenPhysicalOutputSource(qualifiedId) {
|
|
329
|
+
if (!qualifiedId)
|
|
330
|
+
return undefined;
|
|
331
|
+
const rawId = qualifiedId.trim();
|
|
332
|
+
const encodedColumn = /(?:^|:)column:([^:]+)$/i.exec(rawId)?.[1];
|
|
333
|
+
// The local metadata bridge has two canonical physical-column shapes:
|
|
334
|
+
// `dbt:column:relation.column` and the compact runtime/dbt identity
|
|
335
|
+
// `relation.column`. The latter is not a model-supplied alias: it is only
|
|
336
|
+
// admitted after the host has resolved a qualified candidate into the
|
|
337
|
+
// frozen physical closure. Keep the grammar deliberately narrow so semantic
|
|
338
|
+
// IDs, block fields, and arbitrary dotted prose cannot become SQL proof.
|
|
339
|
+
const compactPhysicalColumn = /^[A-Za-z_][A-Za-z0-9_$]*(?:\.[A-Za-z_][A-Za-z0-9_$]*)+$/
|
|
340
|
+
.test(rawId)
|
|
341
|
+
? rawId
|
|
342
|
+
: undefined;
|
|
343
|
+
const physicalColumn = encodedColumn ?? compactPhysicalColumn;
|
|
344
|
+
if (!physicalColumn)
|
|
345
|
+
return undefined;
|
|
346
|
+
const parts = physicalColumn
|
|
347
|
+
.split('.')
|
|
348
|
+
.map(normalizePhysicalIdentifier)
|
|
349
|
+
.filter(Boolean);
|
|
350
|
+
if (parts.length < 2)
|
|
351
|
+
return undefined;
|
|
352
|
+
const column = parts.pop();
|
|
353
|
+
const relation = parts.join('.');
|
|
354
|
+
return relation && column ? { relation, column } : undefined;
|
|
355
|
+
}
|
|
356
|
+
function normalizePhysicalIdentifier(value) {
|
|
357
|
+
return value
|
|
358
|
+
.trim()
|
|
359
|
+
.replace(/["`\[\]]/g, '')
|
|
360
|
+
.replace(/\s*\.\s*/g, '.')
|
|
361
|
+
.toLowerCase();
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The first projection check sees provider SQL as authored (`order_items`),
|
|
365
|
+
* while the final authorization check sees the same statement after the host
|
|
366
|
+
* has target-qualified its FROM/JOIN leaf (`jaffle_shop.dev.order_items`).
|
|
367
|
+
* Treat those forms as one source only when the qualified form is itself in
|
|
368
|
+
* the frozen physical closure. This is deliberately not a generic leaf-name
|
|
369
|
+
* match: a different catalog/schema with the same table leaf is rejected.
|
|
370
|
+
*/
|
|
371
|
+
function relationMatchesFrozenPhysicalSource(plan, actualRelation, expectedRelation) {
|
|
372
|
+
const actual = normalizePhysicalIdentifier(actualRelation);
|
|
373
|
+
const expected = normalizePhysicalIdentifier(expectedRelation);
|
|
374
|
+
if (!actual || !expected)
|
|
375
|
+
return false;
|
|
376
|
+
const frozenRelations = [...new Set((plan.sourceRelationIds ?? [])
|
|
377
|
+
.map(normalizePhysicalIdentifier)
|
|
378
|
+
.filter(Boolean))];
|
|
379
|
+
const expectedLeaf = physicalIdentifierLeaf(expected);
|
|
380
|
+
const actualLeaf = physicalIdentifierLeaf(actual);
|
|
381
|
+
if (!expectedLeaf || actualLeaf !== expectedLeaf)
|
|
382
|
+
return false;
|
|
383
|
+
const leafSources = frozenRelations.filter((source) => physicalIdentifierLeaf(source) === expectedLeaf);
|
|
384
|
+
// A frozen local plan may retain both the compact metadata identity
|
|
385
|
+
// (`order_items`) and the target-bound physical identity
|
|
386
|
+
// (`jaffle_shop.dev.order_items`) for the *same* selected source. Those
|
|
387
|
+
// two representations are not two candidate relations. Keep the compact
|
|
388
|
+
// form usable only when there is exactly one non-compact physical source
|
|
389
|
+
// with that leaf. Two target-qualified sources with the same leaf remain
|
|
390
|
+
// ambiguous and therefore cannot be selected by a compact output proof.
|
|
391
|
+
const qualifiedLeafSources = leafSources.filter((source) => source !== expectedLeaf);
|
|
392
|
+
const expectedIsCompactLeaf = expected === expectedLeaf;
|
|
393
|
+
if (expectedIsCompactLeaf) {
|
|
394
|
+
if (qualifiedLeafSources.length > 1)
|
|
395
|
+
return false;
|
|
396
|
+
if (qualifiedLeafSources.length === 1) {
|
|
397
|
+
// The parser may see either the provider's compact FROM spelling or
|
|
398
|
+
// the target-qualified form that the host authorizes later. Both must
|
|
399
|
+
// resolve to this one frozen physical source; a different catalog or
|
|
400
|
+
// schema with the same leaf is not accepted.
|
|
401
|
+
return actual === expectedLeaf || actual === qualifiedLeafSources[0];
|
|
402
|
+
}
|
|
403
|
+
// A legacy compact-only closure has no target-qualified relation to
|
|
404
|
+
// compare, so it authorizes only the exact compact parser relation.
|
|
405
|
+
return frozenRelations.includes(expectedLeaf) && actual === expectedLeaf;
|
|
406
|
+
}
|
|
407
|
+
// Persisted qualified sources are authoritative only when the exact
|
|
408
|
+
// relation remains selected in this frozen closure. A copied output binding
|
|
409
|
+
// must not authorize a relation that the RAP did not select.
|
|
410
|
+
if (!frozenRelations.includes(expected))
|
|
411
|
+
return false;
|
|
412
|
+
if (actual === expected)
|
|
413
|
+
return true;
|
|
414
|
+
// The provider may use the compact table spelling before target
|
|
415
|
+
// qualification. It is safe only when this exact persisted relation is the
|
|
416
|
+
// sole target-qualified source for that leaf.
|
|
417
|
+
return actual === actualLeaf
|
|
418
|
+
&& qualifiedLeafSources.length === 1
|
|
419
|
+
&& qualifiedLeafSources[0] === expected;
|
|
420
|
+
}
|
|
421
|
+
function physicalIdentifierLeaf(value) {
|
|
422
|
+
return value.split('.').filter(Boolean).at(-1);
|
|
423
|
+
}
|
|
424
|
+
function normalizeOutputAlias(value) {
|
|
425
|
+
return normalizeId(value).replace(/[^a-z0-9_]/g, '_').replace(/_+/g, '_').replace(/^_|_$/g, '');
|
|
426
|
+
}
|
|
219
427
|
//# sourceMappingURL=generated-analytical-proposal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-analytical-proposal.js","sourceRoot":"","sources":["../src/generated-analytical-proposal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generated-analytical-proposal.js","sourceRoot":"","sources":["../src/generated-analytical-proposal.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,9 @@ export interface GovernedRelationship {
|
|
|
27
27
|
qualifiedId: string;
|
|
28
28
|
fromRelationId: string;
|
|
29
29
|
toRelationId: string;
|
|
30
|
+
/** Exact modeling entities, retained so frozen safety evidence can reject a restamped registry. */
|
|
31
|
+
fromEntityId?: string;
|
|
32
|
+
toEntityId?: string;
|
|
30
33
|
keys: Array<{
|
|
31
34
|
fromColumnId: string;
|
|
32
35
|
toColumnId: string;
|
|
@@ -37,6 +40,14 @@ export interface GovernedRelationship {
|
|
|
37
40
|
status: string;
|
|
38
41
|
automaticJoinAllowed: boolean;
|
|
39
42
|
staleCertification: boolean;
|
|
43
|
+
certificationFingerprint?: string;
|
|
44
|
+
evidenceExpiresAt?: string;
|
|
45
|
+
validation?: {
|
|
46
|
+
status: string;
|
|
47
|
+
checkedAt: string;
|
|
48
|
+
queryFingerprint: string;
|
|
49
|
+
proofFingerprint?: string;
|
|
50
|
+
};
|
|
40
51
|
identities: string[];
|
|
41
52
|
}
|
|
42
53
|
export interface GovernedRelationalRegistry {
|
|
@@ -162,6 +173,8 @@ export declare function compileGovernedRelationalPlan(input: {
|
|
|
162
173
|
registry: GovernedRelationalRegistry;
|
|
163
174
|
driver?: string;
|
|
164
175
|
maxRows?: number;
|
|
176
|
+
/** Injectable execution clock so relationship-proof expiry is deterministic. */
|
|
177
|
+
now?: () => Date;
|
|
165
178
|
}): GovernedRelationalCompileResult;
|
|
166
179
|
/**
|
|
167
180
|
* Compile every governed-relational source node independently. Alignment,
|
|
@@ -176,6 +189,8 @@ export declare function compileGovernedRelationalExecutionGraph(input: {
|
|
|
176
189
|
registry: GovernedRelationalRegistry;
|
|
177
190
|
driver?: string;
|
|
178
191
|
maxRows?: number;
|
|
192
|
+
/** Passed through to every source compilation as one immutable execution instant. */
|
|
193
|
+
now?: () => Date;
|
|
179
194
|
}): GovernedAnalyticalGraphCompileResult;
|
|
180
195
|
export declare function renderGovernedRelationalAst(ast: GovernedRelationalAst, registry: GovernedRelationalRegistry, driver?: string): string;
|
|
181
196
|
export declare function finalizeGovernedCompilationReceipt(receipt: GovernedCompilationReceipt, result: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governed-relational-compiler.d.ts","sourceRoot":"","sources":["../src/governed-relational-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EACV,0BAA0B,EAC1B,mCAAmC,EACpC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,sBAAsB,EAA6B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"governed-relational-compiler.d.ts","sourceRoot":"","sources":["../src/governed-relational-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { createHash } from 'node:crypto';
|
|
9
9
|
import { getDialect } from '@duckcodeailabs/dql-core';
|
|
10
|
+
import { governedRelationshipSafetyProofIsSelfConsistentV1, } from './relationship-proof.js';
|
|
10
11
|
export function buildGovernedRelationalRegistry(input) {
|
|
11
12
|
const provenance = Object.values(input.manifest?.dbtProvenance?.nodes ?? {});
|
|
12
13
|
const entities = Object.values(input.manifest?.modeling?.entities ?? {});
|
|
@@ -52,6 +53,8 @@ export function buildGovernedRelationalRegistry(input) {
|
|
|
52
53
|
qualifiedId: relationship.qualifiedId,
|
|
53
54
|
fromRelationId: from.qualifiedId,
|
|
54
55
|
toRelationId: to.qualifiedId,
|
|
56
|
+
fromEntityId: relationship.from,
|
|
57
|
+
toEntityId: relationship.to,
|
|
55
58
|
keys,
|
|
56
59
|
joinType: relationship.joinTypes?.includes('left') ? 'left' : 'inner',
|
|
57
60
|
cardinality: relationship.cardinality,
|
|
@@ -59,14 +62,100 @@ export function buildGovernedRelationalRegistry(input) {
|
|
|
59
62
|
status: relationship.status,
|
|
60
63
|
automaticJoinAllowed: relationship.automaticJoinAllowed,
|
|
61
64
|
staleCertification: relationship.staleCertification,
|
|
65
|
+
...(relationship.certificationFingerprint
|
|
66
|
+
? { certificationFingerprint: relationship.certificationFingerprint }
|
|
67
|
+
: {}),
|
|
68
|
+
...(relationship.evidenceExpiresAt ? { evidenceExpiresAt: relationship.evidenceExpiresAt } : {}),
|
|
69
|
+
...(relationship.validation
|
|
70
|
+
? {
|
|
71
|
+
validation: {
|
|
72
|
+
status: relationship.validation.status,
|
|
73
|
+
checkedAt: relationship.validation.checkedAt,
|
|
74
|
+
queryFingerprint: relationship.validation.queryFingerprint,
|
|
75
|
+
...(relationship.validation.proofFingerprint
|
|
76
|
+
? { proofFingerprint: relationship.validation.proofFingerprint }
|
|
77
|
+
: {}),
|
|
78
|
+
},
|
|
79
|
+
}
|
|
80
|
+
: {}),
|
|
62
81
|
identities: unique([relationship.qualifiedId, relationship.id, relationship.localId]),
|
|
63
82
|
}];
|
|
64
83
|
});
|
|
65
84
|
const payload = { snapshotId: input.snapshotId, relations, relationships };
|
|
66
85
|
return { ...payload, fingerprint: hash(stableStringify(payload)) };
|
|
67
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* A registry is mutable project state while a governed plan is immutable. A
|
|
89
|
+
* matching snapshot ID is therefore necessary but not sufficient: the exact
|
|
90
|
+
* certified safety facts selected at freeze time must still match the registry
|
|
91
|
+
* edge about to produce SQL. This prevents a caller from restamping a changed
|
|
92
|
+
* registry snapshot or relaxing an unsafe fanout after the router froze.
|
|
93
|
+
*/
|
|
94
|
+
function governedRelationshipSafetyForFrozenPlan(plan, relationship) {
|
|
95
|
+
const registryIdentities = new Set([
|
|
96
|
+
relationship.qualifiedId,
|
|
97
|
+
...relationship.identities,
|
|
98
|
+
].map(normalizeAuthorityIdentity).filter(Boolean));
|
|
99
|
+
const pathIds = new Set(plan.relationshipPathIds.map(normalizeAuthorityIdentity).filter(Boolean));
|
|
100
|
+
const matches = (plan.governedRelationshipSafetyProofs ?? []).filter((proof) => registryIdentities.has(normalizeAuthorityIdentity(proof.relationshipId))
|
|
101
|
+
&& pathIds.has(normalizeAuthorityIdentity(proof.relationshipPathId))
|
|
102
|
+
&& governedRelationshipSafetyProofIsSelfConsistentV1(proof));
|
|
103
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
104
|
+
}
|
|
105
|
+
function governedRelationshipMatchesFrozenSafety(relationship, proof, snapshotId, now) {
|
|
106
|
+
const validation = relationship.validation;
|
|
107
|
+
// The proof is immutable, but certification evidence can expire after the
|
|
108
|
+
// router froze the plan and before the compiler emits SQL. Equality with a
|
|
109
|
+
// registry value only proves that both copies are stale in the same way; it
|
|
110
|
+
// is not current execution authority. Expiry is exclusive: at the exact
|
|
111
|
+
// recorded instant the proof is no longer safe to use.
|
|
112
|
+
const evidenceExpiresAt = proof.evidenceExpiresAt === undefined
|
|
113
|
+
? undefined
|
|
114
|
+
: Date.parse(proof.evidenceExpiresAt);
|
|
115
|
+
return proof.snapshotId === snapshotId
|
|
116
|
+
&& relationship.status === proof.status
|
|
117
|
+
&& relationship.staleCertification === proof.staleCertification
|
|
118
|
+
&& relationship.automaticJoinAllowed === proof.automaticJoinAllowed
|
|
119
|
+
&& relationship.fanout === proof.fanout
|
|
120
|
+
&& relationship.cardinality === proof.cardinality
|
|
121
|
+
&& relationship.certificationFingerprint === proof.certificationFingerprint
|
|
122
|
+
&& relationship.evidenceExpiresAt === proof.evidenceExpiresAt
|
|
123
|
+
&& normalizeAuthorityIdentity(relationship.fromEntityId ?? '') === normalizeAuthorityIdentity(proof.from)
|
|
124
|
+
&& normalizeAuthorityIdentity(relationship.toEntityId ?? '') === normalizeAuthorityIdentity(proof.to)
|
|
125
|
+
&& validation?.status === proof.validation.status
|
|
126
|
+
&& validation.checkedAt === proof.validation.checkedAt
|
|
127
|
+
&& validation.queryFingerprint === proof.validation.queryFingerprint
|
|
128
|
+
&& validation.proofFingerprint === proof.validation.proofFingerprint
|
|
129
|
+
&& relationshipKeysMatchFrozenSafety(relationship.keys, proof.keys)
|
|
130
|
+
&& (evidenceExpiresAt === undefined
|
|
131
|
+
|| Number.isFinite(evidenceExpiresAt) && evidenceExpiresAt > now.getTime());
|
|
132
|
+
}
|
|
133
|
+
function relationshipKeysMatchFrozenSafety(registryKeys, proofKeys) {
|
|
134
|
+
if (registryKeys.length !== proofKeys.length || registryKeys.length === 0)
|
|
135
|
+
return false;
|
|
136
|
+
const normalize = (value) => value
|
|
137
|
+
.replace(/["`]/g, '')
|
|
138
|
+
.split(/[.:/]/)
|
|
139
|
+
.at(-1)
|
|
140
|
+
.trim()
|
|
141
|
+
.toLowerCase();
|
|
142
|
+
const registry = registryKeys
|
|
143
|
+
.map((key) => `${normalize(key.fromColumnId)}:${normalize(key.toColumnId)}`)
|
|
144
|
+
.sort();
|
|
145
|
+
const frozen = proofKeys
|
|
146
|
+
.map((key) => `${normalize(key.from)}:${normalize(key.to)}`)
|
|
147
|
+
.sort();
|
|
148
|
+
return registry.every((key, index) => key === frozen[index]);
|
|
149
|
+
}
|
|
150
|
+
function normalizeAuthorityIdentity(value) {
|
|
151
|
+
return value.trim().toLowerCase();
|
|
152
|
+
}
|
|
68
153
|
export function compileGovernedRelationalPlan(input) {
|
|
69
154
|
const { plan, registry } = input;
|
|
155
|
+
// Capture time once per compilation. A proof cannot become valid again in
|
|
156
|
+
// the middle of a plan, and this defines expiry-boundary behavior for every
|
|
157
|
+
// relationship used by the emitted SQL.
|
|
158
|
+
const compilationNow = input.now?.() ?? new Date();
|
|
70
159
|
if (plan.capability !== 'governed_relational') {
|
|
71
160
|
return blocked('CAPABILITY_MISMATCH', `Plan capability ${plan.capability} is not governed relational.`);
|
|
72
161
|
}
|
|
@@ -100,7 +189,14 @@ export function compileGovernedRelationalPlan(input) {
|
|
|
100
189
|
if (!relationship) {
|
|
101
190
|
return blocked('RELATIONSHIP_PROOF_REQUIRED', `No selected relationship proof connects ${[...joined].join(', ')} to ${relationIds.filter((id) => !joined.has(id)).join(', ')}.`);
|
|
102
191
|
}
|
|
103
|
-
|
|
192
|
+
const frozenSafety = governedRelationshipSafetyForFrozenPlan(plan, relationship);
|
|
193
|
+
if (!frozenSafety || !governedRelationshipMatchesFrozenSafety(relationship, frozenSafety, plan.snapshotId, compilationNow)) {
|
|
194
|
+
return blocked('RELATIONSHIP_NOT_EXECUTABLE', `Relationship ${relationship.qualifiedId} no longer matches the frozen certified safety proof.`);
|
|
195
|
+
}
|
|
196
|
+
if (relationship.status !== 'certified'
|
|
197
|
+
|| relationship.staleCertification
|
|
198
|
+
|| !relationship.automaticJoinAllowed
|
|
199
|
+
|| relationship.fanout !== 'safe') {
|
|
104
200
|
return blocked('RELATIONSHIP_NOT_EXECUTABLE', `Relationship ${relationship.qualifiedId} is not fresh, certified, and automatic-join safe.`);
|
|
105
201
|
}
|
|
106
202
|
const next = joined.has(relationship.fromRelationId) ? relationship.toRelationId : relationship.fromRelationId;
|
|
@@ -182,6 +278,7 @@ export function compileGovernedRelationalPlan(input) {
|
|
|
182
278
|
*/
|
|
183
279
|
export function compileGovernedRelationalExecutionGraph(input) {
|
|
184
280
|
const { graph, plan, registry } = input;
|
|
281
|
+
const compilationNow = input.now?.() ?? new Date();
|
|
185
282
|
const graphBlocked = (code, reason, nodeId, candidateIds) => ({
|
|
186
283
|
status: 'blocked',
|
|
187
284
|
code,
|
|
@@ -267,6 +364,7 @@ export function compileGovernedRelationalExecutionGraph(input) {
|
|
|
267
364
|
registry,
|
|
268
365
|
driver: input.driver,
|
|
269
366
|
maxRows: input.maxRows,
|
|
367
|
+
now: () => compilationNow,
|
|
270
368
|
});
|
|
271
369
|
if (compiled.status === 'blocked') {
|
|
272
370
|
return graphBlocked(compiled.code, compiled.reason, source.id, compiled.candidateIds);
|