@duckcodeailabs/dql-cli 1.6.33 → 1.7.0

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 (84) hide show
  1. package/dist/apps-api.d.ts +9 -0
  2. package/dist/apps-api.d.ts.map +1 -1
  3. package/dist/apps-api.js +111 -13
  4. package/dist/apps-api.js.map +1 -1
  5. package/dist/args.d.ts +4 -0
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +7 -0
  8. package/dist/args.js.map +1 -1
  9. package/dist/assets/dql-notebook/assets/index-2Tszpipm.js +5914 -0
  10. package/dist/assets/dql-notebook/assets/index-dSyhu_eU.css +1 -0
  11. package/dist/assets/dql-notebook/index.html +2 -2
  12. package/dist/block-invocation.d.ts +31 -0
  13. package/dist/block-invocation.d.ts.map +1 -0
  14. package/dist/block-invocation.js +82 -0
  15. package/dist/block-invocation.js.map +1 -0
  16. package/dist/block-studio-import.d.ts +2 -0
  17. package/dist/block-studio-import.d.ts.map +1 -1
  18. package/dist/block-studio-import.js.map +1 -1
  19. package/dist/commands/agent.d.ts +1 -1
  20. package/dist/commands/agent.d.ts.map +1 -1
  21. package/dist/commands/agent.js +16 -6
  22. package/dist/commands/agent.js.map +1 -1
  23. package/dist/commands/app.d.ts +1 -2
  24. package/dist/commands/app.d.ts.map +1 -1
  25. package/dist/commands/app.js +6 -9
  26. package/dist/commands/app.js.map +1 -1
  27. package/dist/commands/compile.js +1 -1
  28. package/dist/commands/compile.js.map +1 -1
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +65 -92
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/migrate.d.ts +87 -0
  33. package/dist/commands/migrate.d.ts.map +1 -1
  34. package/dist/commands/migrate.js +812 -3
  35. package/dist/commands/migrate.js.map +1 -1
  36. package/dist/commands/model.d.ts +4 -0
  37. package/dist/commands/model.d.ts.map +1 -0
  38. package/dist/commands/model.js +219 -0
  39. package/dist/commands/model.js.map +1 -0
  40. package/dist/commands/new.d.ts.map +1 -1
  41. package/dist/commands/new.js +28 -4
  42. package/dist/commands/new.js.map +1 -1
  43. package/dist/commands/parse.d.ts.map +1 -1
  44. package/dist/commands/parse.js +32 -0
  45. package/dist/commands/parse.js.map +1 -1
  46. package/dist/commands/sync.d.ts.map +1 -1
  47. package/dist/commands/sync.js +23 -7
  48. package/dist/commands/sync.js.map +1 -1
  49. package/dist/index.js +19 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/llm/answer-loop-tools.d.ts +2 -5
  52. package/dist/llm/answer-loop-tools.d.ts.map +1 -1
  53. package/dist/llm/answer-loop-tools.js +346 -40
  54. package/dist/llm/answer-loop-tools.js.map +1 -1
  55. package/dist/llm/providers/dql-agent-provider.d.ts +13 -1
  56. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  57. package/dist/llm/providers/dql-agent-provider.js +145 -37
  58. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  59. package/dist/llm/tools.d.ts +7 -0
  60. package/dist/llm/tools.d.ts.map +1 -1
  61. package/dist/llm/tools.js +65 -2
  62. package/dist/llm/tools.js.map +1 -1
  63. package/dist/llm/types.d.ts +13 -3
  64. package/dist/llm/types.d.ts.map +1 -1
  65. package/dist/local-runtime.d.ts +122 -7
  66. package/dist/local-runtime.d.ts.map +1 -1
  67. package/dist/local-runtime.js +4329 -298
  68. package/dist/local-runtime.js.map +1 -1
  69. package/dist/metricflow.d.ts +2 -0
  70. package/dist/metricflow.d.ts.map +1 -1
  71. package/dist/metricflow.js +10 -0
  72. package/dist/metricflow.js.map +1 -1
  73. package/dist/mixed-source-sql.d.ts +53 -0
  74. package/dist/mixed-source-sql.d.ts.map +1 -0
  75. package/dist/mixed-source-sql.js +311 -0
  76. package/dist/mixed-source-sql.js.map +1 -0
  77. package/dist/notebook-datasets.d.ts +120 -0
  78. package/dist/notebook-datasets.d.ts.map +1 -0
  79. package/dist/notebook-datasets.js +484 -0
  80. package/dist/notebook-datasets.js.map +1 -0
  81. package/dist/package.json +10 -10
  82. package/package.json +10 -10
  83. package/dist/assets/dql-notebook/assets/index-B6x1cRJo.js +0 -5698
  84. package/dist/assets/dql-notebook/assets/index-D9Owd4EN.css +0 -1
@@ -1,6 +1,11 @@
1
- import { dqlToolNamesForSurface, expandGroundingFromCatalog, openMetadataCatalog, } from '@duckcodeailabs/dql-agent';
2
- import { DQLContext } from '@duckcodeailabs/dql-mcp';
3
- import { buildAgentTools } from './tools.js';
1
+ import { dqlToolNamesForSurface, expandGroundingFromCatalog, openMetadataCatalog, } from "@duckcodeailabs/dql-agent";
2
+ import { DQLContext } from "@duckcodeailabs/dql-mcp";
3
+ import { spawn } from "node:child_process";
4
+ import { readdirSync, readFileSync } from "node:fs";
5
+ import { join, relative } from "node:path";
6
+ import { buildAgentTools } from "./tools.js";
7
+ import { QueryExecutor } from "@duckcodeailabs/dql-connectors";
8
+ import { NotebookDatasetWorkspace } from "../notebook-datasets.js";
4
9
  export function createGroundingContextExpander(projectRoot) {
5
10
  return async (request) => {
6
11
  const catalog = openMetadataCatalog(projectRoot);
@@ -12,56 +17,357 @@ export function createGroundingContextExpander(projectRoot) {
12
17
  }
13
18
  };
14
19
  }
15
- export function buildAnswerLoopTools(projectRoot, options = {}) {
20
+ export function buildAnswerLoopTools(projectRoot) {
16
21
  const ctx = new DQLContext({ projectRoot });
17
- const allowed = new Set(dqlToolNamesForSurface('answer_loop'));
18
- return buildAgentTools(ctx)
19
- .filter((tool) => allowed.has(tool.name))
20
- .map((tool) => wrapAnswerLoopTool(tool, options));
22
+ const allowed = new Set(dqlToolNamesForSurface("answer_loop"));
23
+ const catalogTools = buildAgentTools(ctx).filter((tool) => allowed.has(tool.name));
24
+ return [
25
+ ...catalogTools,
26
+ projectSourceSearchTool(projectRoot),
27
+ ...notebookDatasetTools(projectRoot),
28
+ ];
21
29
  }
22
- function wrapAnswerLoopTool(tool, options) {
23
- if (tool.name === 'query_via_metadata')
24
- return wrapMetadataPlanningTool(tool, options);
25
- if (tool.name === 'query_via_block')
26
- return wrapRuntimeTool(tool, options);
27
- return tool;
28
- }
29
- function wrapMetadataPlanningTool(tool, options) {
30
- return {
31
- ...tool,
32
- run: async (args) => {
33
- const input = objectArgs(args);
34
- return tool.run({
35
- ...input,
36
- dryRun: true,
37
- saveDraft: false,
38
- ...runtimeToolArgs(input, options),
39
- });
40
- },
30
+ function notebookDatasetTools(projectRoot) {
31
+ const executor = new QueryExecutor();
32
+ const workspace = new NotebookDatasetWorkspace(projectRoot, executor, [
33
+ join(projectRoot, ".dql", "connectors"),
34
+ projectRoot,
35
+ ]);
36
+ const datasetByInput = (args) => {
37
+ const input = objectArgs(args);
38
+ const value = typeof input.id === "string"
39
+ ? input.id
40
+ : typeof input.name === "string"
41
+ ? input.name
42
+ : "";
43
+ return workspace
44
+ .list()
45
+ .find((dataset) => dataset.id === value ||
46
+ dataset.alias.toLowerCase() === value.toLowerCase() ||
47
+ dataset.name.toLowerCase() === value.toLowerCase());
41
48
  };
49
+ return [
50
+ {
51
+ name: "list_notebook_datasets",
52
+ description: "List imported and staged notebook datasets using metadata only. Use before proposing local or mixed-source analysis. Never returns complete file contents.",
53
+ inputSchema: {
54
+ type: "object",
55
+ additionalProperties: false,
56
+ properties: {},
57
+ },
58
+ run: async () => ({
59
+ datasets: workspace.list().map((dataset) => ({
60
+ id: dataset.id,
61
+ name: dataset.name,
62
+ alias: dataset.alias,
63
+ storageMode: dataset.storageMode,
64
+ trustState: dataset.trustState,
65
+ rowCount: dataset.profile.rowCount,
66
+ refreshedAt: dataset.refreshedAt,
67
+ columns: dataset.profile.columns.map((column) => ({
68
+ name: column.name,
69
+ type: column.type,
70
+ flags: column.flags,
71
+ })),
72
+ lineage: dataset.lineage,
73
+ })),
74
+ }),
75
+ },
76
+ {
77
+ name: "describe_notebook_dataset",
78
+ description: "Describe one local/project/staged notebook dataset including schema, bounded profile, freshness, lineage, and trust. Does not return raw rows.",
79
+ inputSchema: {
80
+ type: "object",
81
+ additionalProperties: false,
82
+ required: ["id"],
83
+ properties: { id: { type: "string" } },
84
+ },
85
+ run: async (args) => {
86
+ const dataset = datasetByInput(args);
87
+ if (!dataset)
88
+ return { found: false, error: "Dataset not found." };
89
+ return {
90
+ found: true,
91
+ dataset: {
92
+ ...dataset,
93
+ profile: {
94
+ ...dataset.profile,
95
+ preview: undefined,
96
+ columns: dataset.profile.columns.map((column) => ({
97
+ ...column,
98
+ sampleValues: undefined,
99
+ })),
100
+ },
101
+ },
102
+ };
103
+ },
104
+ },
105
+ {
106
+ name: "sample_notebook_dataset",
107
+ description: "Return a strictly bounded, redacted sample from a notebook dataset. Use only when schema/profile is insufficient. Sensitive columns are always redacted.",
108
+ inputSchema: {
109
+ type: "object",
110
+ additionalProperties: false,
111
+ required: ["id"],
112
+ properties: {
113
+ id: { type: "string" },
114
+ limit: { type: "number", minimum: 1, maximum: 20 },
115
+ },
116
+ },
117
+ run: async (args) => {
118
+ const dataset = datasetByInput(args);
119
+ if (!dataset)
120
+ return { found: false, error: "Dataset not found." };
121
+ const input = objectArgs(args);
122
+ const limit = typeof input.limit === "number"
123
+ ? Math.max(1, Math.min(20, Math.floor(input.limit)))
124
+ : 5;
125
+ const sensitive = new Set(dataset.profile.columns
126
+ .filter((column) => column.flags?.includes("sensitive"))
127
+ .map((column) => column.name));
128
+ return {
129
+ found: true,
130
+ dataset: dataset.alias,
131
+ rows: dataset.profile.preview
132
+ .slice(0, limit)
133
+ .map((row) => Object.fromEntries(Object.entries(row).map(([key, value]) => [
134
+ key,
135
+ sensitive.has(key) ? "[REDACTED]" : value,
136
+ ]))),
137
+ sampledRows: Math.min(limit, dataset.profile.preview.length),
138
+ totalRows: dataset.profile.rowCount,
139
+ warning: "Bounded preview only. Never infer population aggregates from these rows.",
140
+ };
141
+ },
142
+ },
143
+ {
144
+ name: "propose_cross_source_join",
145
+ description: "Compare dataset schemas and propose join keys/cardinality warnings. If multiple plausible keys or a many-to-many risk exists, returns clarificationRequired=true instead of guessing.",
146
+ inputSchema: {
147
+ type: "object",
148
+ additionalProperties: false,
149
+ required: ["left", "right"],
150
+ properties: { left: { type: "string" }, right: { type: "string" } },
151
+ },
152
+ run: async (args) => {
153
+ const input = objectArgs(args);
154
+ const all = workspace.list();
155
+ const find = (value) => all.find((dataset) => dataset.id === value ||
156
+ dataset.alias === value ||
157
+ dataset.name === value);
158
+ const left = find(input.left);
159
+ const right = find(input.right);
160
+ if (!left || !right)
161
+ return {
162
+ found: false,
163
+ error: "Both datasets must exist in the notebook workspace.",
164
+ };
165
+ const rightColumns = new Set(right.profile.columns.map((column) => column.name.toLowerCase()));
166
+ const candidates = left.profile.columns.filter((column) => rightColumns.has(column.name.toLowerCase()) &&
167
+ /(^id$|_id$|^key$|_key$)/i.test(column.name));
168
+ const manyRisk = candidates.some((candidate) => {
169
+ const other = right.profile.columns.find((column) => column.name.toLowerCase() === candidate.name.toLowerCase());
170
+ return ((candidate.distinctCount ?? 0) < left.profile.sampledRows ||
171
+ (other?.distinctCount ?? 0) < right.profile.sampledRows);
172
+ });
173
+ return {
174
+ found: true,
175
+ left: left.alias,
176
+ right: right.alias,
177
+ candidates: candidates.map((column) => column.name),
178
+ manyToManyRisk: manyRisk,
179
+ clarificationRequired: candidates.length !== 1 || manyRisk,
180
+ recommendation: candidates.length === 1 && !manyRisk
181
+ ? `Join on ${candidates[0].name} after confirming business grain.`
182
+ : "Ask the user to confirm join key and expected cardinality.",
183
+ freshnessMismatch: {
184
+ left: left.refreshedAt,
185
+ right: right.refreshedAt,
186
+ },
187
+ trustLabel: "review_required",
188
+ };
189
+ },
190
+ },
191
+ {
192
+ name: "execute_local_analysis",
193
+ description: "Execute bounded read-only SQL in the notebook DuckDB workspace over imported or staged datasets. Results are always review-required and never certified.",
194
+ inputSchema: {
195
+ type: "object",
196
+ additionalProperties: false,
197
+ required: ["sql"],
198
+ properties: { sql: { type: "string" } },
199
+ },
200
+ run: async (args) => {
201
+ const input = objectArgs(args);
202
+ const sql = typeof input.sql === "string"
203
+ ? input.sql.trim().replace(/;\s*$/, "")
204
+ : "";
205
+ if (!/^(select|with)\b/i.test(sql) ||
206
+ /\b(insert|update|delete|drop|alter|create|copy|attach|install|load|pragma)\b/i.test(sql)) {
207
+ return {
208
+ error: "Local analysis only supports one read-only SELECT or WITH statement.",
209
+ };
210
+ }
211
+ await workspace.initialize();
212
+ const result = await executor.executeQuery(`SELECT * FROM (${sql}) AS dql_local_analysis LIMIT 200`, [], {}, workspace.localConnection);
213
+ return {
214
+ trust: "review_required",
215
+ source: "notebook_local_workspace",
216
+ columns: result.columns,
217
+ rows: result.rows.slice(0, 200),
218
+ rowCount: result.rows.length,
219
+ warning: "Mixed or local analysis cannot be certified automatically.",
220
+ };
221
+ },
222
+ },
223
+ ];
42
224
  }
43
- function wrapRuntimeTool(tool, options) {
44
- if (!options.serverUrl)
45
- return tool;
225
+ function projectSourceSearchTool(projectRoot) {
46
226
  return {
47
- ...tool,
227
+ name: 'search_project_files',
228
+ description: 'Fast bounded ripgrep over the live DQL/dbt source tree. Use only when catalog and semantic search missed a likely block, metric, dimension, model, or join definition. Returns source paths and matching lines; it never executes or mutates files.',
229
+ inputSchema: {
230
+ type: 'object',
231
+ additionalProperties: false,
232
+ required: ['query'],
233
+ properties: {
234
+ query: { type: 'string', description: 'Business terms or identifiers to find in DQL, SQL, YAML, JSON, and Markdown sources.' },
235
+ limit: { type: 'number', description: 'Maximum matching lines. Default 40, maximum 100.' },
236
+ },
237
+ },
48
238
  run: async (args) => {
49
239
  const input = objectArgs(args);
50
- return tool.run({
51
- ...input,
52
- ...runtimeToolArgs(input, options),
53
- });
240
+ const query = typeof input.query === 'string' ? input.query : '';
241
+ const limit = typeof input.limit === 'number' ? Math.max(1, Math.min(100, Math.floor(input.limit))) : 40;
242
+ const terms = sourceSearchTerms(query);
243
+ if (terms.length === 0)
244
+ return { query, matches: [], note: 'No distinctive search terms.' };
245
+ const pattern = terms.map(escapeRegex).join('|');
246
+ const lines = await runRipgrep(projectRoot, pattern, limit);
247
+ return {
248
+ query,
249
+ terms,
250
+ matches: lines.map((line) => ({
251
+ path: line.path.startsWith('.')
252
+ ? line.path.replace(/^\.\//, '')
253
+ : relative(projectRoot, line.path) || line.path,
254
+ line: line.line,
255
+ text: line.text,
256
+ })),
257
+ };
54
258
  },
55
259
  };
56
260
  }
261
+ const SOURCE_SEARCH_STOPWORDS = new Set([
262
+ 'what', 'which', 'where', 'show', 'give', 'from', 'with', 'that', 'this', 'have',
263
+ 'does', 'the', 'and', 'for', 'our', 'their', 'metric', 'metrics', 'data', 'answer',
264
+ ]);
265
+ function sourceSearchTerms(query) {
266
+ return Array.from(new Set((query.toLowerCase().match(/[a-z0-9_]+/g) ?? [])
267
+ .filter((term) => term.length > 2 && !SOURCE_SEARCH_STOPWORDS.has(term))))
268
+ .slice(0, 8);
269
+ }
270
+ function escapeRegex(value) {
271
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
272
+ }
273
+ async function runRipgrep(projectRoot, pattern, limit) {
274
+ const args = [
275
+ '--line-number', '--no-heading', '--color', 'never', '--ignore-case', '--max-count', '5',
276
+ '--glob', '*.{dql,sql,yml,yaml,json,md}',
277
+ '--glob', '!.git/**', '--glob', '!node_modules/**', '--glob', '!dist/**', '--glob', '!target/**',
278
+ '--glob', '!.dql/cache/**',
279
+ pattern, '.',
280
+ ];
281
+ return new Promise((resolveSearch) => {
282
+ const child = spawn('rg', args, { cwd: projectRoot, stdio: ['ignore', 'pipe', 'ignore'] });
283
+ let output = '';
284
+ let settled = false;
285
+ const finish = (value) => {
286
+ if (settled)
287
+ return;
288
+ settled = true;
289
+ clearTimeout(timer);
290
+ resolveSearch(value);
291
+ };
292
+ // This is a safety ceiling, not an interaction target: normal searches
293
+ // finish in milliseconds. Give a CI-loaded machine enough time to start
294
+ // rg so a real semantic definition is not incorrectly reported missing.
295
+ const timer = setTimeout(() => {
296
+ child.kill();
297
+ finish([]);
298
+ }, 4_000);
299
+ child.stdout.on('data', (chunk) => {
300
+ if (output.length < 512_000)
301
+ output += chunk.toString('utf8');
302
+ else
303
+ child.kill();
304
+ });
305
+ // Some minimal hosted and container runtimes do not ship ripgrep. The
306
+ // governed answer flow must still find semantic definitions rather than
307
+ // silently falling through to generated SQL.
308
+ child.on('error', () => finish(runNativeSourceSearch(projectRoot, pattern, limit)));
309
+ child.on('close', () => {
310
+ const matches = output.split(/\r?\n/).flatMap((raw) => {
311
+ const match = raw.match(/^(.*?):(\d+):(.*)$/);
312
+ return match ? [{ path: match[1], line: Number(match[2]), text: match[3].trim().slice(0, 500) }] : [];
313
+ }).slice(0, limit);
314
+ finish(matches);
315
+ });
316
+ });
317
+ }
318
+ const SOURCE_FILE_PATTERN = /\.(dql|sql|yml|yaml|json|md)$/i;
319
+ const SOURCE_SEARCH_IGNORED_DIRECTORIES = new Set(['.git', 'node_modules', 'dist', 'target', '.dql']);
320
+ function runNativeSourceSearch(projectRoot, pattern, limit) {
321
+ const matcher = new RegExp(pattern, 'i');
322
+ const matches = [];
323
+ const directories = [projectRoot];
324
+ let scannedFiles = 0;
325
+ while (directories.length > 0 && matches.length < limit && scannedFiles < 5_000) {
326
+ const directory = directories.pop();
327
+ if (!directory)
328
+ continue;
329
+ let entries;
330
+ try {
331
+ entries = readdirSync(directory, { withFileTypes: true });
332
+ }
333
+ catch {
334
+ continue;
335
+ }
336
+ for (const entry of entries) {
337
+ if (matches.length >= limit)
338
+ break;
339
+ const filePath = join(directory, entry.name);
340
+ if (entry.isDirectory()) {
341
+ if (!SOURCE_SEARCH_IGNORED_DIRECTORIES.has(entry.name))
342
+ directories.push(filePath);
343
+ continue;
344
+ }
345
+ if (!entry.isFile() || !SOURCE_FILE_PATTERN.test(entry.name))
346
+ continue;
347
+ scannedFiles += 1;
348
+ if (scannedFiles > 5_000)
349
+ break;
350
+ let source;
351
+ try {
352
+ source = readFileSync(filePath, 'utf8');
353
+ }
354
+ catch {
355
+ continue;
356
+ }
357
+ for (const [index, line] of source.split(/\r?\n/).entries()) {
358
+ if (!matcher.test(line))
359
+ continue;
360
+ matches.push({ path: filePath, line: index + 1, text: line.trim().slice(0, 500) });
361
+ if (matches.length >= limit)
362
+ break;
363
+ }
364
+ }
365
+ }
366
+ return matches;
367
+ }
57
368
  function objectArgs(args) {
58
369
  return args && typeof args === 'object' && !Array.isArray(args)
59
370
  ? args
60
371
  : {};
61
372
  }
62
- function runtimeToolArgs(input, options) {
63
- return options.serverUrl && typeof input.serverUrl !== 'string'
64
- ? { serverUrl: options.serverUrl }
65
- : {};
66
- }
67
373
  //# sourceMappingURL=answer-loop-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answer-loop-tools.js","sourceRoot":"","sources":["../../src/llm/answer-loop-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"answer-loop-tools.js","sourceRoot":"","sources":["../../src/llm/answer-loop-tools.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type AgentAnswer, type CertifiedFitConfirmation, type AgentFollowUpContext, type AgentProvider, type ConversationSnapshot } from '@duckcodeailabs/dql-agent';
1
+ import { type AgentAnswer, type CertifiedFitConfirmation, type AgentFollowUpContext, type AgentProvider, type ConversationSnapshot, type LocalContextPack } from '@duckcodeailabs/dql-agent';
2
2
  import type { AgentRunRequest, AgentRunner, ProviderId } from '../types.js';
3
3
  import { buildAnswerLoopTools } from '../answer-loop-tools.js';
4
4
  /**
@@ -8,6 +8,15 @@ import { buildAnswerLoopTools } from '../answer-loop-tools.js';
8
8
  */
9
9
  type SimpleProviderId = Extract<ProviderId, 'anthropic' | 'openai' | 'gemini' | 'ollama' | 'custom-openai'> | 'claude-code' | 'codex';
10
10
  declare function createCertifiedFitConfirmation(provider: AgentProvider, signal?: AbortSignal): CertifiedFitConfirmation;
11
+ /**
12
+ * Decide whether the answer path needs a live warehouse-schema read up front.
13
+ * Catalog-backed relations are already present in the context pack and the
14
+ * generated lane has bounded schema tools for genuine gaps, so eager warehouse
15
+ * scans are reserved for unresolved filters or an empty retrieved SQL context.
16
+ */
17
+ declare function shouldLoadSchemaContext(contextPack: LocalContextPack | undefined, hasSemanticLayer: boolean): boolean;
18
+ declare function shouldSearchProjectFiles(contextPack: LocalContextPack | undefined): boolean;
19
+ declare function renderProjectSourceSearch(value: unknown): string | undefined;
11
20
  declare function parseCertifiedFitConfirmation(text: string): {
12
21
  allow: boolean;
13
22
  confidence?: 'high' | 'medium' | 'low';
@@ -41,6 +50,9 @@ export declare const __test__: {
41
50
  formatCascadeOutcome: typeof formatCascadeOutcome;
42
51
  parseCertifiedFitConfirmation: typeof parseCertifiedFitConfirmation;
43
52
  rewriteFollowUpQuestion: typeof rewriteFollowUpQuestion;
53
+ shouldLoadSchemaContext: typeof shouldLoadSchemaContext;
54
+ shouldSearchProjectFiles: typeof shouldSearchProjectFiles;
55
+ renderProjectSourceSearch: typeof renderProjectSourceSearch;
44
56
  };
45
57
  declare function formatCascadeOutcome(cascade: AgentAnswer['cascade']): string | undefined;
46
58
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"dql-agent-provider.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/dql-agent-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAgBL,KAAK,WAAW,EAEhB,KAAK,wBAAwB,EAE7B,KAAK,oBAAoB,EAEzB,KAAK,aAAa,EAElB,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAkC,MAAM,yBAAyB,CAAC;AAO/F;;;;GAIG;AACH,KAAK,gBAAgB,GACjB,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC,GACnF,aAAa,GACb,OAAO,CAAC;AAwEZ,iBAAS,8BAA8B,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,wBAAwB,CAmC/G;AAqBD,iBAAS,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBhI;AAqDD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAyI9E;AAmBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAkBrE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAcjG;AA6KD,iBAAS,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAkBtG;AAuBD;;;;;GAKG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,oBAAoB,GAAG,SAAS,CAYlC;AAED,iBAAS,+BAA+B,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAqEjH;AAsaD,eAAO,MAAM,QAAQ;;;;;;;;;CASpB,CAAC;AAiFF,iBAAS,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAKjF"}
1
+ {"version":3,"file":"dql-agent-provider.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/dql-agent-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAgBL,KAAK,WAAW,EAEhB,KAAK,wBAAwB,EAE7B,KAAK,oBAAoB,EAEzB,KAAK,aAAa,EAElB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAkC,MAAM,yBAAyB,CAAC;AAO/F;;;;GAIG;AACH,KAAK,gBAAgB,GACjB,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC,GACnF,aAAa,GACb,OAAO,CAAC;AAwEZ,iBAAS,8BAA8B,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,wBAAwB,CAmC/G;AAED;;;;;GAKG;AACH,iBAAS,uBAAuB,CAC9B,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAeT;AAED,iBAAS,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAYpF;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAarE;AAqBD,iBAAS,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBhI;AAqDD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAsM9E;AAmBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAkBrE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAGjG;AA6KD,iBAAS,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAkBtG;AAuBD;;;;;GAKG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GACzC,oBAAoB,GAAG,SAAS,CAYlC;AAED,iBAAS,+BAA+B,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAqEjH;AAsaD,eAAO,MAAM,QAAQ;;;;;;;;;;;;CAYpB,CAAC;AAiFF,iBAAS,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAKjF"}