@duckcodeailabs/dql-cli 1.6.0 → 1.6.2

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 (91) hide show
  1. package/README.md +9 -9
  2. package/dist/apps-api.d.ts +20 -0
  3. package/dist/apps-api.d.ts.map +1 -1
  4. package/dist/apps-api.js +82 -4
  5. package/dist/apps-api.js.map +1 -1
  6. package/dist/apps-api.test.js +43 -1
  7. package/dist/apps-api.test.js.map +1 -1
  8. package/dist/args.d.ts +2 -0
  9. package/dist/args.d.ts.map +1 -1
  10. package/dist/args.js +3 -0
  11. package/dist/args.js.map +1 -1
  12. package/dist/assets/dql-notebook/assets/index-60sOoPrg.js +3599 -0
  13. package/dist/assets/dql-notebook/assets/index-RaDW1A5g.css +1 -0
  14. package/dist/assets/dql-notebook/index.html +3 -3
  15. package/dist/commands/app.d.ts +4 -3
  16. package/dist/commands/app.d.ts.map +1 -1
  17. package/dist/commands/app.js +161 -75
  18. package/dist/commands/app.js.map +1 -1
  19. package/dist/commands/build.d.ts.map +1 -1
  20. package/dist/commands/build.js +7 -1
  21. package/dist/commands/build.js.map +1 -1
  22. package/dist/commands/certify.d.ts.map +1 -1
  23. package/dist/commands/certify.js +35 -5
  24. package/dist/commands/certify.js.map +1 -1
  25. package/dist/commands/compile.d.ts +1 -1
  26. package/dist/commands/compile.d.ts.map +1 -1
  27. package/dist/commands/compile.js +42 -3
  28. package/dist/commands/compile.js.map +1 -1
  29. package/dist/commands/doctor.d.ts.map +1 -1
  30. package/dist/commands/doctor.js +91 -4
  31. package/dist/commands/doctor.js.map +1 -1
  32. package/dist/commands/doctor.test.js +1 -0
  33. package/dist/commands/doctor.test.js.map +1 -1
  34. package/dist/commands/info.d.ts.map +1 -1
  35. package/dist/commands/info.js +21 -6
  36. package/dist/commands/info.js.map +1 -1
  37. package/dist/commands/init.d.ts.map +1 -1
  38. package/dist/commands/init.js +3 -1
  39. package/dist/commands/init.js.map +1 -1
  40. package/dist/commands/init.test.js +4 -0
  41. package/dist/commands/init.test.js.map +1 -1
  42. package/dist/commands/lineage.d.ts +3 -0
  43. package/dist/commands/lineage.d.ts.map +1 -1
  44. package/dist/commands/lineage.js +230 -2
  45. package/dist/commands/lineage.js.map +1 -1
  46. package/dist/commands/migrate.d.ts.map +1 -1
  47. package/dist/commands/migrate.js +2 -1
  48. package/dist/commands/migrate.js.map +1 -1
  49. package/dist/commands/new.js +61 -2
  50. package/dist/commands/new.js.map +1 -1
  51. package/dist/commands/new.test.js +106 -0
  52. package/dist/commands/new.test.js.map +1 -1
  53. package/dist/commands/parse.d.ts.map +1 -1
  54. package/dist/commands/parse.js +13 -3
  55. package/dist/commands/parse.js.map +1 -1
  56. package/dist/commands/preview.d.ts.map +1 -1
  57. package/dist/commands/preview.js +7 -1
  58. package/dist/commands/preview.js.map +1 -1
  59. package/dist/commands/validate.d.ts.map +1 -1
  60. package/dist/commands/validate.js +55 -8
  61. package/dist/commands/validate.js.map +1 -1
  62. package/dist/commands/validate.test.js +85 -0
  63. package/dist/commands/validate.test.js.map +1 -1
  64. package/dist/commands/verify.d.ts +1 -1
  65. package/dist/commands/verify.d.ts.map +1 -1
  66. package/dist/commands/verify.js +40 -6
  67. package/dist/commands/verify.js.map +1 -1
  68. package/dist/index.js +136 -64
  69. package/dist/index.js.map +1 -1
  70. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  71. package/dist/llm/providers/dql-agent-provider.js +95 -19
  72. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  73. package/dist/llm/tools.d.ts.map +1 -1
  74. package/dist/llm/tools.js +29 -1
  75. package/dist/llm/tools.js.map +1 -1
  76. package/dist/llm/types.d.ts +3 -1
  77. package/dist/llm/types.d.ts.map +1 -1
  78. package/dist/local-runtime.d.ts +14 -0
  79. package/dist/local-runtime.d.ts.map +1 -1
  80. package/dist/local-runtime.js +763 -58
  81. package/dist/local-runtime.js.map +1 -1
  82. package/dist/local-runtime.test.js +64 -1
  83. package/dist/local-runtime.test.js.map +1 -1
  84. package/dist/template-adoption.test.d.ts +2 -0
  85. package/dist/template-adoption.test.d.ts.map +1 -0
  86. package/dist/template-adoption.test.js +105 -0
  87. package/dist/template-adoption.test.js.map +1 -0
  88. package/package.json +13 -13
  89. package/dist/assets/dql-notebook/assets/index-B5jI3I8Q.js +0 -869
  90. package/dist/assets/dql-notebook/assets/index-cv-O4BEj.css +0 -1
  91. package/dist/package.json +0 -44
@@ -8,44 +8,48 @@
8
8
  *
9
9
  * Subcommands:
10
10
  * dql app new <id> --domain <domain> [--owner <user>]
11
+ * dql app generate "<prompt>" [--domain <domain>] [--owner <user>]
11
12
  * dql app ls
12
13
  * dql app show <id>
13
14
  * dql app build [--app <id>]
14
15
  * dql app reindex [--app <id>] (no-op until the agent KG package lands; aliased)
15
16
  */
16
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
17
- import { join, relative } from 'node:path';
18
- import { resolveDbtManifestPath } from '@duckcodeailabs/dql-core';
19
- import { buildManifest, loadAppDocument, findAppDocuments, loadDashboardDocument, findDashboardsForApp, suggestAppId, } from '@duckcodeailabs/dql-core';
20
- import { findProjectRoot } from '../local-runtime.js';
21
- const APPS_ROOT = 'apps';
17
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, } from "node:fs";
18
+ import { join, relative } from "node:path";
19
+ import { resolveDbtManifestPath } from "@duckcodeailabs/dql-core";
20
+ import { buildManifest, loadAppDocument, findAppDocuments, loadDashboardDocument, findDashboardsForApp, suggestAppId, } from "@duckcodeailabs/dql-core";
21
+ import { findProjectRoot } from "../local-runtime.js";
22
+ const APPS_ROOT = "apps";
22
23
  export async function runApp(sub, rest, flags) {
23
24
  switch (sub) {
24
- case 'new':
25
+ case "new":
25
26
  return runAppNew(rest, flags);
26
- case 'ls':
27
- case 'list':
27
+ case "generate":
28
+ return runAppGenerate(rest, flags);
29
+ case "ls":
30
+ case "list":
28
31
  return runAppList(flags);
29
- case 'show':
32
+ case "show":
30
33
  return runAppShow(rest, flags);
31
- case 'build':
34
+ case "build":
32
35
  return runAppBuild(flags);
33
- case 'reindex':
36
+ case "reindex":
34
37
  return runAppReindex(flags);
35
38
  default:
36
- throw new Error('Usage: dql app <new|ls|show|build|reindex> [args]\n' +
37
- ' dql app new <id> --domain <domain> [--owner <user>]\n' +
38
- ' dql app ls\n' +
39
- ' dql app show <id>\n' +
40
- ' dql app build\n' +
41
- ' dql app reindex');
39
+ throw new Error("Usage: dql app <new|ls|show|build|reindex> [args]\n" +
40
+ " dql app new <id> --domain <domain> [--owner <user>]\n" +
41
+ ' dql app generate "<prompt>" [--domain <domain>] [--owner <user>]\n' +
42
+ " dql app ls\n" +
43
+ " dql app show <id>\n" +
44
+ " dql app build\n" +
45
+ " dql app reindex");
42
46
  }
43
47
  }
44
48
  // ---- new ----
45
49
  async function runAppNew(rest, flags) {
46
50
  const rawId = rest[0];
47
51
  if (!rawId) {
48
- throw new Error('Usage: dql app new <id> --domain <domain> [--owner <user>]');
52
+ throw new Error("Usage: dql app new <id> --domain <domain> [--owner <user>]");
49
53
  }
50
54
  const domain = flags.domain?.trim();
51
55
  if (!domain)
@@ -56,102 +60,166 @@ async function runAppNew(rest, flags) {
56
60
  if (existsSync(appDir)) {
57
61
  throw new Error(`App already exists at ${relFromRoot(projectRoot, appDir)}`);
58
62
  }
59
- const owner = flags.owner?.trim() || `${process.env.USER ?? 'owner'}@local`;
63
+ const owner = flags.owner?.trim() ||
64
+ `${process.env.USER ?? "owner"}@local`;
60
65
  const displayName = humanise(id);
61
66
  const appJson = {
62
67
  version: 1,
63
68
  id,
64
69
  name: displayName,
65
70
  description: `${displayName} — consumption surface for ${domain}`,
66
- visibility: 'shared',
71
+ visibility: "shared",
67
72
  domain,
68
73
  groups: [],
69
- lifecycle: 'draft',
74
+ lifecycle: "draft",
70
75
  owners: [owner],
71
76
  tags: [],
72
- members: [
73
- { userId: owner, displayName: owner, roles: ['owner'] },
74
- ],
77
+ members: [{ userId: owner, displayName: owner, roles: ["owner"] }],
75
78
  roles: [
76
- { id: 'owner', displayName: 'Owner', description: 'Full access to all dashboards and configuration.' },
77
- { id: 'analyst', displayName: 'Analyst', description: 'Can view and run dashboards, propose new blocks.' },
78
- { id: 'viewer', displayName: 'Viewer', description: 'Read-only access to certified dashboards.' },
79
+ {
80
+ id: "owner",
81
+ displayName: "Owner",
82
+ description: "Full access to all dashboards and configuration.",
83
+ },
84
+ {
85
+ id: "analyst",
86
+ displayName: "Analyst",
87
+ description: "Can view and run dashboards, propose new blocks.",
88
+ },
89
+ {
90
+ id: "viewer",
91
+ displayName: "Viewer",
92
+ description: "Read-only access to certified dashboards.",
93
+ },
79
94
  ],
80
95
  policies: [
81
96
  {
82
- id: 'viewers-read',
97
+ id: "viewers-read",
83
98
  domain,
84
- minClassification: 'internal',
85
- allowedRoles: ['viewer', 'analyst', 'owner'],
86
- accessLevel: 'read',
99
+ minClassification: "internal",
100
+ allowedRoles: ["viewer", "analyst", "owner"],
101
+ accessLevel: "read",
87
102
  enabled: true,
88
103
  },
89
104
  {
90
- id: 'analyst-execute',
105
+ id: "analyst-execute",
91
106
  domain,
92
- minClassification: 'confidential',
93
- allowedRoles: ['analyst', 'owner'],
94
- accessLevel: 'execute',
107
+ minClassification: "confidential",
108
+ allowedRoles: ["analyst", "owner"],
109
+ accessLevel: "execute",
95
110
  enabled: true,
96
111
  },
97
112
  ],
98
113
  rlsBindings: [],
99
114
  schedules: [],
100
- homepage: { type: 'dashboard', id: 'overview' },
115
+ homepage: { type: "dashboard", id: "overview" },
101
116
  };
102
117
  const overview = {
103
118
  version: 1,
104
- id: 'overview',
119
+ id: "overview",
105
120
  metadata: {
106
121
  title: `${displayName} — Overview`,
107
- description: 'Default dashboard scaffolded by `dql app new`. Replace with your own blocks.',
122
+ description: "Default dashboard scaffolded by `dql app new`. Replace with your own blocks.",
108
123
  domain,
109
- visibility: 'shared',
110
- lifecycle: 'draft',
124
+ visibility: "shared",
125
+ lifecycle: "draft",
111
126
  },
112
127
  layout: {
113
- kind: 'grid',
128
+ kind: "grid",
114
129
  cols: 12,
115
130
  rowHeight: 80,
116
131
  items: [],
117
132
  },
118
133
  };
119
- mkdirSync(join(appDir, 'dashboards'), { recursive: true });
120
- mkdirSync(join(appDir, 'notebooks'), { recursive: true });
121
- mkdirSync(join(appDir, 'drafts'), { recursive: true });
122
- writeFileSync(join(appDir, 'dql.app.json'), JSON.stringify(appJson, null, 2) + '\n', 'utf-8');
123
- writeFileSync(join(appDir, 'dashboards', 'overview.dqld'), JSON.stringify(overview, null, 2) + '\n', 'utf-8');
134
+ mkdirSync(join(appDir, "dashboards"), { recursive: true });
135
+ mkdirSync(join(appDir, "notebooks"), { recursive: true });
136
+ mkdirSync(join(appDir, "drafts"), { recursive: true });
137
+ writeFileSync(join(appDir, "dql.app.json"), JSON.stringify(appJson, null, 2) + "\n", "utf-8");
138
+ writeFileSync(join(appDir, "dashboards", "overview.dqld"), JSON.stringify(overview, null, 2) + "\n", "utf-8");
124
139
  const rel = relFromRoot(projectRoot, appDir);
125
- if (flags.format === 'json') {
140
+ if (flags.format === "json") {
126
141
  console.log(JSON.stringify({ created: true, id, path: rel }, null, 2));
127
142
  return;
128
143
  }
129
144
  console.log(`\n ✓ Created app: ${id}`);
130
145
  console.log(` Path: ${rel}`);
131
146
  console.log(` Domain: ${domain} Owner: ${owner}`);
132
- console.log('');
133
- console.log(' Next steps:');
147
+ console.log("");
148
+ console.log(" Next steps:");
134
149
  console.log(` 1. Add blocks to your project under blocks/`);
135
150
  console.log(` 2. Edit ${rel}/dashboards/overview.dqld to reference them`);
136
151
  console.log(` 3. dql app build # writes apps[] and dashboards[] into dql-manifest.json`);
137
152
  console.log(` 4. dql notebook # open the App in the desktop UI`);
138
- console.log('');
153
+ console.log("");
154
+ }
155
+ // ---- generate ----
156
+ async function runAppGenerate(rest, flags) {
157
+ const prompt = await readPrompt(rest, flags);
158
+ if (!prompt) {
159
+ throw new Error('Usage: dql app generate "<prompt>" [--domain <domain>] [--owner <user>]');
160
+ }
161
+ const { KGStore, defaultKgPath, generateAppFromPlan, planAppFromPrompt, reindexProject, validateAppPlan, } = await import("@duckcodeailabs/dql-agent");
162
+ const projectRoot = findProjectRoot(process.cwd());
163
+ const kgPath = defaultKgPath(projectRoot);
164
+ await reindexProject(projectRoot, { kgPath });
165
+ const kg = new KGStore(kgPath);
166
+ try {
167
+ const plan = planAppFromPrompt({
168
+ prompt,
169
+ kg,
170
+ domain: cleanOptional(flags.domain),
171
+ owner: cleanOptional(flags.owner),
172
+ });
173
+ const validation = validateAppPlan(plan, kg);
174
+ const generated = generateAppFromPlan(projectRoot, plan, kg, {
175
+ overwrite: Boolean(flags.force),
176
+ });
177
+ if (flags.format === "json") {
178
+ console.log(JSON.stringify({ ok: true, plan, validation, generated }, null, 2));
179
+ return;
180
+ }
181
+ console.log(`\n ✓ Generated local app package: ${plan.name}`);
182
+ console.log(` App id: ${plan.appId}`);
183
+ console.log(` Agent skills: ${plan.skills.map((skill) => skill.title).join(", ")}`);
184
+ console.log(` Domain: ${plan.domain} Audience: ${plan.audience}`);
185
+ console.log(` Certified tiles: ${validation.certifiedTiles} Draft/review tiles: ${validation.draftTiles}`);
186
+ console.log("");
187
+ console.log(" Files:");
188
+ for (const path of generated.paths)
189
+ console.log(` - ${path}`);
190
+ if (validation.issues.length > 0) {
191
+ console.log("");
192
+ console.log(" Review notes:");
193
+ for (const issue of validation.issues) {
194
+ console.log(` [${issue.level}] ${issue.path}: ${issue.message}`);
195
+ }
196
+ }
197
+ console.log("");
198
+ console.log(" Next steps:");
199
+ console.log(" 1. Review generated draft/narrative tiles in the dashboard file");
200
+ console.log(" 2. Promote useful draft sections into certified blocks");
201
+ console.log(" 3. Run dql app build");
202
+ console.log("");
203
+ }
204
+ finally {
205
+ kg.close();
206
+ }
139
207
  }
140
208
  // ---- ls ----
141
209
  async function runAppList(flags) {
142
210
  const projectRoot = findProjectRoot(process.cwd());
143
211
  const apps = collectApps(projectRoot);
144
- if (flags.format === 'json') {
212
+ if (flags.format === "json") {
145
213
  console.log(JSON.stringify({ apps }, null, 2));
146
214
  return;
147
215
  }
148
216
  if (apps.length === 0) {
149
- console.log('No apps found. Create one with: dql app new <id> --domain <domain>');
217
+ console.log("No apps found. Create one with: dql app new <id> --domain <domain>");
150
218
  return;
151
219
  }
152
220
  for (const a of apps) {
153
- const member = `${a.members.length} member${a.members.length === 1 ? '' : 's'}`;
154
- const dash = `${a.dashboards.length} dashboard${a.dashboards.length === 1 ? '' : 's'}`;
221
+ const member = `${a.members.length} member${a.members.length === 1 ? "" : "s"}`;
222
+ const dash = `${a.dashboards.length} dashboard${a.dashboards.length === 1 ? "" : "s"}`;
155
223
  console.log(`${a.id.padEnd(28)} domain=${a.domain.padEnd(12)} ${member.padEnd(12)} ${dash}`);
156
224
  }
157
225
  }
@@ -159,23 +227,23 @@ async function runAppList(flags) {
159
227
  async function runAppShow(rest, flags) {
160
228
  const id = rest[0];
161
229
  if (!id)
162
- throw new Error('Usage: dql app show <id>');
230
+ throw new Error("Usage: dql app show <id>");
163
231
  const projectRoot = findProjectRoot(process.cwd());
164
232
  const apps = collectApps(projectRoot);
165
233
  const app = apps.find((a) => a.id === id);
166
234
  if (!app)
167
235
  throw new Error(`No app named "${id}" under ${APPS_ROOT}/`);
168
- if (flags.format === 'json') {
236
+ if (flags.format === "json") {
169
237
  console.log(JSON.stringify(app, null, 2));
170
238
  return;
171
239
  }
172
240
  console.log(`App: ${app.name} (${app.id})`);
173
241
  console.log(` domain: ${app.domain}`);
174
- console.log(` owners: ${app.owners.join(', ')}`);
175
- console.log(` description: ${app.description ?? '-'}`);
242
+ console.log(` owners: ${app.owners.join(", ")}`);
243
+ console.log(` description: ${app.description ?? "-"}`);
176
244
  console.log(` members: ${app.members.length}`);
177
245
  for (const m of app.members) {
178
- console.log(` - ${m.userId} [${m.roles.join(', ')}]`);
246
+ console.log(` - ${m.userId} [${m.roles.join(", ")}]`);
179
247
  }
180
248
  console.log(` policies: ${app.policies.length}`);
181
249
  console.log(` schedules: ${app.schedules.length}`);
@@ -194,15 +262,19 @@ async function runAppBuild(flags) {
194
262
  // Persist the manifest to dql-manifest.json — without this the App + the
195
263
  // dashboards never land in the on-disk artifact, so downstream consumers
196
264
  // (KG reindex, lineage CLI, the desktop UI) keep reading the previous build.
197
- const manifestPath = join(projectRoot, 'dql-manifest.json');
198
- writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
199
- const json = flags.format === 'json';
265
+ const manifestPath = join(projectRoot, "dql-manifest.json");
266
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n", "utf-8");
267
+ const json = flags.format === "json";
200
268
  const apps = manifest.apps ?? {};
201
269
  const dashboards = manifest.dashboards ?? {};
202
- const diagnostics = (manifest.diagnostics ?? []).filter((d) => d.filePath?.startsWith('apps/') ?? false);
270
+ const diagnostics = (manifest.diagnostics ?? []).filter((d) => d.filePath?.startsWith("apps/") ?? false);
203
271
  if (json) {
204
272
  console.log(JSON.stringify({
205
- apps: Object.values(apps).map((a) => ({ id: a.id, name: a.name, dashboards: a.dashboards })),
273
+ apps: Object.values(apps).map((a) => ({
274
+ id: a.id,
275
+ name: a.name,
276
+ dashboards: a.dashboards,
277
+ })),
206
278
  dashboards: Object.values(dashboards).map((d) => ({
207
279
  id: d.id,
208
280
  appId: d.appId,
@@ -220,31 +292,45 @@ async function runAppBuild(flags) {
220
292
  }
221
293
  console.log(`\n Manifest written to: ${relative(projectRoot, manifestPath)}`);
222
294
  if (diagnostics.length > 0) {
223
- console.log('\n Diagnostics:');
295
+ console.log("\n Diagnostics:");
224
296
  for (const d of diagnostics) {
225
- console.log(` [${d.severity}] ${d.filePath ?? ''}: ${d.message}`);
297
+ console.log(` [${d.severity}] ${d.filePath ?? ""}: ${d.message}`);
226
298
  }
227
299
  }
228
- console.log('');
300
+ console.log("");
229
301
  }
230
302
  // ---- reindex (alias hook for the agent KG package) ----
231
303
  async function runAppReindex(flags) {
232
- const { reindexProject } = await import('@duckcodeailabs/dql-agent');
304
+ const { reindexProject } = await import("@duckcodeailabs/dql-agent");
233
305
  const projectRoot = findProjectRoot(process.cwd());
234
306
  const stats = await reindexProject(projectRoot);
235
- if (flags.format === 'json') {
307
+ if (flags.format === "json") {
236
308
  console.log(JSON.stringify({ ok: true, ...stats }, null, 2));
237
309
  return;
238
310
  }
239
311
  console.log(` ✓ Knowledge graph reindexed — ${stats.nodes} nodes, ${stats.edges} edges, ${stats.skills} skill(s).`);
240
312
  }
313
+ // ---- helpers ----
314
+ async function readPrompt(rest, flags) {
315
+ const inline = rest.join(" ").trim();
316
+ if (inline)
317
+ return inline;
318
+ const inputPath = cleanOptional(flags.input);
319
+ if (inputPath)
320
+ return readFileSync(inputPath, "utf-8").trim();
321
+ return "";
322
+ }
323
+ function cleanOptional(value) {
324
+ const cleaned = value?.trim();
325
+ return cleaned || undefined;
326
+ }
241
327
  function collectApps(projectRoot) {
242
328
  const out = [];
243
329
  for (const appJsonPath of findAppDocuments(projectRoot)) {
244
330
  const { document } = loadAppDocument(appJsonPath);
245
331
  if (!document)
246
332
  continue;
247
- const appDir = appJsonPath.slice(0, -'/dql.app.json'.length);
333
+ const appDir = appJsonPath.slice(0, -"/dql.app.json".length);
248
334
  const dashboardSummaries = [];
249
335
  for (const dqldPath of findDashboardsForApp(appDir)) {
250
336
  const { document: d } = loadDashboardDocument(dqldPath);
@@ -292,15 +378,15 @@ function collectApps(projectRoot) {
292
378
  return out.sort((a, b) => a.name.localeCompare(b.name));
293
379
  }
294
380
  function relFromRoot(projectRoot, p) {
295
- const prefix = projectRoot.endsWith('/') ? projectRoot : `${projectRoot}/`;
381
+ const prefix = projectRoot.endsWith("/") ? projectRoot : `${projectRoot}/`;
296
382
  return p.startsWith(prefix) ? p.slice(prefix.length) : p;
297
383
  }
298
384
  function humanise(id) {
299
- return id
385
+ return (id
300
386
  .split(/[-_]/)
301
387
  .filter(Boolean)
302
- .map((w) => `${w[0]?.toUpperCase() ?? ''}${w.slice(1)}`)
303
- .join(' ') || id;
388
+ .map((w) => `${w[0]?.toUpperCase() ?? ""}${w.slice(1)}`)
389
+ .join(" ") || id);
304
390
  }
305
391
  // Export internal helpers for tests.
306
392
  export const __test__ = {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE/E"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E/E"}
@@ -1,6 +1,7 @@
1
- import { mkdirSync, readFileSync } from 'node:fs';
1
+ import { existsSync, mkdirSync, readFileSync } from 'node:fs';
2
2
  import { basename, dirname, extname, join, resolve } from 'node:path';
3
3
  import { compile, writeBundle } from '@duckcodeailabs/dql-compiler';
4
+ import { DataLexContractRegistry, resolveDataLexManifestPath } from '@duckcodeailabs/dql-core';
4
5
  import { findProjectRoot, loadProjectConfig } from '../local-runtime.js';
5
6
  import { isDigestOutput, runDigestBuild } from '../digest.js';
6
7
  export async function runBuild(filePath, flags) {
@@ -8,9 +9,14 @@ export async function runBuild(filePath, flags) {
8
9
  const projectRoot = findProjectRoot(dirname(absoluteFile));
9
10
  const config = loadProjectConfig(projectRoot);
10
11
  const source = readFileSync(absoluteFile, 'utf-8');
12
+ const datalexManifestPath = resolveDataLexManifestPath(projectRoot, flags.datalexManifestPath || undefined) ?? undefined;
13
+ if (flags.datalexManifestPath && (!datalexManifestPath || !existsSync(datalexManifestPath))) {
14
+ throw new Error(`DataLex manifest not found: ${flags.datalexManifestPath}`);
15
+ }
11
16
  const result = compile(source, {
12
17
  file: absoluteFile,
13
18
  theme: config.preview?.theme ?? 'light',
19
+ datalexRegistry: datalexManifestPath ? new DataLexContractRegistry({ manifestPath: datalexManifestPath }) : undefined,
14
20
  });
15
21
  if (result.errors.length > 0) {
16
22
  throw new Error(`Build failed:\n${result.errors.map((e) => `- ${e}`).join('\n')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/commands/certify.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2I3C,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuHjF"}
1
+ {"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/commands/certify.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA0K3C,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HjF"}
@@ -1,9 +1,10 @@
1
- import { readFileSync } from 'node:fs';
2
- import { Parser } from '@duckcodeailabs/dql-core';
1
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { Parser, resolveSemanticLayerWithDiagnostics } from '@duckcodeailabs/dql-core';
3
4
  import { Certifier } from '@duckcodeailabs/dql-governance';
4
5
  import { QueryExecutor } from '@duckcodeailabs/dql-connectors';
5
6
  import { buildExecutionPlan } from '@duckcodeailabs/dql-notebook';
6
- import { loadProjectConfig, prepareLocalExecution } from '../local-runtime.js';
7
+ import { loadProjectConfig, prepareLocalExecution, normalizeProjectConnection, resolveSemanticTableMapping } from '../local-runtime.js';
7
8
  import { promoteFromDraft } from '../promote-from-draft.js';
8
9
  function resolveConnection(flags, projectConfig) {
9
10
  const conn = flags.connection;
@@ -59,7 +60,14 @@ async function runBlockTests(b, source, flags, projectConfig) {
59
60
  let failed = 0;
60
61
  try {
61
62
  const cell = { id: b.name, type: 'dql', source, title: b.name };
62
- const plan = buildExecutionPlan(cell);
63
+ let semanticLayer = undefined;
64
+ const semanticResult = resolveSemanticLayerWithDiagnostics(projectConfig.semanticLayer, projectRoot);
65
+ if (semanticResult.errors.length === 0) {
66
+ semanticLayer = semanticResult.layer;
67
+ }
68
+ await registerDataViews(executor, connection, projectRoot, projectConfig);
69
+ const tableMapping = await resolveSemanticTableMapping(executor, connection, semanticLayer);
70
+ const plan = buildExecutionPlan(cell, { semanticLayer, driver: connection.driver, tableMapping });
63
71
  if (!plan) {
64
72
  return {
65
73
  passed: 0,
@@ -134,6 +142,25 @@ async function runBlockTests(b, source, flags, projectConfig) {
134
142
  runAt: new Date(),
135
143
  };
136
144
  }
145
+ async function registerDataViews(executor, connection, projectRoot, projectConfig) {
146
+ const normalized = normalizeProjectConnection(connection, projectRoot);
147
+ if (normalized.driver !== 'file' && normalized.driver !== 'duckdb')
148
+ return;
149
+ const dataDir = projectConfig.dataDir
150
+ ? resolve(projectRoot, projectConfig.dataDir)
151
+ : join(projectRoot, 'data');
152
+ if (!existsSync(dataDir))
153
+ return;
154
+ for (const file of readdirSync(dataDir, { withFileTypes: true })) {
155
+ if (!file.isFile() || !/\.(csv|parquet)$/i.test(file.name))
156
+ continue;
157
+ const tableName = file.name.replace(/\.(csv|parquet)$/i, '');
158
+ const absPath = join(dataDir, file.name).replaceAll('\\', '/').replace(/'/g, "''");
159
+ const reader = file.name.endsWith('.parquet') ? 'read_parquet' : 'read_csv_auto';
160
+ const ddl = `CREATE OR REPLACE VIEW "${tableName}" AS SELECT * FROM ${reader}('${absPath}')`;
161
+ await executor.executeQuery(ddl, [], {}, normalized);
162
+ }
163
+ }
137
164
  export async function runCertify(filePath, flags) {
138
165
  // Tier-2 promotion: `dql certify --from-draft <path>` moves a draft to its
139
166
  // canonical certified location and surfaces the datalex-manifest.json patch.
@@ -172,7 +199,7 @@ export async function runCertify(filePath, flags) {
172
199
  id: 'local',
173
200
  name: b.name ?? 'unnamed',
174
201
  domain: b.domain ?? '',
175
- type: b.type ?? '',
202
+ type: b.blockType ?? b.type ?? '',
176
203
  version: '0.0.0',
177
204
  status: 'draft',
178
205
  gitRepo: '',
@@ -185,6 +212,9 @@ export async function runCertify(filePath, flags) {
185
212
  usedInCount: 0,
186
213
  createdAt: new Date(),
187
214
  updatedAt: new Date(),
215
+ llmContext: b.llmContext,
216
+ examples: b.examples,
217
+ invariants: b.invariants,
188
218
  };
189
219
  // Run tests unless --skip-tests is set
190
220
  let testResults = null;