@duckcodeailabs/dql-cli 1.6.20 → 1.6.22
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/apps-api.d.ts +216 -2
- package/dist/apps-api.d.ts.map +1 -1
- package/dist/apps-api.js +1767 -46
- package/dist/apps-api.js.map +1 -1
- package/dist/args.d.ts +10 -0
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +19 -0
- package/dist/args.js.map +1 -1
- package/dist/assets/dql-notebook/assets/{codemirror-DJYUkPr1.js → codemirror-Co0dCEDr.js} +1 -1
- package/dist/assets/dql-notebook/assets/index-D9Owd4EN.css +1 -0
- package/dist/assets/dql-notebook/assets/index-nDZHVgfg.js +5636 -0
- package/dist/assets/dql-notebook/assets/{react-CRB3T2We.js → react-BRY8hXab.js} +2 -2
- package/dist/assets/dql-notebook/index.html +4 -4
- package/dist/commands/agent.d.ts +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +50 -10
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/app.d.ts +4 -4
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +22 -19
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/certify.d.ts.map +1 -1
- package/dist/commands/certify.js +70 -25
- package/dist/commands/certify.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +108 -5
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +68 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/eval.d.ts +121 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +350 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +50 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/notebook.d.ts +15 -0
- package/dist/commands/notebook.d.ts.map +1 -1
- package/dist/commands/notebook.js +32 -11
- package/dist/commands/notebook.js.map +1 -1
- package/dist/commands/propose.d.ts +23 -0
- package/dist/commands/propose.d.ts.map +1 -0
- package/dist/commands/propose.js +184 -0
- package/dist/commands/propose.js.map +1 -0
- package/dist/index.js +64 -11
- package/dist/index.js.map +1 -1
- package/dist/llm/analytics-tools.d.ts.map +1 -1
- package/dist/llm/analytics-tools.js +9 -4
- package/dist/llm/analytics-tools.js.map +1 -1
- package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
- package/dist/llm/providers/dql-agent-provider.js +21 -32
- package/dist/llm/providers/dql-agent-provider.js.map +1 -1
- package/dist/llm/providers/native-sdk-provider.d.ts.map +1 -1
- package/dist/llm/providers/native-sdk-provider.js +5 -2
- package/dist/llm/providers/native-sdk-provider.js.map +1 -1
- package/dist/local-runtime.d.ts +132 -4
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +2120 -46
- package/dist/local-runtime.js.map +1 -1
- package/dist/package.json +10 -10
- package/dist/propose-enrich.d.ts +13 -0
- package/dist/propose-enrich.d.ts.map +1 -0
- package/dist/propose-enrich.js +34 -0
- package/dist/propose-enrich.js.map +1 -0
- package/dist/settings/provider-settings.js +2 -2
- package/dist/settings/provider-settings.js.map +1 -1
- package/package.json +11 -11
- package/dist/assets/dql-notebook/assets/index-Dgqvyn5s.js +0 -3886
- package/dist/assets/dql-notebook/assets/index-RaDW1A5g.css +0 -1
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dql eval` — Routing-accuracy harness for the DQL answer agent.
|
|
3
|
+
*
|
|
4
|
+
* Replays a golden set of questions through the EXISTING agent router
|
|
5
|
+
* (`planAgentAnswer`) and scores how well DQL routes each question:
|
|
6
|
+
* certified vs generated vs missing-context (refusal), which certified block
|
|
7
|
+
* it selected, and whether the answer grain matches.
|
|
8
|
+
*
|
|
9
|
+
* The golden set comes from two sources:
|
|
10
|
+
* 1. Every certified block's `examples[].question` in the compiled manifest.
|
|
11
|
+
* These expect route = certified and expect that same block to be selected.
|
|
12
|
+
* 2. Optional `eval/*.yaml` files in the project, each a list (or { cases: [] })
|
|
13
|
+
* of `{ question, expectRoute, expectBlock?, expectGrain?, expectRefuse?, name? }`.
|
|
14
|
+
* These let a repo express the harder categories the block examples cannot:
|
|
15
|
+
* generated (Tier-2), insufficient-context (refusal), conflict, wrong-grain.
|
|
16
|
+
*
|
|
17
|
+
* This command READS the router output only. It never executes SQL against a
|
|
18
|
+
* warehouse and never changes routing, the manifest schema, or the DQL language.
|
|
19
|
+
*
|
|
20
|
+
* Usage:
|
|
21
|
+
* dql eval [path] Replay the golden set, print a report
|
|
22
|
+
* dql eval [path] --format json Emit a machine-readable JSON report
|
|
23
|
+
* dql eval [path] --min-route-accuracy 0.9 Fail (exit 1) below this route accuracy
|
|
24
|
+
* dql eval [path] --min-refusal 0.8 Fail (exit 1) below this refusal recall
|
|
25
|
+
* dql eval [path] --no-examples Skip manifest block examples (yaml only)
|
|
26
|
+
*/
|
|
27
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
28
|
+
import { join, resolve } from 'node:path';
|
|
29
|
+
import { load as loadYaml } from 'js-yaml';
|
|
30
|
+
import { buildManifest, resolveDbtManifestPath, } from '@duckcodeailabs/dql-core';
|
|
31
|
+
import { planAgentAnswer } from '@duckcodeailabs/dql-agent';
|
|
32
|
+
const ZERO_RESULTS = [];
|
|
33
|
+
/** Map the router's route vocabulary onto the spec's route labels. */
|
|
34
|
+
export function mapRoute(route) {
|
|
35
|
+
switch (route) {
|
|
36
|
+
case 'certified':
|
|
37
|
+
return 'certified';
|
|
38
|
+
case 'generated_sql':
|
|
39
|
+
return 'generated';
|
|
40
|
+
case 'clarify':
|
|
41
|
+
return 'missing_context';
|
|
42
|
+
case 'research':
|
|
43
|
+
return 'research';
|
|
44
|
+
default:
|
|
45
|
+
return 'missing_context';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function blockNameFromObjectKey(objectKey) {
|
|
49
|
+
if (!objectKey)
|
|
50
|
+
return undefined;
|
|
51
|
+
// Certified block keys are minted as `dql:block:<name>`.
|
|
52
|
+
return objectKey.replace(/^dql:block:/, '');
|
|
53
|
+
}
|
|
54
|
+
function isCertified(block) {
|
|
55
|
+
return String(block.status ?? '').toLowerCase() === 'certified';
|
|
56
|
+
}
|
|
57
|
+
function normalizeGrain(grain) {
|
|
58
|
+
return String(grain ?? '').trim().toLowerCase();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build the golden set from a compiled manifest plus optional eval/*.yaml.
|
|
62
|
+
* Each certified block contributes one case per example question.
|
|
63
|
+
*/
|
|
64
|
+
export function collectEvalCases(manifest, yamlCases, includeBlockExamples) {
|
|
65
|
+
const cases = [];
|
|
66
|
+
if (includeBlockExamples) {
|
|
67
|
+
for (const block of Object.values(manifest.blocks ?? {})) {
|
|
68
|
+
if (!isCertified(block))
|
|
69
|
+
continue;
|
|
70
|
+
for (const example of block.examples ?? []) {
|
|
71
|
+
const question = example.question?.trim();
|
|
72
|
+
if (!question)
|
|
73
|
+
continue;
|
|
74
|
+
cases.push({
|
|
75
|
+
name: `${block.name} · ${question}`,
|
|
76
|
+
question,
|
|
77
|
+
source: 'block_example',
|
|
78
|
+
category: 'certified',
|
|
79
|
+
expectRoute: 'certified',
|
|
80
|
+
expectBlock: block.name,
|
|
81
|
+
expectGrain: block.grain,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
cases.push(...yamlCases);
|
|
87
|
+
return cases;
|
|
88
|
+
}
|
|
89
|
+
/** Score a single case against the router's decision. Pure + unit-testable. */
|
|
90
|
+
export function scoreCase(testCase, plan, manifest) {
|
|
91
|
+
const actualRoute = mapRoute(plan.routeDecision.route);
|
|
92
|
+
const actualBlock = blockNameFromObjectKey(plan.routeDecision.exactObjectKey);
|
|
93
|
+
const actualGrain = actualBlock ? manifest.blocks?.[actualBlock]?.grain : undefined;
|
|
94
|
+
const hasBlockingMissingContext = (plan.missingContext ?? []).some((item) => item.severity === 'blocking');
|
|
95
|
+
const failures = [];
|
|
96
|
+
// Refusal expectation takes precedence: a refusal means route = missing_context.
|
|
97
|
+
const expectRoute = testCase.expectRefuse ? 'missing_context' : testCase.expectRoute;
|
|
98
|
+
let routeMatch;
|
|
99
|
+
if (expectRoute !== undefined) {
|
|
100
|
+
routeMatch = actualRoute === expectRoute;
|
|
101
|
+
if (!routeMatch)
|
|
102
|
+
failures.push(`route expected ${expectRoute}, got ${actualRoute}`);
|
|
103
|
+
}
|
|
104
|
+
let refusalMatch;
|
|
105
|
+
if (testCase.expectRefuse !== undefined) {
|
|
106
|
+
const actuallyRefused = actualRoute === 'missing_context';
|
|
107
|
+
refusalMatch = actuallyRefused === testCase.expectRefuse;
|
|
108
|
+
if (!refusalMatch) {
|
|
109
|
+
failures.push(testCase.expectRefuse
|
|
110
|
+
? `expected a safe refusal, got route ${actualRoute}`
|
|
111
|
+
: `expected no refusal, but router refused`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let blockMatch;
|
|
115
|
+
if (testCase.expectBlock !== undefined) {
|
|
116
|
+
blockMatch = actualBlock === testCase.expectBlock;
|
|
117
|
+
if (!blockMatch) {
|
|
118
|
+
failures.push(`block expected ${testCase.expectBlock}, got ${actualBlock ?? 'none'}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
let grainMatch;
|
|
122
|
+
if (testCase.expectGrain !== undefined) {
|
|
123
|
+
grainMatch = normalizeGrain(actualGrain) === normalizeGrain(testCase.expectGrain);
|
|
124
|
+
if (!grainMatch) {
|
|
125
|
+
failures.push(`grain expected ${testCase.expectGrain}, got ${actualGrain ?? 'none'}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
name: testCase.name,
|
|
130
|
+
question: testCase.question,
|
|
131
|
+
source: testCase.source,
|
|
132
|
+
category: testCase.category,
|
|
133
|
+
passed: failures.length === 0,
|
|
134
|
+
actualRoute,
|
|
135
|
+
actualBlock,
|
|
136
|
+
actualGrain,
|
|
137
|
+
hasBlockingMissingContext,
|
|
138
|
+
expectRoute,
|
|
139
|
+
expectBlock: testCase.expectBlock,
|
|
140
|
+
expectGrain: testCase.expectGrain,
|
|
141
|
+
expectRefuse: testCase.expectRefuse,
|
|
142
|
+
routeMatch,
|
|
143
|
+
blockMatch,
|
|
144
|
+
grainMatch,
|
|
145
|
+
refusalMatch,
|
|
146
|
+
failures,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function ratio(numerator, denominator) {
|
|
150
|
+
if (denominator === 0)
|
|
151
|
+
return null;
|
|
152
|
+
return Number((numerator / denominator).toFixed(4));
|
|
153
|
+
}
|
|
154
|
+
/** Aggregate per-case results into the spec's score set. Pure + unit-testable. */
|
|
155
|
+
export function computeScores(results) {
|
|
156
|
+
const routeCases = results.filter((r) => r.expectRoute !== undefined);
|
|
157
|
+
const blockCases = results.filter((r) => r.expectBlock !== undefined);
|
|
158
|
+
const grainCases = results.filter((r) => r.expectGrain !== undefined);
|
|
159
|
+
const refusalExpected = results.filter((r) => r.expectRefuse === true);
|
|
160
|
+
// Refusal precision: of every case where the router refused, how many should have?
|
|
161
|
+
const routerRefused = results.filter((r) => r.actualRoute === 'missing_context');
|
|
162
|
+
const routerRefusedCorrectly = routerRefused.filter((r) => r.expectRefuse === true);
|
|
163
|
+
return {
|
|
164
|
+
total: results.length,
|
|
165
|
+
passed: results.filter((r) => r.passed).length,
|
|
166
|
+
routeAccuracy: ratio(routeCases.filter((r) => r.routeMatch).length, routeCases.length),
|
|
167
|
+
blockSelectionAccuracy: ratio(blockCases.filter((r) => r.blockMatch).length, blockCases.length),
|
|
168
|
+
grainMatchPrecision: ratio(grainCases.filter((r) => r.grainMatch).length, grainCases.length),
|
|
169
|
+
refusalPrecision: ratio(routerRefusedCorrectly.length, routerRefused.length),
|
|
170
|
+
refusalRecall: ratio(refusalExpected.filter((r) => r.refusalMatch).length, refusalExpected.length),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function normalizeYamlRoute(value) {
|
|
174
|
+
if (!value)
|
|
175
|
+
return undefined;
|
|
176
|
+
const v = value.trim().toLowerCase();
|
|
177
|
+
if (v === 'certified')
|
|
178
|
+
return 'certified';
|
|
179
|
+
if (v === 'generated' || v === 'generated_sql')
|
|
180
|
+
return 'generated';
|
|
181
|
+
if (v === 'missing_context' || v === 'missing-context' || v === 'clarify' || v === 'refuse') {
|
|
182
|
+
return 'missing_context';
|
|
183
|
+
}
|
|
184
|
+
if (v === 'research')
|
|
185
|
+
return 'research';
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
function inferCategory(raw, route) {
|
|
189
|
+
const explicit = raw.category?.trim().toLowerCase();
|
|
190
|
+
if (explicit === 'certified')
|
|
191
|
+
return 'certified';
|
|
192
|
+
if (explicit === 'generated')
|
|
193
|
+
return 'generated';
|
|
194
|
+
if (explicit === 'insufficient_context' || explicit === 'refusal')
|
|
195
|
+
return 'insufficient_context';
|
|
196
|
+
if (explicit === 'conflict')
|
|
197
|
+
return 'conflict';
|
|
198
|
+
if (explicit === 'wrong_grain')
|
|
199
|
+
return 'wrong_grain';
|
|
200
|
+
// Infer from expectations when the author did not label it.
|
|
201
|
+
if (raw.expectRefuse)
|
|
202
|
+
return 'insufficient_context';
|
|
203
|
+
if (route === 'missing_context')
|
|
204
|
+
return 'insufficient_context';
|
|
205
|
+
if (route === 'generated')
|
|
206
|
+
return 'generated';
|
|
207
|
+
return 'certified';
|
|
208
|
+
}
|
|
209
|
+
/** Load and normalize all `eval/*.yaml` cases for a project. */
|
|
210
|
+
export function loadYamlEvalCases(projectRoot) {
|
|
211
|
+
const evalDir = join(projectRoot, 'eval');
|
|
212
|
+
if (!existsSync(evalDir))
|
|
213
|
+
return [];
|
|
214
|
+
const files = readdirSync(evalDir).filter((f) => f.endsWith('.yaml') || f.endsWith('.yml'));
|
|
215
|
+
const cases = [];
|
|
216
|
+
for (const file of files.sort()) {
|
|
217
|
+
const raw = loadYaml(readFileSync(join(evalDir, file), 'utf-8'));
|
|
218
|
+
const rawCases = Array.isArray(raw) ? raw : raw?.cases ?? [];
|
|
219
|
+
for (const rc of rawCases) {
|
|
220
|
+
const question = rc.question?.trim();
|
|
221
|
+
if (!question)
|
|
222
|
+
continue;
|
|
223
|
+
const route = normalizeYamlRoute(rc.expectRoute);
|
|
224
|
+
cases.push({
|
|
225
|
+
name: rc.name?.trim() || `${file} · ${question}`,
|
|
226
|
+
question,
|
|
227
|
+
source: 'yaml',
|
|
228
|
+
category: inferCategory(rc, route),
|
|
229
|
+
expectRoute: route,
|
|
230
|
+
expectBlock: rc.expectBlock?.trim() || undefined,
|
|
231
|
+
expectGrain: rc.expectGrain?.trim() || undefined,
|
|
232
|
+
expectRefuse: typeof rc.expectRefuse === 'boolean' ? rc.expectRefuse : undefined,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return cases;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Run the full eval: build (or read) the manifest, collect cases, replay each
|
|
240
|
+
* through the router, score, and assemble the report. Side-effect free except
|
|
241
|
+
* for invoking the (read-only) router. Returns a structured report.
|
|
242
|
+
*/
|
|
243
|
+
export async function runEvalHarness(projectRoot, options) {
|
|
244
|
+
const manifest = buildManifest({
|
|
245
|
+
projectRoot,
|
|
246
|
+
dbtManifestPath: resolveDbtManifestPath(projectRoot) ?? undefined,
|
|
247
|
+
});
|
|
248
|
+
const yamlCases = loadYamlEvalCases(projectRoot);
|
|
249
|
+
const cases = collectEvalCases(manifest, yamlCases, options.includeBlockExamples);
|
|
250
|
+
const results = [];
|
|
251
|
+
for (const testCase of cases) {
|
|
252
|
+
const plan = await planAgentAnswer(projectRoot, {
|
|
253
|
+
question: testCase.question,
|
|
254
|
+
surface: 'cli',
|
|
255
|
+
});
|
|
256
|
+
results.push(scoreCase(testCase, plan, manifest));
|
|
257
|
+
}
|
|
258
|
+
const scores = computeScores(results.length > 0 ? results : ZERO_RESULTS);
|
|
259
|
+
const ok = meetsThresholds(scores, options.minRouteAccuracy, options.minRefusal);
|
|
260
|
+
return {
|
|
261
|
+
ok,
|
|
262
|
+
scores,
|
|
263
|
+
thresholds: { minRouteAccuracy: options.minRouteAccuracy, minRefusal: options.minRefusal },
|
|
264
|
+
results,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/** A threshold gate only fails when a configured threshold has measurable data below it. */
|
|
268
|
+
export function meetsThresholds(scores, minRouteAccuracy, minRefusal) {
|
|
269
|
+
if (minRouteAccuracy !== null &&
|
|
270
|
+
scores.routeAccuracy !== null &&
|
|
271
|
+
scores.routeAccuracy < minRouteAccuracy) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
if (minRefusal !== null && scores.refusalRecall !== null && scores.refusalRecall < minRefusal) {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
function formatRate(value) {
|
|
280
|
+
return value === null ? 'n/a' : `${Math.round(value * 1000) / 10}%`;
|
|
281
|
+
}
|
|
282
|
+
export async function runEval(pathArg, rest, flags) {
|
|
283
|
+
const allArgs = [...(pathArg ? [pathArg] : []), ...rest];
|
|
284
|
+
const positional = allArgs.filter((a) => !a.startsWith('-'));
|
|
285
|
+
const projectRoot = resolve(positional[0] ?? '.');
|
|
286
|
+
if (!existsSync(join(projectRoot, 'dql.config.json'))) {
|
|
287
|
+
console.error('No DQL project found (missing dql.config.json). Run from a project root or pass a project path.');
|
|
288
|
+
process.exitCode = 1;
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const includeBlockExamples = !flags.noExamples;
|
|
292
|
+
const minRouteAccuracy = flags.minRouteAccuracy ?? null;
|
|
293
|
+
const minRefusal = flags.minRefusal ?? null;
|
|
294
|
+
const report = await runEvalHarness(projectRoot, {
|
|
295
|
+
includeBlockExamples,
|
|
296
|
+
minRouteAccuracy,
|
|
297
|
+
minRefusal,
|
|
298
|
+
});
|
|
299
|
+
if (flags.format === 'json') {
|
|
300
|
+
console.log(JSON.stringify(report, null, 2));
|
|
301
|
+
if (!report.ok)
|
|
302
|
+
process.exitCode = 1;
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
printReport(report);
|
|
306
|
+
if (!report.ok)
|
|
307
|
+
process.exitCode = 1;
|
|
308
|
+
}
|
|
309
|
+
function printReport(report) {
|
|
310
|
+
const { results, scores } = report;
|
|
311
|
+
console.log('\n DQL Eval — routing accuracy');
|
|
312
|
+
console.log(' ' + '='.repeat(50));
|
|
313
|
+
if (results.length === 0) {
|
|
314
|
+
console.log('\n No eval cases found.');
|
|
315
|
+
console.log(' Add `examples = [{ question = "..." }]` to certified blocks,');
|
|
316
|
+
console.log(' or create eval/*.yaml cases, then run `dql compile` and retry.\n');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
console.log('');
|
|
320
|
+
for (const result of results) {
|
|
321
|
+
const icon = result.passed ? '✓' : '✕';
|
|
322
|
+
const route = `[${result.actualRoute}]`;
|
|
323
|
+
console.log(` ${icon} ${route} ${result.name}`);
|
|
324
|
+
for (const failure of result.failures) {
|
|
325
|
+
console.log(` - ${failure}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
console.log('\n Scores');
|
|
329
|
+
console.log(' ' + '-'.repeat(50));
|
|
330
|
+
console.log(` Cases passed: ${scores.passed}/${scores.total}`);
|
|
331
|
+
console.log(` Route accuracy: ${formatRate(scores.routeAccuracy)}`);
|
|
332
|
+
console.log(` Block-selection accuracy:${formatRate(scores.blockSelectionAccuracy).padStart(7)}`);
|
|
333
|
+
console.log(` Grain-match precision: ${formatRate(scores.grainMatchPrecision)}`);
|
|
334
|
+
console.log(` Refusal precision: ${formatRate(scores.refusalPrecision)}`);
|
|
335
|
+
console.log(` Refusal recall: ${formatRate(scores.refusalRecall)}`);
|
|
336
|
+
const t = report.thresholds;
|
|
337
|
+
if (t.minRouteAccuracy !== null || t.minRefusal !== null) {
|
|
338
|
+
console.log('\n Thresholds');
|
|
339
|
+
console.log(' ' + '-'.repeat(50));
|
|
340
|
+
if (t.minRouteAccuracy !== null) {
|
|
341
|
+
console.log(` --min-route-accuracy ${t.minRouteAccuracy} (route accuracy ${formatRate(scores.routeAccuracy)})`);
|
|
342
|
+
}
|
|
343
|
+
if (t.minRefusal !== null) {
|
|
344
|
+
console.log(` --min-refusal ${t.minRefusal} (refusal recall ${formatRate(scores.refusalRecall)})`);
|
|
345
|
+
}
|
|
346
|
+
console.log(`\n ${report.ok ? '✓ PASS — thresholds met.' : '✕ FAIL — below configured thresholds.'}`);
|
|
347
|
+
}
|
|
348
|
+
console.log('');
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=eval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KtF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { basename, join, relative, resolve } from 'node:path';
|
|
3
3
|
import { createWelcomeNotebook, serializeNotebook } from '@duckcodeailabs/dql-notebook';
|
|
4
|
+
import { resolveLocalOwner, seedDefaultSkills } from '@duckcodeailabs/dql-agent';
|
|
4
5
|
import { performSemanticImport } from '../semantic-import.js';
|
|
5
6
|
import { runNotebook } from './notebook.js';
|
|
6
7
|
export async function runInit(targetArg, flags) {
|
|
@@ -36,12 +37,16 @@ export async function runInit(targetArg, flags) {
|
|
|
36
37
|
const hasDbtSemanticDefinitions = dbtProjectDir
|
|
37
38
|
? containsDbtSemanticDefinitions(join(dbtProjectDir, 'models'))
|
|
38
39
|
: false;
|
|
39
|
-
// Detect DuckDB file in the
|
|
40
|
-
|
|
40
|
+
// Detect DuckDB file — in the workspace OR the dbt project dir (common layout:
|
|
41
|
+
// the .duckdb lives next to dbt_project.yml, a level up from the DQL workspace).
|
|
42
|
+
const duckdbPath = detectDuckDBFile(targetDir, dbtProjectDir);
|
|
41
43
|
// Don't overwrite existing dql.config.json
|
|
42
44
|
const configPath = join(targetDir, 'dql.config.json');
|
|
43
45
|
if (!existsSync(configPath)) {
|
|
44
|
-
|
|
46
|
+
// Resolve the local OSS owner up front (git user.email → $USER → guest@local)
|
|
47
|
+
// and persist it as identity.owner so drafts are never born "Missing owner".
|
|
48
|
+
const owner = resolveLocalOwner(targetDir, { persist: false });
|
|
49
|
+
const config = buildConfig(projectName, isDbt, duckdbPath, dbtProjectDir, targetDir, owner);
|
|
45
50
|
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
46
51
|
}
|
|
47
52
|
// Create DQL directories
|
|
@@ -91,6 +96,16 @@ export async function runInit(targetArg, flags) {
|
|
|
91
96
|
});
|
|
92
97
|
importedSemanticCatalog = true;
|
|
93
98
|
}
|
|
99
|
+
// Seed the three editable starter Skills into .dql/skills/ (idempotent — never
|
|
100
|
+
// clobbers user edits). The metrics glossary reflects the semantic layer, so
|
|
101
|
+
// this runs AFTER any semantic import above.
|
|
102
|
+
let seededSkills = 0;
|
|
103
|
+
try {
|
|
104
|
+
seededSkills = seedDefaultSkills(targetDir).created.length;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Skill seeding is best-effort; never fail `dql init` over it.
|
|
108
|
+
}
|
|
94
109
|
// Output
|
|
95
110
|
if (flags.format === 'json') {
|
|
96
111
|
console.log(JSON.stringify({
|
|
@@ -99,6 +114,7 @@ export async function runInit(targetArg, flags) {
|
|
|
99
114
|
created: true,
|
|
100
115
|
dbt: isDbt,
|
|
101
116
|
duckdb: duckdbPath ?? null,
|
|
117
|
+
seededSkills,
|
|
102
118
|
}, null, 2));
|
|
103
119
|
return;
|
|
104
120
|
}
|
|
@@ -127,6 +143,9 @@ export async function runInit(targetArg, flags) {
|
|
|
127
143
|
if (importedSemanticCatalog) {
|
|
128
144
|
console.log(' semantic-layer/ (imported local semantic catalog)');
|
|
129
145
|
}
|
|
146
|
+
if (seededSkills > 0) {
|
|
147
|
+
console.log(` .dql/skills/ (${seededSkills} editable starter skill${seededSkills === 1 ? '' : 's'})`);
|
|
148
|
+
}
|
|
130
149
|
console.log('');
|
|
131
150
|
console.log(' Next steps:');
|
|
132
151
|
const step = targetArg && targetArg !== '.' ? 1 : 0;
|
|
@@ -193,7 +212,7 @@ function containsDbtSemanticDefinitions(root) {
|
|
|
193
212
|
}
|
|
194
213
|
return false;
|
|
195
214
|
}
|
|
196
|
-
function detectDuckDBFile(
|
|
215
|
+
function detectDuckDBFile(workspaceDir, dbtProjectDir) {
|
|
197
216
|
// Common DuckDB file locations in dbt projects
|
|
198
217
|
const candidates = [
|
|
199
218
|
'jaffle_shop.duckdb',
|
|
@@ -204,25 +223,46 @@ function detectDuckDBFile(dir) {
|
|
|
204
223
|
'target/jaffle_shop.duckdb',
|
|
205
224
|
'reports/jaffle_shop.duckdb',
|
|
206
225
|
];
|
|
226
|
+
// 1. The DQL workspace itself — store a bare relative path.
|
|
207
227
|
for (const candidate of candidates) {
|
|
208
|
-
if (existsSync(join(
|
|
228
|
+
if (existsSync(join(workspaceDir, candidate)))
|
|
209
229
|
return candidate;
|
|
230
|
+
}
|
|
231
|
+
const inWorkspace = firstDuckDBIn(workspaceDir);
|
|
232
|
+
if (inWorkspace)
|
|
233
|
+
return inWorkspace;
|
|
234
|
+
// 2. The dbt project dir (often a level up). Store the path RELATIVE TO THE
|
|
235
|
+
// workspace (e.g. `../jaffle_shop.duckdb`) so the stored connection — which
|
|
236
|
+
// resolves relative filepaths against the workspace — opens the real file.
|
|
237
|
+
if (dbtProjectDir && resolve(dbtProjectDir) !== resolve(workspaceDir)) {
|
|
238
|
+
for (const candidate of candidates) {
|
|
239
|
+
const abs = join(dbtProjectDir, candidate);
|
|
240
|
+
if (existsSync(abs))
|
|
241
|
+
return relative(workspaceDir, abs) || candidate;
|
|
210
242
|
}
|
|
243
|
+
const inDbt = firstDuckDBIn(dbtProjectDir);
|
|
244
|
+
if (inDbt)
|
|
245
|
+
return relative(workspaceDir, join(dbtProjectDir, inDbt)) || inDbt;
|
|
211
246
|
}
|
|
212
|
-
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
function firstDuckDBIn(dir) {
|
|
213
250
|
try {
|
|
214
|
-
|
|
215
|
-
const duckdb = entries.find((e) => e.endsWith('.duckdb'));
|
|
216
|
-
return duckdb ?? null;
|
|
251
|
+
return readdirSync(dir).find((entry) => entry.endsWith('.duckdb')) ?? null;
|
|
217
252
|
}
|
|
218
253
|
catch {
|
|
219
254
|
return null;
|
|
220
255
|
}
|
|
221
256
|
}
|
|
222
|
-
function buildConfig(projectName, isDbt, duckdbPath, dbtProjectDir, projectRoot) {
|
|
257
|
+
function buildConfig(projectName, isDbt, duckdbPath, dbtProjectDir, projectRoot, owner) {
|
|
223
258
|
const config = {
|
|
224
259
|
project: projectName,
|
|
225
260
|
};
|
|
261
|
+
// Persist the resolved local owner so AI-drafted blocks pass the Certifier's
|
|
262
|
+
// owner rule out of the box (humans still certify).
|
|
263
|
+
if (owner && owner.trim()) {
|
|
264
|
+
config.identity = { owner: owner.trim() };
|
|
265
|
+
}
|
|
226
266
|
if (duckdbPath) {
|
|
227
267
|
config.defaultConnectionName = 'default';
|
|
228
268
|
config.connections = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { CLIFlags } from '../args.js';
|
|
2
2
|
import type { ProjectConfig } from '../local-runtime.js';
|
|
3
3
|
export declare function resolveNotebookConnection(config: ProjectConfig, projectRoot: string): import("@duckcodeailabs/dql-connectors").ConnectionConfig | null;
|
|
4
|
+
export interface ProjectRuntimeHandle {
|
|
5
|
+
port: number;
|
|
6
|
+
url: string;
|
|
7
|
+
/** Stop the HTTP listener so the process can exit (no-op if already closed). */
|
|
8
|
+
close: () => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Start the local notebook/runtime HTTP server for a project and return a handle.
|
|
12
|
+
* Shared by `dql notebook` (long-running) and `dql agent ask` (which starts an
|
|
13
|
+
* ephemeral runtime on a free port — `preferredPort: 0` — and closes it after).
|
|
14
|
+
*/
|
|
15
|
+
export declare function startProjectRuntime(projectRoot: string, opts?: {
|
|
16
|
+
preferredPort?: number;
|
|
17
|
+
host?: string;
|
|
18
|
+
}): Promise<ProjectRuntimeHandle>;
|
|
4
19
|
export declare function runNotebook(targetArg: string | null, flags: CLIFlags): Promise<void>;
|
|
5
20
|
//# sourceMappingURL=notebook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oEAInF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,oBAAoB,CAAC,CAwB/B;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1F"}
|
|
@@ -14,28 +14,49 @@ export function resolveNotebookConnection(config, projectRoot) {
|
|
|
14
14
|
? normalizeProjectConnection(config.defaultConnection, projectRoot)
|
|
15
15
|
: null;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Start the local notebook/runtime HTTP server for a project and return a handle.
|
|
19
|
+
* Shared by `dql notebook` (long-running) and `dql agent ask` (which starts an
|
|
20
|
+
* ephemeral runtime on a free port — `preferredPort: 0` — and closes it after).
|
|
21
|
+
*/
|
|
22
|
+
export async function startProjectRuntime(projectRoot, opts = {}) {
|
|
23
23
|
const config = loadProjectConfig(projectRoot);
|
|
24
24
|
const executor = new QueryExecutor();
|
|
25
25
|
const connection = resolveNotebookConnection(config, projectRoot);
|
|
26
|
-
const host =
|
|
26
|
+
const host = opts.host ?? process.env.DQL_HOST ?? '127.0.0.1';
|
|
27
|
+
let server;
|
|
27
28
|
const port = await startLocalServer({
|
|
28
29
|
rootDir: NOTEBOOK_APP_DIR,
|
|
29
30
|
projectRoot,
|
|
30
31
|
executor,
|
|
31
32
|
connection,
|
|
32
|
-
preferredPort:
|
|
33
|
+
preferredPort: opts.preferredPort ?? 0,
|
|
33
34
|
host,
|
|
35
|
+
captureServer: (created) => { server = created; },
|
|
34
36
|
});
|
|
35
|
-
// When binding 0.0.0.0 (typical for Docker) the URL we print should be
|
|
36
|
-
// something the user can actually click. Show 127.0.0.1 in that case.
|
|
37
37
|
const printHost = host === '0.0.0.0' ? '127.0.0.1' : host;
|
|
38
|
-
|
|
38
|
+
return {
|
|
39
|
+
port,
|
|
40
|
+
url: `http://${printHost}:${port}`,
|
|
41
|
+
close: () => new Promise((resolveClose) => {
|
|
42
|
+
if (!server)
|
|
43
|
+
return resolveClose();
|
|
44
|
+
server.close(() => resolveClose());
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export async function runNotebook(targetArg, flags) {
|
|
49
|
+
const baseDir = resolve(targetArg ?? '.');
|
|
50
|
+
const projectRoot = findProjectRoot(baseDir);
|
|
51
|
+
if (!existsSync(join(projectRoot, 'dql.config.json'))) {
|
|
52
|
+
throw new Error(`No DQL project was found at "${baseDir}". Run "dql notebook" from a project root, or pass a project path such as "dql notebook ./my-dql-project".`);
|
|
53
|
+
}
|
|
54
|
+
const config = loadProjectConfig(projectRoot);
|
|
55
|
+
const host = flags.host ?? process.env.DQL_HOST ?? '127.0.0.1';
|
|
56
|
+
const { port, url } = await startProjectRuntime(projectRoot, {
|
|
57
|
+
preferredPort: flags.port ?? config.preview?.port ?? 3474,
|
|
58
|
+
host,
|
|
59
|
+
});
|
|
39
60
|
// Auto-open only on loopback. In a container or on a remote host, opening
|
|
40
61
|
// the host's browser is either useless or wrong.
|
|
41
62
|
const shouldOpen = (flags.open ?? config.preview?.open ?? true) && host === '127.0.0.1';
|