@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
package/dist/analytical-frame.js
CHANGED
|
@@ -24,11 +24,29 @@ export function projectResolvedAnalyticalFrame(input) {
|
|
|
24
24
|
...sourceFrame.metricConceptIds.filter((metricId) => metricId !== sourceFrame.metricConceptIds[0]),
|
|
25
25
|
])
|
|
26
26
|
: unique(resolvedMeasureIds);
|
|
27
|
-
const
|
|
27
|
+
const sourceTimeDimensionId = sourceFrame.timeContext?.timeDimensionId;
|
|
28
|
+
const sourceTimeIsGrouped = Boolean(sourceTimeDimensionId && sourceFrame.dimensions.some((binding) => binding.dimensionId === sourceTimeDimensionId && binding.role === 'group_by'));
|
|
29
|
+
const groupedDimensionIds = unique(plan.query.dimensions.flatMap((binding) => binding.status === 'resolved' && binding.qualifiedId
|
|
30
|
+
// The ordinary RAP query list intentionally carries the time phrase for
|
|
31
|
+
// binding/audit. It must not silently turn a V2 time_axis into a
|
|
32
|
+
// group_by role when the source frame did not request a time-series
|
|
33
|
+
// output; that changes a current-vs-prior ranking into per-day rows.
|
|
34
|
+
&& (binding.qualifiedId !== sourceTimeDimensionId || sourceTimeIsGrouped)
|
|
35
|
+
? [binding.qualifiedId]
|
|
36
|
+
: []));
|
|
28
37
|
const rankingRequested = Boolean(sourceFrame.ranking || plan.query.order || plan.query.limit !== undefined);
|
|
38
|
+
const sourceRankEntityDimensionId = sourceFrame.ranking?.entityDimensionId;
|
|
29
39
|
const dimensions = groupedDimensionIds.flatMap((dimensionId, index) => [
|
|
30
40
|
{ dimensionId, role: 'group_by' },
|
|
31
|
-
|
|
41
|
+
// Preserve the source frame's rank entity. Reassigning rank ownership to
|
|
42
|
+
// the first grouped dimension silently changed "top customers by product
|
|
43
|
+
// category" into "top product categories", then the compatibility guard
|
|
44
|
+
// correctly rejected the category for lacking `rank_entity` support.
|
|
45
|
+
...(rankingRequested && (sourceRankEntityDimensionId
|
|
46
|
+
? dimensionId === sourceRankEntityDimensionId
|
|
47
|
+
: index === 0)
|
|
48
|
+
? [{ dimensionId, role: 'rank_entity' }]
|
|
49
|
+
: []),
|
|
32
50
|
]);
|
|
33
51
|
for (const filter of plan.query.filters) {
|
|
34
52
|
const dimensionId = filter.binding.status === 'resolved' ? filter.binding.qualifiedId : undefined;
|
|
@@ -39,11 +57,97 @@ export function projectResolvedAnalyticalFrame(input) {
|
|
|
39
57
|
if (sourceFrame.timeContext?.timeDimensionId) {
|
|
40
58
|
dimensions.push({ dimensionId: sourceFrame.timeContext.timeDimensionId, role: 'time_axis' });
|
|
41
59
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
// Keep an unresolved host-built ambiguity intact while projecting the RAP.
|
|
61
|
+
// Its candidate IDs came from the selected metric's native capability and
|
|
62
|
+
// are the only valid structured clarification choices. Reconstructing only
|
|
63
|
+
// from a failed lexical RAP rebind turns two viable `billing account` /
|
|
64
|
+
// `service account` meanings into an empty generic gap. If RAP resolved the
|
|
65
|
+
// corresponding binding, the authoritative plan supersedes the source
|
|
66
|
+
// ambiguity as usual.
|
|
67
|
+
// Ambiguity is lane-scoped. A physical/semantic ID may legitimately occur
|
|
68
|
+
// in more than one role, but a group-by binding must never consume a filter
|
|
69
|
+
// clarification (or vice versa). Keep the source-frame and frozen RAP proof
|
|
70
|
+
// sets separated by the meaning lane before intersecting them below.
|
|
71
|
+
const resolvedPlanBindingIds = {
|
|
72
|
+
metrics: new Set(plan.query.measures.flatMap((binding) => binding.status === 'resolved' && binding.qualifiedId ? [binding.qualifiedId] : [])),
|
|
73
|
+
dimensions: new Set(plan.query.dimensions.flatMap((binding) => binding.status === 'resolved' && binding.qualifiedId ? [binding.qualifiedId] : [])),
|
|
74
|
+
filters: new Set(plan.query.filters.flatMap((filter) => filter.binding.status === 'resolved' && filter.binding.qualifiedId ? [filter.binding.qualifiedId] : [])),
|
|
75
|
+
};
|
|
76
|
+
const sourceFrameBindingIds = {
|
|
77
|
+
metrics: new Set(sourceFrame.metricConceptIds),
|
|
78
|
+
dimensions: new Set(sourceFrame.dimensions
|
|
79
|
+
.filter((binding) => binding.role !== 'filter')
|
|
80
|
+
.map((binding) => binding.dimensionId)),
|
|
81
|
+
filters: new Set([
|
|
82
|
+
...sourceFrame.dimensions
|
|
83
|
+
.filter((binding) => binding.role === 'filter')
|
|
84
|
+
.map((binding) => binding.dimensionId),
|
|
85
|
+
...sourceFrame.memberBindings.map((binding) => binding.dimensionId),
|
|
86
|
+
]),
|
|
87
|
+
};
|
|
88
|
+
const resolvedSourceAmbiguityKeys = new Set();
|
|
89
|
+
const unresolvedSourceAmbiguity = sourceFrame.ambiguity.filter((entry) => {
|
|
90
|
+
const [lane, ...parts] = entry.field.split('.');
|
|
91
|
+
const requested = normalize(parts.join('.'));
|
|
92
|
+
if (!requested)
|
|
93
|
+
return true;
|
|
94
|
+
// A server-issued clarification selection is already represented as one
|
|
95
|
+
// exact capability binding in the host-built frame and the RAP. Do not
|
|
96
|
+
// retain the lexical ambiguity that prompted that selection merely because
|
|
97
|
+
// the original natural-language phrase (for example, "name") is still in
|
|
98
|
+
// the audit query list. This is intentionally identity-based rather than
|
|
99
|
+
// label-based and applies equally to metric, dimension, and filter lanes.
|
|
100
|
+
// The exact offered ID must be resolved in that same lane on both sides;
|
|
101
|
+
// a genuine ambiguity remains when zero or more than one offered candidate
|
|
102
|
+
// is resolved in the frozen tuple.
|
|
103
|
+
const laneBindingIds = lane === 'metrics' || lane === 'dimensions' || lane === 'filters'
|
|
104
|
+
? { source: sourceFrameBindingIds[lane], plan: resolvedPlanBindingIds[lane] }
|
|
105
|
+
: undefined;
|
|
106
|
+
const exactlyResolvedCandidateIds = laneBindingIds
|
|
107
|
+
? [...new Set(entry.candidateIds.filter((candidateId) => laneBindingIds.source.has(candidateId)
|
|
108
|
+
&& laneBindingIds.plan.has(candidateId)))]
|
|
109
|
+
: [];
|
|
110
|
+
if (exactlyResolvedCandidateIds.length === 1) {
|
|
111
|
+
resolvedSourceAmbiguityKeys.add(`${lane}.${requested}`);
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
// Candidate-bearing source ambiguity is an identity contract. A RAP
|
|
115
|
+
// binding with the same lexical request may be an unrelated third field;
|
|
116
|
+
// it cannot clear the offered A/B choice. Retain that ambiguity unless the
|
|
117
|
+
// exact candidate proof above resolved one and only one offered ID.
|
|
118
|
+
// Legacy source ambiguity without candidates has no such identity proof,
|
|
119
|
+
// so it retains the historical lexical fallback below.
|
|
120
|
+
if (entry.candidateIds.length > 0)
|
|
121
|
+
return true;
|
|
122
|
+
const binding = lane === 'dimensions'
|
|
123
|
+
? plan.query.dimensions.find((item) => normalize(item.requested) === requested)
|
|
124
|
+
: lane === 'metrics'
|
|
125
|
+
? plan.query.measures.find((item) => normalize(item.requested) === requested)
|
|
126
|
+
: lane === 'filters'
|
|
127
|
+
? plan.query.filters.find((item) => normalize(item.binding.requested) === requested)?.binding
|
|
128
|
+
: undefined;
|
|
129
|
+
return !binding || binding.status !== 'resolved';
|
|
130
|
+
});
|
|
131
|
+
const ambiguity = uniqueAmbiguity([
|
|
132
|
+
...unresolvedSourceAmbiguity,
|
|
133
|
+
// Preserve the original query for audit, but do not let its unresolved
|
|
134
|
+
// lexical binding recreate an ambiguity that was discharged by exactly one
|
|
135
|
+
// of the source-offered IDs. This applies to every binding lane: a metric
|
|
136
|
+
// ambiguity has the same identity contract as a display-dimension one.
|
|
137
|
+
...plan.query.measures.flatMap((binding) => resolvedSourceAmbiguityKeys.has(`metrics.${normalize(binding.requested)}`)
|
|
138
|
+
? []
|
|
139
|
+
: frameBindingAmbiguity('metrics', binding)),
|
|
140
|
+
// The query list retains the original lexical phrase for audit. Once an
|
|
141
|
+
// exact server-issued candidate resolved the corresponding source
|
|
142
|
+
// ambiguity, that audit binding must not re-create the same ambiguity in
|
|
143
|
+
// the projected frame.
|
|
144
|
+
...plan.query.dimensions.flatMap((binding) => resolvedSourceAmbiguityKeys.has(`dimensions.${normalize(binding.requested)}`)
|
|
145
|
+
? []
|
|
146
|
+
: frameBindingAmbiguity('dimensions', binding)),
|
|
147
|
+
...plan.query.filters.flatMap((filter) => resolvedSourceAmbiguityKeys.has(`filters.${normalize(filter.binding.requested)}`)
|
|
148
|
+
? []
|
|
149
|
+
: frameBindingAmbiguity('filters', filter.binding)),
|
|
150
|
+
]);
|
|
47
151
|
const dimensionOutputs = groupedDimensionIds.map((dimensionId) => ({
|
|
48
152
|
id: localId(dimensionId),
|
|
49
153
|
kind: 'dimension',
|
|
@@ -105,6 +209,11 @@ function frameBindingAmbiguity(lane, binding) {
|
|
|
105
209
|
: `${lane.slice(0, -1).toUpperCase()}_UNRESOLVED`,
|
|
106
210
|
}];
|
|
107
211
|
}
|
|
212
|
+
function uniqueAmbiguity(entries) {
|
|
213
|
+
return entries.filter((entry, index, all) => all.findIndex((candidate) => candidate.field === entry.field
|
|
214
|
+
&& candidate.reasonCode === entry.reasonCode
|
|
215
|
+
&& candidate.candidateIds.join('\u0000') === entry.candidateIds.join('\u0000')) === index);
|
|
216
|
+
}
|
|
108
217
|
function uniqueOutputs(outputs) {
|
|
109
218
|
return outputs.filter((output, index, all) => all.findIndex((candidate) => candidate.id === output.id) === index);
|
|
110
219
|
}
|
|
@@ -136,11 +245,26 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
136
245
|
...(input.evidence.parsedIntent?.order ? { order: input.evidence.parsedIntent.order } : {}),
|
|
137
246
|
...(input.evidence.parsedIntent?.limit !== undefined ? { limit: input.evidence.parsedIntent.limit } : {}),
|
|
138
247
|
};
|
|
248
|
+
const rankingRequested = meaningType === 'ranking' || queryIntent.limit !== undefined || /\b(top|bottom|highest|lowest|rank)\b/i.test(input.question);
|
|
249
|
+
const requestedEntityTerms = unique(input.entityTerms ?? []).map(normalize).filter(Boolean);
|
|
250
|
+
const requestedEntityDisplayTerms = unique(input.entityDisplayTerms ?? []).map(normalize).filter(Boolean);
|
|
139
251
|
const requestedDimensionTerms = new Set(queryIntent.dimensions.map(normalize).filter(Boolean));
|
|
252
|
+
// The immutable host seed has already separated the entity role from the
|
|
253
|
+
// categorical lane. Retain this defensive removal for older callers whose
|
|
254
|
+
// query intent still contains both forms; otherwise a generic `customer`
|
|
255
|
+
// candidate can manufacture a false ambiguity among Customer Name, Customer
|
|
256
|
+
// Type, and Customer Order Number.
|
|
257
|
+
for (const term of [...requestedEntityTerms, ...requestedEntityDisplayTerms]) {
|
|
258
|
+
requestedDimensionTerms.delete(term);
|
|
259
|
+
}
|
|
140
260
|
for (const filter of queryIntent.filters)
|
|
141
261
|
requestedDimensionTerms.add(normalize(filter.field));
|
|
142
262
|
for (const candidate of input.candidates) {
|
|
143
|
-
|
|
263
|
+
// Entity/member cards may be useful to the bounded meaning call, but they
|
|
264
|
+
// are not dimension identities. Letting a selected Customer entity card
|
|
265
|
+
// pass through this loop reintroduced its broad lexical name as a generic
|
|
266
|
+
// dimension request and made every customer-* capability child compete.
|
|
267
|
+
if (candidate.kind !== 'semantic_member' || candidate.semanticObjectType !== 'dimension')
|
|
144
268
|
continue;
|
|
145
269
|
const capabilityDimension = resolveCapabilityDimension(candidate.qualifiedId ?? candidate.id, capability);
|
|
146
270
|
if (!capabilityDimension)
|
|
@@ -152,6 +276,45 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
152
276
|
}
|
|
153
277
|
const ambiguity = [];
|
|
154
278
|
const resolvedDimensions = new Map();
|
|
279
|
+
// A ranking may group by more than one field, but only the explicitly
|
|
280
|
+
// resolved entity display key is the entity being ranked. Keep that role
|
|
281
|
+
// separate from generic rankable capability metadata: adapters sometimes
|
|
282
|
+
// advertise `rank_entity` for a categorical grouping such as product type,
|
|
283
|
+
// which permits ranking *by* that field but does not make it an answer to
|
|
284
|
+
// “top customers by product category”.
|
|
285
|
+
const entityDisplayDimensionIds = new Set();
|
|
286
|
+
// A structured dimension choice is already a qualified, server-bound
|
|
287
|
+
// meaning. Bind it only through the metric's authored capability contract;
|
|
288
|
+
// this is deliberately stronger than adding the option label back into the
|
|
289
|
+
// natural-language question and prevents a selected member from inventing a
|
|
290
|
+
// join or a display role it does not own.
|
|
291
|
+
for (const selectedId of unique(input.selectedDimensionIds ?? [])) {
|
|
292
|
+
// A model may select a supplied semantic entity card to identify the
|
|
293
|
+
// entity. It is not a qualified display dimension and must never resolve
|
|
294
|
+
// by lexical fallback to the first same-named capability child.
|
|
295
|
+
const dimension = resolveExactCapabilityDimension(selectedId, capability);
|
|
296
|
+
if (dimension)
|
|
297
|
+
resolvedDimensions.set(dimension.dimensionId, dimension);
|
|
298
|
+
}
|
|
299
|
+
for (const requested of requestedEntityDisplayTerms) {
|
|
300
|
+
const matches = resolveEntityDisplayTerm({
|
|
301
|
+
requested,
|
|
302
|
+
entityTerms: requestedEntityTerms,
|
|
303
|
+
capability,
|
|
304
|
+
rankingRequested,
|
|
305
|
+
});
|
|
306
|
+
if (matches.length === 1) {
|
|
307
|
+
resolvedDimensions.set(matches[0].dimensionId, matches[0]);
|
|
308
|
+
entityDisplayDimensionIds.add(matches[0].dimensionId);
|
|
309
|
+
}
|
|
310
|
+
else if (matches.length > 1) {
|
|
311
|
+
ambiguity.push({
|
|
312
|
+
field: `dimensions.${requested}`,
|
|
313
|
+
candidateIds: matches.map((dimension) => dimension.dimensionId).sort(),
|
|
314
|
+
reasonCode: 'DIMENSION_AMBIGUOUS',
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
155
318
|
for (const requested of requestedDimensionTerms) {
|
|
156
319
|
const matches = resolveDimensionTerm(requested, capability, input.candidates);
|
|
157
320
|
if (matches.length === 1)
|
|
@@ -180,7 +343,6 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
180
343
|
confidence: 'exact',
|
|
181
344
|
});
|
|
182
345
|
}
|
|
183
|
-
const rankingRequested = meaningType === 'ranking' || queryIntent.limit !== undefined || /\b(top|bottom|highest|lowest|rank)\b/i.test(input.question);
|
|
184
346
|
const groupRequested = rankingRequested || /\b(by|per|for each|breakdown)\b/i.test(input.question);
|
|
185
347
|
const dimensions = [];
|
|
186
348
|
for (const dimension of resolvedDimensions.values()) {
|
|
@@ -191,7 +353,10 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
191
353
|
}
|
|
192
354
|
if (dimension.supportedRoles.includes('group_by')) {
|
|
193
355
|
dimensions.push({ dimensionId: dimension.dimensionId, role: 'group_by' });
|
|
194
|
-
|
|
356
|
+
const isExplicitEntityDisplay = entityDisplayDimensionIds.has(dimension.dimensionId);
|
|
357
|
+
if (rankingRequested
|
|
358
|
+
&& dimension.supportedRoles.includes('rank_entity')
|
|
359
|
+
&& (entityDisplayDimensionIds.size === 0 || isExplicitEntityDisplay)) {
|
|
195
360
|
dimensions.push({
|
|
196
361
|
dimensionId: dimension.dimensionId,
|
|
197
362
|
role: 'rank_entity',
|
|
@@ -202,10 +367,20 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
202
367
|
dimensions.push({ dimensionId: dimension.dimensionId, role: 'filter' });
|
|
203
368
|
}
|
|
204
369
|
}
|
|
205
|
-
|
|
206
|
-
|
|
370
|
+
// `current` can be an intrinsic business qualifier ("current BCM run
|
|
371
|
+
// rate"), not a request for a date axis. Creating a timeContext for that
|
|
372
|
+
// bare modifier forces every metric through time-dimension compatibility and
|
|
373
|
+
// incorrectly blocks snapshot metrics that already encode their current/as-
|
|
374
|
+
// of semantics. Only require a declared time role for an actual time grain
|
|
375
|
+
// or temporal filter. The metric's own governed definition remains the
|
|
376
|
+
// authority for an unqualified current/latest snapshot value.
|
|
377
|
+
const requestedTimeGrain = explicitTimeGrain(queryIntent.timeGrain) ?? inferTimeGrain(input.question);
|
|
378
|
+
const timeRequested = Boolean(queryIntent.timeRange && !isSnapshotOnlyTimeRange(queryIntent.timeRange))
|
|
379
|
+
|| Boolean(requestedTimeGrain)
|
|
380
|
+
|| hasExplicitTemporalFilter(input.question);
|
|
207
381
|
const previousYearRequested = /\b(last year|previous year|year over year|yoy)\b/i.test(input.question);
|
|
208
|
-
const currentRequested = /\b(today|current
|
|
382
|
+
const currentRequested = /\b(?:today|yesterday)\b|\b(?:this|current)\s+(?:day|week|month|quarter|year)\b|\b(?:month|quarter|year)[ -]to[ -]date\b|\b(?:mtd|qtd|ytd)\b/i.test(input.question)
|
|
383
|
+
|| previousYearRequested;
|
|
209
384
|
const timeContext = timeRequested
|
|
210
385
|
? {
|
|
211
386
|
...(capability.timeDimensions.length === 1
|
|
@@ -214,7 +389,7 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
214
389
|
timeRole: capability.timeDimensions[0].role,
|
|
215
390
|
}
|
|
216
391
|
: {}),
|
|
217
|
-
grain:
|
|
392
|
+
...(requestedTimeGrain ? { grain: requestedTimeGrain } : {}),
|
|
218
393
|
...(capability.freshness?.defaultCompletenessPolicy
|
|
219
394
|
? {
|
|
220
395
|
completenessPolicy: capability.freshness.defaultCompletenessPolicy,
|
|
@@ -338,6 +513,16 @@ export function buildDeterministicAnalyticalFrame(input) {
|
|
|
338
513
|
ambiguity,
|
|
339
514
|
};
|
|
340
515
|
}
|
|
516
|
+
/**
|
|
517
|
+
* Resolve a selected semantic member through one metric's authored capability
|
|
518
|
+
* contract. Router validation uses this to compose a persisted metric frame
|
|
519
|
+
* with a selected display/grouping field without treating the field itself as
|
|
520
|
+
* a metric meaning.
|
|
521
|
+
*/
|
|
522
|
+
export function resolveMetricCapabilityDimension(metricCandidate, selectedDimensionId) {
|
|
523
|
+
const capability = normalizeMetricCapabilityContract(metricCandidate.analyticalCapability);
|
|
524
|
+
return capability ? resolveExactCapabilityDimension(selectedDimensionId, capability) : undefined;
|
|
525
|
+
}
|
|
341
526
|
function resolveDimensionTerm(requested, capability, candidates) {
|
|
342
527
|
const candidateIds = new Set();
|
|
343
528
|
for (const candidate of candidates) {
|
|
@@ -348,10 +533,113 @@ function resolveDimensionTerm(requested, capability, candidates) {
|
|
|
348
533
|
candidateIds.add(candidate.qualifiedId ?? candidate.id);
|
|
349
534
|
}
|
|
350
535
|
}
|
|
351
|
-
return capability.dimensions.filter((dimension) =>
|
|
536
|
+
return capability.dimensions.filter((dimension) => dimensionMatchesTerm(dimension, requested) || candidateIds.has(dimension.dimensionId));
|
|
352
537
|
}
|
|
353
538
|
function resolveCapabilityDimension(id, capability) {
|
|
354
|
-
|
|
539
|
+
// A server-issued clarification can render the capability child under the
|
|
540
|
+
// stable display namespace `semantic:uncategorized:dimension:` while the
|
|
541
|
+
// same snapshot's executable contract stores its canonical
|
|
542
|
+
// `semantic:dimension:` identity. This is an exact protocol alias, not a
|
|
543
|
+
// leaf-name fallback: normalize only that namespace and require equality
|
|
544
|
+
// with a dimension declared by the selected metric capability. It keeps a
|
|
545
|
+
// persisted display choice usable after reload without allowing a client to
|
|
546
|
+
// substitute a same-named field from another model.
|
|
547
|
+
const canonicalId = canonicalCapabilityDimensionId(id);
|
|
548
|
+
return capability.dimensions.find((dimension) => dimension.dimensionId === canonicalId
|
|
549
|
+
|| dimensionMatchesTerm(dimension, normalize(id)));
|
|
550
|
+
}
|
|
551
|
+
function resolveExactCapabilityDimension(id, capability) {
|
|
552
|
+
const exactId = id.trim();
|
|
553
|
+
const canonicalId = canonicalCapabilityDimensionId(exactId);
|
|
554
|
+
return capability.dimensions.find((dimension) => dimension.dimensionId === exactId
|
|
555
|
+
|| dimension.dimensionId === canonicalId
|
|
556
|
+
// The local manifest adapter may retain the display namespace on the
|
|
557
|
+
// capability itself while a persisted structured option carries the
|
|
558
|
+
// executable namespace (or vice versa). Both normalize to the same
|
|
559
|
+
// protocol identity; no leaf-name or cross-model fallback is allowed.
|
|
560
|
+
|| canonicalCapabilityDimensionId(dimension.dimensionId) === canonicalId);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Resolve a host-owned entity display requirement only through the selected
|
|
564
|
+
* metric's authored native capability. A bare entity card is not a display
|
|
565
|
+
* field, and an arbitrary categorical attribute such as `customer_type`
|
|
566
|
+
* cannot satisfy `top customers`. If two native display/rank fields match the
|
|
567
|
+
* exact display phrase, retain a genuine typed ambiguity instead of guessing.
|
|
568
|
+
*/
|
|
569
|
+
function resolveEntityDisplayTerm(input) {
|
|
570
|
+
// New semantic indexes expose `display` explicitly, while a compatible
|
|
571
|
+
// older MetricFlow capability may expose only `rank_entity`. Both describe
|
|
572
|
+
// a metric-native entity result role. Do not relax this to every group-by
|
|
573
|
+
// field: a customer type or owner grouping is still not an answer to
|
|
574
|
+
// “top customers”.
|
|
575
|
+
const nativeEntityDimensions = input.capability.dimensions.filter((dimension) => dimension.supportedRoles.includes('group_by')
|
|
576
|
+
&& (input.rankingRequested
|
|
577
|
+
? dimension.supportedRoles.includes('rank_entity')
|
|
578
|
+
: dimension.supportedRoles.includes('display'))
|
|
579
|
+
&& (input.entityTerms.length === 0 || input.entityTerms.some((entityTerm) => termsMatch(normalize(dimension.entityId), entityTerm))));
|
|
580
|
+
const exactDisplayMatches = nativeEntityDimensions.filter((dimension) => dimensionMatchesTerm(dimension, input.requested));
|
|
581
|
+
if (exactDisplayMatches.length > 0)
|
|
582
|
+
return exactDisplayMatches;
|
|
583
|
+
// `top customers` is host-normalized to the output requirement `customer
|
|
584
|
+
// name`. A legacy capability can still prove that requirement when it has a
|
|
585
|
+
// unique native entity field literally named `customer`. Do not let a
|
|
586
|
+
// broader lexical match turn `customer_type`, `customer_owner`, or
|
|
587
|
+
// `customer_order_number` into that label. If no exact native identity
|
|
588
|
+
// exists, preserve only non-attribute entity alternatives so two genuine
|
|
589
|
+
// authored account paths remain an identifier-bound ambiguity.
|
|
590
|
+
const entityNativeMatches = nativeEntityDimensions.filter((dimension) => input.entityTerms.some((entityTerm) => nativeEntityIdentity(dimension, entityTerm) === 'exact'));
|
|
591
|
+
if (entityNativeMatches.length > 0)
|
|
592
|
+
return entityNativeMatches;
|
|
593
|
+
return nativeEntityDimensions.filter((dimension) => input.entityTerms.some((entityTerm) => nativeEntityIdentity(dimension, entityTerm) === 'qualified'));
|
|
594
|
+
}
|
|
595
|
+
function nativeEntityIdentity(dimension, entityTerm) {
|
|
596
|
+
const normalizedEntity = normalize(entityTerm);
|
|
597
|
+
if (!normalizedEntity)
|
|
598
|
+
return undefined;
|
|
599
|
+
// Use the field's own label/qualified leaf for the entity-key fallback.
|
|
600
|
+
// Retrieval aliases are deliberately excluded here: an attribute card may
|
|
601
|
+
// carry the broad entity word as a discovery alias (`customer_type` ↔
|
|
602
|
+
// `customer`) but that does not make the attribute the entity display key.
|
|
603
|
+
const identities = [
|
|
604
|
+
dimension.label,
|
|
605
|
+
localId(dimension.dimensionId),
|
|
606
|
+
].map((value) => value ? normalize(value) : '').filter(Boolean);
|
|
607
|
+
if (identities.some((identity) => identity === normalizedEntity))
|
|
608
|
+
return 'exact';
|
|
609
|
+
// A field whose own identity begins with the generic entity name is an
|
|
610
|
+
// attribute of that entity, not its display/rank key. It must not satisfy a
|
|
611
|
+
// request for the entity itself merely because it is the only field left.
|
|
612
|
+
if (identities.some((identity) => identity.startsWith(`${normalizedEntity} `)))
|
|
613
|
+
return undefined;
|
|
614
|
+
// A qualified authored identity such as `billing account` or `service
|
|
615
|
+
// account` is a genuine alternative entity role. Return it only to create a
|
|
616
|
+
// typed ambiguity when there is no exact native entity key.
|
|
617
|
+
return identities.some((identity) => identity.endsWith(` ${normalizedEntity}`))
|
|
618
|
+
? 'qualified'
|
|
619
|
+
: undefined;
|
|
620
|
+
}
|
|
621
|
+
function canonicalCapabilityDimensionId(id) {
|
|
622
|
+
return id.trim().replace(/^semantic:uncategorized:dimension:/, 'semantic:dimension:');
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Match a requested business dimension against the dimension's own authored
|
|
626
|
+
* label/leaf alias, not its model-qualified namespace. A metric model named
|
|
627
|
+
* `account_revenue` prefixes every one of its dimensions; treating that
|
|
628
|
+
* prefix as a match for "account" made fiscal period and customer name look
|
|
629
|
+
* like equally valid account display keys.
|
|
630
|
+
*/
|
|
631
|
+
function dimensionMatchesTerm(dimension, requested) {
|
|
632
|
+
const normalizedRequested = normalize(requested);
|
|
633
|
+
if (!normalizedRequested)
|
|
634
|
+
return false;
|
|
635
|
+
if (normalize(dimension.dimensionId) === normalizedRequested)
|
|
636
|
+
return true;
|
|
637
|
+
const identities = [
|
|
638
|
+
dimension.label,
|
|
639
|
+
localId(dimension.dimensionId),
|
|
640
|
+
...(dimension.aliases ?? []).map(localId),
|
|
641
|
+
].map((value) => value ? normalize(value) : '').filter(Boolean);
|
|
642
|
+
return identities.some((identity) => termsMatch(identity, normalizedRequested));
|
|
355
643
|
}
|
|
356
644
|
function phraseAppears(question, phrase) {
|
|
357
645
|
const questionTokens = new Set(normalize(question).split(' ').map(singularize));
|
|
@@ -396,13 +684,40 @@ function inferTimeGrain(question) {
|
|
|
396
684
|
if (/\b(week|weekly)\b/i.test(question))
|
|
397
685
|
return 'week';
|
|
398
686
|
if (/\b(month|monthly|mtd)\b/i.test(question))
|
|
399
|
-
return '
|
|
687
|
+
return 'month';
|
|
400
688
|
if (/\b(quarter|quarterly)\b/i.test(question))
|
|
401
689
|
return 'quarter';
|
|
402
690
|
if (/\b(year|yearly|annual|yoy)\b/i.test(question))
|
|
403
691
|
return 'year';
|
|
404
692
|
return undefined;
|
|
405
693
|
}
|
|
694
|
+
function explicitTimeGrain(value) {
|
|
695
|
+
const normalized = value?.trim().toLowerCase();
|
|
696
|
+
return normalized === 'day'
|
|
697
|
+
|| normalized === 'week'
|
|
698
|
+
|| normalized === 'month'
|
|
699
|
+
|| normalized === 'quarter'
|
|
700
|
+
|| normalized === 'year'
|
|
701
|
+
? normalized
|
|
702
|
+
: undefined;
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* The parser can represent an explicit time range without preserving every
|
|
706
|
+
* source token. Keep snapshot-only modifiers out of the physical date-role
|
|
707
|
+
* contract: a bare "current" / "latest" metric should be answered by its
|
|
708
|
+
* authored snapshot semantics, not fabricated into a time-axis request.
|
|
709
|
+
*/
|
|
710
|
+
function isSnapshotOnlyTimeRange(value) {
|
|
711
|
+
return /^(?:current|latest|snapshot|as[ -]?of[ -]?(?:latest|current))$/i.test(value.trim());
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Detect temporal filters in the user's actual wording. `current` by itself
|
|
715
|
+
* deliberately does not match: `current BCM run rate` is a metric qualifier,
|
|
716
|
+
* whereas `current month` and `today` require a date role.
|
|
717
|
+
*/
|
|
718
|
+
function hasExplicitTemporalFilter(question) {
|
|
719
|
+
return /\b(?:today|yesterday)\b|\b(?:this|current|last|previous)\s+(?:day|week|month|quarter|year)\b|\b(?:month|quarter|year)[ -]to[ -]date\b|\b(?:mtd|qtd|ytd|last year|previous year|year over year|yoy)\b|\bfy\s?\d{2,4}\b|\bfiscal\s+year\s+\d{2,4}\b/i.test(question);
|
|
720
|
+
}
|
|
406
721
|
function extractLimit(question) {
|
|
407
722
|
const match = /\b(?:top|bottom)\s+(\d{1,4})\b/i.exec(question);
|
|
408
723
|
return match ? Math.max(1, Number(match[1])) : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytical-frame.js","sourceRoot":"","sources":["../src/analytical-frame.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analytical-frame.js","sourceRoot":"","sources":["../src/analytical-frame.ts"],"names":[],"mappings":"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"}
|