@duckcodeailabs/dql-cli 1.6.34 → 1.7.1

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 (79) hide show
  1. package/dist/apps-api.d.ts +20 -3
  2. package/dist/apps-api.d.ts.map +1 -1
  3. package/dist/apps-api.js +156 -85
  4. package/dist/apps-api.js.map +1 -1
  5. package/dist/args.d.ts +4 -0
  6. package/dist/args.d.ts.map +1 -1
  7. package/dist/args.js +7 -0
  8. package/dist/args.js.map +1 -1
  9. package/dist/assets/dql-notebook/assets/index-4DbeLWHA.js +5876 -0
  10. package/dist/assets/dql-notebook/assets/index-dSyhu_eU.css +1 -0
  11. package/dist/assets/dql-notebook/index.html +2 -2
  12. package/dist/block-invocation.d.ts +31 -0
  13. package/dist/block-invocation.d.ts.map +1 -0
  14. package/dist/block-invocation.js +82 -0
  15. package/dist/block-invocation.js.map +1 -0
  16. package/dist/commands/agent.d.ts +1 -1
  17. package/dist/commands/agent.d.ts.map +1 -1
  18. package/dist/commands/agent.js +12 -3
  19. package/dist/commands/agent.js.map +1 -1
  20. package/dist/commands/app.d.ts +1 -2
  21. package/dist/commands/app.d.ts.map +1 -1
  22. package/dist/commands/app.js +6 -9
  23. package/dist/commands/app.js.map +1 -1
  24. package/dist/commands/compile.js +1 -1
  25. package/dist/commands/compile.js.map +1 -1
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +44 -86
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/migrate.d.ts +87 -0
  30. package/dist/commands/migrate.d.ts.map +1 -1
  31. package/dist/commands/migrate.js +812 -3
  32. package/dist/commands/migrate.js.map +1 -1
  33. package/dist/commands/model.d.ts +4 -0
  34. package/dist/commands/model.d.ts.map +1 -0
  35. package/dist/commands/model.js +219 -0
  36. package/dist/commands/model.js.map +1 -0
  37. package/dist/commands/new.d.ts.map +1 -1
  38. package/dist/commands/new.js +28 -4
  39. package/dist/commands/new.js.map +1 -1
  40. package/dist/commands/parse.d.ts.map +1 -1
  41. package/dist/commands/parse.js +32 -0
  42. package/dist/commands/parse.js.map +1 -1
  43. package/dist/commands/sync.d.ts.map +1 -1
  44. package/dist/commands/sync.js +23 -7
  45. package/dist/commands/sync.js.map +1 -1
  46. package/dist/index.js +19 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/answer-loop-tools.d.ts +1 -1
  49. package/dist/llm/answer-loop-tools.d.ts.map +1 -1
  50. package/dist/llm/answer-loop-tools.js +210 -10
  51. package/dist/llm/answer-loop-tools.js.map +1 -1
  52. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  53. package/dist/llm/providers/dql-agent-provider.js +30 -18
  54. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  55. package/dist/llm/tools.d.ts.map +1 -1
  56. package/dist/llm/tools.js +3 -1
  57. package/dist/llm/tools.js.map +1 -1
  58. package/dist/llm/types.d.ts +12 -2
  59. package/dist/llm/types.d.ts.map +1 -1
  60. package/dist/local-runtime.d.ts +95 -7
  61. package/dist/local-runtime.d.ts.map +1 -1
  62. package/dist/local-runtime.js +3365 -172
  63. package/dist/local-runtime.js.map +1 -1
  64. package/dist/metricflow.d.ts +2 -0
  65. package/dist/metricflow.d.ts.map +1 -1
  66. package/dist/metricflow.js +10 -0
  67. package/dist/metricflow.js.map +1 -1
  68. package/dist/mixed-source-sql.d.ts +53 -0
  69. package/dist/mixed-source-sql.d.ts.map +1 -0
  70. package/dist/mixed-source-sql.js +311 -0
  71. package/dist/mixed-source-sql.js.map +1 -0
  72. package/dist/notebook-datasets.d.ts +120 -0
  73. package/dist/notebook-datasets.d.ts.map +1 -0
  74. package/dist/notebook-datasets.js +484 -0
  75. package/dist/notebook-datasets.js.map +1 -0
  76. package/dist/package.json +10 -10
  77. package/package.json +10 -10
  78. package/dist/assets/dql-notebook/assets/index-CYQrnwxa.css +0 -1
  79. package/dist/assets/dql-notebook/assets/index-GofggEGB.js +0 -5777
@@ -45,6 +45,11 @@ type AppListEntry = {
45
45
  name: string;
46
46
  filePath: string;
47
47
  domain: string;
48
+ ownerDomain?: string;
49
+ usesDomains: string[];
50
+ purpose?: string;
51
+ requiredExports: string[];
52
+ classification?: string;
48
53
  subdomain?: string;
49
54
  groups: string[];
50
55
  description?: string;
@@ -103,6 +108,10 @@ interface VisualizationRecommendationRequest {
103
108
  interface AppCreateRequest {
104
109
  name?: string;
105
110
  domain?: string;
111
+ ownerDomain?: string;
112
+ usesDomains?: string[];
113
+ requiredExports?: string[];
114
+ classification?: string;
106
115
  dashboardTitle?: string;
107
116
  subdomain?: string;
108
117
  groups?: string[];
@@ -124,6 +133,7 @@ interface AppGenerateRequest {
124
133
  audience?: string;
125
134
  notebookPath?: string;
126
135
  existingAppId?: string;
136
+ mode?: 'personal' | 'stakeholder';
127
137
  /** Gap-fill budget: how many uncovered questions may get generated SQL (default 3, hard cap 5). */
128
138
  maxGeneratedTiles?: number;
129
139
  }
@@ -141,6 +151,8 @@ interface AppAiBuildSession {
141
151
  validation?: unknown;
142
152
  /** The reviewable content list shown to the user before commit. */
143
153
  proposal?: AppBuildProposal;
154
+ snapshotId?: string;
155
+ proposalHash?: string;
144
156
  /** Tile ids the user confirmed at commit time (audit trail). */
145
157
  committedTileIds?: string[];
146
158
  warnings: string[];
@@ -151,6 +163,7 @@ interface AppAiBuildSession {
151
163
  audience?: string;
152
164
  notebookPath?: string;
153
165
  existingAppId?: string;
166
+ mode?: 'personal' | 'stakeholder';
154
167
  selectedBlockIds: string[];
155
168
  };
156
169
  error?: string;
@@ -158,17 +171,19 @@ interface AppAiBuildSession {
158
171
  /** One confirmable entry in the pre-create proposal list. */
159
172
  export interface AppBuildProposalTile {
160
173
  id: string;
161
- source: 'certified_block' | 'ai_generated';
174
+ source: 'certified_block' | 'semantic_query' | 'ai_generated';
162
175
  title: string;
163
176
  description?: string;
164
177
  /** Certified tiles reference an existing block. */
165
178
  blockId?: string;
166
- /** AI-generated candidates carry the question + generated SQL (Phase 2). */
179
+ /** Governed semantic candidates carry canonical semantic intent, never raw SQL. */
167
180
  question?: string;
181
+ semantic?: DashboardGridItem['semantic'];
182
+ /** Legacy proposal fields remain readable; v2 planning never creates them. */
168
183
  sql?: string;
169
184
  answer?: string;
170
185
  viz: string;
171
- certification: 'certified' | 'ai_generated';
186
+ certification: 'certified' | 'reviewed_semantic' | 'ai_generated';
172
187
  /** Bounded preview rows from executing the generated SQL (Phase 2). */
173
188
  preview?: {
174
189
  columns: string[];
@@ -192,6 +207,7 @@ export interface AppBuildProposal {
192
207
  followUps: string[];
193
208
  coverage: {
194
209
  certifiedTiles: number;
210
+ semanticTiles: number;
195
211
  generatedTiles: number;
196
212
  gaps: number;
197
213
  };
@@ -339,6 +355,7 @@ export interface CommitAppAiBuildInput {
339
355
  /** Proposal tile ids to include; omitted = everything selectable. */
340
356
  selectedTileIds?: string[];
341
357
  force?: boolean;
358
+ expectedProposalHash?: string;
342
359
  }
343
360
  /**
344
361
  * Phase 2 of the two-phase app build: the user confirmed the proposal — filter the
@@ -1 +1 @@
1
- {"version":3,"file":"apps-api.d.ts","sourceRoot":"","sources":["../src/apps-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps-api.d.ts","sourceRoot":"","sources":["../src/apps-api.ts"],"names":[],"mappings":"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"}
package/dist/apps-api.js CHANGED
@@ -3,9 +3,10 @@
3
3
  * `/api/persona`. Designed to be invoked from `local-runtime.ts`'s request
4
4
  * dispatcher — returns `true` if the request was handled, `false` otherwise.
5
5
  */
6
- import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
6
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from 'node:fs';
7
+ import { createHash } from 'node:crypto';
7
8
  import { join, dirname, relative, basename } from 'node:path';
8
- import { loadAppDocument, findAppDocuments, loadDashboardDocument, findDashboardsForApp, parseAppDocument, parseDashboardDocument, suggestAppId, } from '@duckcodeailabs/dql-core';
9
+ import { loadAppDocument, findAppDocuments, loadDashboardDocument, findDashboardsForApp, parseAppDocument, parseDashboardDocument, normalizeDqlArtifactReference, suggestAppId, } from '@duckcodeailabs/dql-core';
9
10
  import { defaultPersonaRegistry, defaultLocalAppsDbPath, LocalAppStorage, personaFromMember, } from '@duckcodeailabs/dql-project';
10
11
  export async function handleAppsApi(ctx) {
11
12
  const { req, res, path, projectRoot } = ctx;
@@ -749,6 +750,11 @@ function collectAppsList(projectRoot) {
749
750
  name: document.name,
750
751
  filePath: relative(projectRoot, appDir),
751
752
  domain: document.domain,
753
+ ownerDomain: document.ownerDomain,
754
+ usesDomains: document.usesDomains,
755
+ purpose: document.purpose,
756
+ requiredExports: document.requiredExports,
757
+ classification: document.classification,
752
758
  subdomain: document.subdomain,
753
759
  groups: document.groups ?? [],
754
760
  description: document.description,
@@ -1020,6 +1026,7 @@ export async function createAppAiBuildSession(projectRoot, input) {
1020
1026
  audience: cleanString(input.audience) || undefined,
1021
1027
  notebookPath: cleanString(input.notebookPath) || undefined,
1022
1028
  existingAppId: cleanString(input.existingAppId) || undefined,
1029
+ mode: input.mode === 'personal' ? 'personal' : 'stakeholder',
1023
1030
  selectedBlockIds,
1024
1031
  },
1025
1032
  };
@@ -1078,22 +1085,43 @@ function buildAppProposal(plan) {
1078
1085
  const tiles = [];
1079
1086
  for (const page of plan.pages) {
1080
1087
  for (const tile of page.tiles) {
1081
- if (tile.kind !== 'certified_block')
1082
- continue;
1083
- tiles.push({
1084
- id: tile.id,
1085
- source: 'certified_block',
1086
- title: tile.title,
1087
- description: tile.description,
1088
- blockId: tile.blockId,
1089
- viz: tile.viz,
1090
- certification: 'certified',
1091
- selectedByDefault: true,
1092
- });
1088
+ if (tile.kind === 'certified_block') {
1089
+ tiles.push({
1090
+ id: tile.id,
1091
+ source: 'certified_block',
1092
+ title: tile.title,
1093
+ description: tile.description,
1094
+ blockId: tile.blockId,
1095
+ viz: tile.viz,
1096
+ certification: 'certified',
1097
+ selectedByDefault: true,
1098
+ });
1099
+ }
1100
+ else if (tile.kind === 'semantic_query' && tile.semantic) {
1101
+ tiles.push({
1102
+ id: tile.id,
1103
+ source: 'semantic_query',
1104
+ title: tile.title,
1105
+ description: tile.description ?? tile.rationale,
1106
+ question: tile.title,
1107
+ semantic: tile.semantic,
1108
+ viz: tile.viz,
1109
+ certification: 'reviewed_semantic',
1110
+ selectedByDefault: true,
1111
+ });
1112
+ }
1093
1113
  }
1094
1114
  }
1095
1115
  const gaps = [];
1096
1116
  const seenGap = new Set();
1117
+ for (const item of plan.requirementCoverage.filter((item) => item.status === 'gap')) {
1118
+ const requirement = plan.requirements.find((candidate) => candidate.id === item.requirementId);
1119
+ const question = requirement?.question ?? item.requirementId;
1120
+ if (seenGap.has(question.toLowerCase()))
1121
+ continue;
1122
+ seenGap.add(question.toLowerCase());
1123
+ gaps.push({ id: `gap_${item.requirementId}`, question, reason: item.reasons.join(' ') });
1124
+ }
1097
1125
  for (const report of plan.scopedReports) {
1098
1126
  const question = cleanString(report.question) || report.title;
1099
1127
  if (!question || seenGap.has(question.toLowerCase()))
@@ -1114,6 +1142,7 @@ function buildAppProposal(plan) {
1114
1142
  followUps: gaps.map((gap) => gap.question).slice(0, 4),
1115
1143
  coverage: {
1116
1144
  certifiedTiles: tiles.filter((tile) => tile.certification === 'certified').length,
1145
+ semanticTiles: tiles.filter((tile) => tile.certification === 'reviewed_semantic').length,
1117
1146
  generatedTiles: tiles.filter((tile) => tile.certification === 'ai_generated').length,
1118
1147
  gaps: gaps.length,
1119
1148
  },
@@ -1226,6 +1255,7 @@ async function fillProposalGaps(proposal, hooks, maxGeneratedTiles) {
1226
1255
  proposal.followUps = remaining.map((gap) => gap.question).slice(0, 4);
1227
1256
  proposal.coverage = {
1228
1257
  certifiedTiles: proposal.tiles.filter((tile) => tile.certification === 'certified' && !tile.error).length,
1258
+ semanticTiles: proposal.tiles.filter((tile) => tile.certification === 'reviewed_semantic' && !tile.error).length,
1229
1259
  generatedTiles: proposal.tiles.filter((tile) => tile.certification === 'ai_generated' && !tile.error).length,
1230
1260
  gaps: remaining.length,
1231
1261
  };
@@ -1254,6 +1284,7 @@ export async function proposeAppAiBuild(projectRoot, input, hooks) {
1254
1284
  audience: cleanString(input.audience) || undefined,
1255
1285
  notebookPath: cleanString(input.notebookPath) || undefined,
1256
1286
  existingAppId: cleanString(input.existingAppId) || undefined,
1287
+ mode: input.mode === 'personal' ? 'personal' : 'stakeholder',
1257
1288
  selectedBlockIds,
1258
1289
  },
1259
1290
  };
@@ -1262,9 +1293,14 @@ export async function proposeAppAiBuild(projectRoot, input, hooks) {
1262
1293
  writeAppAiBuildSession(projectRoot, session);
1263
1294
  return session;
1264
1295
  }
1296
+ if (base.inputs.existingAppId) {
1297
+ const session = { ...base, status: 'error', error: 'Updating an existing App is not supported yet. Create a new App so no existing content is silently replaced.' };
1298
+ writeAppAiBuildSession(projectRoot, session);
1299
+ return session;
1300
+ }
1265
1301
  const { KGStore, defaultKgPath, planAppFromPrompt, reindexProject, validateAppPlan, } = await import('@duckcodeailabs/dql-agent');
1266
1302
  const kgPath = defaultKgPath(projectRoot);
1267
- await reindexProject(projectRoot, { kgPath });
1303
+ const index = await reindexProject(projectRoot, { kgPath });
1268
1304
  const kg = new KGStore(kgPath);
1269
1305
  try {
1270
1306
  const plan = planAppFromPrompt({
@@ -1275,12 +1311,14 @@ export async function proposeAppAiBuild(projectRoot, input, hooks) {
1275
1311
  owner: base.inputs.owner,
1276
1312
  preferredBlockIds: selectedBlockIds,
1277
1313
  plannerMode: input.plannerMode === 'ai_assisted' ? 'ai_assisted' : 'deterministic',
1314
+ mode: input.mode === 'personal' ? 'personal' : 'stakeholder',
1315
+ snapshotId: index.kgFingerprint,
1278
1316
  });
1279
1317
  const validation = validateAppPlan(plan, kg);
1280
1318
  const proposal = buildAppProposal(plan);
1281
- // Fill uncovered questions with bounded, review-required generated SQL when the
1282
- // runtime supplied a governed answer hook; offline the gaps stay listed as-is.
1283
- await fillProposalGaps(proposal, hooks, input.maxGeneratedTiles);
1319
+ // App Builder v2 never turns generated SQL into a primary dashboard tile.
1320
+ // Uncovered requirements stay visible gaps for Research/Copilot.
1321
+ const proposalHash = createHash('sha256').update(JSON.stringify({ plan, proposal })).digest('hex');
1284
1322
  const session = {
1285
1323
  ...base,
1286
1324
  appId: plan.appId,
@@ -1288,6 +1326,8 @@ export async function proposeAppAiBuild(projectRoot, input, hooks) {
1288
1326
  plan,
1289
1327
  validation,
1290
1328
  proposal,
1329
+ snapshotId: index.kgFingerprint,
1330
+ proposalHash,
1291
1331
  warnings: appBuildWarnings(validation, plan),
1292
1332
  reviewTasks: reviewTasksFromPlan(plan),
1293
1333
  };
@@ -1395,6 +1435,9 @@ export async function commitAppAiBuild(projectRoot, sessionId, input = {}, hooks
1395
1435
  if (session.status !== 'proposed' || !session.plan || !session.proposal) {
1396
1436
  return { ok: false, error: session.error ?? 'Session has no proposal to commit.', status: 400 };
1397
1437
  }
1438
+ if (!input.expectedProposalHash || input.expectedProposalHash !== session.proposalHash) {
1439
+ return { ok: false, error: 'The App proposal changed or is stale. Refresh the proposal before creating the App.', status: 409 };
1440
+ }
1398
1441
  const plan = session.plan;
1399
1442
  const proposal = session.proposal;
1400
1443
  const selectable = new Set(proposal.tiles.filter((tile) => !tile.error).map((tile) => tile.id));
@@ -1408,56 +1451,22 @@ export async function commitAppAiBuild(projectRoot, sessionId, input = {}, hooks
1408
1451
  ...plan,
1409
1452
  pages: plan.pages.map((page) => ({
1410
1453
  ...page,
1411
- tiles: page.tiles.filter((tile) => tile.kind !== 'certified_block' || selected.has(tile.id)),
1454
+ tiles: page.tiles.filter((tile) => !['certified_block', 'semantic_query'].includes(tile.kind) || selected.has(tile.id)),
1412
1455
  })),
1413
1456
  };
1414
- const { KGStore, defaultKgPath, ensureMetadataCatalogFresh, generateAppFromPlan, narrateResult, validateAppPlan, } = await import('@duckcodeailabs/dql-agent');
1457
+ const { KGStore, defaultKgPath, ensureMetadataCatalogFresh, generateAppFromPlan, reindexProject, validateAppPlan, } = await import('@duckcodeailabs/dql-agent');
1458
+ const index = await reindexProject(projectRoot, { kgPath: defaultKgPath(projectRoot) });
1459
+ if (!session.snapshotId || index.kgFingerprint !== session.snapshotId) {
1460
+ return { ok: false, error: 'Project sources changed after this proposal was created. Refresh and review the App proposal again.', status: 409 };
1461
+ }
1415
1462
  const kg = new KGStore(defaultKgPath(projectRoot));
1416
1463
  try {
1417
1464
  // Re-validate against the live catalog: blocks may have changed since propose.
1418
1465
  const validation = validateAppPlan(committedPlan, kg);
1419
- if (validation.certifiedTiles === 0) {
1420
- return { ok: false, error: appBuildBlockedMessage(validation, committedPlan), status: 409 };
1421
- }
1422
- // Narrate the story from the confirmed content (generated candidates carry
1423
- // executed previews, so real numbers reach the prose). The LLM-backed hook is
1424
- // optional — the deterministic narrator guarantees a story offline.
1425
- const narrateInput = {
1426
- question: committedPlan.prompt,
1427
- items: [
1428
- ...proposal.tiles
1429
- .filter((tile) => tile.source === 'certified_block' && selected.has(tile.id))
1430
- .map((tile) => ({ id: tile.id, title: tile.title })),
1431
- ...proposal.tiles
1432
- .filter((tile) => tile.source === 'ai_generated' && !tile.error && selected.has(tile.id))
1433
- .map((tile) => ({
1434
- id: tile.id,
1435
- title: tile.title,
1436
- result: tile.preview ? { columns: tile.preview.columns, rows: tile.preview.rows } : undefined,
1437
- })),
1438
- ],
1439
- reviewRequired: proposal.tiles.some((tile) => tile.source === 'ai_generated' && !tile.error && selected.has(tile.id)),
1440
- };
1441
- let narration;
1442
- try {
1443
- narration = hooks?.narrate ? await hooks.narrate(narrateInput) : await narrateResult(narrateInput);
1444
- }
1445
- catch {
1446
- try {
1447
- narration = await narrateResult(narrateInput);
1448
- }
1449
- catch {
1450
- narration = undefined; // Narration is enhancement, never a commit blocker.
1451
- }
1452
- }
1453
- // Honesty caveat: when the story is built partly from AI-generated (review-
1454
- // required) figures, say so in the executive summary — the headline must not
1455
- // present uncertified numbers as trusted.
1456
- if (narration && narrateInput.reviewRequired) {
1457
- narration = {
1458
- ...narration,
1459
- summary: `${narration.summary}\n\n_Some figures draw on AI-generated analysis that is pending review — see the review appendix._`,
1460
- };
1466
+ const governedTileCount = committedPlan.pages.flatMap((page) => page.tiles)
1467
+ .filter((tile) => tile.kind === 'certified_block' || tile.kind === 'semantic_query').length;
1468
+ if (governedTileCount === 0) {
1469
+ return { ok: false, error: 'Select at least one certified block or governed semantic query.', status: 409 };
1461
1470
  }
1462
1471
  // Copilot follow-ups the created app carries: still-uncovered gaps first, then
1463
1472
  // the questions behind any candidates the user chose to leave out.
@@ -1468,27 +1477,35 @@ export async function commitAppAiBuild(projectRoot, sessionId, input = {}, hooks
1468
1477
  .map((tile) => tile.question),
1469
1478
  ]).slice(0, 4);
1470
1479
  let generated;
1480
+ const stagingRoot = join(projectRoot, '.dql', 'local', 'app-build-staging', session.id);
1481
+ const stagedAppDir = join(stagingRoot, 'apps', committedPlan.appId);
1482
+ const targetAppDir = join(projectRoot, 'apps', committedPlan.appId);
1483
+ const backupAppDir = join(projectRoot, '.dql', 'local', 'app-build-staging', `${session.id}-backup`);
1484
+ rmSync(stagingRoot, { recursive: true, force: true });
1471
1485
  try {
1472
- generated = generateAppFromPlan(projectRoot, committedPlan, kg, { overwrite: Boolean(input.force), narration, copilotQuestions });
1486
+ generated = generateAppFromPlan(stagingRoot, committedPlan, kg, { overwrite: true, copilotQuestions });
1487
+ mkdirSync(dirname(targetAppDir), { recursive: true });
1488
+ if (existsSync(targetAppDir)) {
1489
+ if (!input.force)
1490
+ return { ok: false, error: `App already exists: apps/${committedPlan.appId}`, status: 409 };
1491
+ rmSync(backupAppDir, { recursive: true, force: true });
1492
+ renameSync(targetAppDir, backupAppDir);
1493
+ }
1494
+ try {
1495
+ renameSync(stagedAppDir, targetAppDir);
1496
+ rmSync(backupAppDir, { recursive: true, force: true });
1497
+ }
1498
+ catch (error) {
1499
+ if (existsSync(backupAppDir) && !existsSync(targetAppDir))
1500
+ renameSync(backupAppDir, targetAppDir);
1501
+ throw error;
1502
+ }
1473
1503
  }
1474
1504
  catch (err) {
1475
1505
  const message = err instanceof Error ? err.message : String(err);
1476
1506
  return { ok: false, error: message, status: message.includes('already exists') ? 409 : 400 };
1477
1507
  }
1478
- // Selected AI-generated candidates become aiPin tiles: stored in local app
1479
- // storage with their review-required status, then appended to the dashboard.
1480
- // The certified app is already valid on disk — attaching the extra pins must
1481
- // NOT be able to fail the commit and orphan the app, so it is best-effort.
1482
- const generatedCandidates = proposal.tiles.filter((tile) => tile.source === 'ai_generated' && !tile.error && selected.has(tile.id) && tile.sql);
1483
1508
  const attachWarnings = [];
1484
- if (generatedCandidates.length > 0) {
1485
- try {
1486
- attachGeneratedTiles(projectRoot, committedPlan, generated.paths, generatedCandidates);
1487
- }
1488
- catch (err) {
1489
- attachWarnings.push(`Some AI-generated tiles could not be attached: ${err instanceof Error ? err.message : String(err)}`);
1490
- }
1491
- }
1492
1509
  await ensureMetadataCatalogFresh(projectRoot, { force: true });
1493
1510
  const app = collectAppsList(projectRoot).find((entry) => entry.id === committedPlan.appId) ?? null;
1494
1511
  const next = {
@@ -1547,6 +1564,10 @@ async function routeAppAskQuestion(ctx, appId, input) {
1547
1564
  const loaded = loadAppById(ctx.projectRoot, appId);
1548
1565
  if (!loaded)
1549
1566
  return { ok: false, error: `App "${appId}" not found` };
1567
+ const activePersona = defaultPersonaRegistry.active;
1568
+ if (activePersona?.appId && activePersona.appId !== appId) {
1569
+ return { ok: false, error: `The active persona belongs to App "${activePersona.appId}", not "${appId}".` };
1570
+ }
1550
1571
  const question = cleanString(input.question);
1551
1572
  if (!question)
1552
1573
  return { ok: false, error: 'question is required' };
@@ -2335,13 +2356,13 @@ function promoteSharedDashboardItem(item) {
2335
2356
  }
2336
2357
  export function createAppPackage(projectRoot, input) {
2337
2358
  const name = cleanString(input.name);
2338
- const domain = cleanString(input.domain);
2359
+ const domain = cleanString(input.ownerDomain) || cleanString(input.domain);
2339
2360
  if (!name)
2340
2361
  return { ok: false, error: 'name is required' };
2341
2362
  if (!domain)
2342
2363
  return { ok: false, error: 'domain is required' };
2343
2364
  const id = suggestAppId(name);
2344
- const appDir = resolveAppPackageDir(projectRoot, domain, id);
2365
+ const appDir = resolveAppPackageDir(projectRoot, id);
2345
2366
  if (existsSync(appDir))
2346
2367
  return { ok: false, error: `App already exists: ${id}` };
2347
2368
  const dashboardTitle = cleanString(input.dashboardTitle) || 'Overview';
@@ -2366,6 +2387,11 @@ export function createAppPackage(projectRoot, input) {
2366
2387
  name,
2367
2388
  description: cleanString(input.purpose) || `${name} consumption surface for ${domain}`,
2368
2389
  visibility,
2390
+ ownerDomain: domain,
2391
+ usesDomains: normalizeTags(input.usesDomains ?? [domain]),
2392
+ purpose: cleanString(input.purpose) || undefined,
2393
+ requiredExports: normalizeTags(input.requiredExports ?? []),
2394
+ classification: cleanString(input.classification) || undefined,
2369
2395
  domain,
2370
2396
  subdomain: subdomain || undefined,
2371
2397
  groups,
@@ -4404,12 +4430,7 @@ function slugify(value) {
4404
4430
  .replace(/[^a-z0-9]+/g, '-')
4405
4431
  .replace(/^-+|-+$/g, '');
4406
4432
  }
4407
- function resolveAppPackageDir(projectRoot, domain, id) {
4408
- const domainSlug = slugify(domain);
4409
- const domainDir = domainSlug ? join(projectRoot, 'domains', domainSlug) : '';
4410
- if (domainDir && existsSync(domainDir)) {
4411
- return join(domainDir, 'apps', id);
4412
- }
4433
+ function resolveAppPackageDir(projectRoot, id) {
4413
4434
  return join(projectRoot, 'apps', id);
4414
4435
  }
4415
4436
  function titleFromPath(path) {
@@ -4525,6 +4546,10 @@ function createAiPinTile(projectRoot, appId, input) {
4525
4546
  followUps: Array.isArray(input.followUps) ? input.followUps.filter((item) => typeof item === 'string') : [],
4526
4547
  });
4527
4548
  const vizType = normalizeVizTypeFromChart(input.chartConfig);
4549
+ const dqlArtifact = normalizeDqlArtifactReference(input.analysisPlan && typeof input.analysisPlan === 'object' && !Array.isArray(input.analysisPlan)
4550
+ ? input.analysisPlan.dqlArtifact
4551
+ : undefined);
4552
+ const runtimeParameters = (dqlArtifact?.parameters ?? []).filter((parameter) => parameter.policy === 'dynamic' || parameter.policy === 'optional');
4528
4553
  const tile = {
4529
4554
  i: tileId,
4530
4555
  ...nextTilePosition(loaded.dashboard),
@@ -4532,9 +4557,31 @@ function createAiPinTile(projectRoot, appId, input) {
4532
4557
  viz: { type: vizType },
4533
4558
  display: displayForAiPin(title, vizType, input),
4534
4559
  title,
4560
+ ...(runtimeParameters.length > 0 ? {
4561
+ parameterBindings: runtimeParameters.map((parameter) => ({
4562
+ param: parameter.name,
4563
+ source: 'dashboard_filter',
4564
+ filter: parameter.name,
4565
+ field: parameter.binding?.kind === 'semantic_filter' ? parameter.binding.field : parameter.name,
4566
+ parameterType: parameter.type,
4567
+ required: parameter.required,
4568
+ ...(parameter.default === undefined ? {} : { default: parameter.default }),
4569
+ policy: parameter.policy,
4570
+ })),
4571
+ trustState: dqlArtifact?.trustState === 'certified' ? 'certified' : 'review_required',
4572
+ reviewStatus: dqlArtifact?.trustState === 'certified' ? 'certified' : 'review_required',
4573
+ } : {}),
4535
4574
  };
4575
+ const artifactFilters = runtimeParameters.map(dashboardFilterForArtifactParameter);
4576
+ const existingFilterIds = new Set((loaded.dashboard.filters ?? []).map((filter) => filter.id));
4536
4577
  const dashboard = {
4537
4578
  ...loaded.dashboard,
4579
+ ...(artifactFilters.length > 0 ? {
4580
+ filters: [
4581
+ ...(loaded.dashboard.filters ?? []),
4582
+ ...artifactFilters.filter((filter) => !existingFilterIds.has(filter.id)),
4583
+ ],
4584
+ } : {}),
4538
4585
  layout: {
4539
4586
  ...loaded.dashboard.layout,
4540
4587
  items: [...loaded.dashboard.layout.items, tile],
@@ -4550,6 +4597,25 @@ function createAiPinTile(projectRoot, appId, input) {
4550
4597
  storage.close();
4551
4598
  }
4552
4599
  }
4600
+ function dashboardFilterForArtifactParameter(parameter) {
4601
+ const type = parameter.type === 'number'
4602
+ ? 'number'
4603
+ : parameter.type === 'boolean'
4604
+ ? 'boolean'
4605
+ : parameter.type === 'date'
4606
+ ? 'date'
4607
+ : parameter.type.endsWith('[]')
4608
+ ? 'select'
4609
+ : 'string';
4610
+ const options = Array.isArray(parameter.default) ? parameter.default.map(String) : undefined;
4611
+ return {
4612
+ id: parameter.name,
4613
+ type,
4614
+ ...(parameter.default === undefined ? {} : { default: parameter.default }),
4615
+ ...(options?.length ? { options } : {}),
4616
+ ...(parameter.binding?.kind === 'semantic_filter' ? { bindsTo: parameter.binding.field } : {}),
4617
+ };
4618
+ }
4553
4619
  function findExistingAiPinTile(storage, dashboard, appId, dashboardId, title, input) {
4554
4620
  const requested = aiPinDedupeFingerprint(title, input.question, input.analysisPlan, input.result);
4555
4621
  if (!requested)
@@ -4925,13 +4991,18 @@ function buildAppNotebookTemplate(title, app, template) {
4925
4991
  });
4926
4992
  }
4927
4993
  return JSON.stringify({
4928
- dqlnbVersion: 1,
4994
+ dqlnbVersion: 2,
4929
4995
  version: 1,
4930
4996
  title,
4931
4997
  metadata: {
4932
4998
  description: `Supporting notebook for ${app.name}`,
4933
4999
  status: 'draft',
4934
5000
  categories: [app.domain, app.subdomain, ...(app.groups ?? [])].filter(Boolean),
5001
+ ownerDomain: app.ownerDomain,
5002
+ usesDomains: app.usesDomains,
5003
+ purpose: app.purpose,
5004
+ requiredExports: app.requiredExports,
5005
+ classification: app.classification,
4935
5006
  createdAt: new Date().toISOString(),
4936
5007
  modifiedAt: new Date().toISOString(),
4937
5008
  },