@auto-engineer/app-implementer 1.77.0 → 1.79.0
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.
- package/CHANGELOG.md +74 -0
- package/dist/src/app-generator.d.ts +2 -7
- package/dist/src/app-generator.d.ts.map +1 -1
- package/dist/src/app-generator.js +138 -18
- package/dist/src/app-generator.js.map +1 -1
- package/dist/src/app-generator.specs.d.ts +2 -0
- package/dist/src/app-generator.specs.d.ts.map +1 -0
- package/dist/src/app-generator.specs.js +123 -0
- package/dist/src/app-generator.specs.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# @auto-engineer/app-implementer
|
|
2
2
|
|
|
3
|
+
## 1.79.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`ec198e5`](https://github.com/BeOnAuto/auto-engineer/commit/ec198e559e662df16611ba433c56938304a869b6) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: extract findProjectRoot into shared module
|
|
8
|
+
|
|
9
|
+
- [`f460341`](https://github.com/BeOnAuto/auto-engineer/commit/f46034125e102b216d35a59f7260170480dc7fa4) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: extract runTypeCheck core logic
|
|
10
|
+
|
|
11
|
+
- [`ec1480d`](https://github.com/BeOnAuto/auto-engineer/commit/ec1480d6431df13948ae26dc2ad691c28ddafdf8) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **react-component-implementer**: add aesthetic quality checks to visual evaluator
|
|
12
|
+
- **app-implementer**: add comprehensive recipe-based visual design system
|
|
13
|
+
- **react-component-implementer**: replace design principles with Tailwind recipes
|
|
14
|
+
- **global**: version packages
|
|
15
|
+
- **react-component-implementer**: finalize ketchup plan for design system upgrade
|
|
16
|
+
|
|
17
|
+
- [`8eb0244`](https://github.com/BeOnAuto/auto-engineer/commit/8eb02443763228e8182cfb3c30606e94cc9f0c30) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: extract runLintCheck core logic
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- [`506b0b4`](https://github.com/BeOnAuto/auto-engineer/commit/506b0b4810247e10c0896d45a37f4f0610d53455) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **react-component-implementer**: replace Message[] with ChatTurn in RefinementHistory
|
|
22
|
+
|
|
23
|
+
- [`087f977`](https://github.com/BeOnAuto/auto-engineer/commit/087f9776128b0610b945f23d0f4c3bc1a3d816dd) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **app-implementer**: replace Message[] with ChatTurn in RefinementHistory
|
|
24
|
+
|
|
25
|
+
- [`9bc98b4`](https://github.com/BeOnAuto/auto-engineer/commit/9bc98b4f384fa3417447e65286b015e1e10e63e9) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: slim CheckLint handler to delegate to runLintCheck
|
|
26
|
+
|
|
27
|
+
- [`b3ed5c1`](https://github.com/BeOnAuto/auto-engineer/commit/b3ed5c10575d00ca106237137bafc3524e8e9d82) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: ketchup plan for slim ReadModel API
|
|
28
|
+
|
|
29
|
+
- [`9c7ad8f`](https://github.com/BeOnAuto/auto-engineer/commit/9c7ad8fb3dd5d8321a80c4035baa9fe20701b651) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **global**: ketchup plan for LLM context growth optimization
|
|
30
|
+
|
|
31
|
+
- [`cedc3c0`](https://github.com/BeOnAuto/auto-engineer/commit/cedc3c0995af6025ab3d38a5a65d5bec9b4ecc7d) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **model-factory**: add ChatMessage and ChatTurn types for refinement history
|
|
32
|
+
|
|
33
|
+
- [`9757597`](https://github.com/BeOnAuto/auto-engineer/commit/9757597a1e562dfe81efa2de128aa10e8d091c79) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: add ketchup plan for unify check commands
|
|
34
|
+
|
|
35
|
+
- [`8104cc8`](https://github.com/BeOnAuto/auto-engineer/commit/8104cc82e7193c6a1a52a60da844a3e3fdb20b3b) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: export findProjectRoot, runTypeCheck, runLintCheck from index
|
|
36
|
+
|
|
37
|
+
- [`0bdb8d9`](https://github.com/BeOnAuto/auto-engineer/commit/0bdb8d9e606ce702cb7bbe81cbdc1f55fff58881) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: finalize ketchup plan for unify check commands
|
|
38
|
+
|
|
39
|
+
- [`31f65ac`](https://github.com/BeOnAuto/auto-engineer/commit/31f65acb9dfb656edfd482afc454bb4373b1d29d) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: slim ReadModel API to find + findOne
|
|
40
|
+
|
|
41
|
+
- [`25f8375`](https://github.com/BeOnAuto/auto-engineer/commit/25f8375ac181f09ff50aca3bccc3132b97814637) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **react-component-implementer**: replace lint-tier with runLintCheck, delete type-checker
|
|
42
|
+
|
|
43
|
+
- [`ab92096`](https://github.com/BeOnAuto/auto-engineer/commit/ab920961c9fd7515be9c09b4dbb1054bf03c94b9) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **react-component-implementer**: replace type-check-tier with runTypeCheck
|
|
44
|
+
|
|
45
|
+
- [`bcd8c4a`](https://github.com/BeOnAuto/auto-engineer/commit/bcd8c4a1e5e3d867c248d6bd55f66d7ef4863f46) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: use shared findProjectRoot in check-tests
|
|
46
|
+
|
|
47
|
+
- [`41ed452`](https://github.com/BeOnAuto/auto-engineer/commit/41ed4525bc796b1bdc1825fed20dd9f336108ca8) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-checks**: slim CheckTypes handler to delegate to runTypeCheck
|
|
48
|
+
|
|
49
|
+
- Updated dependencies [[`506b0b4`](https://github.com/BeOnAuto/auto-engineer/commit/506b0b4810247e10c0896d45a37f4f0610d53455), [`087f977`](https://github.com/BeOnAuto/auto-engineer/commit/087f9776128b0610b945f23d0f4c3bc1a3d816dd), [`9bc98b4`](https://github.com/BeOnAuto/auto-engineer/commit/9bc98b4f384fa3417447e65286b015e1e10e63e9), [`b3ed5c1`](https://github.com/BeOnAuto/auto-engineer/commit/b3ed5c10575d00ca106237137bafc3524e8e9d82), [`ec198e5`](https://github.com/BeOnAuto/auto-engineer/commit/ec198e559e662df16611ba433c56938304a869b6), [`9c7ad8f`](https://github.com/BeOnAuto/auto-engineer/commit/9c7ad8fb3dd5d8321a80c4035baa9fe20701b651), [`cedc3c0`](https://github.com/BeOnAuto/auto-engineer/commit/cedc3c0995af6025ab3d38a5a65d5bec9b4ecc7d), [`f460341`](https://github.com/BeOnAuto/auto-engineer/commit/f46034125e102b216d35a59f7260170480dc7fa4), [`9757597`](https://github.com/BeOnAuto/auto-engineer/commit/9757597a1e562dfe81efa2de128aa10e8d091c79), [`8104cc8`](https://github.com/BeOnAuto/auto-engineer/commit/8104cc82e7193c6a1a52a60da844a3e3fdb20b3b), [`ec1480d`](https://github.com/BeOnAuto/auto-engineer/commit/ec1480d6431df13948ae26dc2ad691c28ddafdf8), [`0bdb8d9`](https://github.com/BeOnAuto/auto-engineer/commit/0bdb8d9e606ce702cb7bbe81cbdc1f55fff58881), [`31f65ac`](https://github.com/BeOnAuto/auto-engineer/commit/31f65acb9dfb656edfd482afc454bb4373b1d29d), [`25f8375`](https://github.com/BeOnAuto/auto-engineer/commit/25f8375ac181f09ff50aca3bccc3132b97814637), [`ab92096`](https://github.com/BeOnAuto/auto-engineer/commit/ab920961c9fd7515be9c09b4dbb1054bf03c94b9), [`bcd8c4a`](https://github.com/BeOnAuto/auto-engineer/commit/bcd8c4a1e5e3d867c248d6bd55f66d7ef4863f46), [`41ed452`](https://github.com/BeOnAuto/auto-engineer/commit/41ed4525bc796b1bdc1825fed20dd9f336108ca8), [`8eb0244`](https://github.com/BeOnAuto/auto-engineer/commit/8eb02443763228e8182cfb3c30606e94cc9f0c30)]:
|
|
50
|
+
- @auto-engineer/message-bus@1.79.0
|
|
51
|
+
- @auto-engineer/model-factory@1.79.0
|
|
52
|
+
|
|
53
|
+
## 1.78.0
|
|
54
|
+
|
|
55
|
+
### Minor Changes
|
|
56
|
+
|
|
57
|
+
- [`4b29a2e`](https://github.com/BeOnAuto/auto-engineer/commit/4b29a2e95bec496ea403593a200664b10645c0cb) Thanks [@osamanar](https://github.com/osamanar)! - - **react-component-implementer**: add aesthetic quality checks to visual evaluator
|
|
58
|
+
|
|
59
|
+
- [`56de1d6`](https://github.com/BeOnAuto/auto-engineer/commit/56de1d6bd0b63c988847cbaa1027f0e934f2f5d7) Thanks [@osamanar](https://github.com/osamanar)! - - **app-implementer**: add comprehensive recipe-based visual design system
|
|
60
|
+
|
|
61
|
+
- [`73ffce3`](https://github.com/BeOnAuto/auto-engineer/commit/73ffce321cbc5e0a6c91506ccfe6c7ee7635a1ee) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **packages/react-component-implementer**: fixes component generation
|
|
62
|
+
- **react-component-implementer**: add comprehensive visual design system to prompt
|
|
63
|
+
- **global**: version packages
|
|
64
|
+
|
|
65
|
+
- [`e9a92e0`](https://github.com/BeOnAuto/auto-engineer/commit/e9a92e0244299674e0071bc8afa5b0f38eb10e85) Thanks [@osamanar](https://github.com/osamanar)! - - **react-component-implementer**: replace design principles with Tailwind recipes
|
|
66
|
+
|
|
67
|
+
### Patch Changes
|
|
68
|
+
|
|
69
|
+
- [`3045eb6`](https://github.com/BeOnAuto/auto-engineer/commit/3045eb6a8e26213660562eaa480b5b50478bde0c) Thanks [@osamanar](https://github.com/osamanar)! - - **react-component-implementer**: finalize ketchup plan for design system upgrade
|
|
70
|
+
|
|
71
|
+
- [`953ade0`](https://github.com/BeOnAuto/auto-engineer/commit/953ade01f373b9259f853310a3dd43a0f06d56bf) Thanks [@osamanar](https://github.com/osamanar)! - - **react-component-implementer**: add ketchup plan for visual design system upgrade
|
|
72
|
+
|
|
73
|
+
- Updated dependencies [[`4b29a2e`](https://github.com/BeOnAuto/auto-engineer/commit/4b29a2e95bec496ea403593a200664b10645c0cb), [`56de1d6`](https://github.com/BeOnAuto/auto-engineer/commit/56de1d6bd0b63c988847cbaa1027f0e934f2f5d7), [`3045eb6`](https://github.com/BeOnAuto/auto-engineer/commit/3045eb6a8e26213660562eaa480b5b50478bde0c), [`953ade0`](https://github.com/BeOnAuto/auto-engineer/commit/953ade01f373b9259f853310a3dd43a0f06d56bf), [`73ffce3`](https://github.com/BeOnAuto/auto-engineer/commit/73ffce321cbc5e0a6c91506ccfe6c7ee7635a1ee), [`e9a92e0`](https://github.com/BeOnAuto/auto-engineer/commit/e9a92e0244299674e0071bc8afa5b0f38eb10e85)]:
|
|
74
|
+
- @auto-engineer/message-bus@1.78.0
|
|
75
|
+
- @auto-engineer/model-factory@1.78.0
|
|
76
|
+
|
|
3
77
|
## 1.77.0
|
|
4
78
|
|
|
5
79
|
### Minor Changes
|
|
@@ -18,13 +18,8 @@ export interface AppGenerationContext {
|
|
|
18
18
|
graphqlQueries?: string;
|
|
19
19
|
graphqlMutations?: string;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
content: string;
|
|
24
|
-
}
|
|
25
|
-
export interface RefinementHistory {
|
|
26
|
-
messages: Message[];
|
|
27
|
-
}
|
|
21
|
+
import type { ChatTurn } from '@auto-engineer/model-factory';
|
|
22
|
+
export type RefinementHistory = ChatTurn;
|
|
28
23
|
export interface TokenUsage {
|
|
29
24
|
inputTokens: number;
|
|
30
25
|
outputTokens: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-generator.d.ts","sourceRoot":"","sources":["../../src/app-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,
|
|
1
|
+
{"version":3,"file":"app-generator.d.ts","sourceRoot":"","sources":["../../src/app-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAsBlE;AA8DD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiN1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAqBxE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAYjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAYhG;AA6BD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CAmC/E;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CA6C/E"}
|
|
@@ -108,12 +108,6 @@ export function buildAppSystemPrompt(context) {
|
|
|
108
108
|
]
|
|
109
109
|
: []),
|
|
110
110
|
'',
|
|
111
|
-
'Layout Architecture Patterns:',
|
|
112
|
-
'- Full-height layout: <div className="h-screen flex flex-col"><header className="flex-shrink-0">...</header><main className="flex-1 overflow-auto">...</main></div>',
|
|
113
|
-
'- Sidebar + main: <div className="h-full flex"><aside className="w-64 flex-shrink-0 border-r">...</aside><main className="flex-1 overflow-auto">...</main></div>',
|
|
114
|
-
'- Centered content: max-w-7xl mx-auto px-4 sm:px-6 lg:px-8',
|
|
115
|
-
'- Grid layouts: grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6',
|
|
116
|
-
'',
|
|
117
111
|
'shadcn/ui Usage Patterns:',
|
|
118
112
|
'- Tooltip: ALWAYS wrap in <TooltipProvider>. Example: <TooltipProvider><Tooltip><TooltipTrigger>...</TooltipTrigger><TooltipContent>...</TooltipContent></Tooltip></TooltipProvider>',
|
|
119
113
|
"- Dialog/Sheet/Popover: Use Radix portals. Don't nest them inside each other.",
|
|
@@ -126,11 +120,137 @@ export function buildAppSystemPrompt(context) {
|
|
|
126
120
|
'- Import validation: Verify named vs default exports. import { Link } from "react-router-dom" (named), not import Link from "react-router-dom"',
|
|
127
121
|
'- Only import packages available in the starter project: react, react-dom, react-router-dom, @tanstack/react-query, graphql-request',
|
|
128
122
|
'',
|
|
129
|
-
'Visual
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'-
|
|
133
|
-
'
|
|
123
|
+
'# Visual Design System — Tailwind Recipes',
|
|
124
|
+
'',
|
|
125
|
+
'## 1. Text Hierarchy Recipe',
|
|
126
|
+
'PRIMARY: text-xl font-bold text-foreground',
|
|
127
|
+
'SECONDARY: text-sm text-muted-foreground',
|
|
128
|
+
'TERTIARY: text-xs text-muted-foreground/60',
|
|
129
|
+
'Bold at smaller size > Normal at larger size. text-lg font-bold beats text-2xl font-normal.',
|
|
130
|
+
'Stick to 2 weights (font-normal + font-semibold/bold) and 2-3 colors (text-foreground, text-muted-foreground, text-muted-foreground/60).',
|
|
131
|
+
'De-emphasize competitors instead of inflating the element.',
|
|
132
|
+
'',
|
|
133
|
+
'## 2. Label Patterns Recipe',
|
|
134
|
+
'Combine label into value: "12 left in stock" not "In stock: 12".',
|
|
135
|
+
'When labels ARE needed: label = text-xs font-medium uppercase tracking-wider text-muted-foreground, value = text-lg font-semibold.',
|
|
136
|
+
'',
|
|
137
|
+
'## 3. Stat/Metric Widget Recipe',
|
|
138
|
+
'Label: text-xs font-medium uppercase tracking-wider text-muted-foreground',
|
|
139
|
+
'Value: text-3xl font-bold text-foreground',
|
|
140
|
+
'Unit: text-lg text-muted-foreground (inline)',
|
|
141
|
+
'',
|
|
142
|
+
'## 4. Navigation Recipe',
|
|
143
|
+
'Active: font-semibold text-primary border-b-2 border-primary',
|
|
144
|
+
'Inactive: font-medium text-muted-foreground hover:text-foreground',
|
|
145
|
+
'Icons: text-muted-foreground/60 w-5 h-5',
|
|
146
|
+
'',
|
|
147
|
+
'## 5. Text on Colored Backgrounds',
|
|
148
|
+
'Primary text: text-primary-foreground. De-emphasis: same hue lighter shade.',
|
|
149
|
+
'NEVER: text-white/60 or text-gray-400 on colored bg.',
|
|
150
|
+
'',
|
|
151
|
+
'## 6. Button Hierarchy',
|
|
152
|
+
'Primary: <Button> (solid). ONE per section.',
|
|
153
|
+
'Secondary: <Button variant="outline"> or variant="secondary"',
|
|
154
|
+
'Tertiary: <Button variant="ghost"> or variant="link"',
|
|
155
|
+
'Destructive: ghost/outline unless it IS the primary action in a confirmation dialog.',
|
|
156
|
+
'',
|
|
157
|
+
'## 7. Spacing Grouping Recipe',
|
|
158
|
+
'Within a group: gap-2. Between groups: gap-6.',
|
|
159
|
+
'RULE: Inter-group gap >= 2x intra-group gap.',
|
|
160
|
+
'Heading spacing ASYMMETRIC: mt-8/mt-12 above, mb-3/mb-4 below.',
|
|
161
|
+
'Form label to input: mt-1.5. Between form groups: space-y-5.',
|
|
162
|
+
'',
|
|
163
|
+
'## 8. Layout Constraints',
|
|
164
|
+
'Content pages: max-w-2xl mx-auto or max-w-3xl mx-auto',
|
|
165
|
+
'Sidebars: w-64 flex-shrink-0 (NEVER percentage-based)',
|
|
166
|
+
'Self-contained (modals, forms): max-w-sm or max-w-md',
|
|
167
|
+
'Full-height: <div className="h-screen flex flex-col"><header className="shrink-0">...</header><main className="flex-1 overflow-auto">...</main></div>',
|
|
168
|
+
'Sidebar + main: <div className="h-full flex"><aside className="w-64 shrink-0 border-r">...</aside><main className="flex-1 overflow-auto">...</main></div>',
|
|
169
|
+
'Grid: grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6',
|
|
170
|
+
'Centered content: max-w-7xl mx-auto px-4 sm:px-6 lg:px-8',
|
|
171
|
+
'Paragraph text: max-w-prose or max-w-2xl. NEVER full width.',
|
|
172
|
+
'',
|
|
173
|
+
'## 9. Shadow Elevation',
|
|
174
|
+
'shadow-sm: Buttons/inputs. shadow-md: Cards. shadow-lg: Popovers. shadow-xl: Modals.',
|
|
175
|
+
'Realistic: shadow-[0_4px_6px_rgba(0,0,0,0.07),0_5px_15px_rgba(0,0,0,0.1)]',
|
|
176
|
+
'Before adding a border, try shadow-sm or bg-muted instead.',
|
|
177
|
+
'',
|
|
178
|
+
'## 10. Overlapping Elements',
|
|
179
|
+
'Cards breaking out of sections: -mt-16 relative z-10',
|
|
180
|
+
'Avatars overlapping banners: -mt-10 ring-4 ring-background',
|
|
181
|
+
'',
|
|
182
|
+
'## 11. Background Alternation — MANDATORY for multi-section pages',
|
|
183
|
+
'Landing pages MUST alternate section backgrounds:',
|
|
184
|
+
' Hero: bg-primary text-primary-foreground py-20',
|
|
185
|
+
' Features: bg-background py-16',
|
|
186
|
+
' Social proof: bg-muted py-16',
|
|
187
|
+
' CTA: bg-primary text-primary-foreground py-16',
|
|
188
|
+
'',
|
|
189
|
+
'## 12. Accent Borders — MANDATORY',
|
|
190
|
+
'Every page section MUST include at least ONE accent:',
|
|
191
|
+
' Card top: border-t-4 border-primary',
|
|
192
|
+
' Alert left: border-l-4 border-blue-500',
|
|
193
|
+
' Tab active: border-b-2 border-primary',
|
|
194
|
+
' Heading underline: <div className="w-12 h-1 bg-primary rounded-full mt-3" />',
|
|
195
|
+
'',
|
|
196
|
+
'## 13. Icon Bullets — Replace Plain Lists',
|
|
197
|
+
'NEVER bare <ul className="list-disc">. Use icon + text with flex items-start gap-3.',
|
|
198
|
+
'',
|
|
199
|
+
'## 14. Saturated Greys',
|
|
200
|
+
'Use tinted greys: bg-slate-50 (cool), bg-stone-50 (warm), bg-zinc-50 (neutral). Use semantic tokens.',
|
|
201
|
+
'',
|
|
202
|
+
'## 15. Gradient Hue Rotation',
|
|
203
|
+
'Gradients rotate hue: from-cyan-400 to-blue-600. Lighter end → nearest bright hue.',
|
|
204
|
+
'',
|
|
205
|
+
'## 16. Responsive Typography',
|
|
206
|
+
'Headlines: text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight',
|
|
207
|
+
'Body: text-base (stable). Line-height: leading-relaxed for body, leading-tight for headings.',
|
|
208
|
+
'',
|
|
209
|
+
'## 17. Table Recipes',
|
|
210
|
+
'Stacked primary/secondary text in cells. Avatars for identity rows. Colored pill badges for status.',
|
|
211
|
+
'',
|
|
212
|
+
'## 18. Rich Dropdowns',
|
|
213
|
+
'Multi-column panels: icon + bold title + gray description per item. Footer with bg-muted.',
|
|
214
|
+
'',
|
|
215
|
+
'## 19. Selectable Cards for Options',
|
|
216
|
+
'Replace native radios with border-2 rounded-xl p-5 cards. Selected: border-primary + checkmark.',
|
|
217
|
+
'',
|
|
218
|
+
'## 20. Empty States',
|
|
219
|
+
'HIDE filters/tabs when no data. Show: muted icon → heading → description → CTA. Center with py-16.',
|
|
220
|
+
'',
|
|
221
|
+
'## 21. Personality Archetypes — Pick ONE',
|
|
222
|
+
'FORMAL/SECURE: rounded, dark hero, blue accent',
|
|
223
|
+
'CASUAL/FRIENDLY: rounded-xl, light bg, warm accent',
|
|
224
|
+
'PLAYFUL: rounded-full buttons, vibrant colors, rounded-2xl cards',
|
|
225
|
+
'LUXURY/MINIMAL: rounded-none, monochrome, extreme whitespace',
|
|
226
|
+
'CORPORATE/BOLD: dark photo hero with overlay, amber/gold CTA',
|
|
227
|
+
'MODERN SAAS: rounded-full buttons, purple/violet accent, pill CTAs',
|
|
228
|
+
'NEVER mix border-radius strategies.',
|
|
229
|
+
'',
|
|
230
|
+
'## 22. Two-Tone Headlines',
|
|
231
|
+
'Hero headlines: split into <span className="text-foreground">...</span> + <span className="text-primary">...</span>',
|
|
232
|
+
'',
|
|
233
|
+
'## 23. Avatar Edge Definition',
|
|
234
|
+
'ring-1 ring-black/10 on all avatars. Overlapping: ring-2 ring-background.',
|
|
235
|
+
'',
|
|
236
|
+
'## 24. Image Handling',
|
|
237
|
+
'object-cover in fixed containers. Icons at wrong size: wrap in bg-primary/10 rounded-full.',
|
|
238
|
+
'Hero images: always add bg-black/50 or bg-gradient-to-t from-black/60 overlay.',
|
|
239
|
+
'',
|
|
240
|
+
'## 25. Accessible Color',
|
|
241
|
+
'Body: ≥4.5:1 contrast. Headings: ≥3:1.',
|
|
242
|
+
'Status badges: bg-emerald-50 text-emerald-700 (GOOD), bg-emerald-400 text-white (BAD — fails contrast).',
|
|
243
|
+
'ALWAYS pair color with icon for color-blind safety.',
|
|
244
|
+
'',
|
|
245
|
+
'## Interactive States',
|
|
246
|
+
'Hover: hover:bg-accent or hover:shadow-md. Focus: focus-visible:ring-2.',
|
|
247
|
+
'Active: active:scale-[0.98]. Disabled: opacity-50 cursor-not-allowed.',
|
|
248
|
+
'Transitions: transition-all duration-200 ease-out.',
|
|
249
|
+
'',
|
|
250
|
+
'## State Experiences',
|
|
251
|
+
'Loading: Skeleton placeholders (animate-pulse bg-muted), match final layout.',
|
|
252
|
+
'Empty: Center vertically, large muted icon, heading, CTA. HIDE filters.',
|
|
253
|
+
'Error: Friendly tone, near source, Try Again action.',
|
|
134
254
|
'',
|
|
135
255
|
'Implementation Mindset:',
|
|
136
256
|
'- Generate complete, production-ready code in a single pass',
|
|
@@ -236,10 +356,8 @@ export async function generateApp(context, model) {
|
|
|
236
356
|
const files = parseGeneratedFiles(text);
|
|
237
357
|
debug(' Parsed', files.length, 'files:', files.map((f) => f.path).join(', '));
|
|
238
358
|
const history = {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
{ role: 'assistant', content: text },
|
|
242
|
-
],
|
|
359
|
+
prompt: { role: 'user', content: prompt },
|
|
360
|
+
response: { role: 'assistant', content: text },
|
|
243
361
|
};
|
|
244
362
|
const tokenUsage = {
|
|
245
363
|
inputTokens: usage?.inputTokens ?? 0,
|
|
@@ -256,7 +374,7 @@ export async function refineApp(app, errors, context, history, model) {
|
|
|
256
374
|
debug(' Errored files:', erroredFiles.map((f) => f.path).join(', '));
|
|
257
375
|
const refinementPrompt = buildRefinementPrompt(erroredFiles, allFileNames, errors);
|
|
258
376
|
debug(' Refinement prompt length:', refinementPrompt.length, 'chars');
|
|
259
|
-
debug(' Conversation history:', history.
|
|
377
|
+
debug(' Conversation history: prompt %d chars, response %d chars', history.prompt.content.length, history.response.content.length);
|
|
260
378
|
debug(' Calling LLM for refinement with model: %s', typeof model === 'string' ? model : model.modelId);
|
|
261
379
|
const llmStart = Date.now();
|
|
262
380
|
const { text, usage } = await generateText({
|
|
@@ -266,7 +384,8 @@ export async function refineApp(app, errors, context, history, model) {
|
|
|
266
384
|
role: 'system',
|
|
267
385
|
content: system,
|
|
268
386
|
},
|
|
269
|
-
|
|
387
|
+
history.prompt,
|
|
388
|
+
history.response,
|
|
270
389
|
{ role: 'user', content: refinementPrompt },
|
|
271
390
|
],
|
|
272
391
|
});
|
|
@@ -275,7 +394,8 @@ export async function refineApp(app, errors, context, history, model) {
|
|
|
275
394
|
const files = parseGeneratedFiles(text);
|
|
276
395
|
debug(' Parsed', files.length, 'files:', files.map((f) => f.path).join(', '));
|
|
277
396
|
const newHistory = {
|
|
278
|
-
|
|
397
|
+
prompt: history.prompt,
|
|
398
|
+
response: { role: 'assistant', content: text },
|
|
279
399
|
};
|
|
280
400
|
const tokenUsage = {
|
|
281
401
|
inputTokens: usage?.inputTokens ?? 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-generator.js","sourceRoot":"","sources":["../../src/app-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-generator.js","sourceRoot":"","sources":["../../src/app-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-generator.specs.d.ts","sourceRoot":"","sources":["../../src/app-generator.specs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { generateText } from 'ai';
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { buildImportMap, extractErroredFiles, generateApp, parseGeneratedFiles, refineApp } from './app-generator.js';
|
|
4
|
+
vi.mock('ai', () => ({
|
|
5
|
+
generateText: vi.fn(),
|
|
6
|
+
}));
|
|
7
|
+
const generateTextMock = vi.mocked(generateText);
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
vi.clearAllMocks();
|
|
10
|
+
});
|
|
11
|
+
function stubModel() {
|
|
12
|
+
return { modelId: 'test-model' };
|
|
13
|
+
}
|
|
14
|
+
function stubContext() {
|
|
15
|
+
return {
|
|
16
|
+
journey: {
|
|
17
|
+
entryPageId: 'home',
|
|
18
|
+
pages: [{ pageId: 'home', name: 'Home', routePath: '/', description: 'Home page' }],
|
|
19
|
+
navigationEdges: [],
|
|
20
|
+
dataDependencies: [],
|
|
21
|
+
},
|
|
22
|
+
catalog: {
|
|
23
|
+
instructions: 'instructions',
|
|
24
|
+
overview: 'overview',
|
|
25
|
+
componentDocs: [],
|
|
26
|
+
},
|
|
27
|
+
fileTree: 'tree',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const sampleLlmResponse = ['<!-- file: App.tsx -->', '```tsx', 'export function App() { return <div/>; }', '```'].join('\n');
|
|
31
|
+
describe('parseGeneratedFiles', () => {
|
|
32
|
+
it('extracts files from LLM response', () => {
|
|
33
|
+
expect(parseGeneratedFiles(sampleLlmResponse)).toEqual([
|
|
34
|
+
{ path: 'App.tsx', content: 'export function App() { return <div/>; }' },
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
it('throws when no files found', () => {
|
|
38
|
+
expect(() => parseGeneratedFiles('no code blocks here')).toThrow('No generated files found');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('extractErroredFiles', () => {
|
|
42
|
+
it('returns only files with matching error paths', () => {
|
|
43
|
+
const files = [
|
|
44
|
+
{ path: 'App.tsx', content: 'app' },
|
|
45
|
+
{ path: 'pages/Home.tsx', content: 'home' },
|
|
46
|
+
];
|
|
47
|
+
expect(extractErroredFiles(['pages/Home.tsx(1,5): error TS123'], files)).toEqual([
|
|
48
|
+
{ path: 'pages/Home.tsx', content: 'home' },
|
|
49
|
+
]);
|
|
50
|
+
});
|
|
51
|
+
it('returns all files when no error paths match', () => {
|
|
52
|
+
const files = [{ path: 'App.tsx', content: 'app' }];
|
|
53
|
+
expect(extractErroredFiles(['some general error'], files)).toEqual(files);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('buildImportMap', () => {
|
|
57
|
+
it('groups components by path', () => {
|
|
58
|
+
const result = buildImportMap([
|
|
59
|
+
{ name: 'Button', componentPath: './src/components/ui/Button.tsx' },
|
|
60
|
+
{ name: 'Input', componentPath: './src/components/ui/Input.tsx' },
|
|
61
|
+
]);
|
|
62
|
+
expect(result).toBe([
|
|
63
|
+
'# Component Import Map',
|
|
64
|
+
'',
|
|
65
|
+
'import { Button } from "@/components/ui/Button";',
|
|
66
|
+
'import { Input } from "@/components/ui/Input";',
|
|
67
|
+
].join('\n'));
|
|
68
|
+
});
|
|
69
|
+
it('returns empty string for entries without paths', () => {
|
|
70
|
+
expect(buildImportMap([{ name: 'Foo' }])).toBe('');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('generateApp', () => {
|
|
74
|
+
it('returns history as ChatTurn with prompt and response', async () => {
|
|
75
|
+
generateTextMock.mockResolvedValueOnce({
|
|
76
|
+
text: sampleLlmResponse,
|
|
77
|
+
usage: { inputTokens: 100, outputTokens: 200 },
|
|
78
|
+
});
|
|
79
|
+
const { history } = await generateApp(stubContext(), stubModel());
|
|
80
|
+
expect(history).toEqual({
|
|
81
|
+
prompt: { role: 'user', content: expect.any(String) },
|
|
82
|
+
response: { role: 'assistant', content: sampleLlmResponse },
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('refineApp', () => {
|
|
87
|
+
it('passes correct message sequence to generateText', async () => {
|
|
88
|
+
const history = {
|
|
89
|
+
prompt: { role: 'user', content: 'original prompt' },
|
|
90
|
+
response: { role: 'assistant', content: sampleLlmResponse },
|
|
91
|
+
};
|
|
92
|
+
const app = { files: [{ path: 'App.tsx', content: 'app' }] };
|
|
93
|
+
generateTextMock.mockResolvedValueOnce({
|
|
94
|
+
text: sampleLlmResponse,
|
|
95
|
+
usage: { inputTokens: 100, outputTokens: 200 },
|
|
96
|
+
});
|
|
97
|
+
await refineApp(app, ['App.tsx(1,1): error TS123'], stubContext(), history, stubModel());
|
|
98
|
+
const call = generateTextMock.mock.calls[0][0];
|
|
99
|
+
expect(call.messages).toEqual([
|
|
100
|
+
{ role: 'system', content: expect.any(String) },
|
|
101
|
+
{ role: 'user', content: 'original prompt' },
|
|
102
|
+
{ role: 'assistant', content: sampleLlmResponse },
|
|
103
|
+
{ role: 'user', content: expect.any(String) },
|
|
104
|
+
]);
|
|
105
|
+
});
|
|
106
|
+
it('preserves original prompt and replaces only response', async () => {
|
|
107
|
+
const history = {
|
|
108
|
+
prompt: { role: 'user', content: 'original prompt' },
|
|
109
|
+
response: { role: 'assistant', content: 'old response' },
|
|
110
|
+
};
|
|
111
|
+
const app = { files: [{ path: 'App.tsx', content: 'app' }] };
|
|
112
|
+
generateTextMock.mockResolvedValueOnce({
|
|
113
|
+
text: sampleLlmResponse,
|
|
114
|
+
usage: { inputTokens: 100, outputTokens: 200 },
|
|
115
|
+
});
|
|
116
|
+
const { history: newHistory } = await refineApp(app, ['App.tsx(1,1): error TS123'], stubContext(), history, stubModel());
|
|
117
|
+
expect(newHistory).toEqual({
|
|
118
|
+
prompt: { role: 'user', content: 'original prompt' },
|
|
119
|
+
response: { role: 'assistant', content: sampleLlmResponse },
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=app-generator.specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-generator.specs.js","sourceRoot":"","sources":["../../src/app-generator.specs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEtH,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;CACtB,CAAC,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEjD,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS;IAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAmB,CAAC;AACpD,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;YACnF,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,EAAE;SACrB;QACD,OAAO,EAAE;YACP,YAAY,EAAE,cAAc;YAC5B,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,EAAE;SAClB;QACD,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,wBAAwB,EAAE,QAAQ,EAAE,0CAA0C,EAAE,KAAK,CAAC,CAAC,IAAI,CACpH,IAAI,CACL,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,0CAA0C,EAAE;SACzE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACnC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5C,CAAC;QAEF,MAAM,CAAC,mBAAmB,CAAC,CAAC,kCAAkC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/E,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC;YAC5B,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,gCAAgC,EAAE;YACnE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE;SAClE,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB;YACE,wBAAwB;YACxB,EAAE;YACF,kDAAkD;YAClD,gDAAgD;SACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,gBAAgB,CAAC,qBAAqB,CAAC;YACrC,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;SACyB,CAAC,CAAC;QAE3E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAElE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAsB;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;YACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;SAC5D,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAE7D,gBAAgB,CAAC,qBAAqB,CAAC;YACrC,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;SACyB,CAAC,CAAC;QAE3E,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAEzF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YAC5B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,OAAO,GAAsB;YACjC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;YACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE;SACzD,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAE7D,gBAAgB,CAAC,qBAAqB,CAAC;YACrC,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;SACyB,CAAC,CAAC;QAE3E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAC7C,GAAG,EACH,CAAC,2BAA2B,CAAC,EAC7B,WAAW,EAAE,EACb,OAAO,EACP,SAAS,EAAE,CACZ,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;YACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|