@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,52 @@
1
+ /**
2
+ * Model-facing profile contract and AppKit tool description for researched
3
+ * brand generation. Browser-safe request, event, and package contracts are
4
+ * owned by `@dbx-tools/shared-generator`.
5
+ *
6
+ * @module
7
+ */
8
+ import type { BrandGenerationRequest as SharedBrandGenerationRequest } from "@dbx-tools/shared-generator/brand";
9
+ import { z } from "zod";
10
+ export { BrandGenerationErrorEventSchema, BrandGenerationEventSchema, BrandGenerationProgressEventSchema, BrandGenerationRequestSchema, BrandGenerationResultEventSchema, BrandGenerationStageSchema, BrandPackageSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, } from "@dbx-tools/shared-generator/brand";
11
+ export type { BrandGenerationErrorEvent, BrandGenerationEvent, BrandGenerationProgressEvent, BrandGenerationRequest, BrandGenerationResultEvent, BrandGenerationStage, BrandPackage, BrandPackageSource, BrandVisualImage, BrandVisualReference, } from "@dbx-tools/shared-generator/brand";
12
+ /** Resolve the human-readable subject from a validated brand request. */
13
+ export declare function brandRequestSubject(request: SharedBrandGenerationRequest): string;
14
+ /** Description shared by the native AppKit brand-generation tool. */
15
+ export declare const GENERATE_BRAND_TOOL_DESCRIPTION: string;
16
+ /**
17
+ * Structured model output before deterministic asset references and schema
18
+ * metadata are attached.
19
+ */
20
+ export declare const GeneratedBrandProfileSchema: z.ZodObject<{
21
+ name: z.ZodString;
22
+ shortName: z.ZodString;
23
+ tagline: z.ZodString;
24
+ description: z.ZodString;
25
+ colors: z.ZodObject<{
26
+ primary: z.ZodString;
27
+ primaryHover: z.ZodString;
28
+ accent: z.ZodString;
29
+ foreground: z.ZodString;
30
+ background: z.ZodString;
31
+ surface: z.ZodString;
32
+ muted: z.ZodString;
33
+ border: z.ZodString;
34
+ }, z.core.$strict>;
35
+ typography: z.ZodObject<{
36
+ sans: z.ZodString;
37
+ mono: z.ZodString;
38
+ }, z.core.$strict>;
39
+ voice: z.ZodObject<{
40
+ audience: z.ZodArray<z.ZodString>;
41
+ tone: z.ZodArray<z.ZodString>;
42
+ principles: z.ZodArray<z.ZodString>;
43
+ avoid: z.ZodArray<z.ZodString>;
44
+ }, z.core.$strict>;
45
+ links: z.ZodObject<{
46
+ website: z.ZodString;
47
+ repository: z.ZodOptional<z.ZodString>;
48
+ documentation: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strict>;
50
+ }, z.core.$strict>;
51
+ /** Structured model output before deterministic package assembly. */
52
+ export type GeneratedBrandProfile = z.infer<typeof GeneratedBrandProfileSchema>;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Model-facing profile contract and AppKit tool description for researched
3
+ * brand generation. Browser-safe request, event, and package contracts are
4
+ * owned by `@dbx-tools/shared-generator`.
5
+ *
6
+ * @module
7
+ */
8
+ import { stringUtils } from "@dbx-tools/shared-core";
9
+ import { z } from "zod";
10
+ export { BrandGenerationErrorEventSchema, BrandGenerationEventSchema, BrandGenerationProgressEventSchema, BrandGenerationRequestSchema, BrandGenerationResultEventSchema, BrandGenerationStageSchema, BrandPackageSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, } from "@dbx-tools/shared-generator/brand";
11
+ const nonBlankString = z.string().trim().min(1);
12
+ const color = z.string().regex(/^#(?:[\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/i, "Expected a hex color.");
13
+ /** Resolve the human-readable subject from a validated brand request. */
14
+ export function brandRequestSubject(request) {
15
+ return request.name ?? request.prompt;
16
+ }
17
+ /** Description shared by the native AppKit brand-generation tool. */
18
+ export const GENERATE_BRAND_TOOL_DESCRIPTION = stringUtils.toDescription(`
19
+ Research a named organization or product on the web and generate a portable
20
+ branding package. The result includes a validated BrandContext for
21
+ application and email presentation plus the sources used. Supply the
22
+ official website when known to disambiguate brands with similar names.
23
+ `);
24
+ /**
25
+ * Structured model output before deterministic asset references and schema
26
+ * metadata are attached.
27
+ */
28
+ export const GeneratedBrandProfileSchema = z
29
+ .object({
30
+ name: nonBlankString.describe("Canonical display name supported by the sources."),
31
+ shortName: nonBlankString.describe("Compact brand name suitable for constrained UI."),
32
+ tagline: nonBlankString.describe("Short brand line suitable for a header or metadata."),
33
+ description: nonBlankString.describe("Plain-language description of the brand."),
34
+ colors: z
35
+ .object({
36
+ primary: color.describe("Primary identity color."),
37
+ primaryHover: color.describe("Accessible hover or pressed color for the primary color."),
38
+ accent: color.describe("Secondary accent color."),
39
+ foreground: color.describe("Default high-contrast text and mark color."),
40
+ background: color.describe("Default page background."),
41
+ surface: color.describe("Secondary surface background."),
42
+ muted: color.describe("Muted text color with readable contrast."),
43
+ border: color.describe("Default border color."),
44
+ })
45
+ .strict()
46
+ .describe("Usable interface palette based on the researched identity."),
47
+ typography: z
48
+ .object({
49
+ sans: nonBlankString.describe("CSS font-family stack for normal interface text."),
50
+ mono: nonBlankString.describe("CSS font-family stack for code and tabular text."),
51
+ })
52
+ .strict()
53
+ .describe("Brand-compatible CSS font stacks."),
54
+ voice: z
55
+ .object({
56
+ audience: z
57
+ .array(nonBlankString)
58
+ .describe("Primary audiences explicitly supported by the sources."),
59
+ tone: z.array(nonBlankString).describe("Concise descriptors for the brand's writing tone."),
60
+ principles: z
61
+ .array(nonBlankString)
62
+ .describe("Concrete rules for writing in the brand voice."),
63
+ avoid: z.array(nonBlankString).describe("Writing patterns the brand should avoid."),
64
+ })
65
+ .strict()
66
+ .describe("Evidence-based writing voice guidance."),
67
+ links: z
68
+ .object({
69
+ website: z.string().url().describe("Official brand website."),
70
+ repository: z.string().url().optional().describe("Official source repository, if any."),
71
+ documentation: z
72
+ .string()
73
+ .url()
74
+ .optional()
75
+ .describe("Official documentation site, if distinct from the website."),
76
+ })
77
+ .strict()
78
+ .describe("Verified first-party brand links."),
79
+ })
80
+ .strict()
81
+ .describe("Evidence-based brand profile produced by the synthesis model.");
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQixrQ0FBa0MsRUFDbEMsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQywwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsMEJBQTBCLEdBQzNCLE1BQU0sbUNBQW1DLENBQUM7QUFjM0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFcEcseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFxQztJQUN2RSxPQUFPLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU8sQ0FBQztBQUN6QyxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7Ozs7O0NBS3hFLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUM7S0FDekMsTUFBTSxDQUFDO0lBQ04sSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsa0RBQWtELENBQUM7SUFDakYsU0FBUyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsaURBQWlELENBQUM7SUFDckYsT0FBTyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMscURBQXFELENBQUM7SUFDdkYsV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUM7SUFDaEYsTUFBTSxFQUFFLENBQUM7U0FDTixNQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztRQUNsRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQywwREFBMEQsQ0FBQztRQUN4RixNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztRQUNqRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztRQUN4RSxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztRQUN0RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQztRQUN4RCxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQztRQUNqRSxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztLQUNoRCxDQUFDO1NBQ0QsTUFBTSxFQUFFO1NBQ1IsUUFBUSxDQUFDLDREQUE0RCxDQUFDO0lBQ3pFLFVBQVUsRUFBRSxDQUFDO1NBQ1YsTUFBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsa0RBQWtELENBQUM7UUFDakYsSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsa0RBQWtELENBQUM7S0FDbEYsQ0FBQztTQUNELE1BQU0sRUFBRTtTQUNSLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQztTQUNMLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSxDQUFDO2FBQ1IsS0FBSyxDQUFDLGNBQWMsQ0FBQzthQUNyQixRQUFRLENBQUMsd0RBQXdELENBQUM7UUFDckUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLG1EQUFtRCxDQUFDO1FBQzNGLFVBQVUsRUFBRSxDQUFDO2FBQ1YsS0FBSyxDQUFDLGNBQWMsQ0FBQzthQUNyQixRQUFRLENBQUMsZ0RBQWdELENBQUM7UUFDN0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDO0tBQ3BGLENBQUM7U0FDRCxNQUFNLEVBQUU7U0FDUixRQUFRLENBQUMsd0NBQXdDLENBQUM7SUFDckQsS0FBSyxFQUFFLENBQUM7U0FDTCxNQUFNLENBQUM7UUFDTixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztRQUM3RCxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQztRQUN2RixhQUFhLEVBQUUsQ0FBQzthQUNiLE1BQU0sRUFBRTthQUNSLEdBQUcsRUFBRTthQUNMLFFBQVEsRUFBRTthQUNWLFFBQVEsQ0FBQyw0REFBNEQsQ0FBQztLQUMxRSxDQUFDO1NBQ0QsTUFBTSxFQUFFO1NBQ1IsUUFBUSxDQUFDLG1DQUFtQyxDQUFDO0NBQ2pELENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsK0RBQStELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWwtZmFjaW5nIHByb2ZpbGUgY29udHJhY3QgYW5kIEFwcEtpdCB0b29sIGRlc2NyaXB0aW9uIGZvciByZXNlYXJjaGVkXG4gKiBicmFuZCBnZW5lcmF0aW9uLiBCcm93c2VyLXNhZmUgcmVxdWVzdCwgZXZlbnQsIGFuZCBwYWNrYWdlIGNvbnRyYWN0cyBhcmVcbiAqIG93bmVkIGJ5IGBAZGJ4LXRvb2xzL3NoYXJlZC1nZW5lcmF0b3JgLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzdHJpbmdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEJyYW5kR2VuZXJhdGlvblJlcXVlc3QgYXMgU2hhcmVkQnJhbmRHZW5lcmF0aW9uUmVxdWVzdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5lcmF0b3IvYnJhbmRcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCB7XG4gIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnRTY2hlbWEsXG4gIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hLFxuICBCcmFuZEdlbmVyYXRpb25Qcm9ncmVzc0V2ZW50U2NoZW1hLFxuICBCcmFuZEdlbmVyYXRpb25SZXF1ZXN0U2NoZW1hLFxuICBCcmFuZEdlbmVyYXRpb25SZXN1bHRFdmVudFNjaGVtYSxcbiAgQnJhbmRHZW5lcmF0aW9uU3RhZ2VTY2hlbWEsXG4gIEJyYW5kUGFja2FnZVNjaGVtYSxcbiAgQnJhbmRQYWNrYWdlU291cmNlU2NoZW1hLFxuICBCcmFuZFZpc3VhbEltYWdlU2NoZW1hLFxuICBCcmFuZFZpc3VhbFJlZmVyZW5jZVNjaGVtYSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvci9icmFuZFwiO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50LFxuICBCcmFuZEdlbmVyYXRpb25FdmVudCxcbiAgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudCxcbiAgQnJhbmRHZW5lcmF0aW9uUmVxdWVzdCxcbiAgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnQsXG4gIEJyYW5kR2VuZXJhdGlvblN0YWdlLFxuICBCcmFuZFBhY2thZ2UsXG4gIEJyYW5kUGFja2FnZVNvdXJjZSxcbiAgQnJhbmRWaXN1YWxJbWFnZSxcbiAgQnJhbmRWaXN1YWxSZWZlcmVuY2UsXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5lcmF0b3IvYnJhbmRcIjtcblxuY29uc3Qgbm9uQmxhbmtTdHJpbmcgPSB6LnN0cmluZygpLnRyaW0oKS5taW4oMSk7XG5jb25zdCBjb2xvciA9IHouc3RyaW5nKCkucmVnZXgoL14jKD86W1xcZGEtZl17M318W1xcZGEtZl17Nn18W1xcZGEtZl17OH0pJC9pLCBcIkV4cGVjdGVkIGEgaGV4IGNvbG9yLlwiKTtcblxuLyoqIFJlc29sdmUgdGhlIGh1bWFuLXJlYWRhYmxlIHN1YmplY3QgZnJvbSBhIHZhbGlkYXRlZCBicmFuZCByZXF1ZXN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kUmVxdWVzdFN1YmplY3QocmVxdWVzdDogU2hhcmVkQnJhbmRHZW5lcmF0aW9uUmVxdWVzdCk6IHN0cmluZyB7XG4gIHJldHVybiByZXF1ZXN0Lm5hbWUgPz8gcmVxdWVzdC5wcm9tcHQhO1xufVxuXG4vKiogRGVzY3JpcHRpb24gc2hhcmVkIGJ5IHRoZSBuYXRpdmUgQXBwS2l0IGJyYW5kLWdlbmVyYXRpb24gdG9vbC4gKi9cbmV4cG9ydCBjb25zdCBHRU5FUkFURV9CUkFORF9UT09MX0RFU0NSSVBUSU9OID0gc3RyaW5nVXRpbHMudG9EZXNjcmlwdGlvbihgXG4gIFJlc2VhcmNoIGEgbmFtZWQgb3JnYW5pemF0aW9uIG9yIHByb2R1Y3Qgb24gdGhlIHdlYiBhbmQgZ2VuZXJhdGUgYSBwb3J0YWJsZVxuICBicmFuZGluZyBwYWNrYWdlLiBUaGUgcmVzdWx0IGluY2x1ZGVzIGEgdmFsaWRhdGVkIEJyYW5kQ29udGV4dCBmb3JcbiAgYXBwbGljYXRpb24gYW5kIGVtYWlsIHByZXNlbnRhdGlvbiBwbHVzIHRoZSBzb3VyY2VzIHVzZWQuIFN1cHBseSB0aGVcbiAgb2ZmaWNpYWwgd2Vic2l0ZSB3aGVuIGtub3duIHRvIGRpc2FtYmlndWF0ZSBicmFuZHMgd2l0aCBzaW1pbGFyIG5hbWVzLlxuYCk7XG5cbi8qKlxuICogU3RydWN0dXJlZCBtb2RlbCBvdXRwdXQgYmVmb3JlIGRldGVybWluaXN0aWMgYXNzZXQgcmVmZXJlbmNlcyBhbmQgc2NoZW1hXG4gKiBtZXRhZGF0YSBhcmUgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmF0ZWRCcmFuZFByb2ZpbGVTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG5hbWU6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQ2Fub25pY2FsIGRpc3BsYXkgbmFtZSBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZXMuXCIpLFxuICAgIHNob3J0TmFtZTogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDb21wYWN0IGJyYW5kIG5hbWUgc3VpdGFibGUgZm9yIGNvbnN0cmFpbmVkIFVJLlwiKSxcbiAgICB0YWdsaW5lOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIlNob3J0IGJyYW5kIGxpbmUgc3VpdGFibGUgZm9yIGEgaGVhZGVyIG9yIG1ldGFkYXRhLlwiKSxcbiAgICBkZXNjcmlwdGlvbjogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJQbGFpbi1sYW5ndWFnZSBkZXNjcmlwdGlvbiBvZiB0aGUgYnJhbmQuXCIpLFxuICAgIGNvbG9yczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIHByaW1hcnk6IGNvbG9yLmRlc2NyaWJlKFwiUHJpbWFyeSBpZGVudGl0eSBjb2xvci5cIiksXG4gICAgICAgIHByaW1hcnlIb3ZlcjogY29sb3IuZGVzY3JpYmUoXCJBY2Nlc3NpYmxlIGhvdmVyIG9yIHByZXNzZWQgY29sb3IgZm9yIHRoZSBwcmltYXJ5IGNvbG9yLlwiKSxcbiAgICAgICAgYWNjZW50OiBjb2xvci5kZXNjcmliZShcIlNlY29uZGFyeSBhY2NlbnQgY29sb3IuXCIpLFxuICAgICAgICBmb3JlZ3JvdW5kOiBjb2xvci5kZXNjcmliZShcIkRlZmF1bHQgaGlnaC1jb250cmFzdCB0ZXh0IGFuZCBtYXJrIGNvbG9yLlwiKSxcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IuZGVzY3JpYmUoXCJEZWZhdWx0IHBhZ2UgYmFja2dyb3VuZC5cIiksXG4gICAgICAgIHN1cmZhY2U6IGNvbG9yLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IHN1cmZhY2UgYmFja2dyb3VuZC5cIiksXG4gICAgICAgIG11dGVkOiBjb2xvci5kZXNjcmliZShcIk11dGVkIHRleHQgY29sb3Igd2l0aCByZWFkYWJsZSBjb250cmFzdC5cIiksXG4gICAgICAgIGJvcmRlcjogY29sb3IuZGVzY3JpYmUoXCJEZWZhdWx0IGJvcmRlciBjb2xvci5cIiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVzY3JpYmUoXCJVc2FibGUgaW50ZXJmYWNlIHBhbGV0dGUgYmFzZWQgb24gdGhlIHJlc2VhcmNoZWQgaWRlbnRpdHkuXCIpLFxuICAgIHR5cG9ncmFwaHk6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBzYW5zOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkNTUyBmb250LWZhbWlseSBzdGFjayBmb3Igbm9ybWFsIGludGVyZmFjZSB0ZXh0LlwiKSxcbiAgICAgICAgbW9ubzogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJDU1MgZm9udC1mYW1pbHkgc3RhY2sgZm9yIGNvZGUgYW5kIHRhYnVsYXIgdGV4dC5cIiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVzY3JpYmUoXCJCcmFuZC1jb21wYXRpYmxlIENTUyBmb250IHN0YWNrcy5cIiksXG4gICAgdm9pY2U6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBhdWRpZW5jZTogelxuICAgICAgICAgIC5hcnJheShub25CbGFua1N0cmluZylcbiAgICAgICAgICAuZGVzY3JpYmUoXCJQcmltYXJ5IGF1ZGllbmNlcyBleHBsaWNpdGx5IHN1cHBvcnRlZCBieSB0aGUgc291cmNlcy5cIiksXG4gICAgICAgIHRvbmU6IHouYXJyYXkobm9uQmxhbmtTdHJpbmcpLmRlc2NyaWJlKFwiQ29uY2lzZSBkZXNjcmlwdG9ycyBmb3IgdGhlIGJyYW5kJ3Mgd3JpdGluZyB0b25lLlwiKSxcbiAgICAgICAgcHJpbmNpcGxlczogelxuICAgICAgICAgIC5hcnJheShub25CbGFua1N0cmluZylcbiAgICAgICAgICAuZGVzY3JpYmUoXCJDb25jcmV0ZSBydWxlcyBmb3Igd3JpdGluZyBpbiB0aGUgYnJhbmQgdm9pY2UuXCIpLFxuICAgICAgICBhdm9pZDogei5hcnJheShub25CbGFua1N0cmluZykuZGVzY3JpYmUoXCJXcml0aW5nIHBhdHRlcm5zIHRoZSBicmFuZCBzaG91bGQgYXZvaWQuXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLmRlc2NyaWJlKFwiRXZpZGVuY2UtYmFzZWQgd3JpdGluZyB2b2ljZSBndWlkYW5jZS5cIiksXG4gICAgbGlua3M6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLnVybCgpLmRlc2NyaWJlKFwiT2ZmaWNpYWwgYnJhbmQgd2Vic2l0ZS5cIiksXG4gICAgICAgIHJlcG9zaXRvcnk6IHouc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk9mZmljaWFsIHNvdXJjZSByZXBvc2l0b3J5LCBpZiBhbnkuXCIpLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiB6XG4gICAgICAgICAgLnN0cmluZygpXG4gICAgICAgICAgLnVybCgpXG4gICAgICAgICAgLm9wdGlvbmFsKClcbiAgICAgICAgICAuZGVzY3JpYmUoXCJPZmZpY2lhbCBkb2N1bWVudGF0aW9uIHNpdGUsIGlmIGRpc3RpbmN0IGZyb20gdGhlIHdlYnNpdGUuXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLmRlc2NyaWJlKFwiVmVyaWZpZWQgZmlyc3QtcGFydHkgYnJhbmQgbGlua3MuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiRXZpZGVuY2UtYmFzZWQgYnJhbmQgcHJvZmlsZSBwcm9kdWNlZCBieSB0aGUgc3ludGhlc2lzIG1vZGVsLlwiKTtcblxuLyoqIFN0cnVjdHVyZWQgbW9kZWwgb3V0cHV0IGJlZm9yZSBkZXRlcm1pbmlzdGljIHBhY2thZ2UgYXNzZW1ibHkuICovXG5leHBvcnQgdHlwZSBHZW5lcmF0ZWRCcmFuZFByb2ZpbGUgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZWRCcmFuZFByb2ZpbGVTY2hlbWE+O1xuIl19
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Mastra-backed prompt-injected structured generation.
3
+ *
4
+ * @module
5
+ */
6
+ import type { WorkspaceClient } from "@databricks/appkit";
7
+ import type { MessageListInput } from "@mastra/core/agent/message-list";
8
+ import type { z } from "zod";
9
+ /** Options for one isolated structured synthesis pass. */
10
+ export interface StructuredGenerationOptions<TSchema extends z.ZodType> {
11
+ /** Stable operation identifier. */
12
+ id: string;
13
+ /** Trusted system instructions. */
14
+ instructions: string;
15
+ /** Data-only prompt. */
16
+ prompt: MessageListInput;
17
+ /** Zod-owned output contract. */
18
+ schema: TSchema;
19
+ /** Optional model preference. */
20
+ model?: string;
21
+ /** Explicit workspace client for standalone callers. */
22
+ workspaceClient?: WorkspaceClient;
23
+ /** External cancellation. */
24
+ signal?: AbortSignal;
25
+ }
26
+ /** Generate and validate one structured object without provider response-format APIs. */
27
+ export declare function generateStructured<TSchema extends z.ZodType>(options: StructuredGenerationOptions<TSchema>): Promise<z.output<TSchema>>;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Mastra-backed prompt-injected structured generation.
3
+ *
4
+ * @module
5
+ */
6
+ import { buildModel, RESPONSES_PROVIDER_OPTIONS } from "@dbx-tools/appkit-mastra/model";
7
+ import { Agent } from "@mastra/core/agent";
8
+ /** Generate and validate one structured object without provider response-format APIs. */
9
+ export async function generateStructured(options) {
10
+ const model = await buildModel({ modelOverride: false }, undefined, {
11
+ ...(options.model ? { modelId: options.model } : {}),
12
+ ...(options.workspaceClient ? { workspaceClient: options.workspaceClient } : {}),
13
+ });
14
+ const agent = new Agent({
15
+ id: options.id,
16
+ name: options.id,
17
+ instructions: options.instructions,
18
+ model,
19
+ });
20
+ const result = await agent.generate(options.prompt, {
21
+ structuredOutput: {
22
+ schema: options.schema,
23
+ jsonPromptInjection: "system",
24
+ },
25
+ providerOptions: RESPONSES_PROVIDER_OPTIONS,
26
+ ...(options.signal ? { abortSignal: options.signal } : {}),
27
+ });
28
+ return options.schema.parse(result.object);
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFHSCxPQUFPLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBc0IzQyx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsT0FBNkM7SUFFN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFO1FBQ2xFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDakYsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUM7UUFDdEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2hCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxLQUFLO0tBQ04sQ0FBQyxDQUFDO0lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDbEQsZ0JBQWdCLEVBQUU7WUFDaEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLG1CQUFtQixFQUFFLFFBQVE7U0FDOUI7UUFDRCxlQUFlLEVBQUUsMEJBQTBCO1FBQzNDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUMzRCxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXN0cmEtYmFja2VkIHByb21wdC1pbmplY3RlZCBzdHJ1Y3R1cmVkIGdlbmVyYXRpb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYnVpbGRNb2RlbCwgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhL21vZGVsXCI7XG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvYWdlbnRcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZUxpc3RJbnB1dCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvYWdlbnQvbWVzc2FnZS1saXN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8qKiBPcHRpb25zIGZvciBvbmUgaXNvbGF0ZWQgc3RydWN0dXJlZCBzeW50aGVzaXMgcGFzcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlZEdlbmVyYXRpb25PcHRpb25zPFRTY2hlbWEgZXh0ZW5kcyB6LlpvZFR5cGU+IHtcbiAgLyoqIFN0YWJsZSBvcGVyYXRpb24gaWRlbnRpZmllci4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFRydXN0ZWQgc3lzdGVtIGluc3RydWN0aW9ucy4gKi9cbiAgaW5zdHJ1Y3Rpb25zOiBzdHJpbmc7XG4gIC8qKiBEYXRhLW9ubHkgcHJvbXB0LiAqL1xuICBwcm9tcHQ6IE1lc3NhZ2VMaXN0SW5wdXQ7XG4gIC8qKiBab2Qtb3duZWQgb3V0cHV0IGNvbnRyYWN0LiAqL1xuICBzY2hlbWE6IFRTY2hlbWE7XG4gIC8qKiBPcHRpb25hbCBtb2RlbCBwcmVmZXJlbmNlLiAqL1xuICBtb2RlbD86IHN0cmluZztcbiAgLyoqIEV4cGxpY2l0IHdvcmtzcGFjZSBjbGllbnQgZm9yIHN0YW5kYWxvbmUgY2FsbGVycy4gKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xuICAvKiogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqIEdlbmVyYXRlIGFuZCB2YWxpZGF0ZSBvbmUgc3RydWN0dXJlZCBvYmplY3Qgd2l0aG91dCBwcm92aWRlciByZXNwb25zZS1mb3JtYXQgQVBJcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVN0cnVjdHVyZWQ8VFNjaGVtYSBleHRlbmRzIHouWm9kVHlwZT4oXG4gIG9wdGlvbnM6IFN0cnVjdHVyZWRHZW5lcmF0aW9uT3B0aW9uczxUU2NoZW1hPixcbik6IFByb21pc2U8ei5vdXRwdXQ8VFNjaGVtYT4+IHtcbiAgY29uc3QgbW9kZWwgPSBhd2FpdCBidWlsZE1vZGVsKHsgbW9kZWxPdmVycmlkZTogZmFsc2UgfSwgdW5kZWZpbmVkLCB7XG4gICAgLi4uKG9wdGlvbnMubW9kZWwgPyB7IG1vZGVsSWQ6IG9wdGlvbnMubW9kZWwgfSA6IHt9KSxcbiAgICAuLi4ob3B0aW9ucy53b3Jrc3BhY2VDbGllbnQgPyB7IHdvcmtzcGFjZUNsaWVudDogb3B0aW9ucy53b3Jrc3BhY2VDbGllbnQgfSA6IHt9KSxcbiAgfSk7XG4gIGNvbnN0IGFnZW50ID0gbmV3IEFnZW50KHtcbiAgICBpZDogb3B0aW9ucy5pZCxcbiAgICBuYW1lOiBvcHRpb25zLmlkLFxuICAgIGluc3RydWN0aW9uczogb3B0aW9ucy5pbnN0cnVjdGlvbnMsXG4gICAgbW9kZWwsXG4gIH0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBhZ2VudC5nZW5lcmF0ZShvcHRpb25zLnByb21wdCwge1xuICAgIHN0cnVjdHVyZWRPdXRwdXQ6IHtcbiAgICAgIHNjaGVtYTogb3B0aW9ucy5zY2hlbWEsXG4gICAgICBqc29uUHJvbXB0SW5qZWN0aW9uOiBcInN5c3RlbVwiLFxuICAgIH0sXG4gICAgcHJvdmlkZXJPcHRpb25zOiBSRVNQT05TRVNfUFJPVklERVJfT1BUSU9OUyxcbiAgICAuLi4ob3B0aW9ucy5zaWduYWwgPyB7IGFib3J0U2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge30pLFxuICB9KTtcbiAgcmV0dXJuIG9wdGlvbnMuc2NoZW1hLnBhcnNlKHJlc3VsdC5vYmplY3QpO1xufVxuIl19
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Mastra workflow composing reusable generator operations.
3
+ *
4
+ * @module
5
+ */
6
+ import type { GeneratorOperations } from "./operations.ts";
7
+ /** Operation surface consumed by the workflow and implemented by GeneratorOperations. */
8
+ export type GeneratorWorkflowOperations = Pick<GeneratorOperations, "generateBrand" | "researchKpis" | "planData" | "provisionSchema" | "materializeData" | "createDashboard" | "createGenie">;
9
+ /** Construction options for workflow hosts and isolated tests. */
10
+ export interface GeneratorWorkflowOptions {
11
+ /** Suspend before mutations. Defaults to true. */
12
+ approval?: boolean;
13
+ }
14
+ /** Build one typed workflow over an isolated generator operation owner. */
15
+ export declare function createGeneratorWorkflow(operations: GeneratorWorkflowOperations, options?: GeneratorWorkflowOptions): 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, {
16
+ company: string;
17
+ purpose: string;
18
+ queries: string[];
19
+ presentation: "genie" | "dashboard";
20
+ rowCount: number;
21
+ website?: string | undefined;
22
+ }, {
23
+ request: {
24
+ company: string;
25
+ purpose: string;
26
+ queries: string[];
27
+ presentation: "genie" | "dashboard";
28
+ rowCount: number;
29
+ website?: string | undefined;
30
+ };
31
+ schema: {
32
+ catalog: string;
33
+ schema: string;
34
+ fullName: string;
35
+ principal: string;
36
+ };
37
+ tables: string[];
38
+ brand: {
39
+ brand: {
40
+ schemaVersion: "1";
41
+ name: string;
42
+ shortName: string;
43
+ tagline: string;
44
+ description: string;
45
+ assets: {
46
+ icon: {
47
+ light: string;
48
+ dark?: string | undefined;
49
+ };
50
+ logo: {
51
+ light: string;
52
+ dark?: string | undefined;
53
+ };
54
+ favicon: string;
55
+ };
56
+ colors: {
57
+ primary: string;
58
+ primaryHover: string;
59
+ accent: string;
60
+ foreground: string;
61
+ background: string;
62
+ surface: string;
63
+ muted: string;
64
+ border: string;
65
+ };
66
+ typography: {
67
+ sans: string;
68
+ mono: string;
69
+ };
70
+ voice: {
71
+ audience: string[];
72
+ tone: string[];
73
+ principles: string[];
74
+ avoid: string[];
75
+ };
76
+ links: {
77
+ website: string;
78
+ documentation: string;
79
+ repository?: string | undefined;
80
+ };
81
+ extensions: Record<string, unknown>;
82
+ };
83
+ sources: {
84
+ url: string;
85
+ fetched: boolean;
86
+ title?: string | undefined;
87
+ snippet?: string | undefined;
88
+ }[];
89
+ visualReferences: {
90
+ platform: "android" | "ios";
91
+ appName: string;
92
+ pageUrl: string;
93
+ images: {
94
+ url: string;
95
+ contentType?: string | undefined;
96
+ localPath?: string | undefined;
97
+ }[];
98
+ }[];
99
+ };
100
+ kpiResearch: {
101
+ kpis: {
102
+ name: string;
103
+ label: string;
104
+ definition: string;
105
+ unit: "number" | "percent" | "duration" | "currency";
106
+ targetDirection: "higher" | "lower" | "neutral";
107
+ sourceUrls: string[];
108
+ }[];
109
+ sources: {
110
+ url: string;
111
+ fetched: boolean;
112
+ title?: string | undefined;
113
+ }[];
114
+ };
115
+ plan: {
116
+ table: string;
117
+ rowCount: number;
118
+ columns: ({
119
+ name: string;
120
+ generator: "id";
121
+ description: string;
122
+ } | {
123
+ name: string;
124
+ generator: "date";
125
+ description: string;
126
+ days: number;
127
+ } | {
128
+ name: string;
129
+ generator: "category";
130
+ description: string;
131
+ values: string[];
132
+ } | {
133
+ name: string;
134
+ generator: "number";
135
+ description: string;
136
+ minimum: number;
137
+ maximum: number;
138
+ decimals: number;
139
+ } | {
140
+ name: string;
141
+ generator: "boolean";
142
+ description: string;
143
+ trueProbability: number;
144
+ })[];
145
+ metrics: {
146
+ name: string;
147
+ label: string;
148
+ definition: string;
149
+ unit: "number" | "percent" | "duration" | "currency";
150
+ targetDirection: "higher" | "lower" | "neutral";
151
+ sourceUrls: string[];
152
+ aggregation: "count" | "sum" | "average";
153
+ column?: string | undefined;
154
+ }[];
155
+ story: string;
156
+ sampleQuestions: string[];
157
+ };
158
+ dashboard?: {
159
+ dashboardId: string;
160
+ companionGenie: "AUTO";
161
+ path?: string | undefined;
162
+ } | undefined;
163
+ genie?: {
164
+ spaceId: string;
165
+ title: string;
166
+ } | undefined;
167
+ }, {
168
+ request: {
169
+ company: string;
170
+ purpose: string;
171
+ queries: string[];
172
+ presentation: "genie" | "dashboard";
173
+ rowCount: number;
174
+ website?: string | undefined;
175
+ };
176
+ schema: {
177
+ catalog: string;
178
+ schema: string;
179
+ fullName: string;
180
+ principal: string;
181
+ };
182
+ tables: string[];
183
+ brand: {
184
+ brand: {
185
+ schemaVersion: "1";
186
+ name: string;
187
+ shortName: string;
188
+ tagline: string;
189
+ description: string;
190
+ assets: {
191
+ icon: {
192
+ light: string;
193
+ dark?: string | undefined;
194
+ };
195
+ logo: {
196
+ light: string;
197
+ dark?: string | undefined;
198
+ };
199
+ favicon: string;
200
+ };
201
+ colors: {
202
+ primary: string;
203
+ primaryHover: string;
204
+ accent: string;
205
+ foreground: string;
206
+ background: string;
207
+ surface: string;
208
+ muted: string;
209
+ border: string;
210
+ };
211
+ typography: {
212
+ sans: string;
213
+ mono: string;
214
+ };
215
+ voice: {
216
+ audience: string[];
217
+ tone: string[];
218
+ principles: string[];
219
+ avoid: string[];
220
+ };
221
+ links: {
222
+ website: string;
223
+ documentation: string;
224
+ repository?: string | undefined;
225
+ };
226
+ extensions: Record<string, unknown>;
227
+ };
228
+ sources: {
229
+ url: string;
230
+ fetched: boolean;
231
+ title?: string | undefined;
232
+ snippet?: string | undefined;
233
+ }[];
234
+ visualReferences: {
235
+ platform: "android" | "ios";
236
+ appName: string;
237
+ pageUrl: string;
238
+ images: {
239
+ url: string;
240
+ contentType?: string | undefined;
241
+ localPath?: string | undefined;
242
+ }[];
243
+ }[];
244
+ };
245
+ kpiResearch: {
246
+ kpis: {
247
+ name: string;
248
+ label: string;
249
+ definition: string;
250
+ unit: "number" | "percent" | "duration" | "currency";
251
+ targetDirection: "higher" | "lower" | "neutral";
252
+ sourceUrls: string[];
253
+ }[];
254
+ sources: {
255
+ url: string;
256
+ fetched: boolean;
257
+ title?: string | undefined;
258
+ }[];
259
+ };
260
+ plan: {
261
+ table: string;
262
+ rowCount: number;
263
+ columns: ({
264
+ name: string;
265
+ generator: "id";
266
+ description: string;
267
+ } | {
268
+ name: string;
269
+ generator: "date";
270
+ description: string;
271
+ days: number;
272
+ } | {
273
+ name: string;
274
+ generator: "category";
275
+ description: string;
276
+ values: string[];
277
+ } | {
278
+ name: string;
279
+ generator: "number";
280
+ description: string;
281
+ minimum: number;
282
+ maximum: number;
283
+ decimals: number;
284
+ } | {
285
+ name: string;
286
+ generator: "boolean";
287
+ description: string;
288
+ trueProbability: number;
289
+ })[];
290
+ metrics: {
291
+ name: string;
292
+ label: string;
293
+ definition: string;
294
+ unit: "number" | "percent" | "duration" | "currency";
295
+ targetDirection: "higher" | "lower" | "neutral";
296
+ sourceUrls: string[];
297
+ aggregation: "count" | "sum" | "average";
298
+ column?: string | undefined;
299
+ }[];
300
+ story: string;
301
+ sampleQuestions: string[];
302
+ };
303
+ dashboard?: {
304
+ dashboardId: string;
305
+ companionGenie: "AUTO";
306
+ path?: string | undefined;
307
+ } | undefined;
308
+ genie?: {
309
+ spaceId: string;
310
+ title: string;
311
+ } | undefined;
312
+ }, unknown>;
313
+ /** Generator workflow type. */
314
+ export type GeneratorWorkflow = ReturnType<typeof createGeneratorWorkflow>;