mycontext-cli 0.1.2 → 0.2.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 (169) hide show
  1. package/README.md +264 -71
  2. package/dist/agents/implementations/CodeGenSubAgent.d.ts +48 -0
  3. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -0
  4. package/dist/agents/implementations/CodeGenSubAgent.js +1356 -0
  5. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -0
  6. package/dist/agents/implementations/DocsSubAgent.d.ts +35 -0
  7. package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -0
  8. package/dist/agents/implementations/DocsSubAgent.js +351 -0
  9. package/dist/agents/implementations/DocsSubAgent.js.map +1 -0
  10. package/dist/agents/implementations/EnhancementAgent.d.ts +119 -0
  11. package/dist/agents/implementations/EnhancementAgent.d.ts.map +1 -0
  12. package/dist/agents/implementations/EnhancementAgent.js +598 -0
  13. package/dist/agents/implementations/EnhancementAgent.js.map +1 -0
  14. package/dist/agents/implementations/QASubAgent.d.ts +31 -0
  15. package/dist/agents/implementations/QASubAgent.d.ts.map +1 -0
  16. package/dist/agents/implementations/QASubAgent.js +190 -0
  17. package/dist/agents/implementations/QASubAgent.js.map +1 -0
  18. package/dist/agents/interfaces/SubAgent.d.ts +287 -0
  19. package/dist/agents/interfaces/SubAgent.d.ts.map +1 -0
  20. package/dist/agents/interfaces/SubAgent.js +7 -0
  21. package/dist/agents/interfaces/SubAgent.js.map +1 -0
  22. package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts +59 -0
  23. package/dist/agents/orchestrator/SubAgentOrchestrator.d.ts.map +1 -0
  24. package/dist/agents/orchestrator/SubAgentOrchestrator.js +305 -0
  25. package/dist/agents/orchestrator/SubAgentOrchestrator.js.map +1 -0
  26. package/dist/agents/personalities/definitions.d.ts +32 -0
  27. package/dist/agents/personalities/definitions.d.ts.map +1 -0
  28. package/dist/agents/personalities/definitions.js +359 -0
  29. package/dist/agents/personalities/definitions.js.map +1 -0
  30. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts +1 -0
  31. package/dist/cli/src/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  32. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js +25 -91
  33. package/dist/cli/src/agents/implementations/CodeGenSubAgent.js.map +1 -1
  34. package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts +120 -0
  35. package/dist/cli/src/agents/implementations/EnhancementAgent.d.ts.map +1 -0
  36. package/dist/cli/src/agents/implementations/EnhancementAgent.js +606 -0
  37. package/dist/cli/src/agents/implementations/EnhancementAgent.js.map +1 -0
  38. package/dist/cli/src/agents/interfaces/SubAgent.d.ts +130 -0
  39. package/dist/cli/src/agents/interfaces/SubAgent.d.ts.map +1 -1
  40. package/dist/cli/src/agents/personalities/definitions.d.ts +1 -1
  41. package/dist/cli/src/agents/personalities/definitions.d.ts.map +1 -1
  42. package/dist/cli/src/agents/personalities/definitions.js +31 -2
  43. package/dist/cli/src/agents/personalities/definitions.js.map +1 -1
  44. package/dist/cli/src/cli.js +12 -0
  45. package/dist/cli/src/cli.js.map +1 -1
  46. package/dist/cli/src/commands/enhance.d.ts +28 -0
  47. package/dist/cli/src/commands/enhance.d.ts.map +1 -0
  48. package/dist/cli/src/commands/enhance.js +246 -0
  49. package/dist/cli/src/commands/enhance.js.map +1 -0
  50. package/dist/cli/src/commands/generate-components.d.ts +0 -1
  51. package/dist/cli/src/commands/generate-components.d.ts.map +1 -1
  52. package/dist/cli/src/commands/generate-components.js +2 -2
  53. package/dist/cli/src/commands/generate-components.js.map +1 -1
  54. package/dist/cli/src/commands/generate.d.ts.map +1 -1
  55. package/dist/cli/src/commands/generate.js +8 -22
  56. package/dist/cli/src/commands/generate.js.map +1 -1
  57. package/dist/cli/src/commands/list.d.ts.map +1 -1
  58. package/dist/cli/src/commands/list.js +2 -1
  59. package/dist/cli/src/commands/list.js.map +1 -1
  60. package/dist/cli/src/commands/model.d.ts +25 -0
  61. package/dist/cli/src/commands/model.d.ts.map +1 -0
  62. package/dist/cli/src/commands/model.js +317 -0
  63. package/dist/cli/src/commands/model.js.map +1 -0
  64. package/dist/cli/src/commands/setup.d.ts +35 -0
  65. package/dist/cli/src/commands/setup.d.ts.map +1 -0
  66. package/dist/cli/src/commands/setup.js +412 -0
  67. package/dist/cli/src/commands/setup.js.map +1 -0
  68. package/dist/cli/src/config/dependencies.json +180 -0
  69. package/dist/cli/src/utils/componentValidator.d.ts +60 -0
  70. package/dist/cli/src/utils/componentValidator.d.ts.map +1 -0
  71. package/dist/cli/src/utils/componentValidator.js +191 -0
  72. package/dist/cli/src/utils/componentValidator.js.map +1 -0
  73. package/dist/cli/src/utils/designTokenExtractor.d.ts +94 -0
  74. package/dist/cli/src/utils/designTokenExtractor.d.ts.map +1 -0
  75. package/dist/cli/src/utils/designTokenExtractor.js +231 -0
  76. package/dist/cli/src/utils/designTokenExtractor.js.map +1 -0
  77. package/dist/cli/src/utils/ollamaClient.d.ts +37 -0
  78. package/dist/cli/src/utils/ollamaClient.d.ts.map +1 -0
  79. package/dist/cli/src/utils/ollamaClient.js +213 -0
  80. package/dist/cli/src/utils/ollamaClient.js.map +1 -0
  81. package/dist/cli/src/utils/spinner.d.ts +2 -0
  82. package/dist/cli/src/utils/spinner.d.ts.map +1 -1
  83. package/dist/cli/src/utils/spinner.js +7 -0
  84. package/dist/cli/src/utils/spinner.js.map +1 -1
  85. package/dist/cli.d.ts +3 -0
  86. package/dist/cli.d.ts.map +1 -0
  87. package/dist/cli.js +299 -0
  88. package/dist/cli.js.map +1 -0
  89. package/dist/commands/auth.d.ts +23 -0
  90. package/dist/commands/auth.d.ts.map +1 -0
  91. package/dist/commands/auth.js +212 -0
  92. package/dist/commands/auth.js.map +1 -0
  93. package/dist/commands/enhance.d.ts +25 -0
  94. package/dist/commands/enhance.d.ts.map +1 -0
  95. package/dist/commands/enhance.js +242 -0
  96. package/dist/commands/enhance.js.map +1 -0
  97. package/dist/commands/generate-components.d.ts +27 -0
  98. package/dist/commands/generate-components.d.ts.map +1 -0
  99. package/dist/commands/generate-components.js +680 -0
  100. package/dist/commands/generate-components.js.map +1 -0
  101. package/dist/commands/generate.d.ts +23 -0
  102. package/dist/commands/generate.d.ts.map +1 -0
  103. package/dist/commands/generate.js +222 -0
  104. package/dist/commands/generate.js.map +1 -0
  105. package/dist/commands/init.d.ts +13 -0
  106. package/dist/commands/init.d.ts.map +1 -0
  107. package/dist/commands/init.js +91 -0
  108. package/dist/commands/init.js.map +1 -0
  109. package/dist/commands/list.d.ts +17 -0
  110. package/dist/commands/list.d.ts.map +1 -0
  111. package/dist/commands/list.js +210 -0
  112. package/dist/commands/list.js.map +1 -0
  113. package/dist/commands/model.d.ts +25 -0
  114. package/dist/commands/model.d.ts.map +1 -0
  115. package/dist/commands/model.js +317 -0
  116. package/dist/commands/model.js.map +1 -0
  117. package/dist/commands/preview.d.ts +23 -0
  118. package/dist/commands/preview.d.ts.map +1 -0
  119. package/dist/commands/preview.js +1200 -0
  120. package/dist/commands/preview.js.map +1 -0
  121. package/dist/commands/setup.d.ts +35 -0
  122. package/dist/commands/setup.d.ts.map +1 -0
  123. package/dist/commands/setup.js +412 -0
  124. package/dist/commands/setup.js.map +1 -0
  125. package/dist/commands/status.d.ts +21 -0
  126. package/dist/commands/status.d.ts.map +1 -0
  127. package/dist/commands/status.js +287 -0
  128. package/dist/commands/status.js.map +1 -0
  129. package/dist/commands/validate.d.ts +22 -0
  130. package/dist/commands/validate.d.ts.map +1 -0
  131. package/dist/commands/validate.js +259 -0
  132. package/dist/commands/validate.js.map +1 -0
  133. package/dist/types/index.d.ts +154 -0
  134. package/dist/types/index.d.ts.map +1 -0
  135. package/dist/types/index.js +3 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/utils/apiKeyManager.d.ts +137 -0
  138. package/dist/utils/apiKeyManager.d.ts.map +1 -0
  139. package/dist/utils/apiKeyManager.js +471 -0
  140. package/dist/utils/apiKeyManager.js.map +1 -0
  141. package/dist/utils/componentValidator.d.ts +60 -0
  142. package/dist/utils/componentValidator.d.ts.map +1 -0
  143. package/dist/utils/componentValidator.js +191 -0
  144. package/dist/utils/componentValidator.js.map +1 -0
  145. package/dist/utils/designTokenExtractor.d.ts +94 -0
  146. package/dist/utils/designTokenExtractor.d.ts.map +1 -0
  147. package/dist/utils/designTokenExtractor.js +231 -0
  148. package/dist/utils/designTokenExtractor.js.map +1 -0
  149. package/dist/utils/errorHandler.d.ts +105 -0
  150. package/dist/utils/errorHandler.d.ts.map +1 -0
  151. package/dist/utils/errorHandler.js +332 -0
  152. package/dist/utils/errorHandler.js.map +1 -0
  153. package/dist/utils/fileSystem.d.ts +58 -0
  154. package/dist/utils/fileSystem.d.ts.map +1 -0
  155. package/dist/utils/fileSystem.js +230 -0
  156. package/dist/utils/fileSystem.js.map +1 -0
  157. package/dist/utils/githubModels.d.ts +53 -0
  158. package/dist/utils/githubModels.d.ts.map +1 -0
  159. package/dist/utils/githubModels.js +239 -0
  160. package/dist/utils/githubModels.js.map +1 -0
  161. package/dist/utils/ollamaClient.d.ts +37 -0
  162. package/dist/utils/ollamaClient.d.ts.map +1 -0
  163. package/dist/utils/ollamaClient.js +213 -0
  164. package/dist/utils/ollamaClient.js.map +1 -0
  165. package/dist/utils/spinner.d.ts +30 -0
  166. package/dist/utils/spinner.d.ts.map +1 -0
  167. package/dist/utils/spinner.js +119 -0
  168. package/dist/utils/spinner.js.map +1 -0
  169. package/package.json +11 -9
@@ -0,0 +1,598 @@
1
+ "use strict";
2
+ /**
3
+ * EnhancementAgent Implementation
4
+ *
5
+ * Specialized sub-agent for iterative component design refinement.
6
+ * Focuses on enhancing single React components through user prompts,
7
+ * maintaining design consistency, and extracting design tokens.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.EnhancementAgent = void 0;
11
+ const definitions_1 = require("../personalities/definitions");
12
+ const designTokenExtractor_1 = require("../../utils/designTokenExtractor");
13
+ const componentValidator_1 = require("../../utils/componentValidator");
14
+ class EnhancementAgent {
15
+ constructor() {
16
+ this.name = "EnhancementAgent";
17
+ this.description = "Specialized agent for iterative component design refinement and enhancement";
18
+ const personality = (0, definitions_1.getSubAgentPersonality)(this.name);
19
+ if (!personality) {
20
+ throw new Error(`Personality not found for ${this.name}`);
21
+ }
22
+ this.personality = personality.systemPrompt;
23
+ this.llmProvider = personality.llmProvider;
24
+ this.expertise = personality.expertise;
25
+ // Initialize utilities
26
+ this.tokenExtractor = new designTokenExtractor_1.DesignTokenExtractor();
27
+ this.validator = new componentValidator_1.ComponentValidator();
28
+ }
29
+ async run(input) {
30
+ const { currentComponent, userPrompt, designContext, constraints } = input;
31
+ try {
32
+ // 1. Analyze current component
33
+ const analysis = await this.analyzeComponent(currentComponent);
34
+ // 2. Clarify the user's prompt to remove ambiguity and infer symmetric behavior
35
+ const clarified = await this.clarifyUserRequest(currentComponent, userPrompt, analysis, designContext);
36
+ // 3. Generate enhancement based on clarified prompt
37
+ const gen = await this.generateEnhancement(currentComponent, clarified?.clarifiedText || userPrompt, analysis, designContext);
38
+ const enhancedComponent = gen.enhancedComponent;
39
+ // 4. Extract design tokens from enhanced component
40
+ const designTokens = await this.tokenExtractor.extractTokens(enhancedComponent);
41
+ // 5. Validate enhancement against constraints
42
+ const validation = await this.validator.validateEnhancement(enhancedComponent, constraints);
43
+ // 6. Generate enhancement suggestions
44
+ const suggestions = await this.generateSuggestions(enhancedComponent, designTokens);
45
+ // 7. Calculate changes between versions
46
+ const changes = this.diffComponents(currentComponent, enhancedComponent);
47
+ return {
48
+ enhancedComponent,
49
+ designTokens,
50
+ changes,
51
+ validation,
52
+ suggestions,
53
+ analysis: {
54
+ originalAnalysis: analysis,
55
+ enhancedAnalysis: await this.analyzeComponent(enhancedComponent),
56
+ },
57
+ promptUsed: {
58
+ system: gen.systemPrompt,
59
+ composed: gen.composedPrompt,
60
+ clarified: clarified?.clarifiedText,
61
+ },
62
+ };
63
+ }
64
+ catch (error) {
65
+ console.error("EnhancementAgent failed:", error);
66
+ throw new Error(`Enhancement failed: ${error instanceof Error ? error.message : "Unknown error"}`);
67
+ }
68
+ }
69
+ async validate(input) {
70
+ // Validate required fields
71
+ if (!input.currentComponent || !input.userPrompt) {
72
+ return false;
73
+ }
74
+ // Validate component syntax
75
+ try {
76
+ await this.validator.validateSyntax(input.currentComponent);
77
+ return true;
78
+ }
79
+ catch (error) {
80
+ return false;
81
+ }
82
+ }
83
+ async getStatus() {
84
+ return {
85
+ name: this.name,
86
+ status: "idle",
87
+ errorCount: 0,
88
+ successCount: 0,
89
+ };
90
+ }
91
+ async analyzeComponent(componentCode) {
92
+ const analysis = {
93
+ type: this.detectComponentType(componentCode),
94
+ complexity: this.assessComplexity(componentCode),
95
+ dependencies: this.extractDependencies(componentCode),
96
+ designPatterns: this.extractDesignPatterns(componentCode),
97
+ accessibility: this.assessAccessibility(componentCode),
98
+ performance: this.assessPerformance(componentCode),
99
+ linesOfCode: componentCode.split("\n").length,
100
+ hasState: this.hasStateManagement(componentCode),
101
+ hasEffects: this.hasSideEffects(componentCode),
102
+ hasProps: this.hasProps(componentCode),
103
+ };
104
+ return analysis;
105
+ }
106
+ async generateEnhancement(currentComponent, prompt, analysis, designContext) {
107
+ const systemPrompt = this.buildEnhancementPrompt(analysis, designContext);
108
+ const composedPrompt = `${systemPrompt}\n\nUser Request: ${prompt}\n\nCurrent Component:\n\`\`\`tsx\n${currentComponent}\n\`\`\`\n\nEnhanced Component:`;
109
+ // Try local AI generation with Ollama
110
+ const providers = [
111
+ {
112
+ name: "ollama-local",
113
+ client: null,
114
+ generate: async (options) => ({
115
+ content: "Local AI generation not yet implemented",
116
+ }),
117
+ },
118
+ ];
119
+ let lastRawOutput;
120
+ let lastError;
121
+ for (const provider of providers) {
122
+ try {
123
+ if (provider.generate) {
124
+ if (process.env.DEBUG_ENHANCER === "true") {
125
+ console.log(`[enhancer] provider=${provider.name} calling generate`);
126
+ }
127
+ const result = await provider.generate({
128
+ prompt: composedPrompt,
129
+ systemPrompt,
130
+ temperature: 0.7,
131
+ maxTokens: 4000,
132
+ });
133
+ if (process.env.DEBUG_ENHANCER === "true") {
134
+ console.log(`[enhancer] provider=${provider.name} raw length=${result.content?.length || 0} sample=`, (result.content || "").slice(0, 240));
135
+ }
136
+ lastRawOutput = result.content || "";
137
+ const enhancedComponent = this.postProcessComponent(lastRawOutput || "");
138
+ // Validate the enhanced component
139
+ if (await this.validator.validateSyntax(enhancedComponent)) {
140
+ return {
141
+ enhancedComponent,
142
+ systemPrompt,
143
+ composedPrompt,
144
+ rawOutput: lastRawOutput,
145
+ };
146
+ }
147
+ }
148
+ }
149
+ catch (error) {
150
+ console.warn(`${provider.name} failed, trying next...`, error instanceof Error ? error.message : error);
151
+ lastError = error;
152
+ continue;
153
+ }
154
+ }
155
+ // Soft fallback: return original component with warning and raw output
156
+ const allowSoftFallback = process.env.ENHANCER_NO_SOFT_FALLBACK === "true" ? false : true;
157
+ if (allowSoftFallback) {
158
+ return {
159
+ enhancedComponent: currentComponent,
160
+ systemPrompt,
161
+ composedPrompt,
162
+ rawOutput: lastRawOutput,
163
+ warning: `AI generation returned invalid code. Falling back to original component. ${lastError instanceof Error ? lastError.message : ""}`,
164
+ };
165
+ }
166
+ throw new Error("All AI providers failed to generate enhancement");
167
+ }
168
+ /**
169
+ * Clarify the user's freeform request into a precise, unambiguous instruction.
170
+ * Encourages symmetric behavior (e.g., if increment changes, consider decrement implications)
171
+ * but preserves the rule of minimal change unless explicitly requested.
172
+ */
173
+ async clarifyUserRequest(currentComponent, userPrompt, analysis, designContext) {
174
+ try {
175
+ const systemPrompt = `You clarify enhancement requests for React components.
176
+ Return a single JSON object only. No prose.
177
+ Infer safe, minimal implications (e.g., if increment logic changes, consider whether decrement should mirror that if user intent implies symmetry).
178
+ Do not add new features unrelated to the user's request.`;
179
+ const prompt = `User Request: ${userPrompt}
180
+
181
+ Component quick facts:
182
+ - Type: ${analysis.type}
183
+ - Has State: ${analysis.hasState}
184
+ - Has Props: ${analysis.hasProps}
185
+ - Lines: ${analysis.linesOfCode}
186
+
187
+ Design Context:
188
+ - Colors: ${designContext.colors.join(", ")}
189
+ - Spacing: ${designContext.spacing}
190
+ - Typography: ${designContext.typography}
191
+ - Interactions: ${designContext.interactions.join(", ")}
192
+
193
+ Clarify into JSON with this exact shape:
194
+ {
195
+ "clarifiedText": string, // one concise instruction that the code generator can follow
196
+ "assumptions": string[], // implicit assumptions you made
197
+ "implications": string[] // symmetrical or related behaviors to adjust, if any
198
+ }
199
+
200
+ Examples:
201
+ - Input: "increment by prime numbers" => clarifiedText might specify both increment behavior and whether decrement should reverse prime step, if implied.
202
+
203
+ Return only JSON.`;
204
+ // TODO: Implement Ollama client for local AI generation
205
+ const res = { content: "Local AI generation not yet implemented" };
206
+ try {
207
+ const data = JSON.parse(res.content || "{}");
208
+ if (typeof data?.clarifiedText === "string" &&
209
+ data.clarifiedText.trim()) {
210
+ return { clarifiedText: data.clarifiedText.trim() };
211
+ }
212
+ }
213
+ catch {
214
+ // fall through
215
+ }
216
+ // Fallback: lightly rephrase without JSON parsing
217
+ const fallback = (res.content || "").trim();
218
+ if (fallback)
219
+ return { clarifiedText: fallback };
220
+ return null;
221
+ }
222
+ catch {
223
+ return null;
224
+ }
225
+ }
226
+ buildEnhancementPrompt(analysis, designContext) {
227
+ return `
228
+ You are an expert React component designer specializing in iterative refinement and enhancement.
229
+
230
+ Current Component Analysis (for context only):
231
+ - Type: ${analysis.type}
232
+ - Complexity: ${analysis.complexity}
233
+ - Dependencies: ${analysis.dependencies.join(", ")}
234
+ - Design Patterns: ${analysis.designPatterns.join(", ")}
235
+ - Has State: ${analysis.hasState}
236
+ - Has Props: ${analysis.hasProps}
237
+
238
+ Design Context:
239
+ - Colors: ${designContext.colors.join(", ")}
240
+ - Spacing: ${designContext.spacing}
241
+ - Typography: ${designContext.typography}
242
+ - Interactions: ${designContext.interactions.join(", ")}
243
+
244
+ Enhancement Guidelines (visual-first):
245
+ 1. Prioritize fulfilling the user's request for visualization and interactivity. Avoid unrelated changes.
246
+ 2. Preserve public interfaces (props/state names) unless the user asks to change them.
247
+ 3. It's okay for the component to be larger or include internal helper functions and small subcomponents in the same file.
248
+ 4. Use shadcn primitives via alias imports (e.g., import { Button } from '@ui/button'). Avoid external libraries. Inline logic and Tailwind are preferred.
249
+ 5. Accessibility and responsiveness are encouraged when they don't conflict with the user's request.
250
+ 6. Maintain strict TypeScript.
251
+ 7. If the user's request is ambiguous, make the smallest reasonable change. If the request implies symmetry (e.g., increment logic), consider mirroring related actions.
252
+ 8. Return the full component code; no markdown or prose is allowed.
253
+
254
+ Code Quality Requirements:
255
+ - Use functional components with hooks
256
+ - Implement proper TypeScript interfaces
257
+ - Add JSDoc comments for complex logic
258
+ - Use semantic HTML elements
259
+ - Implement proper event handling
260
+ - Add proper prop validation
261
+ - Use Tailwind CSS for styling
262
+ - Ensure responsive design with mobile-first approach
263
+
264
+ Output rules (critical):
265
+ - Return only valid TSX code. No prose, no markdown fences, no backticks.
266
+ - Must include a single default export: export default function ComponentName() { ... }
267
+ - Use shadcn primitives via alias imports (e.g., import { Button } from '@ui/button').
268
+ - Avoid unused imports. Comments are allowed.
269
+ - Ensure the code compiles as-is.
270
+
271
+ Return only the enhanced React component code with TypeScript, nothing else.
272
+ `;
273
+ }
274
+ postProcessComponent(componentCode) {
275
+ // Clean up and normalize LLM output into a valid default-exported TSX component
276
+ let cleaned = componentCode.trim();
277
+ // 1) Strip markdown code fences and any language hints
278
+ cleaned = cleaned.replace(/```tsx?\n?/gi, "").replace(/```\n?/g, "");
279
+ // 2) Remove leading prose before first likely code token
280
+ const firstCodeIdxCandidates = [
281
+ cleaned.indexOf("\nimport "),
282
+ cleaned.indexOf("import "),
283
+ cleaned.indexOf("export "),
284
+ cleaned.indexOf("function "),
285
+ cleaned.indexOf("const "),
286
+ cleaned.indexOf("class "),
287
+ ].filter((idx) => idx >= 0);
288
+ if (firstCodeIdxCandidates.length > 0) {
289
+ const startIdx = Math.min(...firstCodeIdxCandidates);
290
+ cleaned = cleaned.slice(startIdx);
291
+ }
292
+ // 3) Ensure React import if hooks are referenced but no React import is present
293
+ const usesHooks = /(useState|useEffect|useMemo|useCallback|useRef)/.test(cleaned);
294
+ const hasReactImport = /import\s+React/.test(cleaned);
295
+ if (usesHooks && !hasReactImport) {
296
+ cleaned =
297
+ `import React, { useState, useEffect, useMemo, useCallback, useRef } from "react";\n` +
298
+ cleaned;
299
+ }
300
+ // 4) Normalize exports
301
+ if (!/export\s+default/.test(cleaned)) {
302
+ // Convert `export function Name` → `export default function Name`
303
+ if (/export\s+function\s+([A-Z]\w*)\s*\(/.test(cleaned)) {
304
+ cleaned = cleaned.replace(/export\s+function\s+([A-Z]\w*)\s*\(/, "export default function $1(");
305
+ }
306
+ // Convert `export const Name = ...` → `const Name = ...; export default Name;`
307
+ if (!/export\s+default/.test(cleaned)) {
308
+ cleaned = cleaned.replace(/export\s+const\s+([A-Z]\w*)\s*=\s*/g, "const $1 = ");
309
+ }
310
+ // If still no default export, append one for obvious component declarations
311
+ if (!/export\s+default/.test(cleaned)) {
312
+ const fnMatch = cleaned.match(/function\s+([A-Z]\w*)\s*\(/);
313
+ const varMatch = cleaned.match(/const\s+([A-Z]\w*)\s*=\s*(?:\(|<)/);
314
+ const componentName = (fnMatch && fnMatch[1]) || (varMatch && varMatch[1]) || null;
315
+ if (componentName) {
316
+ // Avoid duplicate default export lines
317
+ const hasDefaultLine = new RegExp(`export\\s+default\\s+${componentName}`).test(cleaned);
318
+ if (!hasDefaultLine) {
319
+ cleaned = `${cleaned.trim()}\n\nexport default ${componentName};\n`;
320
+ }
321
+ }
322
+ }
323
+ }
324
+ // 5) Final validation or last-resort JSX wrapper
325
+ if (!/export\s+default/.test(cleaned)) {
326
+ // If the model produced a bare JSX tree, wrap it
327
+ const hasJSX = /<[A-Za-z][\s\S]*>/.test(cleaned);
328
+ const hasImportsOrExports = /\b(import|export)\b/.test(cleaned);
329
+ if (hasJSX && !hasImportsOrExports) {
330
+ const wrapped = `import React from "react";\n\nfunction EnhancedComponent() {\n return (\n${cleaned}\n );\n}\n\nexport default EnhancedComponent;\n`;
331
+ return wrapped;
332
+ }
333
+ // Otherwise, still invalid
334
+ throw new Error("Generated code is not a valid React component");
335
+ }
336
+ return cleaned;
337
+ }
338
+ detectComponentType(componentCode) {
339
+ const componentName = this.extractComponentName(componentCode);
340
+ if (componentName.toLowerCase().includes("form"))
341
+ return "form";
342
+ if (componentName.toLowerCase().includes("modal") ||
343
+ componentName.toLowerCase().includes("dialog"))
344
+ return "modal";
345
+ if (componentName.toLowerCase().includes("card"))
346
+ return "card";
347
+ if (componentName.toLowerCase().includes("button"))
348
+ return "button";
349
+ if (componentName.toLowerCase().includes("input"))
350
+ return "input";
351
+ if (componentName.toLowerCase().includes("list"))
352
+ return "list";
353
+ if (componentName.toLowerCase().includes("grid"))
354
+ return "grid";
355
+ if (componentName.toLowerCase().includes("table"))
356
+ return "table";
357
+ if (componentName.toLowerCase().includes("chart"))
358
+ return "chart";
359
+ if (componentName.toLowerCase().includes("nav"))
360
+ return "navigation";
361
+ return "custom";
362
+ }
363
+ assessComplexity(componentCode) {
364
+ const lines = componentCode.split("\n").length;
365
+ const hasState = this.hasStateManagement(componentCode);
366
+ const hasEffects = this.hasSideEffects(componentCode);
367
+ const hasProps = this.hasProps(componentCode);
368
+ const hasConditionals = (componentCode.match(/if|else|switch|ternary/g) || []).length;
369
+ const hasLoops = (componentCode.match(/map|forEach|for|while/g) || [])
370
+ .length;
371
+ let complexity = 0;
372
+ if (lines > 100)
373
+ complexity += 2;
374
+ if (hasState)
375
+ complexity += 1;
376
+ if (hasEffects)
377
+ complexity += 1;
378
+ if (hasProps)
379
+ complexity += 1;
380
+ if (hasConditionals > 3)
381
+ complexity += 1;
382
+ if (hasLoops > 2)
383
+ complexity += 1;
384
+ if (complexity <= 2)
385
+ return "simple";
386
+ if (complexity <= 4)
387
+ return "medium";
388
+ return "complex";
389
+ }
390
+ extractDependencies(componentCode) {
391
+ const dependencies = [];
392
+ // Extract React imports
393
+ if (componentCode.includes("useState"))
394
+ dependencies.push("useState");
395
+ if (componentCode.includes("useEffect"))
396
+ dependencies.push("useEffect");
397
+ if (componentCode.includes("useCallback"))
398
+ dependencies.push("useCallback");
399
+ if (componentCode.includes("useMemo"))
400
+ dependencies.push("useMemo");
401
+ if (componentCode.includes("useRef"))
402
+ dependencies.push("useRef");
403
+ if (componentCode.includes("useContext"))
404
+ dependencies.push("useContext");
405
+ // Extract shadcn/ui components
406
+ const shadcnComponents = [
407
+ "Button",
408
+ "Input",
409
+ "Card",
410
+ "Dialog",
411
+ "Modal",
412
+ "Select",
413
+ "Checkbox",
414
+ "RadioGroup",
415
+ "Textarea",
416
+ "Switch",
417
+ "Slider",
418
+ "Progress",
419
+ "Badge",
420
+ "Avatar",
421
+ "Alert",
422
+ "Toast",
423
+ "Tooltip",
424
+ "Popover",
425
+ "DropdownMenu",
426
+ ];
427
+ shadcnComponents.forEach((component) => {
428
+ if (componentCode.includes(component)) {
429
+ dependencies.push(`@ui/${component.toLowerCase()}`);
430
+ }
431
+ });
432
+ return dependencies;
433
+ }
434
+ extractDesignPatterns(componentCode) {
435
+ const patterns = [];
436
+ if (componentCode.includes("className="))
437
+ patterns.push("Tailwind CSS");
438
+ if (componentCode.includes("useState"))
439
+ patterns.push("State Management");
440
+ if (componentCode.includes("useEffect"))
441
+ patterns.push("Side Effects");
442
+ if (componentCode.includes("onClick"))
443
+ patterns.push("Event Handling");
444
+ if (componentCode.includes("disabled"))
445
+ patterns.push("Disabled States");
446
+ if (componentCode.includes("loading"))
447
+ patterns.push("Loading States");
448
+ if (componentCode.includes("error"))
449
+ patterns.push("Error Handling");
450
+ if (componentCode.includes("aria-"))
451
+ patterns.push("Accessibility");
452
+ if (componentCode.includes("transition"))
453
+ patterns.push("Animations");
454
+ if (componentCode.includes("hover:"))
455
+ patterns.push("Hover Effects");
456
+ return patterns;
457
+ }
458
+ assessAccessibility(componentCode) {
459
+ let score = 0;
460
+ if (componentCode.includes("aria-label"))
461
+ score += 20;
462
+ if (componentCode.includes("aria-describedby"))
463
+ score += 15;
464
+ if (componentCode.includes("role="))
465
+ score += 15;
466
+ if (componentCode.includes("tabIndex"))
467
+ score += 10;
468
+ if (componentCode.includes("onKeyDown"))
469
+ score += 10;
470
+ if (componentCode.includes("alt="))
471
+ score += 10;
472
+ if (componentCode.includes("semantic"))
473
+ score += 10;
474
+ if (componentCode.includes("focus"))
475
+ score += 10;
476
+ return Math.min(score, 100);
477
+ }
478
+ assessPerformance(componentCode) {
479
+ let score = 100;
480
+ if (componentCode.includes("useMemo"))
481
+ score += 10;
482
+ if (componentCode.includes("useCallback"))
483
+ score += 10;
484
+ if (componentCode.includes("React.memo"))
485
+ score += 10;
486
+ if (componentCode.includes("lazy"))
487
+ score += 10;
488
+ if (componentCode.includes("suspense"))
489
+ score += 10;
490
+ // Penalties for performance issues
491
+ if (componentCode.includes("setInterval") &&
492
+ !componentCode.includes("clearInterval"))
493
+ score -= 20;
494
+ if (componentCode.includes("addEventListener") &&
495
+ !componentCode.includes("removeEventListener"))
496
+ score -= 20;
497
+ if (componentCode.includes("new Date()") &&
498
+ componentCode.includes("useEffect"))
499
+ score -= 15;
500
+ return Math.max(score, 0);
501
+ }
502
+ hasStateManagement(componentCode) {
503
+ return (componentCode.includes("useState") || componentCode.includes("useReducer"));
504
+ }
505
+ hasSideEffects(componentCode) {
506
+ return (componentCode.includes("useEffect") ||
507
+ componentCode.includes("useLayoutEffect"));
508
+ }
509
+ hasProps(componentCode) {
510
+ return (componentCode.includes("props") ||
511
+ componentCode.includes("interface") ||
512
+ componentCode.includes("type Props"));
513
+ }
514
+ extractComponentName(componentCode) {
515
+ const match = componentCode.match(/export\s+default\s+function\s+(\w+)/);
516
+ return match ? match[1] : "UnknownComponent";
517
+ }
518
+ async generateSuggestions(componentCode, designTokens) {
519
+ const suggestions = {
520
+ accessibility: [],
521
+ performance: [],
522
+ design: [],
523
+ functionality: [],
524
+ };
525
+ // Analyze for accessibility improvements
526
+ if (!componentCode.includes("aria-label")) {
527
+ suggestions.accessibility.push("Add ARIA labels for better screen reader support");
528
+ }
529
+ if (!componentCode.includes("onKeyDown")) {
530
+ suggestions.accessibility.push("Add keyboard navigation support");
531
+ }
532
+ if (!componentCode.includes("focus")) {
533
+ suggestions.accessibility.push("Add focus management for better UX");
534
+ }
535
+ // Analyze for performance improvements
536
+ if (componentCode.includes("useState") &&
537
+ !componentCode.includes("useCallback")) {
538
+ suggestions.performance.push("Consider using useCallback for event handlers");
539
+ }
540
+ if (componentCode.includes("map") && !componentCode.includes("key=")) {
541
+ suggestions.performance.push("Add key prop to mapped elements");
542
+ }
543
+ // Analyze for design improvements
544
+ if (!componentCode.includes("transition")) {
545
+ suggestions.design.push("Add smooth transitions for better user experience");
546
+ }
547
+ if (!componentCode.includes("hover:")) {
548
+ suggestions.design.push("Add hover effects for interactive elements");
549
+ }
550
+ if (!componentCode.includes("responsive")) {
551
+ suggestions.design.push("Ensure responsive design for mobile devices");
552
+ }
553
+ // Analyze for functionality improvements
554
+ if (componentCode.includes("onClick") &&
555
+ !componentCode.includes("disabled")) {
556
+ suggestions.functionality.push("Add loading states for async operations");
557
+ }
558
+ if (!componentCode.includes("error")) {
559
+ suggestions.functionality.push("Add error handling for better reliability");
560
+ }
561
+ return suggestions;
562
+ }
563
+ diffComponents(originalComponent, enhancedComponent) {
564
+ const changes = {
565
+ addedLines: [],
566
+ removedLines: [],
567
+ modifiedLines: [],
568
+ totalChanges: 0,
569
+ };
570
+ const originalLines = originalComponent.split("\n");
571
+ const enhancedLines = enhancedComponent.split("\n");
572
+ // Simple line-by-line comparison
573
+ const maxLines = Math.max(originalLines.length, enhancedLines.length);
574
+ for (let i = 0; i < maxLines; i++) {
575
+ const originalLine = originalLines[i] || "";
576
+ const enhancedLine = enhancedLines[i] || "";
577
+ if (originalLine !== enhancedLine) {
578
+ if (!originalLine) {
579
+ changes.addedLines.push({ line: i + 1, content: enhancedLine });
580
+ }
581
+ else if (!enhancedLine) {
582
+ changes.removedLines.push({ line: i + 1, content: originalLine });
583
+ }
584
+ else {
585
+ changes.modifiedLines.push({
586
+ line: i + 1,
587
+ original: originalLine,
588
+ enhanced: enhancedLine,
589
+ });
590
+ }
591
+ changes.totalChanges++;
592
+ }
593
+ }
594
+ return changes;
595
+ }
596
+ }
597
+ exports.EnhancementAgent = EnhancementAgent;
598
+ //# sourceMappingURL=EnhancementAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnhancementAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/EnhancementAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * QASubAgent Implementation
3
+ *
4
+ * Specialized sub-agent for quality assurance and code validation.
5
+ * Uses Claude Sonnet for analytical capabilities.
6
+ */
7
+ import { SubAgent, QAValidationInput, QAValidationOutput } from "../interfaces/SubAgent";
8
+ export declare class QASubAgent implements SubAgent<QAValidationInput, QAValidationOutput> {
9
+ name: string;
10
+ description: string;
11
+ personality: string;
12
+ llmProvider: string;
13
+ expertise: string[];
14
+ constructor();
15
+ run(input: QAValidationInput): Promise<QAValidationOutput>;
16
+ validate(input: QAValidationInput): Promise<boolean>;
17
+ getStatus(): Promise<{
18
+ name: string;
19
+ status: "idle" | "running" | "completed" | "error";
20
+ lastRun?: Date;
21
+ executionTime?: number;
22
+ errorCount: number;
23
+ successCount: number;
24
+ }>;
25
+ private checkTypeScriptCompliance;
26
+ private checkReactBestPractices;
27
+ private checkAccessibility;
28
+ private checkPerformance;
29
+ private checkSecurity;
30
+ }
31
+ //# sourceMappingURL=QASubAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QASubAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/QASubAgent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAGhC,qBAAa,UACX,YAAW,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAE1D,IAAI,SAAgB;IACpB,WAAW,SACoE;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;;IAad,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+B1D,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,SAAS,IAAI,OAAO,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;QACnD,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;YASY,yBAAyB;YAuCzB,uBAAuB;YAsCvB,kBAAkB;YA6BlB,gBAAgB;YAgChB,aAAa;CA6B5B"}