@duckcodeailabs/dql-agent 1.9.3 → 1.9.5

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.
@@ -598,6 +598,14 @@ export declare function parseProposal(raw: string): ParsedProposal;
598
598
  * total for a top-product question.
599
599
  */
600
600
  export declare function missingRankedGrainOutput(questionPlan: AnalysisQuestionPlan, sql: string, governedSemanticDimensions?: string[]): string | undefined;
601
+ /**
602
+ * Qualify an ambiguous bare column (Snowflake/DuckDB "ambiguous column name X")
603
+ * with the driving table's alias. Conservative: only touches occurrences that
604
+ * are NOT already qualified (`alias.X`) and NOT an output alias (`AS X`), and
605
+ * only when a joined table actually owns the column. Returns undefined when it
606
+ * can't safely repair, so the LLM repair path still runs.
607
+ */
608
+ export declare function repairAmbiguousColumn(sql: string, error: string, schemaContext: AgentSchemaTable[]): string | undefined;
601
609
  /**
602
610
  * Anthropic-style provenance footer: one line telling a stakeholder WHERE the
603
611
  * answer came from (source tier), how much to trust it, who owns the source, and
@@ -1 +1 @@
1
- {"version":3,"file":"answer-loop.d.ts","sourceRoot":"","sources":["../src/answer-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer-loop.d.ts","sourceRoot":"","sources":["../src/answer-loop.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  import { describeDialectForPrompt, } from '@duckcodeailabs/dql-core';
18
18
  import { buildSkillBlockHints, buildSkillMetricHints, buildSkillsPrompt, expandQuestionWithSkillVocabulary, selectRelevantSkills } from './skills/loader.js';
19
19
  import { detectResultSetOperation, computeResultSetOperation } from './conversation/result-ops.js';
20
+ import { classifyGovernedQueryShape } from './semantic-bridge/query-shape.js';
20
21
  import { domainContextSearchDomains } from './domain-context.js';
21
22
  import { deriveGeneratedDraftSlug, renderGeneratedSqlDqlArtifact } from './metadata/drafts.js';
22
23
  import { buildAnalysisQuestionPlan } from './metadata/analysis-planner.js';
@@ -1152,16 +1153,19 @@ async function runAnswerLoop(input) {
1152
1153
  // spend another model call re-selecting the same member or silently fall
1153
1154
  // into exploratory SQL; surface the compiler's actionable error instead.
1154
1155
  if (!semanticBridgeAnswer && !semanticRuntimeFailure) {
1155
- const selection = await selectSemanticMembersViaLlm({
1156
- provider,
1157
- semanticLayer: input.semanticLayer,
1158
- question,
1159
- signal: input.signal,
1160
- reasoningEffort: input.reasoningEffort,
1161
- });
1162
- if (selection) {
1156
+ const requestedGroupingDims = requestedGroupingDimensions(questionPlan);
1157
+ const wantedBreakdown = questionPlan.requestedShape.dimensions.length > 0
1158
+ || questionPlan.dimensionTerms.length > 0;
1159
+ const requiredGroupingCount = requestedGroupingDims.length;
1160
+ // Capture the narrowed semantic layer so the async closure below keeps the
1161
+ // non-undefined type (TS resets narrowing across closure boundaries).
1162
+ const bridgeLayer = input.semanticLayer;
1163
+ // Compose a member selection: native first, then the runtime compiler for
1164
+ // metrics native can't express. Side effects (runtime flags, tool calls)
1165
+ // are recorded here so a retry reruns them cleanly.
1166
+ const composeSelection = async (selection) => {
1163
1167
  let composed = composeSemanticQueryFromMembers({
1164
- semanticLayer: input.semanticLayer,
1168
+ semanticLayer: bridgeLayer,
1165
1169
  question,
1166
1170
  selection,
1167
1171
  ...(input.semanticDriver ? { driver: input.semanticDriver } : {}),
@@ -1171,7 +1175,7 @@ async function runAnswerLoop(input) {
1171
1175
  try {
1172
1176
  const compiled = await input.semanticQueryCompiler(selection);
1173
1177
  composed = composeSemanticQueryFromCompiledMembers({
1174
- semanticLayer: input.semanticLayer,
1178
+ semanticLayer: bridgeLayer,
1175
1179
  question,
1176
1180
  selection: compiled.selection ?? selection,
1177
1181
  sql: compiled.sql,
@@ -1191,18 +1195,44 @@ async function runAnswerLoop(input) {
1191
1195
  semanticRuntimeFailure = error instanceof Error ? error.message : String(error);
1192
1196
  }
1193
1197
  }
1194
- // Coverage guard: if the question asked for a breakdown but the LLM
1195
- // selection produced none, the governed answer would silently DROP the
1196
- // requested grouping (governed-but-wrong). Fall through to Lane-3
1197
- // generation, which can express the breakdown.
1198
- const wantedBreakdown = questionPlan.requestedShape.dimensions.length > 0
1199
- || questionPlan.dimensionTerms.length > 0;
1200
- const requiredGroupingCount = requestedGroupingDimensions(questionPlan).length;
1201
- const dropsBreakdown = Boolean(composed)
1202
- && wantedBreakdown
1203
- && composed.dimensions.length < Math.max(1, requiredGroupingCount)
1204
- && !composed.timeDimension;
1205
- if (composed && !dropsBreakdown) {
1198
+ return composed;
1199
+ };
1200
+ // A governed answer that silently DROPS the requested grouping is governed-
1201
+ // but-wrong. Detect it so we retry (forcing the breakdown) rather than
1202
+ // adopting a scalar answer to a breakdown question.
1203
+ const dropsBreakdown = (composed) => Boolean(composed) && wantedBreakdown
1204
+ && composed.dimensions.length < Math.max(1, requiredGroupingCount)
1205
+ && !composed.timeDimension;
1206
+ let selection = await selectSemanticMembersViaLlm({
1207
+ provider,
1208
+ semanticLayer: input.semanticLayer,
1209
+ question,
1210
+ signal: input.signal,
1211
+ reasoningEffort: input.reasoningEffort,
1212
+ });
1213
+ if (selection) {
1214
+ let composed = await composeSelection(selection);
1215
+ // Retry ONCE forcing the requested breakdown dimensions before giving up
1216
+ // on the governed lane — the model sometimes omits a group-by it could
1217
+ // have kept. If it still can't, the Tier-2.5 gate decides refuse-vs-SQL.
1218
+ if (composed && dropsBreakdown(composed) && requestedGroupingDims.length > 0 && !semanticRuntimeFailure) {
1219
+ const retry = await selectSemanticMembersViaLlm({
1220
+ provider,
1221
+ semanticLayer: input.semanticLayer,
1222
+ question,
1223
+ signal: input.signal,
1224
+ reasoningEffort: input.reasoningEffort,
1225
+ requireDimensions: requestedGroupingDims,
1226
+ });
1227
+ if (retry) {
1228
+ const retryComposed = await composeSelection(retry);
1229
+ if (retryComposed && !dropsBreakdown(retryComposed)) {
1230
+ composed = retryComposed;
1231
+ selection = retry;
1232
+ }
1233
+ }
1234
+ }
1235
+ if (composed && !dropsBreakdown(composed)) {
1206
1236
  semanticBridgeAnswer = composed;
1207
1237
  semanticBridgeToolCalls.push({
1208
1238
  name: 'query_semantic_model',
@@ -1345,6 +1375,40 @@ async function runAnswerLoop(input) {
1345
1375
  // measure and only generates the join/grouping around it. Keeps the number
1346
1376
  // consistent with the governed metric. Degrades to plain generation when the metric
1347
1377
  // has no resolvable definition. The grain ledger + validation still gate the output.
1378
+ // Structured-selection gate: a governed metric matched but the compiler-owned
1379
+ // lanes above all failed. Refuse-with-reason ONLY when we are CONFIDENT the
1380
+ // failure is a MODELING gap — the requested breakdown resolves to a DECLARED
1381
+ // dimension the semantic models can't join to this metric (no_join_path). In
1382
+ // that one case free SQL would misjoin or reference an ambiguous column, so we
1383
+ // list the connected dimensions instead of guessing. Everything else — a
1384
+ // paraphrase the compile tool can still resolve, a raw column answerable by
1385
+ // safe single-table SQL, a genuine compiler gap (per-group topN/arithmetic/
1386
+ // window/HAVING), or a derived metric needing the runtime — keeps its existing
1387
+ // path (the compile_semantic_query tool + metric-anchored generation below).
1388
+ if (input.semanticLayer && semanticMetricMatch) {
1389
+ const shape = classifyGovernedQueryShape(questionPlan, semanticMetricMatch.metric.name, input.semanticLayer);
1390
+ const modelingGap = shape === 'genuine_gap'
1391
+ ? undefined
1392
+ : resolveModelingGap(questionPlan, semanticMetricMatch.metric.name, input.semanticLayer);
1393
+ if (modelingGap) {
1394
+ return buildModelingGapRefusal({
1395
+ question,
1396
+ metricName: modelingGap.metricName,
1397
+ incompatibleDimension: modelingGap.incompatibleDim,
1398
+ semanticLayer: input.semanticLayer,
1399
+ questionPlan,
1400
+ contextPack: input.contextPack,
1401
+ considered,
1402
+ memoryContext: input.memoryContext,
1403
+ artifactHits,
1404
+ businessHits,
1405
+ semanticHits,
1406
+ manifestHits,
1407
+ toolCalls: semanticBridgeToolCalls,
1408
+ providerName: provider.name,
1409
+ });
1410
+ }
1411
+ }
1348
1412
  const metricAnchor = semanticMetricMatch && input.semanticLayer
1349
1413
  ? resolveGovernedMetricDefinition(semanticMetricMatch.metric, semanticMetricNodes, input.semanticLayer)
1350
1414
  : undefined;
@@ -4972,7 +5036,124 @@ function isRetryableCertifiedExecutionError(error) {
4972
5036
  || /\bcolumn\b.*\b(?:not\s+found|does\s+not\s+exist|not\s+recognized|unknown)\b/i.test(error)
4973
5037
  || /\btable\b.*\b(?:not\s+found|does\s+not\s+exist|unknown)\b/i.test(error);
4974
5038
  }
5039
+ /**
5040
+ * A governed metric matched, the compiler-owned lanes couldn't build the exact
5041
+ * shape, and the shape is one the compiler SHOULD handle — so the gap is a
5042
+ * missing join/model relationship, not a reason to guess SQL. Refuse with the
5043
+ * connected dimensions so the user knows exactly what to add. Mirrors the
5044
+ * AGT-005 semantic-runtime-failure no_answer shape.
5045
+ */
5046
+ /**
5047
+ * Confident modeling-gap detector: does the requested breakdown resolve to a
5048
+ * DECLARED dimension the semantic models can't join to this metric? Only then is
5049
+ * a compose failure a real modeling gap (list the connected dims, refuse) rather
5050
+ * than a paraphrase the compile tool can resolve or a raw column safe SQL can
5051
+ * answer. Matching is intentionally CONSERVATIVE (name/label/qualified equality),
5052
+ * so an uncertain match falls through to generation — never a false refusal.
5053
+ */
5054
+ function resolveModelingGap(questionPlan, metricName, semanticLayer) {
5055
+ const canonical = semanticLayer.listMetrics().find((metric) => metric.name === metricName
5056
+ || metric.name.endsWith(`.${metricName}`)
5057
+ || metricName.endsWith(`.${metric.name}`))?.name ?? metricName;
5058
+ let explained;
5059
+ try {
5060
+ explained = semanticLayer.explainCompatibleDimensions([canonical]);
5061
+ }
5062
+ catch {
5063
+ return undefined;
5064
+ }
5065
+ const { compatible, incompatible } = explained;
5066
+ // A declared dimension the join graph can't reach from this metric. Ignore
5067
+ // metric_unresolved (a name-resolution miss, not a user-facing modeling gap).
5068
+ const gappy = incompatible.filter((dim) => dim.reason === 'no_join_path' || dim.reason === 'not_shared_across_metrics');
5069
+ if (gappy.length === 0)
5070
+ return undefined;
5071
+ const requested = [
5072
+ ...questionPlan.requestedShape.dimensions,
5073
+ ...questionPlan.dimensionTerms,
5074
+ ].map((value) => value.trim()).filter(Boolean);
5075
+ if (requested.length === 0)
5076
+ return undefined;
5077
+ const lastSegment = (name) => name?.split(/[._]/).pop();
5078
+ const matchesDim = (phrase, dim) => conceptsEquivalent(phrase, dim.name)
5079
+ || (dim.label ? conceptsEquivalent(phrase, dim.label) : false)
5080
+ || (dim.qualifiedName ? conceptsEquivalent(phrase, dim.qualifiedName) : false)
5081
+ || (lastSegment(dim.qualifiedName) ? conceptsEquivalent(phrase, lastSegment(dim.qualifiedName)) : false);
5082
+ for (const phrase of requested) {
5083
+ // A phrase that also matches a CONNECTED dimension is not a gap — the compose/
5084
+ // retry lane owns it. Only refuse when the phrase matches an unconnected dim
5085
+ // and nothing connected.
5086
+ if (compatible.some((dim) => matchesDim(phrase, dim)))
5087
+ continue;
5088
+ const hit = gappy.find((dim) => matchesDim(phrase, dim));
5089
+ if (hit) {
5090
+ const connected = compatible.map((dim) => dim.label || dim.name).slice(0, 12);
5091
+ return { metricName: canonical, incompatibleDim: hit.name, connected };
5092
+ }
5093
+ }
5094
+ return undefined;
5095
+ }
5096
+ function buildModelingGapRefusal(input) {
5097
+ const compatible = (() => {
5098
+ try {
5099
+ return input.semanticLayer.explainCompatibleDimensions([input.metricName]).compatible;
5100
+ }
5101
+ catch {
5102
+ return [];
5103
+ }
5104
+ })();
5105
+ const connected = compatible.map((dimension) => dimension.label || dimension.name).slice(0, 12);
5106
+ const requested = [
5107
+ ...input.questionPlan.requestedShape.dimensions,
5108
+ ...input.questionPlan.dimensionTerms,
5109
+ ].filter((value, index, all) => value && all.indexOf(value) === index);
5110
+ const requestedText = input.incompatibleDimension
5111
+ ? `by ${input.incompatibleDimension}`
5112
+ : requested.length > 0 ? `by ${requested.join(', ')}` : 'by the requested breakdown';
5113
+ const text = [
5114
+ `“${input.metricName}” can’t be grouped ${requestedText} — the semantic models don’t declare a join path between them.`,
5115
+ connected.length > 0
5116
+ ? `It CAN be grouped by: ${connected.join(', ')}.`
5117
+ : 'No compatible group-by dimension is modeled for this metric.',
5118
+ 'To enable this breakdown, add the relationship (a join/entity) in the dbt semantic models and recompile. Nothing was executed.',
5119
+ ].join(' ');
5120
+ return {
5121
+ kind: 'no_answer',
5122
+ sourceTier: 'no_answer',
5123
+ certification: 'analyst_review_required',
5124
+ reviewStatus: 'none',
5125
+ confidence: 0,
5126
+ text,
5127
+ answer: text,
5128
+ refusalCode: 'modeling_gap',
5129
+ refusalDetails: { code: 'modeling_gap', message: text },
5130
+ citations: [],
5131
+ memoryContext: input.memoryContext,
5132
+ evidence: buildNoAnswerEvidence({
5133
+ question: input.question,
5134
+ reason: text,
5135
+ artifactHits: input.artifactHits,
5136
+ businessHits: input.businessHits,
5137
+ semanticHits: input.semanticHits,
5138
+ manifestHits: input.manifestHits,
5139
+ considered: input.considered,
5140
+ memoryContext: input.memoryContext ?? [],
5141
+ toolCalls: input.toolCalls,
5142
+ }),
5143
+ contextPack: input.contextPack,
5144
+ considered: input.considered,
5145
+ providerUsed: input.providerName,
5146
+ };
5147
+ }
4975
5148
  function repairGeneratedSqlLocally(sql, error, schemaContext) {
5149
+ // Ambiguous column: a bare column exists in more than one joined table (e.g. a
5150
+ // conformed `report_as_of_dt` on both the fact and a joined dimension), and the
5151
+ // generated SQL referenced it unqualified. Qualify every UNQUALIFIED occurrence
5152
+ // with the DRIVING table (first FROM) when it owns the column — the fact grain
5153
+ // is the intended one, and it's exactly what the semantic compiler would emit.
5154
+ const ambiguousRepair = repairAmbiguousColumn(sql, error, schemaContext);
5155
+ if (ambiguousRepair)
5156
+ return ambiguousRepair;
4976
5157
  const missing = error.match(/(?:Values list|Referenced table)\s+"([^"]+)"\s+does not have a column named\s+"([^"]+)"/i)
4977
5158
  ?? error.match(/Referenced column\s+"([^"]+)"\s+not found/i);
4978
5159
  if (!missing)
@@ -4991,6 +5172,37 @@ function repairGeneratedSqlLocally(sql, error, schemaContext) {
4991
5172
  }
4992
5173
  return undefined;
4993
5174
  }
5175
+ /**
5176
+ * Qualify an ambiguous bare column (Snowflake/DuckDB "ambiguous column name X")
5177
+ * with the driving table's alias. Conservative: only touches occurrences that
5178
+ * are NOT already qualified (`alias.X`) and NOT an output alias (`AS X`), and
5179
+ * only when a joined table actually owns the column. Returns undefined when it
5180
+ * can't safely repair, so the LLM repair path still runs.
5181
+ */
5182
+ export function repairAmbiguousColumn(sql, error, schemaContext) {
5183
+ const match = error.match(/ambiguous column(?:\s+name)?['":\s]+`?"?([A-Za-z_][\w]*)"?`?/i);
5184
+ const column = match?.[1];
5185
+ if (!column)
5186
+ return undefined;
5187
+ const aliasToRelation = extractSqlAliases(sql);
5188
+ const owners = aliasesWithColumn(aliasToRelation, schemaContext, column);
5189
+ // Prefer the first FROM table's alias when it owns the column (the fact grain).
5190
+ const firstFrom = /\bfrom\s+[A-Za-z_][\w.]*(?:\s+as)?\s+([A-Za-z_]\w*)/i.exec(sql)?.[1];
5191
+ const target = firstFrom && owners.includes(firstFrom) ? firstFrom : owners[0];
5192
+ if (!target)
5193
+ return undefined;
5194
+ const bare = new RegExp(`(?<![\\w.])${escapeRegex(column)}\\b`, 'gi');
5195
+ let changed = false;
5196
+ const repaired = sql.replace(bare, (m, offset, whole) => {
5197
+ // Never rewrite an output alias `... AS column` (any run of whitespace).
5198
+ if (/\bas\s+$/i.test(whole.slice(Math.max(0, offset - 8), offset)))
5199
+ return m;
5200
+ changed = true;
5201
+ // Preserve the occurrence's original casing (the error may upper-case it).
5202
+ return `${target}.${m}`;
5203
+ });
5204
+ return changed && repaired !== sql ? repaired : undefined;
5205
+ }
4994
5206
  function extractSqlAliases(sql) {
4995
5207
  const aliases = new Map();
4996
5208
  for (const match of sql.matchAll(/\b(?:from|join)\s+([a-zA-Z_][\w.]*)(?:\s+as)?\s+([a-zA-Z_][\w]*)/gi)) {