@auto-engineer/component-implementor-react 1.98.0 → 1.100.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.
Files changed (233) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +6 -6
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +92 -0
  5. package/dist/src/commands/implement-component.d.ts +19 -0
  6. package/dist/src/commands/implement-component.d.ts.map +1 -1
  7. package/dist/src/commands/implement-component.js +109 -30
  8. package/dist/src/commands/implement-component.js.map +1 -1
  9. package/dist/src/commands/implement-component.test.js +259 -69
  10. package/dist/src/commands/implement-component.test.js.map +1 -1
  11. package/dist/src/extract-exports.d.ts +6 -0
  12. package/dist/src/extract-exports.d.ts.map +1 -0
  13. package/dist/src/extract-exports.js +46 -0
  14. package/dist/src/extract-exports.js.map +1 -0
  15. package/dist/src/generate-story-deterministic.d.ts +30 -0
  16. package/dist/src/generate-story-deterministic.d.ts.map +1 -0
  17. package/dist/src/generate-story-deterministic.js +229 -0
  18. package/dist/src/generate-story-deterministic.js.map +1 -0
  19. package/dist/src/index.d.ts +4 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +3 -0
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/pipeline/run-pipeline.d.ts +69 -0
  24. package/dist/src/pipeline/run-pipeline.d.ts.map +1 -0
  25. package/dist/src/pipeline/run-pipeline.js +78 -0
  26. package/dist/src/pipeline/run-pipeline.js.map +1 -0
  27. package/dist/src/pipeline/run-pipeline.test.d.ts +2 -0
  28. package/dist/src/pipeline/run-pipeline.test.d.ts.map +1 -0
  29. package/dist/src/pipeline/run-pipeline.test.js +247 -0
  30. package/dist/src/pipeline/run-pipeline.test.js.map +1 -0
  31. package/dist/src/pipeline/steps/generate-component.d.ts +4 -0
  32. package/dist/src/pipeline/steps/generate-component.d.ts.map +1 -0
  33. package/dist/src/pipeline/steps/generate-component.js +50 -0
  34. package/dist/src/pipeline/steps/generate-component.js.map +1 -0
  35. package/dist/src/pipeline/steps/generate-component.test.d.ts.map +1 -0
  36. package/dist/src/pipeline/steps/generate-component.test.js +106 -0
  37. package/dist/src/pipeline/steps/generate-component.test.js.map +1 -0
  38. package/dist/src/pipeline/steps/generate-story.d.ts +3 -0
  39. package/dist/src/pipeline/steps/generate-story.d.ts.map +1 -0
  40. package/dist/src/pipeline/steps/generate-story.js +14 -0
  41. package/dist/src/pipeline/steps/generate-story.js.map +1 -0
  42. package/dist/src/pipeline/steps/generate-story.test.d.ts.map +1 -0
  43. package/dist/src/pipeline/steps/generate-story.test.js +41 -0
  44. package/dist/src/pipeline/steps/generate-story.test.js.map +1 -0
  45. package/dist/src/pipeline/steps/generate-test.d.ts +4 -0
  46. package/dist/src/pipeline/steps/generate-test.d.ts.map +1 -0
  47. package/dist/src/pipeline/steps/generate-test.js +19 -0
  48. package/dist/src/pipeline/steps/generate-test.js.map +1 -0
  49. package/dist/src/pipeline/steps/generate-test.test.d.ts.map +1 -0
  50. package/dist/src/pipeline/steps/generate-test.test.js +60 -0
  51. package/dist/src/pipeline/steps/generate-test.test.js.map +1 -0
  52. package/dist/src/pipeline/steps/lint-fix-loop.d.ts +4 -0
  53. package/dist/src/pipeline/steps/lint-fix-loop.d.ts.map +1 -0
  54. package/dist/src/pipeline/steps/lint-fix-loop.js +45 -0
  55. package/dist/src/pipeline/steps/lint-fix-loop.js.map +1 -0
  56. package/dist/src/pipeline/steps/lint-fix-loop.test.d.ts +2 -0
  57. package/dist/src/pipeline/steps/lint-fix-loop.test.d.ts.map +1 -0
  58. package/dist/src/pipeline/steps/lint-fix-loop.test.js +119 -0
  59. package/dist/src/pipeline/steps/lint-fix-loop.test.js.map +1 -0
  60. package/dist/src/pipeline/steps/story-fix-loop.d.ts +4 -0
  61. package/dist/src/pipeline/steps/story-fix-loop.d.ts.map +1 -0
  62. package/dist/src/pipeline/steps/story-fix-loop.js +34 -0
  63. package/dist/src/pipeline/steps/story-fix-loop.js.map +1 -0
  64. package/dist/src/pipeline/steps/story-fix-loop.test.d.ts +2 -0
  65. package/dist/src/pipeline/steps/story-fix-loop.test.d.ts.map +1 -0
  66. package/dist/src/pipeline/steps/story-fix-loop.test.js +94 -0
  67. package/dist/src/pipeline/steps/story-fix-loop.test.js.map +1 -0
  68. package/dist/src/pipeline/steps/storybook-test.d.ts +3 -0
  69. package/dist/src/pipeline/steps/storybook-test.d.ts.map +1 -0
  70. package/dist/src/pipeline/steps/storybook-test.js +22 -0
  71. package/dist/src/pipeline/steps/storybook-test.js.map +1 -0
  72. package/dist/src/pipeline/steps/storybook-test.test.d.ts +2 -0
  73. package/dist/src/pipeline/steps/storybook-test.test.d.ts.map +1 -0
  74. package/dist/src/pipeline/steps/storybook-test.test.js +66 -0
  75. package/dist/src/pipeline/steps/storybook-test.test.js.map +1 -0
  76. package/dist/src/pipeline/steps/test-fix-loop.d.ts +4 -0
  77. package/dist/src/pipeline/steps/test-fix-loop.d.ts.map +1 -0
  78. package/dist/src/pipeline/steps/test-fix-loop.js +44 -0
  79. package/dist/src/pipeline/steps/test-fix-loop.js.map +1 -0
  80. package/dist/src/pipeline/steps/test-fix-loop.test.d.ts +2 -0
  81. package/dist/src/pipeline/steps/test-fix-loop.test.d.ts.map +1 -0
  82. package/dist/src/pipeline/steps/test-fix-loop.test.js +168 -0
  83. package/dist/src/pipeline/steps/test-fix-loop.test.js.map +1 -0
  84. package/dist/src/pipeline/steps/type-fix-loop.d.ts +4 -0
  85. package/dist/src/pipeline/steps/type-fix-loop.d.ts.map +1 -0
  86. package/dist/src/pipeline/steps/type-fix-loop.js +43 -0
  87. package/dist/src/pipeline/steps/type-fix-loop.js.map +1 -0
  88. package/dist/src/pipeline/steps/type-fix-loop.test.d.ts +2 -0
  89. package/dist/src/pipeline/steps/type-fix-loop.test.d.ts.map +1 -0
  90. package/dist/src/pipeline/steps/type-fix-loop.test.js +112 -0
  91. package/dist/src/pipeline/steps/type-fix-loop.test.js.map +1 -0
  92. package/dist/src/pipeline/steps/visual-test.d.ts +3 -0
  93. package/dist/src/pipeline/steps/visual-test.d.ts.map +1 -0
  94. package/dist/src/pipeline/steps/visual-test.js +4 -0
  95. package/dist/src/pipeline/steps/visual-test.js.map +1 -0
  96. package/dist/src/pipeline/steps/visual-test.test.d.ts +2 -0
  97. package/dist/src/pipeline/steps/visual-test.test.d.ts.map +1 -0
  98. package/dist/src/pipeline/steps/visual-test.test.js +9 -0
  99. package/dist/src/pipeline/steps/visual-test.test.js.map +1 -0
  100. package/dist/src/project-context.d.ts +10 -0
  101. package/dist/src/project-context.d.ts.map +1 -0
  102. package/dist/src/project-context.js +178 -0
  103. package/dist/src/project-context.js.map +1 -0
  104. package/dist/src/prompt.d.ts +39 -7
  105. package/dist/src/prompt.d.ts.map +1 -1
  106. package/dist/src/prompt.js +233 -23
  107. package/dist/src/prompt.js.map +1 -1
  108. package/dist/src/prompt.test.js +154 -9
  109. package/dist/src/prompt.test.js.map +1 -1
  110. package/dist/src/scaffold.d.ts +49 -0
  111. package/dist/src/scaffold.d.ts.map +1 -0
  112. package/dist/src/scaffold.js +208 -0
  113. package/dist/src/scaffold.js.map +1 -0
  114. package/dist/src/tools/lint-runner.d.ts +7 -0
  115. package/dist/src/tools/lint-runner.d.ts.map +1 -0
  116. package/dist/src/tools/lint-runner.js +48 -0
  117. package/dist/src/tools/lint-runner.js.map +1 -0
  118. package/dist/src/tools/lint-runner.test.d.ts +2 -0
  119. package/dist/src/tools/lint-runner.test.d.ts.map +1 -0
  120. package/dist/src/tools/lint-runner.test.js +90 -0
  121. package/dist/src/tools/lint-runner.test.js.map +1 -0
  122. package/dist/src/tools/storybook-runner.d.ts +6 -0
  123. package/dist/src/tools/storybook-runner.d.ts.map +1 -0
  124. package/dist/src/tools/storybook-runner.js +25 -0
  125. package/dist/src/tools/storybook-runner.js.map +1 -0
  126. package/dist/src/tools/storybook-runner.test.d.ts +2 -0
  127. package/dist/src/tools/storybook-runner.test.d.ts.map +1 -0
  128. package/dist/src/tools/storybook-runner.test.js +43 -0
  129. package/dist/src/tools/storybook-runner.test.js.map +1 -0
  130. package/dist/src/tools/test-runner.d.ts +9 -0
  131. package/dist/src/tools/test-runner.d.ts.map +1 -0
  132. package/dist/src/tools/test-runner.js +74 -0
  133. package/dist/src/tools/test-runner.js.map +1 -0
  134. package/dist/src/tools/test-runner.test.d.ts +2 -0
  135. package/dist/src/tools/test-runner.test.d.ts.map +1 -0
  136. package/dist/src/tools/test-runner.test.js +177 -0
  137. package/dist/src/tools/test-runner.test.js.map +1 -0
  138. package/dist/src/tools/type-checker.d.ts +6 -0
  139. package/dist/src/tools/type-checker.d.ts.map +1 -0
  140. package/dist/src/tools/type-checker.js +36 -0
  141. package/dist/src/tools/type-checker.js.map +1 -0
  142. package/dist/src/tools/type-checker.test.d.ts +2 -0
  143. package/dist/src/tools/type-checker.test.d.ts.map +1 -0
  144. package/dist/src/tools/type-checker.test.js +96 -0
  145. package/dist/src/tools/type-checker.test.js.map +1 -0
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/inputs/model-a/spec-deltas.json +1460 -0
  148. package/inputs/model-b/spec-deltas.json +1424 -0
  149. package/inputs/model-c/spec-deltas.json +1432 -0
  150. package/inputs/model-d/spec-deltas.json +967 -0
  151. package/inputs/model-e/spec-deltas.json +2292 -0
  152. package/ketchup-plan.md +43 -8
  153. package/package.json +3 -3
  154. package/scoring-heuristic.md +138 -0
  155. package/scripts/improve.ts +23 -18
  156. package/src/commands/implement-component.test.ts +309 -76
  157. package/src/commands/implement-component.ts +155 -31
  158. package/src/extract-exports.ts +53 -0
  159. package/src/generate-story-deterministic.ts +267 -0
  160. package/src/index.ts +12 -0
  161. package/src/pipeline/run-pipeline.test.ts +292 -0
  162. package/src/pipeline/run-pipeline.ts +160 -0
  163. package/src/pipeline/steps/generate-component.test.ts +130 -0
  164. package/src/pipeline/steps/generate-component.ts +60 -0
  165. package/src/pipeline/steps/generate-story.test.ts +54 -0
  166. package/src/pipeline/steps/generate-story.ts +17 -0
  167. package/src/pipeline/steps/generate-test.test.ts +75 -0
  168. package/src/pipeline/steps/generate-test.ts +25 -0
  169. package/src/pipeline/steps/lint-fix-loop.test.ts +155 -0
  170. package/src/pipeline/steps/lint-fix-loop.ts +59 -0
  171. package/src/pipeline/steps/story-fix-loop.test.ts +123 -0
  172. package/src/pipeline/steps/story-fix-loop.ts +47 -0
  173. package/src/pipeline/steps/storybook-test.test.ts +82 -0
  174. package/src/pipeline/steps/storybook-test.ts +27 -0
  175. package/src/pipeline/steps/test-fix-loop.test.ts +201 -0
  176. package/src/pipeline/steps/test-fix-loop.ts +56 -0
  177. package/src/pipeline/steps/type-fix-loop.test.ts +145 -0
  178. package/src/pipeline/steps/type-fix-loop.ts +55 -0
  179. package/src/pipeline/steps/visual-test.test.ts +10 -0
  180. package/src/pipeline/steps/visual-test.ts +5 -0
  181. package/src/project-context.ts +205 -0
  182. package/src/prompt.test.ts +174 -8
  183. package/src/prompt.ts +301 -23
  184. package/src/scaffold.ts +281 -0
  185. package/src/tools/lint-runner.test.ts +112 -0
  186. package/src/tools/lint-runner.ts +52 -0
  187. package/src/tools/storybook-runner.test.ts +53 -0
  188. package/src/tools/storybook-runner.ts +29 -0
  189. package/src/tools/test-runner.test.ts +213 -0
  190. package/src/tools/test-runner.ts +84 -0
  191. package/src/tools/type-checker.test.ts +120 -0
  192. package/src/tools/type-checker.ts +42 -0
  193. package/vitest.config.ts +9 -1
  194. package/dist/src/generate-component.d.ts +0 -4
  195. package/dist/src/generate-component.d.ts.map +0 -1
  196. package/dist/src/generate-component.js +0 -14
  197. package/dist/src/generate-component.js.map +0 -1
  198. package/dist/src/generate-component.test.d.ts.map +0 -1
  199. package/dist/src/generate-component.test.js +0 -73
  200. package/dist/src/generate-component.test.js.map +0 -1
  201. package/dist/src/generate-story.d.ts +0 -4
  202. package/dist/src/generate-story.d.ts.map +0 -1
  203. package/dist/src/generate-story.js +0 -14
  204. package/dist/src/generate-story.js.map +0 -1
  205. package/dist/src/generate-story.test.d.ts.map +0 -1
  206. package/dist/src/generate-story.test.js +0 -58
  207. package/dist/src/generate-story.test.js.map +0 -1
  208. package/dist/src/generate-test.d.ts +0 -4
  209. package/dist/src/generate-test.d.ts.map +0 -1
  210. package/dist/src/generate-test.js +0 -14
  211. package/dist/src/generate-test.js.map +0 -1
  212. package/dist/src/generate-test.test.d.ts.map +0 -1
  213. package/dist/src/generate-test.test.js +0 -77
  214. package/dist/src/generate-test.test.js.map +0 -1
  215. package/dist/src/reconcile.d.ts +0 -8
  216. package/dist/src/reconcile.d.ts.map +0 -1
  217. package/dist/src/reconcile.js +0 -18
  218. package/dist/src/reconcile.js.map +0 -1
  219. package/dist/src/reconcile.test.d.ts +0 -2
  220. package/dist/src/reconcile.test.d.ts.map +0 -1
  221. package/dist/src/reconcile.test.js +0 -108
  222. package/dist/src/reconcile.test.js.map +0 -1
  223. package/src/generate-component.test.ts +0 -89
  224. package/src/generate-component.ts +0 -16
  225. package/src/generate-story.test.ts +0 -71
  226. package/src/generate-story.ts +0 -16
  227. package/src/generate-test.test.ts +0 -93
  228. package/src/generate-test.ts +0 -16
  229. package/src/reconcile.test.ts +0 -127
  230. package/src/reconcile.ts +0 -27
  231. /package/dist/src/{generate-component.test.d.ts → pipeline/steps/generate-component.test.d.ts} +0 -0
  232. /package/dist/src/{generate-story.test.d.ts → pipeline/steps/generate-story.test.d.ts} +0 -0
  233. /package/dist/src/{generate-test.test.d.ts → pipeline/steps/generate-test.test.d.ts} +0 -0
@@ -1,20 +1,21 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { buildComponentPrompt, buildReconcilerPrompt, buildStoryPrompt, buildTestPrompt, componentPromptSections, reconcilerPromptSections, storyPromptSections, testPromptSections, } from './prompt.js';
2
+ import { buildComponentPrompt, buildLintFixPrompt, buildReconcilerPrompt, buildStoryFixPrompt, buildStoryPrompt, buildTestFixPrompt, buildTestPrompt, buildTypeFixPrompt, componentPromptSections, reconcilerPromptSections, storyPromptSections, testPromptSections, } from './prompt.js';
3
3
  const specDeltas = {
4
4
  structure: ['renders a Card element'],
5
5
  rendering: ['shows skeleton when loading'],
6
6
  interaction: ['calls onSelect when clicked'],
7
7
  styling: ['applies elevated style when raised=true'],
8
8
  };
9
+ const projectSection = '## Project Dependencies\ntest project context';
9
10
  describe('prompt builders', () => {
10
11
  describe('buildComponentPrompt', () => {
11
12
  it('returns system and prompt', () => {
12
- const result = buildComponentPrompt({ componentName: 'Card', specDeltas });
13
+ const result = buildComponentPrompt({ componentName: 'Card', specDeltas, projectSection });
13
14
  expect(result.system).toBeTruthy();
14
15
  expect(result.prompt).toBeTruthy();
15
16
  });
16
17
  it('system prompt contains all sections', () => {
17
- const { system } = buildComponentPrompt({ componentName: 'Card', specDeltas });
18
+ const { system } = buildComponentPrompt({ componentName: 'Card', specDeltas, projectSection });
18
19
  expect(system).toContain('YOUR INPUT');
19
20
  expect(system).toContain('YOUR OUTPUT');
20
21
  expect(system).toContain('METHODOLOGY');
@@ -22,7 +23,7 @@ describe('prompt builders', () => {
22
23
  expect(system).toContain('QUALITY CHECKLIST');
23
24
  });
24
25
  it('user prompt includes component name and spec deltas', () => {
25
- const { prompt } = buildComponentPrompt({ componentName: 'Card', specDeltas });
26
+ const { prompt } = buildComponentPrompt({ componentName: 'Card', specDeltas, projectSection });
26
27
  expect(prompt).toContain('**Card**');
27
28
  expect(prompt).toContain('renders a Card element');
28
29
  expect(prompt).toContain('shows skeleton when loading');
@@ -32,22 +33,28 @@ describe('prompt builders', () => {
32
33
  componentName: 'Card',
33
34
  specDeltas,
34
35
  existingComponent: 'export function Card() {}',
36
+ projectSection,
35
37
  });
36
38
  expect(prompt).toContain('## Existing Component');
37
39
  expect(prompt).toContain('export function Card() {}');
38
40
  });
39
41
  it('user prompt omits existing component section when not provided', () => {
40
- const { prompt } = buildComponentPrompt({ componentName: 'Card', specDeltas });
42
+ const { prompt } = buildComponentPrompt({ componentName: 'Card', specDeltas, projectSection });
41
43
  expect(prompt).not.toContain('## Existing Component');
42
44
  });
45
+ it('user prompt includes project section', () => {
46
+ const { prompt } = buildComponentPrompt({ componentName: 'Card', specDeltas, projectSection });
47
+ expect(prompt).toContain('## Project Dependencies');
48
+ expect(prompt).toContain('test project context');
49
+ });
43
50
  });
44
51
  describe('buildTestPrompt', () => {
45
52
  it('system prompt establishes tests as source of truth', () => {
46
- const { system } = buildTestPrompt({ componentName: 'Card', specDeltas });
53
+ const { system } = buildTestPrompt({ componentName: 'Card', specDeltas, projectSection });
47
54
  expect(system).toContain('source of truth');
48
55
  });
49
56
  it('user prompt includes spec deltas', () => {
50
- const { prompt } = buildTestPrompt({ componentName: 'Card', specDeltas });
57
+ const { prompt } = buildTestPrompt({ componentName: 'Card', specDeltas, projectSection });
51
58
  expect(prompt).toContain('## Spec Deltas');
52
59
  expect(prompt).toContain('calls onSelect when clicked');
53
60
  });
@@ -56,24 +63,82 @@ describe('prompt builders', () => {
56
63
  componentName: 'Card',
57
64
  specDeltas,
58
65
  existingComponent: 'existing code',
66
+ projectSection,
59
67
  });
60
68
  expect(prompt).toContain('## Existing Component');
61
69
  expect(prompt).toContain('existing code');
62
70
  });
71
+ it('user prompt includes project section', () => {
72
+ const { prompt } = buildTestPrompt({ componentName: 'Card', specDeltas, projectSection });
73
+ expect(prompt).toContain('## Project Dependencies');
74
+ expect(prompt).toContain('test project context');
75
+ });
76
+ it('system prompt contains Tailwind test rule', () => {
77
+ const { system } = buildTestPrompt({ componentName: 'Card', specDeltas, projectSection });
78
+ expect(system).toContain('Tailwind classes, not inline styles');
79
+ expect(system).toContain('toHaveClass');
80
+ expect(system).toContain('NEVER use `toHaveStyle()`');
81
+ });
82
+ it('system prompt contains semantic element verification rule', () => {
83
+ const { system } = buildTestPrompt({ componentName: 'Card', specDeltas, projectSection });
84
+ expect(system).toContain('Verify semantic elements from component source');
85
+ expect(system).toContain('getByText');
86
+ });
63
87
  });
64
88
  describe('buildStoryPrompt', () => {
65
89
  it('system prompt covers CSF3 and story conventions', () => {
66
- const { system } = buildStoryPrompt({ componentName: 'Card', specDeltas });
90
+ const { system } = buildStoryPrompt({
91
+ componentName: 'Card',
92
+ specDeltas,
93
+ projectSection,
94
+ componentImportPath: '@/components/Card',
95
+ });
67
96
  expect(system).toContain('CSF3');
68
97
  expect(system).toContain('Meta');
69
98
  expect(system).toContain('StoryObj');
70
99
  });
71
100
  it('user prompt includes spec deltas without component code', () => {
72
- const { prompt } = buildStoryPrompt({ componentName: 'Card', specDeltas });
101
+ const { prompt } = buildStoryPrompt({
102
+ componentName: 'Card',
103
+ specDeltas,
104
+ projectSection,
105
+ componentImportPath: '@/components/Card',
106
+ });
73
107
  expect(prompt).toContain('## Spec Deltas');
74
108
  expect(prompt).toContain('applies elevated style when raised=true');
75
109
  expect(prompt).not.toContain('## Component Code');
76
110
  });
111
+ it('user prompt includes component code when provided', () => {
112
+ const { prompt } = buildStoryPrompt({
113
+ componentName: 'Card',
114
+ specDeltas,
115
+ projectSection,
116
+ componentImportPath: '@/components/Card',
117
+ componentCode: 'export function Card() {}',
118
+ });
119
+ expect(prompt).toContain('## Component Code');
120
+ expect(prompt).toContain('export function Card() {}');
121
+ });
122
+ it('user prompt includes project section', () => {
123
+ const { prompt } = buildStoryPrompt({
124
+ componentName: 'Card',
125
+ specDeltas,
126
+ projectSection,
127
+ componentImportPath: '@/components/Card',
128
+ });
129
+ expect(prompt).toContain('## Project Dependencies');
130
+ expect(prompt).toContain('test project context');
131
+ });
132
+ it('user prompt includes component import path', () => {
133
+ const { prompt } = buildStoryPrompt({
134
+ componentName: 'Card',
135
+ specDeltas,
136
+ projectSection,
137
+ componentImportPath: '@/components/Card',
138
+ });
139
+ expect(prompt).toContain('## Component Import Path');
140
+ expect(prompt).toContain("import { Card } from '@/components/Card'");
141
+ });
77
142
  });
78
143
  describe('buildReconcilerPrompt', () => {
79
144
  const reconcileInput = {
@@ -82,6 +147,7 @@ describe('prompt builders', () => {
82
147
  componentCode: 'component source',
83
148
  testCode: 'test source',
84
149
  storyCode: 'story source',
150
+ projectSection,
85
151
  };
86
152
  it('system prompt establishes test immutability', () => {
87
153
  const { system } = buildReconcilerPrompt(reconcileInput);
@@ -105,6 +171,11 @@ describe('prompt builders', () => {
105
171
  expect(prompt).toContain('## Existing Component');
106
172
  expect(prompt).toContain('old code');
107
173
  });
174
+ it('user prompt includes project section', () => {
175
+ const { prompt } = buildReconcilerPrompt(reconcileInput);
176
+ expect(prompt).toContain('## Project Dependencies');
177
+ expect(prompt).toContain('test project context');
178
+ });
108
179
  });
109
180
  describe('buildComponentPrompt handles undefined specDelta fields', () => {
110
181
  const specDeltasWithUndefined = {
@@ -117,6 +188,7 @@ describe('prompt builders', () => {
117
188
  const result = buildComponentPrompt({
118
189
  componentName: 'Card',
119
190
  specDeltas: specDeltasWithUndefined,
191
+ projectSection,
120
192
  });
121
193
  expect(result.system).toBeTruthy();
122
194
  expect(result.prompt).toBeTruthy();
@@ -134,6 +206,7 @@ describe('prompt builders', () => {
134
206
  const result = buildTestPrompt({
135
207
  componentName: 'Card',
136
208
  specDeltas: specDeltasWithUndefined,
209
+ projectSection,
137
210
  });
138
211
  expect(result.system).toBeTruthy();
139
212
  expect(result.prompt).toBeTruthy();
@@ -151,6 +224,8 @@ describe('prompt builders', () => {
151
224
  const result = buildStoryPrompt({
152
225
  componentName: 'Card',
153
226
  specDeltas: specDeltasWithUndefined,
227
+ projectSection,
228
+ componentImportPath: '@/components/Card',
154
229
  });
155
230
  expect(result.system).toBeTruthy();
156
231
  expect(result.prompt).toBeTruthy();
@@ -171,6 +246,7 @@ describe('prompt builders', () => {
171
246
  componentCode: 'component source',
172
247
  testCode: 'test source',
173
248
  storyCode: 'story source',
249
+ projectSection,
174
250
  });
175
251
  expect(result.system).toBeTruthy();
176
252
  expect(result.prompt).toBeTruthy();
@@ -203,5 +279,74 @@ describe('prompt builders', () => {
203
279
  }
204
280
  });
205
281
  });
282
+ describe('buildTypeFixPrompt', () => {
283
+ it('includes errors, component code, and test code', () => {
284
+ const result = buildTypeFixPrompt({
285
+ componentCode: 'const x: number = "bad"',
286
+ testCode: 'import { Card } from "./Card"',
287
+ errors: ['src/Card.tsx(1,7): error TS2322: Type string not assignable to number'],
288
+ });
289
+ expect(result.system).toContain('TypeScript error fixer');
290
+ expect(result.system).toContain('two code blocks');
291
+ expect(result.prompt).toContain('## TypeScript Errors');
292
+ expect(result.prompt).toContain('error TS2322');
293
+ expect(result.prompt).toContain('## Component Code');
294
+ expect(result.prompt).toContain('const x: number = "bad"');
295
+ expect(result.prompt).toContain('## Test Code');
296
+ expect(result.prompt).toContain('import { Card } from "./Card"');
297
+ });
298
+ });
299
+ describe('buildTestFixPrompt', () => {
300
+ it('includes failures, output, component code, and test code', () => {
301
+ const result = buildTestFixPrompt({
302
+ componentCode: 'export function Card() { return <div /> }',
303
+ testCode: 'expect(screen.getByRole("button")).toBeInTheDocument()',
304
+ failures: ['renders button: Expected element not found'],
305
+ testOutput: 'FAIL src/Card.test.tsx',
306
+ });
307
+ expect(result.system).toContain('test failure fixer');
308
+ expect(result.system).toContain('source of truth');
309
+ expect(result.prompt).toContain('## Test Failures');
310
+ expect(result.prompt).toContain('Expected element not found');
311
+ expect(result.prompt).toContain('## Test Output');
312
+ expect(result.prompt).toContain('FAIL src/Card.test.tsx');
313
+ expect(result.prompt).toContain('## Component Code');
314
+ expect(result.prompt).toContain('## Test Code');
315
+ });
316
+ });
317
+ describe('buildLintFixPrompt', () => {
318
+ it('includes errors, component code, and test code', () => {
319
+ const result = buildLintFixPrompt({
320
+ componentCode: 'var x = 1',
321
+ testCode: 'var y = 2',
322
+ errors: ['src/Card.tsx:1:1 lint/style/useConst: Use const instead of var'],
323
+ });
324
+ expect(result.system).toContain('lint error fixer');
325
+ expect(result.system).toContain('two code blocks');
326
+ expect(result.prompt).toContain('## Lint Errors');
327
+ expect(result.prompt).toContain('useConst');
328
+ expect(result.prompt).toContain('## Component Code');
329
+ expect(result.prompt).toContain('var x = 1');
330
+ expect(result.prompt).toContain('## Test Code');
331
+ expect(result.prompt).toContain('var y = 2');
332
+ });
333
+ });
334
+ describe('buildStoryFixPrompt', () => {
335
+ it('includes errors, story code, and component code as reference', () => {
336
+ const result = buildStoryFixPrompt({
337
+ storyCode: 'import { Card } from "./Card"',
338
+ componentCode: 'export function Card() {}',
339
+ errors: ['src/Card.stories.tsx(1,10): error TS2305: Module has no exported member'],
340
+ });
341
+ expect(result.system).toContain('Storybook story fixer');
342
+ expect(result.system).toContain('one code block');
343
+ expect(result.prompt).toContain('## TypeScript Errors');
344
+ expect(result.prompt).toContain('error TS2305');
345
+ expect(result.prompt).toContain('## Story Code');
346
+ expect(result.prompt).toContain('import { Card } from "./Card"');
347
+ expect(result.prompt).toContain('## Component Code (reference)');
348
+ expect(result.prompt).toContain('export function Card() {}');
349
+ });
350
+ });
206
351
  });
207
352
  //# sourceMappingURL=prompt.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.test.js","sourceRoot":"","sources":["../../src/prompt.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.test.js","sourceRoot":"","sources":["../../src/prompt.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export interface ScaffoldProp {
2
+ name: string;
3
+ type: string;
4
+ required: boolean;
5
+ default?: string;
6
+ description: string;
7
+ category: string;
8
+ }
9
+ export interface ScaffoldComposedComponent {
10
+ id: string;
11
+ path: string;
12
+ /** Actual exported value names from the file, resolved via TS AST. */
13
+ exports?: string[];
14
+ }
15
+ export interface ScaffoldInput {
16
+ componentName: string;
17
+ props?: ScaffoldProp[];
18
+ composes: ScaffoldComposedComponent[];
19
+ specDeltas: {
20
+ structure: string[];
21
+ rendering: string[];
22
+ interaction: string[];
23
+ styling: string[];
24
+ };
25
+ }
26
+ export interface ScaffoldResult {
27
+ /** The exported props type definition (e.g. `export type ButtonProps = { ... };`) */
28
+ propsInterface: string;
29
+ /** React + composed component import statements */
30
+ importStatements: string;
31
+ /** The function signature line with destructured props */
32
+ functionSignature: string;
33
+ /** Complete file with `__BODY__` placeholder where the LLM fills in the JSX */
34
+ scaffoldedFile: string;
35
+ }
36
+ /**
37
+ * Converts a file path like `src/components/ui/Button.tsx` or
38
+ * `src/components/MyFeature` to a `@/` import alias like
39
+ * `@/components/ui/Button` or `@/components/MyFeature`.
40
+ */
41
+ export declare function filePathToImportAlias(filePath: string): string;
42
+ /**
43
+ * Generates the deterministic scaffold of a React component — imports,
44
+ * props type, function signature, and export — leaving a `__BODY__`
45
+ * placeholder for the LLM to fill in the JSX return statement and any
46
+ * internal hooks/logic.
47
+ */
48
+ export declare function generateScaffold(input: ScaffoldInput): ScaffoldResult;
49
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IACtC,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA6DrE"}
@@ -0,0 +1,208 @@
1
+ // ═══════════════════════════════════════════════════════════════════
2
+ // Scaffold generator — deterministic component skeleton with __BODY__
3
+ // ═══════════════════════════════════════════════════════════════════
4
+ /**
5
+ * Converts a file path like `src/components/ui/Button.tsx` or
6
+ * `src/components/MyFeature` to a `@/` import alias like
7
+ * `@/components/ui/Button` or `@/components/MyFeature`.
8
+ */
9
+ export function filePathToImportAlias(filePath) {
10
+ let rel = filePath;
11
+ if (rel.startsWith('./')) {
12
+ rel = rel.slice(2);
13
+ }
14
+ if (rel.startsWith('src/')) {
15
+ rel = rel.slice(4);
16
+ }
17
+ // Strip .tsx/.ts extension
18
+ rel = rel.replace(/\.tsx?$/, '');
19
+ return `@/${rel}`;
20
+ }
21
+ /**
22
+ * Generates the deterministic scaffold of a React component — imports,
23
+ * props type, function signature, and export — leaving a `__BODY__`
24
+ * placeholder for the LLM to fill in the JSX return statement and any
25
+ * internal hooks/logic.
26
+ */
27
+ export function generateScaffold(input) {
28
+ const { componentName, props = [], composes } = input;
29
+ const propsTypeName = `${componentName}Props`;
30
+ // ── Determine if we need React import ────────────────────────────
31
+ const hasSlotProps = props.some((p) => isReactNodeType(p.type));
32
+ // ── Build import statements ──────────────────────────────────────
33
+ const importLines = [];
34
+ if (hasSlotProps) {
35
+ importLines.push(`import React from 'react';`);
36
+ }
37
+ // cn utility — almost always needed for Tailwind class composition
38
+ importLines.push(`import { cn } from '@/lib/utils';`);
39
+ // Composed component imports — use AST-resolved exports when available
40
+ for (const composed of composes) {
41
+ const alias = filePathToImportAlias(composed.path);
42
+ if (composed.exports && composed.exports.length > 0) {
43
+ // Use actual exports from TS AST
44
+ const names = composed.exports.join(', ');
45
+ importLines.push(`import { ${names} } from '${alias}';`);
46
+ }
47
+ else {
48
+ // Fallback: derive from filename
49
+ const pascalName = componentNameFromPath(composed.path);
50
+ importLines.push(`import { ${pascalName} } from '${alias}';`);
51
+ }
52
+ }
53
+ const importStatements = importLines.join('\n');
54
+ // ── Build props interface ────────────────────────────────────────
55
+ const propsInterface = buildPropsInterface(propsTypeName, props);
56
+ // ── Build function signature ─────────────────────────────────────
57
+ const functionSignature = buildFunctionSignature(componentName, propsTypeName, props);
58
+ // ── Assemble scaffolded file ─────────────────────────────────────
59
+ const fileParts = [];
60
+ fileParts.push(importStatements);
61
+ fileParts.push('');
62
+ fileParts.push(propsInterface);
63
+ fileParts.push('');
64
+ fileParts.push(`${functionSignature} {`);
65
+ fileParts.push(` __BODY__`);
66
+ fileParts.push(`}`);
67
+ fileParts.push('');
68
+ const scaffoldedFile = fileParts.join('\n');
69
+ return {
70
+ propsInterface,
71
+ importStatements,
72
+ functionSignature,
73
+ scaffoldedFile,
74
+ };
75
+ }
76
+ // ═══════════════════════════════════════════════════════════════════
77
+ // Internal helpers
78
+ // ═══════════════════════════════════════════════════════════════════
79
+ function kebabToPascal(name) {
80
+ return name
81
+ .split('-')
82
+ .map((s) => s.charAt(0).toUpperCase() + s.slice(1))
83
+ .join('');
84
+ }
85
+ /**
86
+ * Extract the component name from a file path.
87
+ * e.g. "./src/components/ui/Button.tsx" → "Button"
88
+ * "src/components/MyWidget.tsx" → "MyWidget"
89
+ */
90
+ function componentNameFromPath(filePath) {
91
+ const lastSlash = filePath.lastIndexOf('/');
92
+ const filename = lastSlash === -1 ? filePath : filePath.slice(lastSlash + 1);
93
+ const dotIndex = filename.lastIndexOf('.');
94
+ return dotIndex === -1 ? filename : filename.slice(0, dotIndex);
95
+ }
96
+ /**
97
+ * Returns true when the type string represents React.ReactNode or
98
+ * similar renderable slot types.
99
+ */
100
+ function isReactNodeType(typeStr) {
101
+ const t = typeStr.trim();
102
+ return (t === 'React.ReactNode' ||
103
+ t === 'ReactNode' ||
104
+ t === 'React.ReactElement' ||
105
+ t === 'ReactElement' ||
106
+ t === 'JSX.Element' ||
107
+ t.includes('ReactNode') ||
108
+ t.includes('ReactElement'));
109
+ }
110
+ /**
111
+ * Builds the exported TypeScript props type definition.
112
+ *
113
+ * Example output:
114
+ * ```
115
+ * export type ButtonProps = {
116
+ * /** Label text for the button * /
117
+ * label: string;
118
+ * /** Whether the button is disabled * /
119
+ * disabled?: boolean;
120
+ * };
121
+ * ```
122
+ */
123
+ function buildPropsInterface(typeName, props) {
124
+ if (props.length === 0) {
125
+ return `export type ${typeName} = Record<string, never>;`;
126
+ }
127
+ const lines = [];
128
+ lines.push(`export type ${typeName} = {`);
129
+ for (const prop of props) {
130
+ // JSDoc comment for the prop
131
+ if (prop.description) {
132
+ lines.push(` /** ${prop.description} */`);
133
+ }
134
+ const optional = prop.required ? '' : '?';
135
+ lines.push(` ${prop.name}${optional}: ${prop.type};`);
136
+ }
137
+ lines.push(`};`);
138
+ return lines.join('\n');
139
+ }
140
+ /**
141
+ * Builds the function signature with destructured props and inline
142
+ * defaults where declared.
143
+ *
144
+ * Example output:
145
+ * ```
146
+ * export function Button({ variant = 'primary', onClick, children }: ButtonProps)
147
+ * ```
148
+ */
149
+ function buildFunctionSignature(componentName, propsTypeName, props) {
150
+ if (props.length === 0) {
151
+ return `export function ${componentName}(props: ${propsTypeName})`;
152
+ }
153
+ const destructuredParts = [];
154
+ for (const prop of props) {
155
+ if (prop.default !== undefined && prop.default !== '') {
156
+ // Inline default in destructuring
157
+ const defaultLiteral = formatDefaultForDestructuring(prop.default);
158
+ destructuredParts.push(`${prop.name} = ${defaultLiteral}`);
159
+ }
160
+ else {
161
+ destructuredParts.push(prop.name);
162
+ }
163
+ }
164
+ // Decide whether to format single-line or multi-line based on length
165
+ const singleLine = `{ ${destructuredParts.join(', ')} }`;
166
+ const signaturePrefix = `export function ${componentName}(`;
167
+ const signatureSuffix = `: ${propsTypeName})`;
168
+ if ((signaturePrefix + singleLine + signatureSuffix).length <= 100) {
169
+ return `${signaturePrefix}${singleLine}${signatureSuffix}`;
170
+ }
171
+ // Multi-line destructuring
172
+ const multiLines = [];
173
+ multiLines.push(`${signaturePrefix}{`);
174
+ for (let i = 0; i < destructuredParts.length; i++) {
175
+ const trailing = i < destructuredParts.length - 1 ? ',' : ',';
176
+ multiLines.push(` ${destructuredParts[i]}${trailing}`);
177
+ }
178
+ multiLines.push(`}${signatureSuffix}`);
179
+ return multiLines.join('\n');
180
+ }
181
+ /**
182
+ * Formats a default value string for use in destructuring assignment.
183
+ *
184
+ * If the value is already a valid JS literal (quoted string, number,
185
+ * boolean, array, object), it is returned as-is. Otherwise it is
186
+ * returned unchanged (it may be a constant reference or expression
187
+ * that the LLM-generated body will define).
188
+ */
189
+ function formatDefaultForDestructuring(raw) {
190
+ const trimmed = raw.trim();
191
+ // Already looks like a valid literal — return as-is
192
+ if (trimmed === 'true' ||
193
+ trimmed === 'false' ||
194
+ trimmed === 'null' ||
195
+ trimmed === 'undefined' ||
196
+ /^-?\d+(\.\d+)?$/.test(trimmed) || // numeric
197
+ /^['"]/.test(trimmed) || // string literal
198
+ trimmed.startsWith('[') || // array literal
199
+ trimmed.startsWith('{') || // object literal
200
+ trimmed.startsWith('`') // template literal
201
+ ) {
202
+ return trimmed;
203
+ }
204
+ // Wrap bare strings that look like identifiers or expressions — return as-is
205
+ // (e.g. a constant name like `DEFAULT_SIZE`)
206
+ return trimmed;
207
+ }
208
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type LintResult = {
2
+ passed: boolean;
3
+ errors: string[];
4
+ };
5
+ export declare function runLint(filePaths: string[], targetDir: string): LintResult;
6
+ export declare function runLintFix(filePaths: string[], targetDir: string): LintResult;
7
+ //# sourceMappingURL=lint-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint-runner.d.ts","sourceRoot":"","sources":["../../../src/tools/lint-runner.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAqB1E;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAqB7E"}