@duckcodeailabs/dql-agent 1.14.1 → 1.14.2
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 +9 -1
- package/dist/agent-run-engine.d.ts.map +1 -1
- package/dist/agent-run-engine.js +199 -17
- 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/agentic/analyst-loop.d.ts.map +1 -1
- package/dist/agentic/analyst-loop.js +48 -28
- package/dist/agentic/analyst-loop.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 +3 -2
- package/dist/agentic/research-agent.js.map +1 -1
- package/dist/agentic/sql-authorization.d.ts.map +1 -1
- package/dist/agentic/sql-authorization.js +230 -2
- package/dist/agentic/sql-authorization.js.map +1 -1
- package/dist/analytical-frame.d.ts.map +1 -1
- package/dist/analytical-frame.js +10 -1
- package/dist/analytical-frame.js.map +1 -1
- package/dist/analytical-orchestration.d.ts +302 -0
- package/dist/analytical-orchestration.d.ts.map +1 -1
- package/dist/analytical-orchestration.js +564 -0
- package/dist/analytical-orchestration.js.map +1 -1
- package/dist/answer-loop.d.ts +48 -0
- package/dist/answer-loop.d.ts.map +1 -1
- package/dist/answer-loop.js +679 -85
- 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/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/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/intent-controller.d.ts +28 -0
- package/dist/intent-controller.d.ts.map +1 -1
- package/dist/intent-controller.js +30 -0
- package/dist/intent-controller.js.map +1 -1
- package/dist/meaning-resolution.d.ts +69 -2
- package/dist/meaning-resolution.d.ts.map +1 -1
- package/dist/meaning-resolution.js +128 -7
- package/dist/meaning-resolution.js.map +1 -1
- package/dist/metadata/analysis-planner.d.ts.map +1 -1
- package/dist/metadata/analysis-planner.js +124 -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 +57 -11
- package/dist/metadata/catalog.js.map +1 -1
- package/dist/metadata/meaning-evidence.d.ts +10 -1
- package/dist/metadata/meaning-evidence.d.ts.map +1 -1
- package/dist/metadata/meaning-evidence.js +261 -47
- package/dist/metadata/meaning-evidence.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 +7 -0
- package/dist/resolved-analytical-plan.d.ts.map +1 -1
- package/dist/resolved-analytical-plan.js +11 -4
- package/dist/resolved-analytical-plan.js.map +1 -1
- package/dist/router.d.ts +4 -3
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +1796 -125
- package/dist/router.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
|
@@ -5,6 +5,86 @@
|
|
|
5
5
|
* package and may reference only IDs contained in it. Execution remains owned by
|
|
6
6
|
* the host after it validates the selected candidates and route.
|
|
7
7
|
*/
|
|
8
|
+
import { buildAnalyticalRequirementSet, evidenceCandidateRoles, selectRoleBalancedMeaningCandidates, } from './analytical-orchestration.js';
|
|
9
|
+
/**
|
|
10
|
+
* Return the authored output identity that proves a certified block can answer
|
|
11
|
+
* one requested measure. This reads only the block's own `output:` facts,
|
|
12
|
+
* which are populated from declared/output-contract fields at indexing time.
|
|
13
|
+
* Block names, tags, examples, definitions, and unrelated retrieved metrics
|
|
14
|
+
* are intentionally absent: none of those is an executable output contract.
|
|
15
|
+
*/
|
|
16
|
+
export function certifiedCandidateDeclaredMeasureOutput(candidate, requested) {
|
|
17
|
+
if (candidate.kind !== 'certified_block')
|
|
18
|
+
return undefined;
|
|
19
|
+
const requestedIdentity = canonicalCertifiedOutputMetricIdentity(requested);
|
|
20
|
+
if (!requestedIdentity)
|
|
21
|
+
return undefined;
|
|
22
|
+
const declared = (candidate.compatibilityFacts ?? [])
|
|
23
|
+
.flatMap((fact) => /^output:\s*(.+)$/i.exec(fact)?.[1] ?? [])
|
|
24
|
+
.map((output) => output.trim())
|
|
25
|
+
.filter(Boolean);
|
|
26
|
+
return declared.find((output) => canonicalCertifiedOutputMetricIdentity(output) === requestedIdentity);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A certified tier can freeze only when the selected block itself declares
|
|
30
|
+
* every requested measure. This is deliberately stricter than retrieval
|
|
31
|
+
* relevance: `top_customers` tagged with revenue but outputting only
|
|
32
|
+
* `lifetime_spend` is context, never a certified revenue answer.
|
|
33
|
+
*/
|
|
34
|
+
export function certifiedCandidateExplicitlyCoversMeasures(candidate, requestedMeasures) {
|
|
35
|
+
if (candidate.kind !== 'certified_block')
|
|
36
|
+
return false;
|
|
37
|
+
const requested = [...new Set((requestedMeasures ?? [])
|
|
38
|
+
.map(canonicalCertifiedOutputMetricIdentity)
|
|
39
|
+
.filter(Boolean))];
|
|
40
|
+
const effectiveRequested = requested.length > 1
|
|
41
|
+
? requested.filter((measure) => measure !== 'total' && measure !== 'average')
|
|
42
|
+
: requested;
|
|
43
|
+
return effectiveRequested.every((measure) => Boolean(certifiedCandidateDeclaredMeasureOutput(candidate, measure)));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Output identity deliberately has a much smaller alias surface than retrieval
|
|
47
|
+
* matching. Generic presentation modifiers are safe (gross/total/monthly
|
|
48
|
+
* revenue); business qualifiers are not (product revenue, beverage revenue,
|
|
49
|
+
* lifetime spend). This mirrors the certified fit gate and prevents a loosely
|
|
50
|
+
* correlated output from borrowing another metric's authority.
|
|
51
|
+
*/
|
|
52
|
+
function canonicalCertifiedOutputMetricIdentity(value) {
|
|
53
|
+
const aliases = {
|
|
54
|
+
avg: 'average',
|
|
55
|
+
drink: 'beverage',
|
|
56
|
+
sale: 'revenue',
|
|
57
|
+
sales: 'revenue',
|
|
58
|
+
score: 'point',
|
|
59
|
+
scorer: 'point',
|
|
60
|
+
scoring: 'point',
|
|
61
|
+
sum: 'total',
|
|
62
|
+
};
|
|
63
|
+
const genericModifiers = new Set([
|
|
64
|
+
'annual', 'average', 'current', 'daily', 'gross', 'monthly', 'net',
|
|
65
|
+
'quarterly', 'total', 'yearly',
|
|
66
|
+
]);
|
|
67
|
+
// A typed resolver may retain a qualified metric selection in
|
|
68
|
+
// queryIntent. Only its leaf is comparable to a block output; the namespace
|
|
69
|
+
// is authority metadata, not part of the returned column identity.
|
|
70
|
+
const outputLeaf = value.includes(':')
|
|
71
|
+
? value.split(':').filter(Boolean).at(-1) ?? value
|
|
72
|
+
: value;
|
|
73
|
+
const tokens = outputLeaf
|
|
74
|
+
.toLowerCase()
|
|
75
|
+
.replace(/%/g, ' percentage ')
|
|
76
|
+
.replace(/[_./:-]+/g, ' ')
|
|
77
|
+
.replace(/[^a-z0-9 ]+/g, ' ')
|
|
78
|
+
.split(/\s+/)
|
|
79
|
+
.map((token) => aliases[token] ?? token)
|
|
80
|
+
.map((token) => token.endsWith('s') && token.length > 3 ? token.slice(0, -1) : token)
|
|
81
|
+
.filter(Boolean);
|
|
82
|
+
while (tokens.length > 1 && genericModifiers.has(tokens[0]))
|
|
83
|
+
tokens.shift();
|
|
84
|
+
while (tokens.length > 1 && genericModifiers.has(tokens.at(-1)))
|
|
85
|
+
tokens.pop();
|
|
86
|
+
return tokens.join('_');
|
|
87
|
+
}
|
|
8
88
|
const TRUST_ORDER = {
|
|
9
89
|
certified: 4,
|
|
10
90
|
semantic: 3,
|
|
@@ -22,13 +102,35 @@ const COMPATIBILITY_ORDER = {
|
|
|
22
102
|
* primary; trust is only a tie-breaker, so an unrelated certified block cannot
|
|
23
103
|
* displace a materially better semantic match.
|
|
24
104
|
*/
|
|
25
|
-
export function buildMeaningEvidencePackage(evidence, maxCandidates =
|
|
26
|
-
const limit = Math.max(1, Math.min(
|
|
105
|
+
export function buildMeaningEvidencePackage(evidence, maxCandidates = 16, question = '') {
|
|
106
|
+
const limit = Math.max(1, Math.min(16, Math.floor(maxCandidates)));
|
|
27
107
|
const perKindLimit = Math.max(2, Math.ceil(limit / 2));
|
|
28
|
-
const
|
|
29
|
-
|
|
108
|
+
const requirements = buildAnalyticalRequirementSet({ question, parsedIntent: evidence.parsedIntent });
|
|
109
|
+
// First reserve exact and required-role candidates from the FULL canonical
|
|
110
|
+
// set. Applying the same-kind cap first let eight high-scoring owner/sentiment
|
|
111
|
+
// dimensions erase the explicit revenue metric and Account Name before the
|
|
112
|
+
// role-aware admission code ever saw them.
|
|
113
|
+
const canonicalEligible = canonicalizeMetricMeasureCandidates(evidence.candidates)
|
|
30
114
|
.filter((candidate) => candidate.eligible !== false)
|
|
31
|
-
.sort(compareCandidates)
|
|
115
|
+
.sort(compareCandidates);
|
|
116
|
+
const rawPinned = selectRoleBalancedMeaningCandidates({
|
|
117
|
+
candidates: canonicalEligible,
|
|
118
|
+
requirements,
|
|
119
|
+
maxCandidates: limit,
|
|
120
|
+
pinOnly: true,
|
|
121
|
+
});
|
|
122
|
+
// Guard the fill and the pins themselves. A terse request for "accounts"
|
|
123
|
+
// must not retain Account Owner / Sentiment merely because a generic
|
|
124
|
+
// categorical-dimension parser also saw the token "account". An explicit
|
|
125
|
+
// attribute request remains eligible.
|
|
126
|
+
const requestedEntityDisplay = requirements.entityDisplayTerms.length > 0;
|
|
127
|
+
const explicitlyRequestsAttribute = /\b(?:owner|sentiment|email)\b/i.test(question);
|
|
128
|
+
const hasRawPinnedEntityLabel = rawPinned.some((candidate) => evidenceCandidateRoles(candidate).includes('entity_label'));
|
|
129
|
+
const pinned = requestedEntityDisplay && hasRawPinnedEntityLabel && !explicitlyRequestsAttribute
|
|
130
|
+
? rawPinned.filter((candidate) => !/\b(?:owner|sentiment|email)\b/i.test(candidate.name))
|
|
131
|
+
: rawPinned;
|
|
132
|
+
const kindCounts = new Map();
|
|
133
|
+
const perKindQualified = canonicalEligible
|
|
32
134
|
.filter((candidate) => {
|
|
33
135
|
// Metric and member evidence share the semantic trust tier but serve
|
|
34
136
|
// different binding lanes. Counting only by trust let several exact
|
|
@@ -40,7 +142,19 @@ export function buildMeaningEvidencePackage(evidence, maxCandidates = 12) {
|
|
|
40
142
|
return false;
|
|
41
143
|
kindCounts.set(candidate.kind, count + 1);
|
|
42
144
|
return true;
|
|
43
|
-
})
|
|
145
|
+
});
|
|
146
|
+
// Fill the remaining package under the kind cap without evicting a pin. The
|
|
147
|
+
// resolver still receives at most 16 cards and exactly one meaning call.
|
|
148
|
+
const hasPinnedEntityLabel = pinned.some((candidate) => evidenceCandidateRoles(candidate).includes('entity_label'));
|
|
149
|
+
const safeFill = perKindQualified.filter((candidate) => {
|
|
150
|
+
if (pinned.some((pin) => pin.id === candidate.id))
|
|
151
|
+
return false;
|
|
152
|
+
// An account owner/e-mail/sentiment is an attribute, never a substitute
|
|
153
|
+
// for the requested account/customer display entity. Do not let it consume
|
|
154
|
+
// the remaining meaning cards after that display role was successfully pinned.
|
|
155
|
+
return !hasPinnedEntityLabel || !/\b(?:owner|sentiment|email)\b/i.test(candidate.name);
|
|
156
|
+
});
|
|
157
|
+
return [...pinned, ...safeFill]
|
|
44
158
|
.slice(0, limit);
|
|
45
159
|
}
|
|
46
160
|
/**
|
|
@@ -94,7 +208,7 @@ function normalizeRef(value) {
|
|
|
94
208
|
return value.trim().toLowerCase().replace(/[`"']/g, "");
|
|
95
209
|
}
|
|
96
210
|
/** Validate that a resolver cannot invent or select ineligible evidence. */
|
|
97
|
-
export function validateMeaningResolution(value, candidates) {
|
|
211
|
+
export function validateMeaningResolution(value, candidates, requestedMeasures = value.queryIntent.measures) {
|
|
98
212
|
const byId = new Map(candidates.map((candidate) => [candidate.id, candidate]));
|
|
99
213
|
const selectedConceptIds = value.selectedConceptIds.length > 0
|
|
100
214
|
? value.selectedConceptIds
|
|
@@ -132,6 +246,13 @@ export function validateMeaningResolution(value, candidates) {
|
|
|
132
246
|
if (value.recommendedRoute === "certified" && execution.compatibility !== "compatible") {
|
|
133
247
|
return { ok: false, reason: "A certified route requires a deterministically compatible block fit." };
|
|
134
248
|
}
|
|
249
|
+
if (value.recommendedRoute === 'certified'
|
|
250
|
+
&& !certifiedCandidateExplicitlyCoversMeasures(execution, requestedMeasures)) {
|
|
251
|
+
return {
|
|
252
|
+
ok: false,
|
|
253
|
+
reason: 'A certified route must declare every requested measure in the selected block output contract.',
|
|
254
|
+
};
|
|
255
|
+
}
|
|
135
256
|
if (value.recommendedRoute === "semantic" && execution.kind !== "semantic_metric" && execution.kind !== "semantic_member") {
|
|
136
257
|
return { ok: false, reason: "A semantic route must reference semantic evidence." };
|
|
137
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meaning-resolution.js","sourceRoot":"","sources":["../src/meaning-resolution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meaning-resolution.js","sourceRoot":"","sources":["../src/meaning-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-planner.d.ts","sourceRoot":"","sources":["../../src/metadata/analysis-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACf,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis-planner.d.ts","sourceRoot":"","sources":["../../src/metadata/analysis-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACf,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,YAAY,GACZ,mBAAmB,GACnB,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,OAAO,GACP,YAAY,GACZ,kBAAkB,GAClB,iBAAiB,GACjB,SAAS,GACT,cAAc,GACd,kBAAkB,GAClB,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,iBAAiB,GAAG,OAAO,GAAG,IAAI,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,EAAE,cAAc,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACnE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4BAA4B,EAAE,OAAO,CAAC;IACtC,sBAAsB,EAAE,OAAO,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,oBAAoB,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,eAAe,CAAC;QACtD,UAAU,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAAC;QACnD,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,SAAS,GAAG,WAAW,CAAC;KAChC,CAAC;IACF,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,CAAC;QACpF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,0BAA0B,GAClC,cAAc,GACd,oBAAoB,GACpB,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,0BAA0B,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAiED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,GACjB,oBAAoB,CA0HtB;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,oBAAoB,GACzB,2BAA2B,CAuF7B;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,oBAAoB,GACzB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBtC;AAED,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,yBAAyB,EAClC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtC,yBAAyB,CAW3B;AAED,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EACxD,IAAI,EAAE,oBAAoB,GACzB,uBAAuB,CA4DzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeAnalyticalMeasureTerms } from '../analytical-orchestration.js';
|
|
1
2
|
const STOP_WORDS = new Set([
|
|
2
3
|
'about', 'after', 'again', 'against', 'all', 'also', 'and', 'answer', 'any', 'are', 'around',
|
|
3
4
|
'based', 'before', 'between', 'build', 'can', 'complete', 'could', 'data', 'dataset', 'datasets',
|
|
@@ -13,6 +14,14 @@ const METRIC_WORDS = [
|
|
|
13
14
|
'score', 'scorer', 'scoring', 'share', 'spend', 'stats',
|
|
14
15
|
'statistics', 'tax', 'total', 'usage', 'value', 'volume',
|
|
15
16
|
];
|
|
17
|
+
// These words describe an aggregation operation, not a business measure. They
|
|
18
|
+
// remain useful to the result-shape/compiler stages, but must not compete with
|
|
19
|
+
// an authored metric identity during retrieval (for example, `total supply
|
|
20
|
+
// cost` is the `supply_cost` measure, not a `total` measure plus a `supply`
|
|
21
|
+
// dimension).
|
|
22
|
+
const AGGREGATION_OPERATOR_WORDS = new Set([
|
|
23
|
+
'total', 'sum', 'average', 'avg', 'minimum', 'min', 'maximum', 'max',
|
|
24
|
+
]);
|
|
16
25
|
const DIMENSION_WORDS = [
|
|
17
26
|
'account', 'category', 'channel', 'cohort', 'customer', 'department', 'entity', 'geo',
|
|
18
27
|
'location', 'market', 'merchant', 'month', 'person', 'player', 'product', 'profile',
|
|
@@ -52,17 +61,32 @@ export function buildAnalysisQuestionPlan(question, followUp) {
|
|
|
52
61
|
.replace(/@(?:metric|dimension|measure|entity|model|block|term)\(([^)]+)\)/gi, (_match, identity) => identity.split(/[.:]/).at(-1) ?? identity)
|
|
53
62
|
.replace(/_/g, ' ');
|
|
54
63
|
const lower = languageQuestion.toLowerCase();
|
|
64
|
+
const definitionArtifactReference = namedArtifactDefinitionReference(cleanQuestion);
|
|
55
65
|
const entities = extractEntities(cleanQuestion);
|
|
56
66
|
const valueMentions = extractValueMentions(entities);
|
|
57
|
-
const
|
|
67
|
+
const extractedMetricTerms = normalizeAnalyticalMeasureTerms(cleanQuestion, resolveQuestionMetricTerms(lower, uniqueStrings([
|
|
58
68
|
...extractQuotedAnalyticalIdentifiers(cleanQuestion),
|
|
59
69
|
...extractMetricTerms(languageQuestion),
|
|
60
|
-
]), extractFollowUpMetricTerms(followUp, lower))
|
|
61
|
-
|
|
70
|
+
]), extractFollowUpMetricTerms(followUp, lower)),
|
|
71
|
+
// The planner owns retrieval identity, not display formatting. A sticky
|
|
72
|
+
// prior measure can be a qualified metric identifier and must survive a
|
|
73
|
+
// measure-less refinement byte-for-byte; downstream scoring normalizes
|
|
74
|
+
// independently for lexical matching.
|
|
75
|
+
{ preserveIdentity: true });
|
|
76
|
+
const extractedDimensionTerms = reconcileRankingRoles(languageQuestion, extractDimensionTerms(languageQuestion), extractedMetricTerms);
|
|
77
|
+
const typedAggregationRoles = normalizeTypedAggregationRoles(languageQuestion, extractedMetricTerms, extractedDimensionTerms);
|
|
78
|
+
// A named artifact-definition request explains the artifact; its own ID is
|
|
79
|
+
// not a requested query output. Keep the original words as retrieval terms
|
|
80
|
+
// below, but do not let an identifier such as `top_customers` manufacture a
|
|
81
|
+
// measure/dimension contract or trigger SQL execution.
|
|
82
|
+
const metricTerms = definitionArtifactReference ? [] : typedAggregationRoles.metricTerms;
|
|
83
|
+
const normalizedDimensionTerms = definitionArtifactReference ? [] : typedAggregationRoles.dimensionTerms;
|
|
62
84
|
const filterTerms = extractFilterTerms(languageQuestion, entities);
|
|
63
85
|
const timeTerms = extractTimeTerms(languageQuestion);
|
|
64
|
-
const dimensionTerms = removeTemporalFilterDimensionTerms(languageQuestion, removeFilterOnlyDimensionTerms(languageQuestion,
|
|
65
|
-
const mode =
|
|
86
|
+
const dimensionTerms = removeTemporalFilterDimensionTerms(languageQuestion, removeFilterOnlyDimensionTerms(languageQuestion, normalizedDimensionTerms), timeTerms);
|
|
87
|
+
const mode = definitionArtifactReference
|
|
88
|
+
? 'definition'
|
|
89
|
+
: inferQuestionMode({ question: cleanQuestion, lower, entities, metricTerms, dimensionTerms, followUp });
|
|
66
90
|
const routeIntent = routeIntentForMode(mode);
|
|
67
91
|
const outputShape = outputShapeForMode(mode, lower, dimensionTerms);
|
|
68
92
|
// Certified capability matching is contract-first. An explicit analytical
|
|
@@ -71,7 +95,7 @@ export function buildAnalysisQuestionPlan(question, followUp) {
|
|
|
71
95
|
const shouldConsiderCertifiedExact = certifiedExactIsPlausible(mode, entities);
|
|
72
96
|
const needsGeneratedSql = generatedSqlIsLikely(mode, shouldConsiderCertifiedExact);
|
|
73
97
|
const needsResearchWorkspace = researchWorkspaceIsLikely(mode, lower);
|
|
74
|
-
const
|
|
98
|
+
const requestedShapeBase = buildRequestedAnswerShape(cleanQuestion, {
|
|
75
99
|
lower,
|
|
76
100
|
mode,
|
|
77
101
|
metricTerms,
|
|
@@ -80,6 +104,12 @@ export function buildAnalysisQuestionPlan(question, followUp) {
|
|
|
80
104
|
timeTerms,
|
|
81
105
|
followUp,
|
|
82
106
|
});
|
|
107
|
+
const requestedShape = definitionArtifactReference
|
|
108
|
+
? {
|
|
109
|
+
...requestedShapeBase,
|
|
110
|
+
requiredOutputs: requestedShapeBase.requiredOutputs.filter((output) => canonicalShapeTerm(output) !== definitionArtifactReference),
|
|
111
|
+
}
|
|
112
|
+
: requestedShapeBase;
|
|
83
113
|
const searchTerms = uniqueStrings(uniqueStrings([
|
|
84
114
|
...tokenize(cleanQuestion),
|
|
85
115
|
...entities.flatMap((entity) => tokenize(entity.text)),
|
|
@@ -472,6 +502,87 @@ function isIdentifierLikeColumn(column) {
|
|
|
472
502
|
function isMetricLikeColumn(column) {
|
|
473
503
|
return /\b(revenue|sales|amount|price|spend|cost|total|count|score|points?|quantity|value|rate|volume)\b/i.test(column.replace(/_/g, ' '));
|
|
474
504
|
}
|
|
505
|
+
/**
|
|
506
|
+
* Recognize only the explicit artifact-definition grammar. A bare analytical
|
|
507
|
+
* phrase such as "what does revenue mean" stays available to the ordinary
|
|
508
|
+
* definition/semantic path; this helper is for an authored artifact name and
|
|
509
|
+
* deliberately refuses query-shaped suffixes.
|
|
510
|
+
*/
|
|
511
|
+
function namedArtifactDefinitionReference(question) {
|
|
512
|
+
const match = /^\s*what\s+does\s+(?:the\s+)?(.+?)\s+(?:measure|mean|define|represent)\s*[?.!]*\s*$/i.exec(question);
|
|
513
|
+
if (!match?.[1])
|
|
514
|
+
return undefined;
|
|
515
|
+
const originalSubject = match[1].trim();
|
|
516
|
+
if (/\b(?:by|per|for each|group(?:ed)? by|filter(?:ed)? by|top\s+\d+|show|list|compare)\b/i.test(originalSubject)) {
|
|
517
|
+
return undefined;
|
|
518
|
+
}
|
|
519
|
+
const subject = originalSubject
|
|
520
|
+
.replace(/\s+(?:certified\s+)?(?:block|metric|model|artifact|semantic\s+model)\s*$/i, '')
|
|
521
|
+
.trim();
|
|
522
|
+
if (!subject)
|
|
523
|
+
return undefined;
|
|
524
|
+
// Natural language can name an artifact with "block"/"metric", while an
|
|
525
|
+
// identifier is unambiguous on its own. Do not turn arbitrary prose into a
|
|
526
|
+
// no-SQL terminal merely because it uses "what does ... mean".
|
|
527
|
+
if (!/[_:./-]/.test(subject) && !/\b(?:block|metric|model|artifact)\b/i.test(originalSubject))
|
|
528
|
+
return undefined;
|
|
529
|
+
return canonicalShapeTerm(subject) || undefined;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Prefer the longest typed analytical span over its component words. This is
|
|
533
|
+
* extraction normalization only; the router still has to prove the selected
|
|
534
|
+
* physical fields and no relationship is inferred here.
|
|
535
|
+
*/
|
|
536
|
+
function normalizeTypedAggregationRoles(question, metricTerms, dimensionTerms) {
|
|
537
|
+
const match = /\b(?:total|sum|average|avg|minimum|min|maximum|max)\s+([a-z][a-z0-9_ -]{1,60}?)\s+(?:per|by|for\s+each)\s+([a-z][a-z0-9_-]*)\b/i.exec(question);
|
|
538
|
+
if (!match?.[1] || !match[2]) {
|
|
539
|
+
return {
|
|
540
|
+
metricTerms,
|
|
541
|
+
dimensionTerms: preferLongestDimensionTerms(dimensionTerms),
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
const measure = canonicalShapeTerm(match[1]);
|
|
545
|
+
const dimension = canonicalShapeTerm(match[2]);
|
|
546
|
+
if (!measure || !dimension) {
|
|
547
|
+
return {
|
|
548
|
+
metricTerms,
|
|
549
|
+
dimensionTerms: preferLongestDimensionTerms(dimensionTerms),
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
const measureParts = new Set(measure.split('_').filter(Boolean));
|
|
553
|
+
const normalizedMetrics = metricTerms.map(canonicalShapeTerm).filter(Boolean);
|
|
554
|
+
const retainedMetrics = normalizedMetrics.filter((term) => term !== measure
|
|
555
|
+
&& !AGGREGATION_OPERATOR_WORDS.has(term)
|
|
556
|
+
&& term !== `total_${measure}`
|
|
557
|
+
&& !measureParts.has(term));
|
|
558
|
+
const retainedDimensions = dimensionTerms
|
|
559
|
+
.map(canonicalShapeTerm)
|
|
560
|
+
.filter((term) => term && !measureParts.has(term));
|
|
561
|
+
return {
|
|
562
|
+
metricTerms: uniqueStrings([measure, ...retainedMetrics]).slice(0, 16),
|
|
563
|
+
dimensionTerms: preferLongestDimensionTerms(uniqueStrings([dimension, ...retainedDimensions])).slice(0, 16),
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
/** Remove generic component roles when an explicit compound role is present. */
|
|
567
|
+
function preferLongestDimensionTerms(terms) {
|
|
568
|
+
// Dimension roles are canonical identifiers, not display labels. Applying
|
|
569
|
+
// the same normalizer to both `product_category` and `product category`
|
|
570
|
+
// keeps parser variants from becoming two competing dimensions.
|
|
571
|
+
const normalized = uniqueStrings(terms.map(canonicalShapeTerm).filter(Boolean));
|
|
572
|
+
const ordered = [...normalized].sort((left, right) => right.split(/[_\s]+/).filter(Boolean).length - left.split(/[_\s]+/).filter(Boolean).length
|
|
573
|
+
|| left.localeCompare(right));
|
|
574
|
+
const selected = [];
|
|
575
|
+
for (const candidate of ordered) {
|
|
576
|
+
const tokens = candidate.split(/[_\s]+/).filter(Boolean);
|
|
577
|
+
const coveredByLonger = selected.some((longer) => {
|
|
578
|
+
const longerTokens = new Set(longer.split(/[_\s]+/).filter(Boolean));
|
|
579
|
+
return tokens.length < longerTokens.size && tokens.every((token) => longerTokens.has(token));
|
|
580
|
+
});
|
|
581
|
+
if (!coveredByLonger)
|
|
582
|
+
selected.push(candidate);
|
|
583
|
+
}
|
|
584
|
+
return selected.sort((left, right) => normalized.indexOf(left) - normalized.indexOf(right));
|
|
585
|
+
}
|
|
475
586
|
function inferQuestionMode(input) {
|
|
476
587
|
const { lower } = input;
|
|
477
588
|
// A relative measure predicate is not an ordinary entity drilldown. It asks for
|
|
@@ -690,6 +801,12 @@ function extractDimensionTerms(question) {
|
|
|
690
801
|
const rankingByMeasure = /\b(?:top|bottom|highest|lowest|most|least|best|worst|rank(?:ed|ing)?)\b[^?.!,;]{0,80}\bby\s+/i.test(lower);
|
|
691
802
|
if (/\b(?:cusomers?|custmers?|costomers?|clients?|buyers?)\b/i.test(lower))
|
|
692
803
|
terms.add('customer');
|
|
804
|
+
// Preserve authored compound roles before the generic vocabulary contributes
|
|
805
|
+
// their component words. `product category` is one business dimension, not
|
|
806
|
+
// two independent groupings named product + category.
|
|
807
|
+
if (/\b(?:by|per|for\s+each|group(?:ed)?\s+by|split\s+by)\s+product\s+categor(?:y|ies)\b/i.test(lower)) {
|
|
808
|
+
terms.add('product_category');
|
|
809
|
+
}
|
|
693
810
|
for (const word of DIMENSION_WORDS) {
|
|
694
811
|
if (new RegExp(`\\b(?:${escapeRegExp(word)}|${escapeRegExp(pluralizeDimensionWord(word))})\\b`, 'i').test(lower))
|
|
695
812
|
terms.add(normalizeTerm(word));
|
|
@@ -709,7 +826,7 @@ function extractDimensionTerms(question) {
|
|
|
709
826
|
terms.add(normalized);
|
|
710
827
|
}
|
|
711
828
|
}
|
|
712
|
-
return
|
|
829
|
+
return preferLongestDimensionTerms([...terms]).slice(0, 16);
|
|
713
830
|
}
|
|
714
831
|
/**
|
|
715
832
|
* In ranking grammar, `by <measure>` names the sort authority, while the noun
|