@dbx-tools/appkit-generator 0.0.0-stage → 0.9.138

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 (60) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +181 -2
  3. package/index.ts +44 -0
  4. package/lib/index.d.ts +40 -0
  5. package/lib/index.js +30 -0
  6. package/lib/src/assets.d.ts +33 -0
  7. package/lib/src/assets.js +224 -0
  8. package/lib/src/config.d.ts +75 -0
  9. package/lib/src/config.js +31 -0
  10. package/lib/src/dashboard.d.ts +30 -0
  11. package/lib/src/dashboard.js +257 -0
  12. package/lib/src/data.d.ts +17 -0
  13. package/lib/src/data.js +114 -0
  14. package/lib/src/defaults.d.ts +39 -0
  15. package/lib/src/defaults.js +36 -0
  16. package/lib/src/generate.d.ts +51 -0
  17. package/lib/src/generate.js +163 -0
  18. package/lib/src/genie.d.ts +51 -0
  19. package/lib/src/genie.js +84 -0
  20. package/lib/src/kpi.d.ts +22 -0
  21. package/lib/src/kpi.js +74 -0
  22. package/lib/src/manifest.json +72 -0
  23. package/lib/src/namespace.d.ts +36 -0
  24. package/lib/src/namespace.js +119 -0
  25. package/lib/src/operations.d.ts +42 -0
  26. package/lib/src/operations.js +96 -0
  27. package/lib/src/palette.d.ts +10 -0
  28. package/lib/src/palette.js +69 -0
  29. package/lib/src/plan.d.ts +21 -0
  30. package/lib/src/plan.js +33 -0
  31. package/lib/src/plugin.d.ts +619 -0
  32. package/lib/src/plugin.js +205 -0
  33. package/lib/src/research.d.ts +78 -0
  34. package/lib/src/research.js +235 -0
  35. package/lib/src/schema.d.ts +52 -0
  36. package/lib/src/schema.js +82 -0
  37. package/lib/src/structured.d.ts +27 -0
  38. package/lib/src/structured.js +30 -0
  39. package/lib/src/workflow.d.ts +314 -0
  40. package/lib/src/workflow.js +171 -0
  41. package/lib/tsconfig.tsbuildinfo +1 -0
  42. package/package.json +218 -4
  43. package/src/assets.ts +248 -0
  44. package/src/config.ts +98 -0
  45. package/src/dashboard.ts +295 -0
  46. package/src/data.ts +167 -0
  47. package/src/defaults.ts +61 -0
  48. package/src/generate.ts +250 -0
  49. package/src/genie.ts +111 -0
  50. package/src/kpi.ts +106 -0
  51. package/src/manifest.json +72 -0
  52. package/src/namespace.ts +192 -0
  53. package/src/operations.ts +171 -0
  54. package/src/palette.ts +81 -0
  55. package/src/plan.ts +59 -0
  56. package/src/plugin.ts +244 -0
  57. package/src/research.ts +382 -0
  58. package/src/schema.ts +114 -0
  59. package/src/structured.ts +54 -0
  60. package/src/workflow.ts +221 -0
@@ -0,0 +1,619 @@
1
+ /**
2
+ * AppKit ToolProvider plugin for governed Databricks demo generation.
3
+ *
4
+ * @module
5
+ */
6
+ import { type IAppRouter } from "@databricks/appkit";
7
+ import { type ToolRegistry } from "@databricks/appkit/beta";
8
+ import { ToolRegistryPlugin } from "@dbx-tools/appkit";
9
+ import { GeneratorPluginClient } from "@dbx-tools/shared-generator/brand";
10
+ import { type GeneratorPluginConfig } from "./config.ts";
11
+ /** AppKit plugin exposing reusable generator tools and a hosted Mastra workflow. */
12
+ export declare class GeneratorPlugin extends ToolRegistryPlugin<GeneratorPluginConfig> {
13
+ static manifest: import("@databricks/appkit").PluginManifest<"generator">;
14
+ private readonly resolved;
15
+ private operations;
16
+ private workflow;
17
+ /** AppKit mount prefix used by browser clients. */
18
+ private get basePath();
19
+ /** Native tools exposed independently of the composed workflow. */
20
+ protected get toolRegistry(): ToolRegistry;
21
+ /** Capture sibling capabilities and register the workflow before Mastra boots. */
22
+ setup(): Promise<void>;
23
+ shutdown(): void;
24
+ clientConfig(): {
25
+ basePath: string;
26
+ };
27
+ /** Stream standalone brand generation to the existing Brand page. */
28
+ injectRoutes(router: IAppRouter): void;
29
+ /** Programmatic operations and workflow for trusted application code. */
30
+ exports(): {
31
+ generateBrand: (request: import("@dbx-tools/shared-generator/brand").BrandGenerationRequest, signal?: AbortSignal, onProgress?: import("./research.ts").BrandProgressReporter) => Promise<import("@dbx-tools/shared-generator/brand").BrandPackage>;
32
+ researchKpis: (request: import("@dbx-tools/shared-generator/kpi").KpiResearchRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/kpi").KpiResearchResult>;
33
+ planData: (request: import("@dbx-tools/shared-generator/workflow").PlanGeneratorDataRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/workflow").GeneratorPlan>;
34
+ provisionSchema: (request: import("@dbx-tools/shared-generator/workflow").ProvisionGeneratorSchemaRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/workflow").GeneratedSchema>;
35
+ materializeData: (request: import("@dbx-tools/shared-generator/workflow").MaterializeGeneratorDataRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/workflow").MaterializedGeneratorData>;
36
+ createDashboard: (request: import("@dbx-tools/shared-generator/workflow").CreateGeneratorPresentationRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/workflow").GeneratedDashboard>;
37
+ createGenie: (request: import("@dbx-tools/shared-generator/workflow").CreateGeneratorPresentationRequest, signal?: AbortSignal) => Promise<import("@dbx-tools/shared-generator/workflow").GeneratedGenieSpace>;
38
+ workflow: import("@mastra/core/workflows").Workflow<import("@mastra/core/workflows").DefaultEngineType, import("@mastra/core/workflows").Step<string, unknown, unknown, unknown, unknown, unknown, any, unknown>[], "generator-demo-assets", unknown, {
39
+ company: string;
40
+ purpose: string;
41
+ queries: string[];
42
+ presentation: "genie" | "dashboard";
43
+ rowCount: number;
44
+ website?: string | undefined;
45
+ }, {
46
+ request: {
47
+ company: string;
48
+ purpose: string;
49
+ queries: string[];
50
+ presentation: "genie" | "dashboard";
51
+ rowCount: number;
52
+ website?: string | undefined;
53
+ };
54
+ schema: {
55
+ catalog: string;
56
+ schema: string;
57
+ fullName: string;
58
+ principal: string;
59
+ };
60
+ tables: string[];
61
+ brand: {
62
+ brand: {
63
+ schemaVersion: "1";
64
+ name: string;
65
+ shortName: string;
66
+ tagline: string;
67
+ description: string;
68
+ assets: {
69
+ icon: {
70
+ light: string;
71
+ dark?: string | undefined;
72
+ };
73
+ logo: {
74
+ light: string;
75
+ dark?: string | undefined;
76
+ };
77
+ favicon: string;
78
+ };
79
+ colors: {
80
+ primary: string;
81
+ primaryHover: string;
82
+ accent: string;
83
+ foreground: string;
84
+ background: string;
85
+ surface: string;
86
+ muted: string;
87
+ border: string;
88
+ };
89
+ typography: {
90
+ sans: string;
91
+ mono: string;
92
+ };
93
+ voice: {
94
+ audience: string[];
95
+ tone: string[];
96
+ principles: string[];
97
+ avoid: string[];
98
+ };
99
+ links: {
100
+ website: string;
101
+ documentation: string;
102
+ repository?: string | undefined;
103
+ };
104
+ extensions: Record<string, unknown>;
105
+ };
106
+ sources: {
107
+ url: string;
108
+ fetched: boolean;
109
+ title?: string | undefined;
110
+ snippet?: string | undefined;
111
+ }[];
112
+ visualReferences: {
113
+ platform: "android" | "ios";
114
+ appName: string;
115
+ pageUrl: string;
116
+ images: {
117
+ url: string;
118
+ contentType?: string | undefined;
119
+ localPath?: string | undefined;
120
+ }[];
121
+ }[];
122
+ };
123
+ kpiResearch: {
124
+ kpis: {
125
+ name: string;
126
+ label: string;
127
+ definition: string;
128
+ unit: "number" | "percent" | "duration" | "currency";
129
+ targetDirection: "higher" | "lower" | "neutral";
130
+ sourceUrls: string[];
131
+ }[];
132
+ sources: {
133
+ url: string;
134
+ fetched: boolean;
135
+ title?: string | undefined;
136
+ }[];
137
+ };
138
+ plan: {
139
+ table: string;
140
+ rowCount: number;
141
+ columns: ({
142
+ name: string;
143
+ generator: "id";
144
+ description: string;
145
+ } | {
146
+ name: string;
147
+ generator: "date";
148
+ description: string;
149
+ days: number;
150
+ } | {
151
+ name: string;
152
+ generator: "category";
153
+ description: string;
154
+ values: string[];
155
+ } | {
156
+ name: string;
157
+ generator: "number";
158
+ description: string;
159
+ minimum: number;
160
+ maximum: number;
161
+ decimals: number;
162
+ } | {
163
+ name: string;
164
+ generator: "boolean";
165
+ description: string;
166
+ trueProbability: number;
167
+ })[];
168
+ metrics: {
169
+ name: string;
170
+ label: string;
171
+ definition: string;
172
+ unit: "number" | "percent" | "duration" | "currency";
173
+ targetDirection: "higher" | "lower" | "neutral";
174
+ sourceUrls: string[];
175
+ aggregation: "count" | "sum" | "average";
176
+ column?: string | undefined;
177
+ }[];
178
+ story: string;
179
+ sampleQuestions: string[];
180
+ };
181
+ dashboard?: {
182
+ dashboardId: string;
183
+ companionGenie: "AUTO";
184
+ path?: string | undefined;
185
+ } | undefined;
186
+ genie?: {
187
+ spaceId: string;
188
+ title: string;
189
+ } | undefined;
190
+ }, {
191
+ request: {
192
+ company: string;
193
+ purpose: string;
194
+ queries: string[];
195
+ presentation: "genie" | "dashboard";
196
+ rowCount: number;
197
+ website?: string | undefined;
198
+ };
199
+ schema: {
200
+ catalog: string;
201
+ schema: string;
202
+ fullName: string;
203
+ principal: string;
204
+ };
205
+ tables: string[];
206
+ brand: {
207
+ brand: {
208
+ schemaVersion: "1";
209
+ name: string;
210
+ shortName: string;
211
+ tagline: string;
212
+ description: string;
213
+ assets: {
214
+ icon: {
215
+ light: string;
216
+ dark?: string | undefined;
217
+ };
218
+ logo: {
219
+ light: string;
220
+ dark?: string | undefined;
221
+ };
222
+ favicon: string;
223
+ };
224
+ colors: {
225
+ primary: string;
226
+ primaryHover: string;
227
+ accent: string;
228
+ foreground: string;
229
+ background: string;
230
+ surface: string;
231
+ muted: string;
232
+ border: string;
233
+ };
234
+ typography: {
235
+ sans: string;
236
+ mono: string;
237
+ };
238
+ voice: {
239
+ audience: string[];
240
+ tone: string[];
241
+ principles: string[];
242
+ avoid: string[];
243
+ };
244
+ links: {
245
+ website: string;
246
+ documentation: string;
247
+ repository?: string | undefined;
248
+ };
249
+ extensions: Record<string, unknown>;
250
+ };
251
+ sources: {
252
+ url: string;
253
+ fetched: boolean;
254
+ title?: string | undefined;
255
+ snippet?: string | undefined;
256
+ }[];
257
+ visualReferences: {
258
+ platform: "android" | "ios";
259
+ appName: string;
260
+ pageUrl: string;
261
+ images: {
262
+ url: string;
263
+ contentType?: string | undefined;
264
+ localPath?: string | undefined;
265
+ }[];
266
+ }[];
267
+ };
268
+ kpiResearch: {
269
+ kpis: {
270
+ name: string;
271
+ label: string;
272
+ definition: string;
273
+ unit: "number" | "percent" | "duration" | "currency";
274
+ targetDirection: "higher" | "lower" | "neutral";
275
+ sourceUrls: string[];
276
+ }[];
277
+ sources: {
278
+ url: string;
279
+ fetched: boolean;
280
+ title?: string | undefined;
281
+ }[];
282
+ };
283
+ plan: {
284
+ table: string;
285
+ rowCount: number;
286
+ columns: ({
287
+ name: string;
288
+ generator: "id";
289
+ description: string;
290
+ } | {
291
+ name: string;
292
+ generator: "date";
293
+ description: string;
294
+ days: number;
295
+ } | {
296
+ name: string;
297
+ generator: "category";
298
+ description: string;
299
+ values: string[];
300
+ } | {
301
+ name: string;
302
+ generator: "number";
303
+ description: string;
304
+ minimum: number;
305
+ maximum: number;
306
+ decimals: number;
307
+ } | {
308
+ name: string;
309
+ generator: "boolean";
310
+ description: string;
311
+ trueProbability: number;
312
+ })[];
313
+ metrics: {
314
+ name: string;
315
+ label: string;
316
+ definition: string;
317
+ unit: "number" | "percent" | "duration" | "currency";
318
+ targetDirection: "higher" | "lower" | "neutral";
319
+ sourceUrls: string[];
320
+ aggregation: "count" | "sum" | "average";
321
+ column?: string | undefined;
322
+ }[];
323
+ story: string;
324
+ sampleQuestions: string[];
325
+ };
326
+ dashboard?: {
327
+ dashboardId: string;
328
+ companionGenie: "AUTO";
329
+ path?: string | undefined;
330
+ } | undefined;
331
+ genie?: {
332
+ spaceId: string;
333
+ title: string;
334
+ } | undefined;
335
+ }, unknown> | undefined;
336
+ schemas: {
337
+ kpiResearch: import("zod").ZodObject<{
338
+ kpis: import("zod").ZodArray<import("zod").ZodObject<{
339
+ name: import("zod").ZodString;
340
+ label: import("zod").ZodString;
341
+ definition: import("zod").ZodString;
342
+ unit: import("zod").ZodEnum<{
343
+ number: "number";
344
+ percent: "percent";
345
+ duration: "duration";
346
+ currency: "currency";
347
+ }>;
348
+ targetDirection: import("zod").ZodEnum<{
349
+ higher: "higher";
350
+ lower: "lower";
351
+ neutral: "neutral";
352
+ }>;
353
+ sourceUrls: import("zod").ZodArray<import("zod").ZodString>;
354
+ }, import("zod/v4/core").$strict>>;
355
+ sources: import("zod").ZodArray<import("zod").ZodObject<{
356
+ url: import("zod").ZodString;
357
+ title: import("zod").ZodOptional<import("zod").ZodString>;
358
+ fetched: import("zod").ZodBoolean;
359
+ }, import("zod/v4/core").$strict>>;
360
+ }, import("zod/v4/core").$strict>;
361
+ plan: import("zod").ZodObject<{
362
+ table: import("zod").ZodString;
363
+ rowCount: import("zod").ZodNumber;
364
+ columns: import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
365
+ name: import("zod").ZodString;
366
+ generator: import("zod").ZodLiteral<"id">;
367
+ description: import("zod").ZodString;
368
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
369
+ name: import("zod").ZodString;
370
+ generator: import("zod").ZodLiteral<"date">;
371
+ description: import("zod").ZodString;
372
+ days: import("zod").ZodNumber;
373
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
374
+ name: import("zod").ZodString;
375
+ generator: import("zod").ZodLiteral<"category">;
376
+ description: import("zod").ZodString;
377
+ values: import("zod").ZodArray<import("zod").ZodString>;
378
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
379
+ name: import("zod").ZodString;
380
+ generator: import("zod").ZodLiteral<"number">;
381
+ description: import("zod").ZodString;
382
+ minimum: import("zod").ZodNumber;
383
+ maximum: import("zod").ZodNumber;
384
+ decimals: import("zod").ZodDefault<import("zod").ZodNumber>;
385
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
386
+ name: import("zod").ZodString;
387
+ generator: import("zod").ZodLiteral<"boolean">;
388
+ description: import("zod").ZodString;
389
+ trueProbability: import("zod").ZodNumber;
390
+ }, import("zod/v4/core").$strict>], "generator">>;
391
+ metrics: import("zod").ZodArray<import("zod").ZodObject<{
392
+ name: import("zod").ZodString;
393
+ label: import("zod").ZodString;
394
+ definition: import("zod").ZodString;
395
+ unit: import("zod").ZodEnum<{
396
+ number: "number";
397
+ percent: "percent";
398
+ duration: "duration";
399
+ currency: "currency";
400
+ }>;
401
+ targetDirection: import("zod").ZodEnum<{
402
+ higher: "higher";
403
+ lower: "lower";
404
+ neutral: "neutral";
405
+ }>;
406
+ sourceUrls: import("zod").ZodArray<import("zod").ZodString>;
407
+ aggregation: import("zod").ZodEnum<{
408
+ count: "count";
409
+ sum: "sum";
410
+ average: "average";
411
+ }>;
412
+ column: import("zod").ZodOptional<import("zod").ZodString>;
413
+ }, import("zod/v4/core").$strict>>;
414
+ story: import("zod").ZodString;
415
+ sampleQuestions: import("zod").ZodArray<import("zod").ZodString>;
416
+ }, import("zod/v4/core").$strict>;
417
+ location: import("zod").ZodObject<{
418
+ catalog: import("zod").ZodString;
419
+ schema: import("zod").ZodString;
420
+ fullName: import("zod").ZodString;
421
+ principal: import("zod").ZodString;
422
+ }, import("zod/v4/core").$strict>;
423
+ materialized: import("zod").ZodObject<{
424
+ tables: import("zod").ZodArray<import("zod").ZodString>;
425
+ validationStatements: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
426
+ }, import("zod/v4/core").$strict>;
427
+ dashboard: import("zod").ZodObject<{
428
+ dashboardId: import("zod").ZodString;
429
+ path: import("zod").ZodOptional<import("zod").ZodString>;
430
+ companionGenie: import("zod").ZodLiteral<"AUTO">;
431
+ }, import("zod/v4/core").$strict>;
432
+ genie: import("zod").ZodObject<{
433
+ spaceId: import("zod").ZodString;
434
+ title: import("zod").ZodString;
435
+ }, import("zod/v4/core").$strict>;
436
+ assets: import("zod").ZodObject<{
437
+ request: import("zod").ZodObject<{
438
+ company: import("zod").ZodString;
439
+ purpose: import("zod").ZodString;
440
+ queries: import("zod").ZodArray<import("zod").ZodString>;
441
+ website: import("zod").ZodOptional<import("zod").ZodString>;
442
+ presentation: import("zod").ZodDefault<import("zod").ZodEnum<{
443
+ genie: "genie";
444
+ dashboard: "dashboard";
445
+ }>>;
446
+ rowCount: import("zod").ZodDefault<import("zod").ZodNumber>;
447
+ }, import("zod/v4/core").$strict>;
448
+ schema: import("zod").ZodObject<{
449
+ catalog: import("zod").ZodString;
450
+ schema: import("zod").ZodString;
451
+ fullName: import("zod").ZodString;
452
+ principal: import("zod").ZodString;
453
+ }, import("zod/v4/core").$strict>;
454
+ tables: import("zod").ZodArray<import("zod").ZodString>;
455
+ brand: import("zod").ZodObject<{
456
+ brand: import("zod").ZodObject<{
457
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<"1">>;
458
+ name: import("zod").ZodDefault<import("zod").ZodString>;
459
+ shortName: import("zod").ZodDefault<import("zod").ZodString>;
460
+ tagline: import("zod").ZodDefault<import("zod").ZodString>;
461
+ description: import("zod").ZodDefault<import("zod").ZodString>;
462
+ assets: import("zod").ZodDefault<import("zod").ZodObject<{
463
+ icon: import("zod").ZodDefault<import("zod").ZodObject<{
464
+ light: import("zod").ZodString;
465
+ dark: import("zod").ZodOptional<import("zod").ZodString>;
466
+ }, import("zod/v4/core").$strict>>;
467
+ logo: import("zod").ZodDefault<import("zod").ZodObject<{
468
+ light: import("zod").ZodString;
469
+ dark: import("zod").ZodOptional<import("zod").ZodString>;
470
+ }, import("zod/v4/core").$strict>>;
471
+ favicon: import("zod").ZodDefault<import("zod").ZodString>;
472
+ }, import("zod/v4/core").$strict>>;
473
+ colors: import("zod").ZodPrefault<import("zod").ZodObject<{
474
+ primary: import("zod").ZodDefault<import("zod").ZodString>;
475
+ primaryHover: import("zod").ZodDefault<import("zod").ZodString>;
476
+ accent: import("zod").ZodDefault<import("zod").ZodString>;
477
+ foreground: import("zod").ZodDefault<import("zod").ZodString>;
478
+ background: import("zod").ZodDefault<import("zod").ZodString>;
479
+ surface: import("zod").ZodDefault<import("zod").ZodString>;
480
+ muted: import("zod").ZodDefault<import("zod").ZodString>;
481
+ border: import("zod").ZodDefault<import("zod").ZodString>;
482
+ }, import("zod/v4/core").$strict>>;
483
+ typography: import("zod").ZodPrefault<import("zod").ZodObject<{
484
+ sans: import("zod").ZodDefault<import("zod").ZodString>;
485
+ mono: import("zod").ZodDefault<import("zod").ZodString>;
486
+ }, import("zod/v4/core").$strict>>;
487
+ voice: import("zod").ZodPrefault<import("zod").ZodObject<{
488
+ audience: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
489
+ tone: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
490
+ principles: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
491
+ avoid: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
492
+ }, import("zod/v4/core").$strict>>;
493
+ links: import("zod").ZodPrefault<import("zod").ZodObject<{
494
+ website: import("zod").ZodDefault<import("zod").ZodString>;
495
+ repository: import("zod").ZodOptional<import("zod").ZodString>;
496
+ documentation: import("zod").ZodDefault<import("zod").ZodString>;
497
+ }, import("zod/v4/core").$strict>>;
498
+ extensions: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
499
+ }, import("zod/v4/core").$strict>;
500
+ sources: import("zod").ZodArray<import("zod").ZodObject<{
501
+ url: import("zod").ZodString;
502
+ title: import("zod").ZodOptional<import("zod").ZodString>;
503
+ snippet: import("zod").ZodOptional<import("zod").ZodString>;
504
+ fetched: import("zod").ZodBoolean;
505
+ }, import("zod/v4/core").$strict>>;
506
+ visualReferences: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
507
+ platform: import("zod").ZodEnum<{
508
+ android: "android";
509
+ ios: "ios";
510
+ }>;
511
+ appName: import("zod").ZodString;
512
+ pageUrl: import("zod").ZodString;
513
+ images: import("zod").ZodArray<import("zod").ZodObject<{
514
+ url: import("zod").ZodString;
515
+ contentType: import("zod").ZodOptional<import("zod").ZodString>;
516
+ localPath: import("zod").ZodOptional<import("zod").ZodString>;
517
+ }, import("zod/v4/core").$strict>>;
518
+ }, import("zod/v4/core").$strict>>>;
519
+ }, import("zod/v4/core").$strict>;
520
+ kpiResearch: import("zod").ZodObject<{
521
+ kpis: import("zod").ZodArray<import("zod").ZodObject<{
522
+ name: import("zod").ZodString;
523
+ label: import("zod").ZodString;
524
+ definition: import("zod").ZodString;
525
+ unit: import("zod").ZodEnum<{
526
+ number: "number";
527
+ percent: "percent";
528
+ duration: "duration";
529
+ currency: "currency";
530
+ }>;
531
+ targetDirection: import("zod").ZodEnum<{
532
+ higher: "higher";
533
+ lower: "lower";
534
+ neutral: "neutral";
535
+ }>;
536
+ sourceUrls: import("zod").ZodArray<import("zod").ZodString>;
537
+ }, import("zod/v4/core").$strict>>;
538
+ sources: import("zod").ZodArray<import("zod").ZodObject<{
539
+ url: import("zod").ZodString;
540
+ title: import("zod").ZodOptional<import("zod").ZodString>;
541
+ fetched: import("zod").ZodBoolean;
542
+ }, import("zod/v4/core").$strict>>;
543
+ }, import("zod/v4/core").$strict>;
544
+ plan: import("zod").ZodObject<{
545
+ table: import("zod").ZodString;
546
+ rowCount: import("zod").ZodNumber;
547
+ columns: import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
548
+ name: import("zod").ZodString;
549
+ generator: import("zod").ZodLiteral<"id">;
550
+ description: import("zod").ZodString;
551
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
552
+ name: import("zod").ZodString;
553
+ generator: import("zod").ZodLiteral<"date">;
554
+ description: import("zod").ZodString;
555
+ days: import("zod").ZodNumber;
556
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
557
+ name: import("zod").ZodString;
558
+ generator: import("zod").ZodLiteral<"category">;
559
+ description: import("zod").ZodString;
560
+ values: import("zod").ZodArray<import("zod").ZodString>;
561
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
562
+ name: import("zod").ZodString;
563
+ generator: import("zod").ZodLiteral<"number">;
564
+ description: import("zod").ZodString;
565
+ minimum: import("zod").ZodNumber;
566
+ maximum: import("zod").ZodNumber;
567
+ decimals: import("zod").ZodDefault<import("zod").ZodNumber>;
568
+ }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
569
+ name: import("zod").ZodString;
570
+ generator: import("zod").ZodLiteral<"boolean">;
571
+ description: import("zod").ZodString;
572
+ trueProbability: import("zod").ZodNumber;
573
+ }, import("zod/v4/core").$strict>], "generator">>;
574
+ metrics: import("zod").ZodArray<import("zod").ZodObject<{
575
+ name: import("zod").ZodString;
576
+ label: import("zod").ZodString;
577
+ definition: import("zod").ZodString;
578
+ unit: import("zod").ZodEnum<{
579
+ number: "number";
580
+ percent: "percent";
581
+ duration: "duration";
582
+ currency: "currency";
583
+ }>;
584
+ targetDirection: import("zod").ZodEnum<{
585
+ higher: "higher";
586
+ lower: "lower";
587
+ neutral: "neutral";
588
+ }>;
589
+ sourceUrls: import("zod").ZodArray<import("zod").ZodString>;
590
+ aggregation: import("zod").ZodEnum<{
591
+ count: "count";
592
+ sum: "sum";
593
+ average: "average";
594
+ }>;
595
+ column: import("zod").ZodOptional<import("zod").ZodString>;
596
+ }, import("zod/v4/core").$strict>>;
597
+ story: import("zod").ZodString;
598
+ sampleQuestions: import("zod").ZodArray<import("zod").ZodString>;
599
+ }, import("zod/v4/core").$strict>;
600
+ dashboard: import("zod").ZodOptional<import("zod").ZodObject<{
601
+ dashboardId: import("zod").ZodString;
602
+ path: import("zod").ZodOptional<import("zod").ZodString>;
603
+ companionGenie: import("zod").ZodLiteral<"AUTO">;
604
+ }, import("zod/v4/core").$strict>>;
605
+ genie: import("zod").ZodOptional<import("zod").ZodObject<{
606
+ spaceId: import("zod").ZodString;
607
+ title: import("zod").ZodString;
608
+ }, import("zod/v4/core").$strict>>;
609
+ }, import("zod/v4/core").$strict>;
610
+ };
611
+ client: typeof GeneratorPluginClient;
612
+ };
613
+ /** Resolve the sibling web-search plugin without recreating its policy. */
614
+ private researchClient;
615
+ /** Initialized operations or a clear lifecycle error. */
616
+ private requireOperations;
617
+ }
618
+ /** Register AppKit generator tools and workflow integration. */
619
+ export declare const generator: import("@databricks/appkit").ToPlugin<typeof GeneratorPlugin, GeneratorPluginConfig, "generator">;