@duckcodeailabs/dql-agent 1.14.2 → 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.
Files changed (145) hide show
  1. package/dist/agent-run-engine.d.ts +63 -2
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +864 -29
  4. package/dist/agent-run-engine.js.map +1 -1
  5. package/dist/agent-run-planner.d.ts +6 -0
  6. package/dist/agent-run-planner.d.ts.map +1 -1
  7. package/dist/agent-run-planner.js +2 -0
  8. package/dist/agent-run-planner.js.map +1 -1
  9. package/dist/agent-run-store.d.ts.map +1 -1
  10. package/dist/agent-run-store.js +48 -3
  11. package/dist/agent-run-store.js.map +1 -1
  12. package/dist/agentic/analyst-loop.d.ts +7 -1
  13. package/dist/agentic/analyst-loop.d.ts.map +1 -1
  14. package/dist/agentic/analyst-loop.js +163 -0
  15. package/dist/agentic/analyst-loop.js.map +1 -1
  16. package/dist/agentic/assumptions.d.ts +1 -1
  17. package/dist/agentic/assumptions.d.ts.map +1 -1
  18. package/dist/agentic/assumptions.js.map +1 -1
  19. package/dist/agentic/research-agent.d.ts.map +1 -1
  20. package/dist/agentic/research-agent.js +10 -1
  21. package/dist/agentic/research-agent.js.map +1 -1
  22. package/dist/agentic/sql-authorization.d.ts +8 -0
  23. package/dist/agentic/sql-authorization.d.ts.map +1 -1
  24. package/dist/agentic/sql-authorization.js +3 -0
  25. package/dist/agentic/sql-authorization.js.map +1 -1
  26. package/dist/analytical-compatibility.d.ts.map +1 -1
  27. package/dist/analytical-compatibility.js +8 -1
  28. package/dist/analytical-compatibility.js.map +1 -1
  29. package/dist/analytical-failure-repair.d.ts.map +1 -1
  30. package/dist/analytical-failure-repair.js +6 -2
  31. package/dist/analytical-failure-repair.js.map +1 -1
  32. package/dist/analytical-frame.d.ts +23 -1
  33. package/dist/analytical-frame.d.ts.map +1 -1
  34. package/dist/analytical-frame.js +322 -16
  35. package/dist/analytical-frame.js.map +1 -1
  36. package/dist/analytical-orchestration.d.ts +314 -3
  37. package/dist/analytical-orchestration.d.ts.map +1 -1
  38. package/dist/analytical-orchestration.js +486 -43
  39. package/dist/analytical-orchestration.js.map +1 -1
  40. package/dist/answer-loop.d.ts +64 -8
  41. package/dist/answer-loop.d.ts.map +1 -1
  42. package/dist/answer-loop.js +528 -67
  43. package/dist/answer-loop.js.map +1 -1
  44. package/dist/ask-observability/index.d.ts +11 -0
  45. package/dist/ask-observability/index.d.ts.map +1 -0
  46. package/dist/ask-observability/index.js +7 -0
  47. package/dist/ask-observability/index.js.map +1 -0
  48. package/dist/ask-observability/instrumentation.d.ts +35 -0
  49. package/dist/ask-observability/instrumentation.d.ts.map +1 -0
  50. package/dist/ask-observability/instrumentation.js +472 -0
  51. package/dist/ask-observability/instrumentation.js.map +1 -0
  52. package/dist/ask-observability/observer.d.ts +62 -0
  53. package/dist/ask-observability/observer.d.ts.map +1 -0
  54. package/dist/ask-observability/observer.js +537 -0
  55. package/dist/ask-observability/observer.js.map +1 -0
  56. package/dist/ask-observability/portable.d.ts +98 -0
  57. package/dist/ask-observability/portable.d.ts.map +1 -0
  58. package/dist/ask-observability/portable.js +527 -0
  59. package/dist/ask-observability/portable.js.map +1 -0
  60. package/dist/ask-observability/store.d.ts +130 -0
  61. package/dist/ask-observability/store.d.ts.map +1 -0
  62. package/dist/ask-observability/store.js +1114 -0
  63. package/dist/ask-observability/store.js.map +1 -0
  64. package/dist/ask-observability/types.d.ts +357 -0
  65. package/dist/ask-observability/types.d.ts.map +1 -0
  66. package/dist/ask-observability/types.js +2 -0
  67. package/dist/ask-observability/types.js.map +1 -0
  68. package/dist/ask-observability/utils.d.ts +21 -0
  69. package/dist/ask-observability/utils.d.ts.map +1 -0
  70. package/dist/ask-observability/utils.js +102 -0
  71. package/dist/ask-observability/utils.js.map +1 -0
  72. package/dist/generated-analytical-proposal.d.ts +37 -1
  73. package/dist/generated-analytical-proposal.d.ts.map +1 -1
  74. package/dist/generated-analytical-proposal.js +211 -3
  75. package/dist/generated-analytical-proposal.js.map +1 -1
  76. package/dist/governed-relational-compiler.d.ts +15 -0
  77. package/dist/governed-relational-compiler.d.ts.map +1 -1
  78. package/dist/governed-relational-compiler.js +99 -1
  79. package/dist/governed-relational-compiler.js.map +1 -1
  80. package/dist/index.d.ts +9 -7
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +6 -4
  83. package/dist/index.js.map +1 -1
  84. package/dist/intent-controller.d.ts +10 -0
  85. package/dist/intent-controller.d.ts.map +1 -1
  86. package/dist/intent-controller.js +1 -1
  87. package/dist/intent-controller.js.map +1 -1
  88. package/dist/meaning-resolution.d.ts +78 -6
  89. package/dist/meaning-resolution.d.ts.map +1 -1
  90. package/dist/meaning-resolution.js +331 -38
  91. package/dist/meaning-resolution.js.map +1 -1
  92. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  93. package/dist/metadata/analysis-planner.js +21 -1
  94. package/dist/metadata/analysis-planner.js.map +1 -1
  95. package/dist/metadata/catalog.d.ts.map +1 -1
  96. package/dist/metadata/catalog.js +1 -1
  97. package/dist/metadata/catalog.js.map +1 -1
  98. package/dist/metadata/meaning-evidence.d.ts +9 -2
  99. package/dist/metadata/meaning-evidence.d.ts.map +1 -1
  100. package/dist/metadata/meaning-evidence.js +261 -11
  101. package/dist/metadata/meaning-evidence.js.map +1 -1
  102. package/dist/plan-execution-adapter.d.ts +9 -1
  103. package/dist/plan-execution-adapter.d.ts.map +1 -1
  104. package/dist/plan-execution-adapter.js +93 -13
  105. package/dist/plan-execution-adapter.js.map +1 -1
  106. package/dist/provider-egress.d.ts +24 -10
  107. package/dist/provider-egress.d.ts.map +1 -1
  108. package/dist/provider-egress.js +22 -17
  109. package/dist/provider-egress.js.map +1 -1
  110. package/dist/providers/claude.d.ts.map +1 -1
  111. package/dist/providers/claude.js +10 -9
  112. package/dist/providers/claude.js.map +1 -1
  113. package/dist/providers/dispatch.d.ts +27 -1
  114. package/dist/providers/dispatch.d.ts.map +1 -1
  115. package/dist/providers/dispatch.js +63 -1
  116. package/dist/providers/dispatch.js.map +1 -1
  117. package/dist/providers/gemini.js +10 -10
  118. package/dist/providers/gemini.js.map +1 -1
  119. package/dist/providers/index.d.ts +2 -2
  120. package/dist/providers/index.d.ts.map +1 -1
  121. package/dist/providers/index.js +1 -1
  122. package/dist/providers/index.js.map +1 -1
  123. package/dist/providers/ollama.js +15 -15
  124. package/dist/providers/ollama.js.map +1 -1
  125. package/dist/providers/openai.js +22 -22
  126. package/dist/providers/openai.js.map +1 -1
  127. package/dist/providers/types.d.ts +52 -0
  128. package/dist/providers/types.d.ts.map +1 -1
  129. package/dist/providers/types.js.map +1 -1
  130. package/dist/relationship-proof.d.ts +81 -0
  131. package/dist/relationship-proof.d.ts.map +1 -1
  132. package/dist/relationship-proof.js +228 -4
  133. package/dist/relationship-proof.js.map +1 -1
  134. package/dist/resolved-analytical-plan.d.ts +18 -4
  135. package/dist/resolved-analytical-plan.d.ts.map +1 -1
  136. package/dist/resolved-analytical-plan.js +764 -47
  137. package/dist/resolved-analytical-plan.js.map +1 -1
  138. package/dist/router.d.ts +10 -1
  139. package/dist/router.d.ts.map +1 -1
  140. package/dist/router.js +1785 -213
  141. package/dist/router.js.map +1 -1
  142. package/dist/semantic-bridge/compose.d.ts.map +1 -1
  143. package/dist/semantic-bridge/compose.js +23 -4
  144. package/dist/semantic-bridge/compose.js.map +1 -1
  145. package/package.json +4 -4
@@ -35,9 +35,18 @@ export function projectResolvedAnalyticalFrame(input) {
35
35
  ? [binding.qualifiedId]
36
36
  : []));
37
37
  const rankingRequested = Boolean(sourceFrame.ranking || plan.query.order || plan.query.limit !== undefined);
38
+ const sourceRankEntityDimensionId = sourceFrame.ranking?.entityDimensionId;
38
39
  const dimensions = groupedDimensionIds.flatMap((dimensionId, index) => [
39
40
  { dimensionId, role: 'group_by' },
40
- ...(rankingRequested && index === 0 ? [{ dimensionId, role: 'rank_entity' }] : []),
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
+ : []),
41
50
  ]);
42
51
  for (const filter of plan.query.filters) {
43
52
  const dimensionId = filter.binding.status === 'resolved' ? filter.binding.qualifiedId : undefined;
@@ -48,11 +57,97 @@ export function projectResolvedAnalyticalFrame(input) {
48
57
  if (sourceFrame.timeContext?.timeDimensionId) {
49
58
  dimensions.push({ dimensionId: sourceFrame.timeContext.timeDimensionId, role: 'time_axis' });
50
59
  }
51
- const ambiguity = [
52
- ...plan.query.measures.flatMap((binding) => frameBindingAmbiguity('metrics', binding)),
53
- ...plan.query.dimensions.flatMap((binding) => frameBindingAmbiguity('dimensions', binding)),
54
- ...plan.query.filters.flatMap((filter) => frameBindingAmbiguity('filters', filter.binding)),
55
- ];
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
+ ]);
56
151
  const dimensionOutputs = groupedDimensionIds.map((dimensionId) => ({
57
152
  id: localId(dimensionId),
58
153
  kind: 'dimension',
@@ -114,6 +209,11 @@ function frameBindingAmbiguity(lane, binding) {
114
209
  : `${lane.slice(0, -1).toUpperCase()}_UNRESOLVED`,
115
210
  }];
116
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
+ }
117
217
  function uniqueOutputs(outputs) {
118
218
  return outputs.filter((output, index, all) => all.findIndex((candidate) => candidate.id === output.id) === index);
119
219
  }
@@ -145,11 +245,26 @@ export function buildDeterministicAnalyticalFrame(input) {
145
245
  ...(input.evidence.parsedIntent?.order ? { order: input.evidence.parsedIntent.order } : {}),
146
246
  ...(input.evidence.parsedIntent?.limit !== undefined ? { limit: input.evidence.parsedIntent.limit } : {}),
147
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);
148
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
+ }
149
260
  for (const filter of queryIntent.filters)
150
261
  requestedDimensionTerms.add(normalize(filter.field));
151
262
  for (const candidate of input.candidates) {
152
- if (candidate.kind !== 'semantic_member')
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')
153
268
  continue;
154
269
  const capabilityDimension = resolveCapabilityDimension(candidate.qualifiedId ?? candidate.id, capability);
155
270
  if (!capabilityDimension)
@@ -161,6 +276,45 @@ export function buildDeterministicAnalyticalFrame(input) {
161
276
  }
162
277
  const ambiguity = [];
163
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
+ }
164
318
  for (const requested of requestedDimensionTerms) {
165
319
  const matches = resolveDimensionTerm(requested, capability, input.candidates);
166
320
  if (matches.length === 1)
@@ -189,7 +343,6 @@ export function buildDeterministicAnalyticalFrame(input) {
189
343
  confidence: 'exact',
190
344
  });
191
345
  }
192
- const rankingRequested = meaningType === 'ranking' || queryIntent.limit !== undefined || /\b(top|bottom|highest|lowest|rank)\b/i.test(input.question);
193
346
  const groupRequested = rankingRequested || /\b(by|per|for each|breakdown)\b/i.test(input.question);
194
347
  const dimensions = [];
195
348
  for (const dimension of resolvedDimensions.values()) {
@@ -200,7 +353,10 @@ export function buildDeterministicAnalyticalFrame(input) {
200
353
  }
201
354
  if (dimension.supportedRoles.includes('group_by')) {
202
355
  dimensions.push({ dimensionId: dimension.dimensionId, role: 'group_by' });
203
- if (rankingRequested && dimension.supportedRoles.includes('rank_entity')) {
356
+ const isExplicitEntityDisplay = entityDisplayDimensionIds.has(dimension.dimensionId);
357
+ if (rankingRequested
358
+ && dimension.supportedRoles.includes('rank_entity')
359
+ && (entityDisplayDimensionIds.size === 0 || isExplicitEntityDisplay)) {
204
360
  dimensions.push({
205
361
  dimensionId: dimension.dimensionId,
206
362
  role: 'rank_entity',
@@ -211,10 +367,20 @@ export function buildDeterministicAnalyticalFrame(input) {
211
367
  dimensions.push({ dimensionId: dimension.dimensionId, role: 'filter' });
212
368
  }
213
369
  }
214
- const timeRequested = Boolean(queryIntent.timeRange || queryIntent.timeGrain) ||
215
- /\b(today|current|this (?:day|week|month|quarter|year)|month[ -]to[ -]date|mtd|last year|previous year|year over year|yoy)\b/i.test(input.question);
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);
216
381
  const previousYearRequested = /\b(last year|previous year|year over year|yoy)\b/i.test(input.question);
217
- const currentRequested = /\b(today|current|this (?:day|week|month|quarter|year)|month[ -]to[ -]date|mtd)\b/i.test(input.question) || previousYearRequested;
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;
218
384
  const timeContext = timeRequested
219
385
  ? {
220
386
  ...(capability.timeDimensions.length === 1
@@ -223,7 +389,7 @@ export function buildDeterministicAnalyticalFrame(input) {
223
389
  timeRole: capability.timeDimensions[0].role,
224
390
  }
225
391
  : {}),
226
- grain: queryIntent.timeGrain ?? inferTimeGrain(input.question),
392
+ ...(requestedTimeGrain ? { grain: requestedTimeGrain } : {}),
227
393
  ...(capability.freshness?.defaultCompletenessPolicy
228
394
  ? {
229
395
  completenessPolicy: capability.freshness.defaultCompletenessPolicy,
@@ -347,6 +513,16 @@ export function buildDeterministicAnalyticalFrame(input) {
347
513
  ambiguity,
348
514
  };
349
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
+ }
350
526
  function resolveDimensionTerm(requested, capability, candidates) {
351
527
  const candidateIds = new Set();
352
528
  for (const candidate of candidates) {
@@ -357,10 +533,113 @@ function resolveDimensionTerm(requested, capability, candidates) {
357
533
  candidateIds.add(candidate.qualifiedId ?? candidate.id);
358
534
  }
359
535
  }
360
- return capability.dimensions.filter((dimension) => termsMatch(normalize(dimension.dimensionId), requested) || candidateIds.has(dimension.dimensionId));
536
+ return capability.dimensions.filter((dimension) => dimensionMatchesTerm(dimension, requested) || candidateIds.has(dimension.dimensionId));
361
537
  }
362
538
  function resolveCapabilityDimension(id, capability) {
363
- return capability.dimensions.find((dimension) => dimension.dimensionId === id || termsMatch(normalize(dimension.dimensionId), normalize(id)));
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));
364
643
  }
365
644
  function phraseAppears(question, phrase) {
366
645
  const questionTokens = new Set(normalize(question).split(' ').map(singularize));
@@ -405,13 +684,40 @@ function inferTimeGrain(question) {
405
684
  if (/\b(week|weekly)\b/i.test(question))
406
685
  return 'week';
407
686
  if (/\b(month|monthly|mtd)\b/i.test(question))
408
- return 'day';
687
+ return 'month';
409
688
  if (/\b(quarter|quarterly)\b/i.test(question))
410
689
  return 'quarter';
411
690
  if (/\b(year|yearly|annual|yoy)\b/i.test(question))
412
691
  return 'year';
413
692
  return undefined;
414
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
+ }
415
721
  function extractLimit(question) {
416
722
  const match = /\b(?:top|bottom)\s+(\d{1,4})\b/i.exec(question);
417
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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"}