@duckcodeailabs/dql-cli 1.6.1 → 1.6.3

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 (121) hide show
  1. package/dist/apps-api.d.ts +20 -0
  2. package/dist/apps-api.d.ts.map +1 -1
  3. package/dist/apps-api.js +71 -0
  4. package/dist/apps-api.js.map +1 -1
  5. package/dist/args.d.ts +2 -0
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +3 -0
  8. package/dist/args.js.map +1 -1
  9. package/dist/assets/dql-notebook/assets/index-CIMLd3Cb.js +3289 -0
  10. package/dist/assets/dql-notebook/assets/index-RaDW1A5g.css +1 -0
  11. package/dist/assets/dql-notebook/index.html +3 -3
  12. package/dist/commands/app.d.ts +4 -3
  13. package/dist/commands/app.d.ts.map +1 -1
  14. package/dist/commands/app.js +161 -75
  15. package/dist/commands/app.js.map +1 -1
  16. package/dist/commands/build.d.ts.map +1 -1
  17. package/dist/commands/build.js +7 -1
  18. package/dist/commands/build.js.map +1 -1
  19. package/dist/commands/compile.d.ts +1 -1
  20. package/dist/commands/compile.d.ts.map +1 -1
  21. package/dist/commands/compile.js +40 -4
  22. package/dist/commands/compile.js.map +1 -1
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +3 -1
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/lineage.d.ts +3 -0
  27. package/dist/commands/lineage.d.ts.map +1 -1
  28. package/dist/commands/lineage.js +230 -2
  29. package/dist/commands/lineage.js.map +1 -1
  30. package/dist/commands/new.js +61 -2
  31. package/dist/commands/new.js.map +1 -1
  32. package/dist/commands/parse.d.ts.map +1 -1
  33. package/dist/commands/parse.js +13 -3
  34. package/dist/commands/parse.js.map +1 -1
  35. package/dist/commands/preview.d.ts.map +1 -1
  36. package/dist/commands/preview.js +7 -1
  37. package/dist/commands/preview.js.map +1 -1
  38. package/dist/commands/validate.d.ts.map +1 -1
  39. package/dist/commands/validate.js +49 -3
  40. package/dist/commands/validate.js.map +1 -1
  41. package/dist/commands/verify.d.ts.map +1 -1
  42. package/dist/commands/verify.js +6 -2
  43. package/dist/commands/verify.js.map +1 -1
  44. package/dist/index.js +79 -68
  45. package/dist/index.js.map +1 -1
  46. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  47. package/dist/llm/providers/dql-agent-provider.js +95 -19
  48. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  49. package/dist/llm/tools.d.ts.map +1 -1
  50. package/dist/llm/tools.js +29 -1
  51. package/dist/llm/tools.js.map +1 -1
  52. package/dist/llm/types.d.ts +3 -1
  53. package/dist/llm/types.d.ts.map +1 -1
  54. package/dist/local-runtime.d.ts +12 -0
  55. package/dist/local-runtime.d.ts.map +1 -1
  56. package/dist/local-runtime.js +724 -46
  57. package/dist/local-runtime.js.map +1 -1
  58. package/dist/package.json +44 -0
  59. package/package.json +12 -12
  60. package/dist/apps-api.test.d.ts +0 -2
  61. package/dist/apps-api.test.d.ts.map +0 -1
  62. package/dist/apps-api.test.js +0 -154
  63. package/dist/apps-api.test.js.map +0 -1
  64. package/dist/args.test.d.ts +0 -2
  65. package/dist/args.test.d.ts.map +0 -1
  66. package/dist/args.test.js +0 -41
  67. package/dist/args.test.js.map +0 -1
  68. package/dist/assets/dql-notebook/assets/index-C-s-OCLW.css +0 -1
  69. package/dist/assets/dql-notebook/assets/index-DZ_5zsCw.js +0 -869
  70. package/dist/block-studio-import.test.d.ts +0 -2
  71. package/dist/block-studio-import.test.d.ts.map +0 -1
  72. package/dist/block-studio-import.test.js +0 -168
  73. package/dist/block-studio-import.test.js.map +0 -1
  74. package/dist/commands/build.test.d.ts +0 -2
  75. package/dist/commands/build.test.d.ts.map +0 -1
  76. package/dist/commands/build.test.js +0 -44
  77. package/dist/commands/build.test.js.map +0 -1
  78. package/dist/commands/compile.test.d.ts +0 -2
  79. package/dist/commands/compile.test.d.ts.map +0 -1
  80. package/dist/commands/compile.test.js +0 -115
  81. package/dist/commands/compile.test.js.map +0 -1
  82. package/dist/commands/doctor.test.d.ts +0 -2
  83. package/dist/commands/doctor.test.d.ts.map +0 -1
  84. package/dist/commands/doctor.test.js +0 -44
  85. package/dist/commands/doctor.test.js.map +0 -1
  86. package/dist/commands/init.test.d.ts +0 -2
  87. package/dist/commands/init.test.d.ts.map +0 -1
  88. package/dist/commands/init.test.js +0 -178
  89. package/dist/commands/init.test.js.map +0 -1
  90. package/dist/commands/new.test.d.ts +0 -2
  91. package/dist/commands/new.test.d.ts.map +0 -1
  92. package/dist/commands/new.test.js +0 -191
  93. package/dist/commands/new.test.js.map +0 -1
  94. package/dist/commands/sync.test.d.ts +0 -2
  95. package/dist/commands/sync.test.d.ts.map +0 -1
  96. package/dist/commands/sync.test.js +0 -147
  97. package/dist/commands/sync.test.js.map +0 -1
  98. package/dist/commands/validate.test.d.ts +0 -2
  99. package/dist/commands/validate.test.d.ts.map +0 -1
  100. package/dist/commands/validate.test.js +0 -55
  101. package/dist/commands/validate.test.js.map +0 -1
  102. package/dist/local-runtime.test.d.ts +0 -2
  103. package/dist/local-runtime.test.d.ts.map +0 -1
  104. package/dist/local-runtime.test.js +0 -300
  105. package/dist/local-runtime.test.js.map +0 -1
  106. package/dist/metricflow.test.d.ts +0 -2
  107. package/dist/metricflow.test.d.ts.map +0 -1
  108. package/dist/metricflow.test.js +0 -54
  109. package/dist/metricflow.test.js.map +0 -1
  110. package/dist/promote-from-draft.test.d.ts +0 -2
  111. package/dist/promote-from-draft.test.d.ts.map +0 -1
  112. package/dist/promote-from-draft.test.js +0 -149
  113. package/dist/promote-from-draft.test.js.map +0 -1
  114. package/dist/semantic-import.test.d.ts +0 -2
  115. package/dist/semantic-import.test.d.ts.map +0 -1
  116. package/dist/semantic-import.test.js +0 -95
  117. package/dist/semantic-import.test.js.map +0 -1
  118. package/dist/template-adoption.test.d.ts +0 -2
  119. package/dist/template-adoption.test.d.ts.map +0 -1
  120. package/dist/template-adoption.test.js +0 -102
  121. package/dist/template-adoption.test.js.map +0 -1
@@ -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,7 +1,7 @@
1
1
  /**
2
2
  * `dql compile` — Generate the DQL project manifest.
3
3
  *
4
- * Scans all blocks, notebooks, and semantic layer definitions,
4
+ * Scans all blocks, business views, notebooks, and semantic layer definitions,
5
5
  * resolves dependencies, builds lineage, and writes dql-manifest.json.
6
6
  *
7
7
  * Usage:
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA+Lf"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAqOf"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `dql compile` — Generate the DQL project manifest.
3
3
  *
4
- * Scans all blocks, notebooks, and semantic layer definitions,
4
+ * Scans all blocks, business views, notebooks, and semantic layer definitions,
5
5
  * resolves dependencies, builds lineage, and writes dql-manifest.json.
6
6
  *
7
7
  * Usage:
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { writeFileSync, existsSync, readFileSync } from 'node:fs';
20
20
  import { join, resolve } from 'node:path';
21
- import { buildManifest, collectInputFiles, resolveDbtManifestPath } from '@duckcodeailabs/dql-core';
21
+ import { buildManifest, collectInputFiles, resolveDataLexManifestPath, resolveDbtManifestPath } from '@duckcodeailabs/dql-core';
22
22
  import { ManifestCache } from '@duckcodeailabs/dql-project';
23
23
  export async function runCompile(pathArg, rest, flags) {
24
24
  // Collect all args (pathArg might be a flag if no path was given)
@@ -67,12 +67,18 @@ export async function runCompile(pathArg, rest, flags) {
67
67
  const resolvedDbt = resolveDbtManifestPath(projectRoot, dbtManifestPath);
68
68
  if (resolvedDbt)
69
69
  dbtManifestPath = resolvedDbt;
70
+ const datalexManifestPath = resolveDataLexManifestPath(projectRoot, flags.datalexManifestPath || undefined) ?? undefined;
71
+ if (flags.datalexManifestPath && (!datalexManifestPath || !existsSync(datalexManifestPath))) {
72
+ console.error(`DataLex manifest not found: ${datalexManifestPath ?? flags.datalexManifestPath}`);
73
+ process.exitCode = 1;
74
+ return;
75
+ }
70
76
  const noCache = allArgs.includes('--no-cache');
71
77
  // Build manifest (with cache when possible)
72
78
  const startTime = Date.now();
73
79
  let manifest;
74
80
  let cacheHit = false;
75
- const buildOptions = { projectRoot, dqlVersion, dbtManifestPath, maxDbtHops };
81
+ const buildOptions = { projectRoot, dqlVersion, dbtManifestPath, maxDbtHops, datalexManifestPath };
76
82
  try {
77
83
  if (noCache) {
78
84
  manifest = buildManifest(buildOptions);
@@ -115,6 +121,10 @@ export async function runCompile(pathArg, rest, flags) {
115
121
  writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
116
122
  // Print summary
117
123
  const blockCount = Object.keys(manifest.blocks).length;
124
+ const businessViews = manifest.businessViews ?? {};
125
+ const businessViewCount = Object.keys(businessViews).length;
126
+ const terms = manifest.terms ?? {};
127
+ const termCount = Object.keys(terms).length;
118
128
  const notebookCount = Object.keys(manifest.notebooks).length;
119
129
  const metricCount = Object.keys(manifest.metrics).length;
120
130
  const dimensionCount = Object.keys(manifest.dimensions).length;
@@ -126,9 +136,11 @@ export async function runCompile(pathArg, rest, flags) {
126
136
  console.log(' ' + '='.repeat(50));
127
137
  console.log('\n Manifest:');
128
138
  console.log(' dql-manifest.json is the dbt-like compiled artifact for this DQL project.');
129
- console.log(' It records blocks, notebooks, Apps, dashboards, semantic objects, sources, dbt imports, and lineage.');
139
+ console.log(' It records blocks, terms, business views, notebooks, Apps, dashboards, semantic objects, sources, dbt imports, and lineage.');
130
140
  console.log(`\n Scanned:`);
131
141
  console.log(` ${blockCount} block(s)`);
142
+ console.log(` ${termCount} term(s)`);
143
+ console.log(` ${businessViewCount} business view(s)`);
132
144
  console.log(` ${notebookCount} notebook(s)`);
133
145
  console.log(` ${metricCount} metric(s)`);
134
146
  console.log(` ${dimensionCount} dimension(s)`);
@@ -189,6 +201,30 @@ export async function runCompile(pathArg, rest, flags) {
189
201
  console.log(` depends on: ${deps.join(', ')}`);
190
202
  }
191
203
  }
204
+ if (termCount > 0) {
205
+ console.log('\n Terms:');
206
+ for (const term of Object.values(terms)) {
207
+ const meta = [term.domain, term.termType, term.owner].filter(Boolean).join(', ');
208
+ console.log(` ${term.name}${meta ? ` (${meta})` : ''}`);
209
+ if (term.identifiers && term.identifiers.length > 0) {
210
+ console.log(` identifiers: ${term.identifiers.join(', ')}`);
211
+ }
212
+ }
213
+ }
214
+ if (businessViewCount > 0) {
215
+ console.log('\n Business Views:');
216
+ for (const view of Object.values(businessViews)) {
217
+ const meta = [view.domain, view.owner].filter(Boolean).join(', ');
218
+ const refs = [...view.blockRefs.map((ref) => `block:${ref}`), ...view.businessViewRefs.map((ref) => `business_view:${ref}`)];
219
+ console.log(` ${view.name}${meta ? ` (${meta})` : ''}`);
220
+ if (refs.length > 0) {
221
+ console.log(` includes: ${refs.join(', ')}`);
222
+ }
223
+ if (view.termRefs.length > 0) {
224
+ console.log(` terms: ${view.termRefs.join(', ')}`);
225
+ }
226
+ }
227
+ }
192
228
  if (Object.keys(manifest.notebooks).length > 0) {
193
229
  console.log('\n Notebooks:');
194
230
  for (const nb of Object.values(manifest.notebooks)) {