@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/commands/notebook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dql propose` — scan dbt evidence and generate a ranked queue of DRAFT blocks.
|
|
3
|
+
*
|
|
4
|
+
* Product principle: **AI drafts, humans certify.** Instead of authoring DQL
|
|
5
|
+
* from a blank file, a new user runs `dql propose` against an existing dbt repo
|
|
6
|
+
* and gets a draft governance layer: one `block` per high-value model, born
|
|
7
|
+
* `status: draft`, run through the Certifier (verdict stored so a reviewer sees
|
|
8
|
+
* what's missing), demand-ranked, and NEVER auto-certified.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* dql propose [path] Propose drafts for the project at path
|
|
12
|
+
* dql propose --dbt-manifest <path> Explicit manifest.json path
|
|
13
|
+
* dql propose --owner <name> Default owner stamped on drafts
|
|
14
|
+
* dql propose --limit <n> Cap drafts written this run
|
|
15
|
+
* dql propose --plan Show the deterministic PLAN; write nothing
|
|
16
|
+
* dql propose --dry-run Rank only; write nothing
|
|
17
|
+
* dql propose --enrich AI-enrich content (llmContext/examples/
|
|
18
|
+
* descriptions) via the configured provider
|
|
19
|
+
* dql propose --format json Machine-readable output
|
|
20
|
+
*/
|
|
21
|
+
import type { CLIFlags } from '../args.js';
|
|
22
|
+
export declare function runPropose(fileArg: string | null, rest: string[], flags: CLIFlags): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=propose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../src/commands/propose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAoIf"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dql propose` — scan dbt evidence and generate a ranked queue of DRAFT blocks.
|
|
3
|
+
*
|
|
4
|
+
* Product principle: **AI drafts, humans certify.** Instead of authoring DQL
|
|
5
|
+
* from a blank file, a new user runs `dql propose` against an existing dbt repo
|
|
6
|
+
* and gets a draft governance layer: one `block` per high-value model, born
|
|
7
|
+
* `status: draft`, run through the Certifier (verdict stored so a reviewer sees
|
|
8
|
+
* what's missing), demand-ranked, and NEVER auto-certified.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* dql propose [path] Propose drafts for the project at path
|
|
12
|
+
* dql propose --dbt-manifest <path> Explicit manifest.json path
|
|
13
|
+
* dql propose --owner <name> Default owner stamped on drafts
|
|
14
|
+
* dql propose --limit <n> Cap drafts written this run
|
|
15
|
+
* dql propose --plan Show the deterministic PLAN; write nothing
|
|
16
|
+
* dql propose --dry-run Rank only; write nothing
|
|
17
|
+
* dql propose --enrich AI-enrich content (llmContext/examples/
|
|
18
|
+
* descriptions) via the configured provider
|
|
19
|
+
* dql propose --format json Machine-readable output
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync } from 'node:fs';
|
|
22
|
+
import { join, resolve } from 'node:path';
|
|
23
|
+
import { loadProjectConfig, resolveDbtManifestPath } from '@duckcodeailabs/dql-core';
|
|
24
|
+
import { propose, proposePlan, resolveLocalOwner } from '@duckcodeailabs/dql-agent';
|
|
25
|
+
import { gatherProposeEnrichment } from '../propose-enrich.js';
|
|
26
|
+
export async function runPropose(fileArg, rest, flags) {
|
|
27
|
+
// --dbt-manifest <path> may arrive in rest (it is not a first-class flag).
|
|
28
|
+
let explicitManifest;
|
|
29
|
+
const dbtIdx = rest.indexOf('--dbt-manifest');
|
|
30
|
+
if (dbtIdx >= 0 && rest[dbtIdx + 1])
|
|
31
|
+
explicitManifest = resolve(rest[dbtIdx + 1]);
|
|
32
|
+
// --limit <n> may also arrive in rest.
|
|
33
|
+
let limit;
|
|
34
|
+
const limitIdx = rest.indexOf('--limit');
|
|
35
|
+
if (limitIdx >= 0 && rest[limitIdx + 1]) {
|
|
36
|
+
const value = Number(rest[limitIdx + 1]);
|
|
37
|
+
if (Number.isFinite(value) && value > 0)
|
|
38
|
+
limit = value;
|
|
39
|
+
}
|
|
40
|
+
const skip = new Set(['--dbt-manifest', explicitManifest, '--limit', rest[limitIdx + 1]].filter(Boolean));
|
|
41
|
+
const pathArg = fileArg && !fileArg.startsWith('-') ? fileArg : rest.find((a) => !a.startsWith('-') && !skip.has(a));
|
|
42
|
+
const projectRoot = resolve(pathArg ?? '.');
|
|
43
|
+
if (!existsSync(join(projectRoot, 'dql.config.json'))) {
|
|
44
|
+
console.error('No DQL project found (missing dql.config.json). Run `dql init` first, then `dql propose`.');
|
|
45
|
+
process.exitCode = 1;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const resolved = resolveDbtManifestPath(projectRoot, explicitManifest);
|
|
49
|
+
if (!resolved) {
|
|
50
|
+
const cfg = loadProjectConfig(projectRoot);
|
|
51
|
+
console.error('\n ✗ No dbt manifest found.');
|
|
52
|
+
console.error('');
|
|
53
|
+
if (cfg.dbt?.projectDir) {
|
|
54
|
+
console.error(` dql.config.json points at dbt project: ${cfg.dbt.projectDir}`);
|
|
55
|
+
console.error(' Run `dbt parse` (or `dbt compile`) there first, then re-run `dql propose`.');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.error(' Add a "dbt" section to dql.config.json, or pass --dbt-manifest <path>.');
|
|
59
|
+
}
|
|
60
|
+
console.error('');
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const cfg = loadProjectConfig(projectRoot);
|
|
65
|
+
const proposeConfig = cfg.propose;
|
|
66
|
+
// --plan: deterministic preview (classify → plan). Writes NOTHING.
|
|
67
|
+
const planOnly = Boolean(flags.plan) || rest.includes('--plan');
|
|
68
|
+
if (planOnly) {
|
|
69
|
+
let plan;
|
|
70
|
+
try {
|
|
71
|
+
plan = proposePlan(projectRoot, resolved, { config: proposeConfig });
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
75
|
+
console.error(`\n ✗ Plan failed: ${msg}\n`);
|
|
76
|
+
process.exitCode = 1;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (flags.format === 'json') {
|
|
80
|
+
console.log(JSON.stringify(plan, null, 2));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
printPlan(plan);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// --enrich: opt-in AI enrichment (CLI is deterministic by default for CI
|
|
87
|
+
// reproducibility). Best-effort; no provider → deterministic dbt-derived content.
|
|
88
|
+
const enrich = Boolean(flags.enrich) || rest.includes('--enrich');
|
|
89
|
+
let enrichedBySlug;
|
|
90
|
+
if (enrich && !flags.dryRun) {
|
|
91
|
+
if (flags.format !== 'json')
|
|
92
|
+
console.log('\n Enriching draft content with AI (best-effort)…');
|
|
93
|
+
enrichedBySlug = await gatherProposeEnrichment(projectRoot, resolved, proposeConfig).catch(() => undefined);
|
|
94
|
+
}
|
|
95
|
+
// Stamp the resolved local OSS owner when --owner is absent so drafts are not
|
|
96
|
+
// born with a "Missing owner" Certifier strike. A dry-run must not persist.
|
|
97
|
+
const owner = flags.owner || resolveLocalOwner(projectRoot, { persist: !flags.dryRun });
|
|
98
|
+
let summary;
|
|
99
|
+
try {
|
|
100
|
+
summary = propose({
|
|
101
|
+
projectRoot,
|
|
102
|
+
dbtManifestPath: resolved,
|
|
103
|
+
owner,
|
|
104
|
+
limit,
|
|
105
|
+
dryRun: Boolean(flags.dryRun),
|
|
106
|
+
config: proposeConfig,
|
|
107
|
+
enrichedBySlug,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
112
|
+
console.error(`\n ✗ Proposal failed: ${msg}\n`);
|
|
113
|
+
process.exitCode = 1;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (flags.format === 'json') {
|
|
117
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const dryRun = Boolean(flags.dryRun);
|
|
121
|
+
console.log('\n DQL Propose — drafts from dbt evidence');
|
|
122
|
+
console.log(' ' + '='.repeat(50));
|
|
123
|
+
if (summary.projectName)
|
|
124
|
+
console.log(` dbt project: ${summary.projectName}`);
|
|
125
|
+
console.log(` Models scanned: ${summary.modelsScanned}`);
|
|
126
|
+
console.log(` Business: ${summary.businessModels} (plumbing excluded: ${summary.plumbingExcluded}, metrics: ${summary.metricsFound})`);
|
|
127
|
+
console.log(` Selected: ${summary.proposalsRanked} (≤ ${summary.config.maxPerDomain} per domain)`);
|
|
128
|
+
console.log(` Drafts ${dryRun ? 'to write' : 'written'}: ${summary.draftsWritten}`);
|
|
129
|
+
console.log(` Skipped: ${summary.draftsSkipped}`);
|
|
130
|
+
console.log('');
|
|
131
|
+
console.log(' AI drafts, humans certify. Every block is status="draft" and');
|
|
132
|
+
console.log(' was checked by the Certifier (verdict stored in each file).');
|
|
133
|
+
console.log('');
|
|
134
|
+
const shown = summary.proposals.slice(0, 25);
|
|
135
|
+
for (const p of shown) {
|
|
136
|
+
const where = p.path ? p.path : p.skipped ? '(skipped)' : '(ranked)';
|
|
137
|
+
const exposure = p.ranking.exposureLinked ? ' · exposure' : '';
|
|
138
|
+
const runs = p.ranking.runCount > 0 ? ` · ${p.ranking.runCount} run(s)` : '';
|
|
139
|
+
console.log(` • ${p.model} [${p.inference.pattern}] score ${p.ranking.score}`);
|
|
140
|
+
console.log(` domain ${p.domain} · fan-out ${p.ranking.fanOut}${exposure}${runs}${p.inference.grain ? ` · grain ${p.inference.grain}` : ''}`);
|
|
141
|
+
const blocking = p.certification.errors.length;
|
|
142
|
+
const warnings = p.certification.warnings.length;
|
|
143
|
+
console.log(` certify gap: ${blocking} blocking, ${warnings} warning(s) → ${where}`);
|
|
144
|
+
if (p.skipped)
|
|
145
|
+
console.log(` note: ${p.skipped}`);
|
|
146
|
+
}
|
|
147
|
+
if (summary.proposals.length > shown.length) {
|
|
148
|
+
console.log(`\n ... and ${summary.proposals.length - shown.length} more.`);
|
|
149
|
+
}
|
|
150
|
+
console.log('');
|
|
151
|
+
console.log(' Next: review the top drafts under blocks/_drafts (or domains/<d>/blocks/_drafts),');
|
|
152
|
+
console.log(' then `dql certify --from-draft <path> --owner you@example.com` to promote.');
|
|
153
|
+
console.log('');
|
|
154
|
+
}
|
|
155
|
+
/** Pretty-print the deterministic PLAN (classify → plan, writes nothing). */
|
|
156
|
+
function printPlan(plan) {
|
|
157
|
+
console.log('\n DQL Propose — PLAN (nothing written)');
|
|
158
|
+
console.log(' ' + '='.repeat(50));
|
|
159
|
+
console.log(` Models scanned: ${plan.totals.modelsScanned}`);
|
|
160
|
+
console.log(` Business models: ${plan.totals.businessModels}`);
|
|
161
|
+
console.log(` Plumbing excluded: ${plan.totals.plumbingExcluded}`);
|
|
162
|
+
console.log(` Metrics found: ${plan.totals.metricsFound}`);
|
|
163
|
+
console.log(` Will generate: ${plan.willGenerate} (≤ ${plan.config.maxPerDomain} per domain)`);
|
|
164
|
+
console.log(` Will skip: ${plan.willSkip}`);
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log(' Selective, business-only seed. Plumbing/niche models are excluded.');
|
|
167
|
+
console.log(' Approve the scope, then generate drafts for review (AI drafts, humans certify).');
|
|
168
|
+
console.log('');
|
|
169
|
+
for (const domain of plan.domains) {
|
|
170
|
+
const owner = domain.owner ? ` · owner ${domain.owner}` : '';
|
|
171
|
+
console.log(` ▸ ${domain.name} (${domain.modelCount})${owner}`);
|
|
172
|
+
for (const c of domain.candidates) {
|
|
173
|
+
const grain = c.grain ? ` · grain ${c.grain}` : '';
|
|
174
|
+
const pattern = c.pattern ? ` [${c.pattern}]` : '';
|
|
175
|
+
console.log(` • ${c.model}${pattern} score ${c.score}${grain}`);
|
|
176
|
+
if (c.evidence.length > 0)
|
|
177
|
+
console.log(` why: ${c.evidence.join('; ')}`);
|
|
178
|
+
}
|
|
179
|
+
console.log('');
|
|
180
|
+
}
|
|
181
|
+
console.log(' Run `dql propose` (without --plan) to write the drafts for this scope.');
|
|
182
|
+
console.log('');
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=propose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose.js","sourceRoot":"","sources":["../../src/commands/propose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAY,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA+D,MAAM,2BAA2B,CAAC;AAEjJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAsB,EACtB,IAAc,EACd,KAAe;IAEf,2EAA2E;IAC3E,IAAI,gBAAoC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAElF,uCAAuC;IACvC,IAAI,KAAyB,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC;IAC9H,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC3G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,8CAA8C,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAClG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;IAElC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,kFAAkF;IAClF,MAAM,MAAM,GAAG,OAAO,CAAE,KAA8B,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5F,IAAI,cAAwD,CAAC;IAC7D,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAC/F,cAAc,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9G,CAAC;IAED,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAExF,IAAI,OAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,GAAG,OAAO,CAAC;YAChB,WAAW;YACX,eAAe,EAAE,QAAQ;YACzB,KAAK;YACL,KAAK;YACL,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7B,MAAM,EAAE,aAAa;YACrB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,cAAc,yBAAyB,OAAO,CAAC,gBAAgB,cAAc,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;IAC/I,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,eAAe,QAAQ,OAAO,CAAC,MAAM,CAAC,YAAY,cAAc,CAAC,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACrE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjJ,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,cAAc,QAAQ,iBAAiB,KAAK,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,6EAA6E;AAC7E,SAAS,SAAS,CAAC,IAAiB;IAClC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,cAAc,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,OAAO,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,8 @@ import { runVerify } from "./commands/verify.js";
|
|
|
31
31
|
import { runImport } from "./commands/import.js";
|
|
32
32
|
import { runConnect } from "./commands/connect.js";
|
|
33
33
|
import { runPromote } from "./commands/promote.js";
|
|
34
|
+
import { runEval } from "./commands/eval.js";
|
|
35
|
+
import { runPropose } from "./commands/propose.js";
|
|
34
36
|
const HELP = `
|
|
35
37
|
dql — DQL CLI
|
|
36
38
|
|
|
@@ -39,8 +41,8 @@ const HELP = `
|
|
|
39
41
|
dql new <type> <name> Create a domain, block, semantic block, view, term, dashboard, or workbook
|
|
40
42
|
dql build <file.dql> Compile a DQL file to a static HTML bundle
|
|
41
43
|
dql doctor [path] Run local setup checks for a DQL project
|
|
42
|
-
dql doctor scale
|
|
43
|
-
dql doctor git-hygiene
|
|
44
|
+
dql doctor scale [path] Report enterprise-scale manifest/cache/index health
|
|
45
|
+
dql doctor git-hygiene [path] Flag tracked local/generated files that create noisy commits
|
|
44
46
|
dql preview <file.dql> Render a local browser preview for a DQL file
|
|
45
47
|
dql serve [directory] Serve a built DQL bundle locally
|
|
46
48
|
dql parse <file.dql> Parse and analyze a DQL file
|
|
@@ -59,6 +61,10 @@ const HELP = `
|
|
|
59
61
|
Preview or apply legacy-to-domain folder moves
|
|
60
62
|
dql import sql <path> Generate AI import drafts from SQL files/folders
|
|
61
63
|
dql import sql <path> --save Compatibility alias; drafts autosave before certification
|
|
64
|
+
dql propose [path] Draft a ranked governance layer from dbt evidence
|
|
65
|
+
(one DRAFT block per high-value model; never
|
|
66
|
+
auto-certified — humans certify)
|
|
67
|
+
dql propose --dry-run Rank dbt models without writing any drafts
|
|
62
68
|
dql promote notebook <path> --to shared
|
|
63
69
|
Strip local run/UI state and mark a notebook shared
|
|
64
70
|
dql promote app <app-id> --to shared
|
|
@@ -77,15 +83,17 @@ const HELP = `
|
|
|
77
83
|
dql mcp [--http] Run the DQL MCP server (stdio by default; --http = loopback)
|
|
78
84
|
dql mcp test [path] Check whether DQL MCP can load this project
|
|
79
85
|
dql connect <target> [path] Configure Codex, Claude Code, Claude Desktop, or Cursor MCP
|
|
80
|
-
dql app new|generate|ls|show|build|reindex <name>
|
|
86
|
+
dql app new|generate|ls|show|build|reindex <name-or-path>
|
|
81
87
|
Manage App artifacts (metadata, policies, dashboards, schedules)
|
|
82
88
|
dql schedule list|run|start|status Local scheduler for @schedule'd blocks (alerts + notifications)
|
|
83
89
|
dql agent ask "<question>" Block-first agent loop (certified blocks → fallback LLM SQL)
|
|
84
|
-
dql agent reindex
|
|
90
|
+
dql agent reindex [path] Rebuild .dql/cache/agent-kg.sqlite and metadata.sqlite
|
|
85
91
|
dql agent feedback up|down Record thumbs-up/down feedback for self-learning
|
|
86
92
|
dql agent eval agent-evals.yml Measure certified/follow-up/refusal accuracy
|
|
87
93
|
dql slack serve Slack slash-command bot (forwards to the answer loop)
|
|
88
94
|
dql verify Verify dql-manifest.json is reproducible from source
|
|
95
|
+
dql eval [path] Replay block examples + eval/*.yaml through the agent
|
|
96
|
+
router and score routing accuracy (CI-gateable)
|
|
89
97
|
dql --version Show version
|
|
90
98
|
dql --help Show this help
|
|
91
99
|
|
|
@@ -144,6 +152,23 @@ const COMMAND_HELP = {
|
|
|
144
152
|
Import creates AI-first draft blocks under _drafts, parameterizes safe
|
|
145
153
|
runtime literals, checks for similar certified blocks, and never certifies
|
|
146
154
|
generated DQL automatically.
|
|
155
|
+
`,
|
|
156
|
+
propose: `
|
|
157
|
+
dql propose — Draft a governance layer from dbt evidence
|
|
158
|
+
|
|
159
|
+
Usage:
|
|
160
|
+
dql propose [path] [--dbt-manifest <path>] [--owner <name>] [--limit <n>]
|
|
161
|
+
dql propose [path] --dry-run [--format json]
|
|
162
|
+
|
|
163
|
+
Reads dbt artifacts (manifest.json, catalog.json, semantic_manifest.json,
|
|
164
|
+
run_results.json) and emits one DRAFT block per high-value model, inferring
|
|
165
|
+
grain / pattern / outputs / llmContext conservatively. Each draft is born
|
|
166
|
+
status="draft", checked by the Certifier (verdict stored in the file), and
|
|
167
|
+
ranked by downstream fan-out, exposure linkage, and run frequency.
|
|
168
|
+
|
|
169
|
+
Nothing is ever auto-certified. Re-running is idempotent — existing drafts
|
|
170
|
+
and already-promoted blocks are never overwritten or duplicated. Promote a
|
|
171
|
+
reviewed draft with: dql certify --from-draft <path> --owner you@example.com
|
|
147
172
|
`,
|
|
148
173
|
app: `
|
|
149
174
|
dql app — Manage local App artifacts
|
|
@@ -151,10 +176,10 @@ const COMMAND_HELP = {
|
|
|
151
176
|
Usage:
|
|
152
177
|
dql app new <name>
|
|
153
178
|
dql app generate "<prompt>" [--domain <domain>] [--owner <user>] [--ai-layout]
|
|
154
|
-
dql app ls
|
|
155
|
-
dql app show <name>
|
|
156
|
-
dql app build
|
|
157
|
-
dql app reindex
|
|
179
|
+
dql app ls [path]
|
|
180
|
+
dql app show <name> [path]
|
|
181
|
+
dql app build [path]
|
|
182
|
+
dql app reindex [path]
|
|
158
183
|
|
|
159
184
|
Notes:
|
|
160
185
|
--ai-layout stores DQL-native GenUI metadata for dynamic visualization and
|
|
@@ -175,8 +200,8 @@ const COMMAND_HELP = {
|
|
|
175
200
|
Usage:
|
|
176
201
|
dql doctor [path] [--format json]
|
|
177
202
|
dql doctor [path] --ai
|
|
178
|
-
dql doctor scale [--format json]
|
|
179
|
-
dql doctor git-hygiene [--format json]
|
|
203
|
+
dql doctor scale [path] [--format json]
|
|
204
|
+
dql doctor git-hygiene [path] [--format json]
|
|
180
205
|
|
|
181
206
|
Prints setup checks and the next local-first commands to run.
|
|
182
207
|
`,
|
|
@@ -210,6 +235,26 @@ const COMMAND_HELP = {
|
|
|
210
235
|
dql semantic list [path]
|
|
211
236
|
dql semantic validate [path]
|
|
212
237
|
dql semantic query <metrics> [dimensions]
|
|
238
|
+
`,
|
|
239
|
+
eval: `
|
|
240
|
+
dql eval — Score the answer agent's routing accuracy
|
|
241
|
+
|
|
242
|
+
Usage:
|
|
243
|
+
dql eval [path] [--format json]
|
|
244
|
+
dql eval [path] --min-route-accuracy <0..1> --min-refusal <0..1>
|
|
245
|
+
dql eval [path] --no-examples
|
|
246
|
+
|
|
247
|
+
Replays every certified block's examples[].question plus any eval/*.yaml
|
|
248
|
+
cases through the existing agent router (no warehouse, no LLM judging) and
|
|
249
|
+
scores route accuracy, block selection, grain match, and refusal precision/
|
|
250
|
+
recall. Exits non-zero below the configured thresholds, so it is CI-gateable.
|
|
251
|
+
|
|
252
|
+
eval/*.yaml cases:
|
|
253
|
+
- question: "..."
|
|
254
|
+
expectRoute: certified | generated | missing_context | research
|
|
255
|
+
expectBlock: "<block name>" # optional
|
|
256
|
+
expectGrain: "<grain>" # optional
|
|
257
|
+
expectRefuse: true # optional; shorthand for missing_context
|
|
213
258
|
`,
|
|
214
259
|
verify: `
|
|
215
260
|
dql verify — Verify dql-manifest.json is reproducible
|
|
@@ -255,6 +300,8 @@ async function main() {
|
|
|
255
300
|
command === "promote" ||
|
|
256
301
|
command === "schedule" ||
|
|
257
302
|
command === "verify" ||
|
|
303
|
+
command === "eval" ||
|
|
304
|
+
command === "propose" ||
|
|
258
305
|
(command === "certify" && Boolean(flags.fromDraft));
|
|
259
306
|
if (!file && !commandAllowsNoFile) {
|
|
260
307
|
console.error('Error: No file/argument specified. Run "dql --help" for usage.');
|
|
@@ -272,7 +319,7 @@ async function main() {
|
|
|
272
319
|
await runBuild(file, flags);
|
|
273
320
|
break;
|
|
274
321
|
case "doctor":
|
|
275
|
-
await runDoctor(file, flags);
|
|
322
|
+
await runDoctor(file, flags, rest);
|
|
276
323
|
break;
|
|
277
324
|
case "parse":
|
|
278
325
|
await runParse(file, flags);
|
|
@@ -298,6 +345,9 @@ async function main() {
|
|
|
298
345
|
case "import":
|
|
299
346
|
await runImport(file, rest, flags);
|
|
300
347
|
break;
|
|
348
|
+
case "propose":
|
|
349
|
+
await runPropose(file, rest, flags);
|
|
350
|
+
break;
|
|
301
351
|
case "fmt":
|
|
302
352
|
await runFmt(file, flags);
|
|
303
353
|
break;
|
|
@@ -346,6 +396,9 @@ async function main() {
|
|
|
346
396
|
case "verify":
|
|
347
397
|
await runVerify(file, rest, flags);
|
|
348
398
|
break;
|
|
399
|
+
case "eval":
|
|
400
|
+
await runEval(file, rest, flags);
|
|
401
|
+
break;
|
|
349
402
|
default:
|
|
350
403
|
console.error(`Unknown command: ${command}. Run "dql --help" for usage.`);
|
|
351
404
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-tools.d.ts","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAiC7D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,CA+E3F;
|
|
1
|
+
{"version":3,"file":"analytics-tools.d.ts","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAiC7D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,CA+E3F;AAQD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CA0BnF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAyBnH"}
|
|
@@ -104,6 +104,11 @@ export function buildAnalyticsAgentTools(ctx, req) {
|
|
|
104
104
|
},
|
|
105
105
|
];
|
|
106
106
|
}
|
|
107
|
+
// Defensively bound carried-forward conversation text so a long multi-turn chat
|
|
108
|
+
// can't grow the system prompt unbounded.
|
|
109
|
+
function clampPromptText(value, max = 240) {
|
|
110
|
+
return value.length > max ? `${value.slice(0, max).trimEnd()}…` : value;
|
|
111
|
+
}
|
|
107
112
|
export function analyticsSystemPrompt(ctx, req) {
|
|
108
113
|
const domains = Array.from(new Set(Object.values(ctx.manifest.blocks).map((block) => block.domain).filter(Boolean))).sort();
|
|
109
114
|
const upstream = req.upstream?.sql?.trim();
|
|
@@ -124,10 +129,10 @@ export function analyticsSystemPrompt(ctx, req) {
|
|
|
124
129
|
`Project context: ${Object.keys(ctx.manifest.blocks).length} blocks. Domains: ${domains.join(', ') || '(none yet)'}.`,
|
|
125
130
|
upstream ? `Current UI/app context:\n${upstream}` : '',
|
|
126
131
|
context?.sourceCertifiedBlock ? `Selected/source certified block: ${context.sourceCertifiedBlock}` : '',
|
|
127
|
-
context?.sourceQuestion ? `Prior question: ${context.sourceQuestion}` : '',
|
|
128
|
-
context?.sourceAnswerSummary ? `Prior answer summary: ${context.sourceAnswerSummary}` : '',
|
|
129
|
-
context?.requestedFilters?.length ? `Remembered filters: ${context.requestedFilters.join(', ')}` : '',
|
|
130
|
-
context?.requestedDimensions?.length ? `Remembered dimensions: ${context.requestedDimensions.join(', ')}` : '',
|
|
132
|
+
context?.sourceQuestion ? `Prior question: ${clampPromptText(context.sourceQuestion, 200)}` : '',
|
|
133
|
+
context?.sourceAnswerSummary ? `Prior answer summary: ${clampPromptText(context.sourceAnswerSummary)}` : '',
|
|
134
|
+
context?.requestedFilters?.length ? `Remembered filters: ${context.requestedFilters.slice(0, 8).join(', ')}` : '',
|
|
135
|
+
context?.requestedDimensions?.length ? `Remembered dimensions: ${context.requestedDimensions.slice(0, 8).join(', ')}` : '',
|
|
131
136
|
];
|
|
132
137
|
return lines.filter(Boolean).join('\n');
|
|
133
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-tools.js","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analytics-tools.js","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dql-agent-provider.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/dql-agent-provider.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAmB,WAAW,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtG,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC;AA4E5G,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"dql-agent-provider.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/dql-agent-provider.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAmB,WAAW,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtG,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC;AA4E5G,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,gBAAgB,GAAG,WAAW,CAiI9E"}
|
|
@@ -7,7 +7,7 @@ const SPECS = {
|
|
|
7
7
|
setup: 'Configure Anthropic in Settings or set ANTHROPIC_API_KEY. Optional: ANTHROPIC_MODEL.',
|
|
8
8
|
create: (projectRoot) => {
|
|
9
9
|
const config = getEffectiveProviderConfig(projectRoot, 'anthropic');
|
|
10
|
-
return new ClaudeProvider({ apiKey: config.apiKey, model: config.model });
|
|
10
|
+
return new ClaudeProvider({ apiKey: config.apiKey, baseUrl: config.baseUrl, model: config.model });
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
13
|
openai: {
|
|
@@ -23,7 +23,7 @@ const SPECS = {
|
|
|
23
23
|
setup: 'Configure Gemini in Settings or set GEMINI_API_KEY. Optional: GEMINI_MODEL.',
|
|
24
24
|
create: (projectRoot) => {
|
|
25
25
|
const config = getEffectiveProviderConfig(projectRoot, 'gemini');
|
|
26
|
-
return new GeminiProvider({ apiKey: config.apiKey, model: config.model });
|
|
26
|
+
return new GeminiProvider({ apiKey: config.apiKey, baseUrl: config.baseUrl, model: config.model });
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
ollama: {
|
|
@@ -95,9 +95,12 @@ export function createDqlAgentProviderRunner(id) {
|
|
|
95
95
|
const memory = new MemoryStore(defaultMemoryPath(req.projectRoot));
|
|
96
96
|
const kg = new KGStore(kgPath);
|
|
97
97
|
try {
|
|
98
|
+
// Retrieve durable learnings only — notebook/project/user/artifact scope.
|
|
99
|
+
// `thread` (per-conversation) memory is intentionally excluded: it is
|
|
100
|
+
// raw-chat residue, not a governed learning, and bloats the prompt.
|
|
98
101
|
const memoryContext = memory.search({
|
|
99
102
|
query: question,
|
|
100
|
-
scopes: ['
|
|
103
|
+
scopes: ['notebook', 'project', 'user', 'artifact'],
|
|
101
104
|
scopeId: req.upstream?.cellId,
|
|
102
105
|
limit: 6,
|
|
103
106
|
});
|
|
@@ -178,7 +181,11 @@ export function createDqlAgentProviderRunner(id) {
|
|
|
178
181
|
else {
|
|
179
182
|
emitProposalFromText(result.text, emit);
|
|
180
183
|
}
|
|
181
|
-
|
|
184
|
+
// NOTE: we deliberately do NOT persist a per-turn chat summary into
|
|
185
|
+
// memory. Raw chat is not a correctness signal; auto-capturing it
|
|
186
|
+
// pollutes the store and bloats every later prompt. Durable learning
|
|
187
|
+
// comes only from governed deltas (certify/correct). Conversation
|
|
188
|
+
// continuity is carried per-request via conversationContext instead.
|
|
182
189
|
}
|
|
183
190
|
finally {
|
|
184
191
|
kg.close();
|
|
@@ -217,17 +224,22 @@ function renderExtraContext(req, followUp) {
|
|
|
217
224
|
}
|
|
218
225
|
const context = req.conversationContext;
|
|
219
226
|
if (context) {
|
|
227
|
+
// Bound the carried-forward "conversation memory" defensively: only the most
|
|
228
|
+
// recent turn's signals, with hard caps on the summary length and list sizes
|
|
229
|
+
// so prompts don't grow across a long multi-turn chat.
|
|
230
|
+
const clampText = (value, max = 240) => value.length > max ? `${value.slice(0, max).trimEnd()}…` : value;
|
|
231
|
+
const clampList = (values, max = 8) => values.slice(0, max).join(', ');
|
|
220
232
|
const contextLines = [
|
|
221
233
|
context.sourceCertifiedBlock ? `source certified block: ${context.sourceCertifiedBlock}` : '',
|
|
222
|
-
context.sourceQuestion ? `source question: ${context.sourceQuestion}` : '',
|
|
223
|
-
context.sourceAnswerSummary ? `source answer summary: ${context.sourceAnswerSummary}` : '',
|
|
234
|
+
context.sourceQuestion ? `source question: ${clampText(context.sourceQuestion, 200)}` : '',
|
|
235
|
+
context.sourceAnswerSummary ? `source answer summary: ${clampText(context.sourceAnswerSummary)}` : '',
|
|
224
236
|
context.contextPackId ? `context pack: ${context.contextPackId}` : '',
|
|
225
237
|
context.trustLabel ? `trust label: ${context.trustLabel}` : '',
|
|
226
238
|
context.reviewStatus ? `review status: ${context.reviewStatus}` : '',
|
|
227
239
|
context.draftBlockPath ? `draft block: ${context.draftBlockPath}` : '',
|
|
228
|
-
context.requestedFilters?.length ? `remembered filters: ${context.requestedFilters
|
|
229
|
-
context.requestedDimensions?.length ? `remembered dimensions: ${context.requestedDimensions
|
|
230
|
-
context.outputColumns?.length ? `prior output columns: ${context.outputColumns
|
|
240
|
+
context.requestedFilters?.length ? `remembered filters: ${clampList(context.requestedFilters)}` : '',
|
|
241
|
+
context.requestedDimensions?.length ? `remembered dimensions: ${clampList(context.requestedDimensions)}` : '',
|
|
242
|
+
context.outputColumns?.length ? `prior output columns: ${clampList(context.outputColumns)}` : '',
|
|
231
243
|
].filter(Boolean);
|
|
232
244
|
if (contextLines.length > 0) {
|
|
233
245
|
parts.push(`Conversation memory:\n${contextLines.join('\n')}`);
|
|
@@ -517,29 +529,6 @@ function inferProposalDomain(result) {
|
|
|
517
529
|
];
|
|
518
530
|
return candidates.find((asset) => typeof asset.domain === 'string' && asset.domain.trim())?.domain?.trim();
|
|
519
531
|
}
|
|
520
|
-
function persistThreadMemory(memory, req, question, result) {
|
|
521
|
-
const cellId = req.upstream?.cellId;
|
|
522
|
-
if (!cellId)
|
|
523
|
-
return;
|
|
524
|
-
memory.upsert({
|
|
525
|
-
id: `thread:${cellId}`,
|
|
526
|
-
scope: 'thread',
|
|
527
|
-
scopeId: cellId,
|
|
528
|
-
title: 'Notebook chat summary',
|
|
529
|
-
content: [
|
|
530
|
-
`Latest question: ${question}`,
|
|
531
|
-
`Latest route: ${result.sourceTier ?? 'unknown'} / ${result.certification ?? 'unknown'}`,
|
|
532
|
-
result.sourceCertifiedBlock ? `Latest source block: ${result.sourceCertifiedBlock}` : '',
|
|
533
|
-
result.contextPackId ? `Latest context pack: ${result.contextPackId}` : '',
|
|
534
|
-
result.draftBlockId ? `Latest draft block: ${result.draftBlockId}` : '',
|
|
535
|
-
`Latest answer: ${result.text.slice(0, 500)}`,
|
|
536
|
-
].filter(Boolean).join('\n'),
|
|
537
|
-
tags: ['chat', result.sourceTier ?? 'unknown', result.certification ?? 'unknown'],
|
|
538
|
-
source: 'notebook-chat',
|
|
539
|
-
confidence: result.confidence ?? 0.5,
|
|
540
|
-
importance: 0.45,
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
532
|
function slugify(input) {
|
|
544
533
|
return input
|
|
545
534
|
.toLowerCase()
|