mycontext-cli 1.0.94 → 2.0.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/README.md +446 -130
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts +110 -0
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +1 -0
- package/dist/agents/implementations/ClaudeAgentWorkflow.js +590 -0
- package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +1 -0
- package/dist/agents/implementations/WorkflowAgent.d.ts +5 -0
- package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.js +98 -10
- package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
- package/dist/agents/interfaces/SubAgent.d.ts +5 -0
- package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
- package/dist/commands/build-app.d.ts +5 -0
- package/dist/commands/build-app.d.ts.map +1 -1
- package/dist/commands/build-app.js +127 -4
- package/dist/commands/build-app.js.map +1 -1
- package/dist/commands/compile-prd.d.ts.map +1 -1
- package/dist/commands/compile-prd.js +18 -54
- package/dist/commands/compile-prd.js.map +1 -1
- package/dist/commands/enhance.d.ts +21 -0
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +155 -12
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts +43 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +270 -0
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/constants/fileNames.d.ts +68 -0
- package/dist/constants/fileNames.d.ts.map +1 -0
- package/dist/constants/fileNames.js +102 -0
- package/dist/constants/fileNames.js.map +1 -0
- package/dist/interfaces/AIClient.d.ts +198 -0
- package/dist/interfaces/AIClient.d.ts.map +1 -0
- package/dist/interfaces/AIClient.js +40 -0
- package/dist/interfaces/AIClient.js.map +1 -0
- package/dist/package.json +5 -3
- package/dist/types/index.d.ts +423 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/agentDefinitions.d.ts +60 -0
- package/dist/utils/agentDefinitions.d.ts.map +1 -0
- package/dist/utils/agentDefinitions.js +344 -0
- package/dist/utils/agentDefinitions.js.map +1 -0
- package/dist/utils/aiClientFactory.d.ts +93 -0
- package/dist/utils/aiClientFactory.d.ts.map +1 -0
- package/dist/utils/aiClientFactory.js +290 -0
- package/dist/utils/aiClientFactory.js.map +1 -0
- package/dist/utils/aiClientRouter.d.ts +121 -0
- package/dist/utils/aiClientRouter.d.ts.map +1 -0
- package/dist/utils/aiClientRouter.js +401 -0
- package/dist/utils/aiClientRouter.js.map +1 -0
- package/dist/utils/claudeAgentClient.d.ts +166 -0
- package/dist/utils/claudeAgentClient.d.ts.map +1 -0
- package/dist/utils/claudeAgentClient.js +714 -0
- package/dist/utils/claudeAgentClient.js.map +1 -0
- package/dist/utils/claudeClient.d.ts +7 -3
- package/dist/utils/claudeClient.d.ts.map +1 -1
- package/dist/utils/claudeClient.js +28 -5
- package/dist/utils/claudeClient.js.map +1 -1
- package/dist/utils/completeArchitectureEngine.d.ts +67 -0
- package/dist/utils/completeArchitectureEngine.d.ts.map +1 -0
- package/dist/utils/completeArchitectureEngine.js +329 -0
- package/dist/utils/completeArchitectureEngine.js.map +1 -0
- package/dist/utils/contextLoader.d.ts +1 -12
- package/dist/utils/contextLoader.d.ts.map +1 -1
- package/dist/utils/contextLoader.js +29 -150
- package/dist/utils/contextLoader.js.map +1 -1
- package/dist/utils/contextManager.d.ts +76 -0
- package/dist/utils/contextManager.d.ts.map +1 -0
- package/dist/utils/contextManager.js +327 -0
- package/dist/utils/contextManager.js.map +1 -0
- package/dist/utils/hybridAIClient.d.ts +25 -1
- package/dist/utils/hybridAIClient.d.ts.map +1 -1
- package/dist/utils/hybridAIClient.js +69 -2
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/mcpAgentIntegration.d.ts +104 -0
- package/dist/utils/mcpAgentIntegration.d.ts.map +1 -0
- package/dist/utils/mcpAgentIntegration.js +382 -0
- package/dist/utils/mcpAgentIntegration.js.map +1 -0
- package/dist/utils/mcpTools.d.ts +164 -0
- package/dist/utils/mcpTools.d.ts.map +1 -0
- package/dist/utils/mcpTools.js +385 -0
- package/dist/utils/mcpTools.js.map +1 -0
- package/dist/utils/routeGenerator.d.ts +56 -0
- package/dist/utils/routeGenerator.d.ts.map +1 -0
- package/dist/utils/routeGenerator.js +231 -0
- package/dist/utils/routeGenerator.js.map +1 -0
- package/dist/utils/serverActionGenerator.d.ts +56 -0
- package/dist/utils/serverActionGenerator.d.ts.map +1 -0
- package/dist/utils/serverActionGenerator.js +258 -0
- package/dist/utils/serverActionGenerator.js.map +1 -0
- package/dist/utils/streamingHandler.d.ts +98 -0
- package/dist/utils/streamingHandler.d.ts.map +1 -0
- package/dist/utils/streamingHandler.js +259 -0
- package/dist/utils/streamingHandler.js.map +1 -0
- package/dist/utils/toolPermissions.d.ts +105 -0
- package/dist/utils/toolPermissions.d.ts.map +1 -0
- package/dist/utils/toolPermissions.js +408 -0
- package/dist/utils/toolPermissions.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools for MyContext CLI
|
|
4
|
+
*
|
|
5
|
+
* Custom tools that extend Claude Agent SDK capabilities
|
|
6
|
+
* with MyContext-specific functionality.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.generateDocsTool = exports.checkTypesTool = exports.validatePRDTool = exports.analyzeComponentTool = void 0;
|
|
43
|
+
exports.getAllMCPTools = getAllMCPTools;
|
|
44
|
+
exports.getMCPToolByName = getMCPToolByName;
|
|
45
|
+
const claude_agent_sdk_1 = require("@anthropic-ai/claude-agent-sdk");
|
|
46
|
+
const zod_1 = require("zod");
|
|
47
|
+
const fs = __importStar(require("fs-extra"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
/**
|
|
50
|
+
* Analyze React component structure and dependencies
|
|
51
|
+
*/
|
|
52
|
+
exports.analyzeComponentTool = (0, claude_agent_sdk_1.tool)('AnalyzeComponent', 'Analyzes a React component file structure, dependencies, props, and provides insights', {
|
|
53
|
+
filePath: zod_1.z.string().describe('Path to the component file'),
|
|
54
|
+
checkTypes: zod_1.z.boolean().optional().describe('Whether to analyze TypeScript types'),
|
|
55
|
+
checkImports: zod_1.z.boolean().optional().describe('Whether to analyze imports'),
|
|
56
|
+
}, async (args) => {
|
|
57
|
+
try {
|
|
58
|
+
const { filePath, checkTypes = true, checkImports = true } = args;
|
|
59
|
+
if (!await fs.pathExists(filePath)) {
|
|
60
|
+
return {
|
|
61
|
+
content: [{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: `Error: File not found at ${filePath}`
|
|
64
|
+
}],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
69
|
+
const analysis = [];
|
|
70
|
+
analysis.push(`# Component Analysis: ${path.basename(filePath)}\n`);
|
|
71
|
+
analysis.push(`**File:** ${filePath}`);
|
|
72
|
+
analysis.push(`**Lines:** ${content.split('\n').length}\n`);
|
|
73
|
+
// Check for React component
|
|
74
|
+
const hasReactImport = /import.*React.*from\s+['"]react['"]/.test(content);
|
|
75
|
+
const isComponent = /export\s+(default\s+)?(?:function|const|class)\s+\w+/.test(content);
|
|
76
|
+
analysis.push(`**Is React Component:** ${isComponent ? 'Yes' : 'No'}`);
|
|
77
|
+
if (checkImports) {
|
|
78
|
+
const imports = content.match(/import\s+.+\s+from\s+['"].+['"]/g) || [];
|
|
79
|
+
analysis.push(`\n## Imports (${imports.length})`);
|
|
80
|
+
imports.slice(0, 10).forEach(imp => analysis.push(`- ${imp}`));
|
|
81
|
+
if (imports.length > 10) {
|
|
82
|
+
analysis.push(`... and ${imports.length - 10} more`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (checkTypes) {
|
|
86
|
+
const interfaces = content.match(/(?:interface|type)\s+\w+/g) || [];
|
|
87
|
+
analysis.push(`\n## Type Definitions (${interfaces.length})`);
|
|
88
|
+
interfaces.forEach(type => analysis.push(`- ${type}`));
|
|
89
|
+
}
|
|
90
|
+
// Check for props
|
|
91
|
+
const propsMatch = content.match(/(?:interface|type)\s+(\w+Props)/);
|
|
92
|
+
if (propsMatch) {
|
|
93
|
+
analysis.push(`\n## Props Interface: ${propsMatch[1]}`);
|
|
94
|
+
}
|
|
95
|
+
// Check for hooks
|
|
96
|
+
const hooks = content.match(/use[A-Z]\w+/g) || [];
|
|
97
|
+
const uniqueHooks = [...new Set(hooks)];
|
|
98
|
+
if (uniqueHooks.length > 0) {
|
|
99
|
+
analysis.push(`\n## Hooks Used (${uniqueHooks.length})`);
|
|
100
|
+
uniqueHooks.forEach(hook => analysis.push(`- ${hook}`));
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
content: [{
|
|
104
|
+
type: 'text',
|
|
105
|
+
text: analysis.join('\n')
|
|
106
|
+
}],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return {
|
|
111
|
+
content: [{
|
|
112
|
+
type: 'text',
|
|
113
|
+
text: `Error analyzing component: ${error.message}`
|
|
114
|
+
}],
|
|
115
|
+
isError: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Validate PRD structure and completeness
|
|
121
|
+
*/
|
|
122
|
+
exports.validatePRDTool = (0, claude_agent_sdk_1.tool)('ValidatePRD', 'Validates a Product Requirements Document (PRD) for completeness and structure', {
|
|
123
|
+
prdPath: zod_1.z.string().describe('Path to the PRD file (usually .mycontext/01-prd.md)'),
|
|
124
|
+
}, async (args) => {
|
|
125
|
+
try {
|
|
126
|
+
const { prdPath } = args;
|
|
127
|
+
if (!await fs.pathExists(prdPath)) {
|
|
128
|
+
return {
|
|
129
|
+
content: [{
|
|
130
|
+
type: 'text',
|
|
131
|
+
text: `Error: PRD file not found at ${prdPath}`
|
|
132
|
+
}],
|
|
133
|
+
isError: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const content = await fs.readFile(prdPath, 'utf-8');
|
|
137
|
+
const issues = [];
|
|
138
|
+
const score = { total: 0, passed: 0 };
|
|
139
|
+
// Check for required sections
|
|
140
|
+
const requiredSections = [
|
|
141
|
+
{ name: 'Project Overview', pattern: /#+\s*(?:Project\s+)?Overview/i },
|
|
142
|
+
{ name: 'Features', pattern: /#+\s*(?:Key\s+)?Features/i },
|
|
143
|
+
{ name: 'User Stories', pattern: /#+\s*User\s+(?:Stories|Flows)/i },
|
|
144
|
+
{ name: 'Technical Stack', pattern: /#+\s*(?:Tech|Technical)\s+Stack/i },
|
|
145
|
+
];
|
|
146
|
+
requiredSections.forEach(section => {
|
|
147
|
+
score.total++;
|
|
148
|
+
if (section.pattern.test(content)) {
|
|
149
|
+
score.passed++;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
issues.push(`❌ Missing section: ${section.name}`);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Check content length
|
|
156
|
+
score.total++;
|
|
157
|
+
if (content.length < 500) {
|
|
158
|
+
issues.push('❌ PRD is too short (< 500 characters)');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
score.passed++;
|
|
162
|
+
}
|
|
163
|
+
// Check for code blocks (technical specifications)
|
|
164
|
+
score.total++;
|
|
165
|
+
if (/```/.test(content)) {
|
|
166
|
+
score.passed++;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
issues.push('⚠️ No code examples or technical specifications found');
|
|
170
|
+
}
|
|
171
|
+
const percentage = Math.round((score.passed / score.total) * 100);
|
|
172
|
+
const result = [];
|
|
173
|
+
result.push(`# PRD Validation Report\n`);
|
|
174
|
+
result.push(`**File:** ${prdPath}`);
|
|
175
|
+
result.push(`**Score:** ${score.passed}/${score.total} (${percentage}%)\n`);
|
|
176
|
+
if (issues.length > 0) {
|
|
177
|
+
result.push(`## Issues Found (${issues.length})\n`);
|
|
178
|
+
issues.forEach(issue => result.push(issue));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
result.push(`✅ PRD is complete and well-structured!`);
|
|
182
|
+
}
|
|
183
|
+
result.push(`\n## Recommendations`);
|
|
184
|
+
if (percentage < 60) {
|
|
185
|
+
result.push('- PRD needs significant improvement');
|
|
186
|
+
result.push('- Add missing sections and more detail');
|
|
187
|
+
}
|
|
188
|
+
else if (percentage < 80) {
|
|
189
|
+
result.push('- PRD is good but could be enhanced');
|
|
190
|
+
result.push('- Consider adding more technical specifications');
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
result.push('- PRD is excellent! Ready for implementation');
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
content: [{
|
|
197
|
+
type: 'text',
|
|
198
|
+
text: result.join('\n')
|
|
199
|
+
}],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
return {
|
|
204
|
+
content: [{
|
|
205
|
+
type: 'text',
|
|
206
|
+
text: `Error validating PRD: ${error.message}`
|
|
207
|
+
}],
|
|
208
|
+
isError: true,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
/**
|
|
213
|
+
* Check TypeScript types in generated code
|
|
214
|
+
*/
|
|
215
|
+
exports.checkTypesTool = (0, claude_agent_sdk_1.tool)('CheckTypes', 'Validates TypeScript types in a file or directory', {
|
|
216
|
+
targetPath: zod_1.z.string().describe('Path to file or directory to check'),
|
|
217
|
+
strict: zod_1.z.boolean().optional().describe('Whether to use strict type checking'),
|
|
218
|
+
}, async (args) => {
|
|
219
|
+
try {
|
|
220
|
+
const { targetPath, strict = false } = args;
|
|
221
|
+
if (!await fs.pathExists(targetPath)) {
|
|
222
|
+
return {
|
|
223
|
+
content: [{
|
|
224
|
+
type: 'text',
|
|
225
|
+
text: `Error: Path not found at ${targetPath}`
|
|
226
|
+
}],
|
|
227
|
+
isError: true,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const result = [];
|
|
231
|
+
result.push(`# Type Check: ${path.basename(targetPath)}\n`);
|
|
232
|
+
// Check if it's a TypeScript file
|
|
233
|
+
const isTypeScript = targetPath.endsWith('.ts') || targetPath.endsWith('.tsx');
|
|
234
|
+
if (!isTypeScript) {
|
|
235
|
+
result.push('⚠️ Not a TypeScript file');
|
|
236
|
+
return {
|
|
237
|
+
content: [{
|
|
238
|
+
type: 'text',
|
|
239
|
+
text: result.join('\n')
|
|
240
|
+
}],
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
const content = await fs.readFile(targetPath, 'utf-8');
|
|
244
|
+
// Check for common issues
|
|
245
|
+
const issues = [];
|
|
246
|
+
// Check for 'any' types (if strict)
|
|
247
|
+
if (strict) {
|
|
248
|
+
const anyCount = (content.match(/:\s*any\b/g) || []).length;
|
|
249
|
+
if (anyCount > 0) {
|
|
250
|
+
issues.push(`⚠️ Found ${anyCount} usage(s) of 'any' type`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Check for proper type exports
|
|
254
|
+
const hasTypeExport = /export\s+(?:type|interface)/.test(content);
|
|
255
|
+
if (hasTypeExport) {
|
|
256
|
+
result.push('✅ Contains exported types/interfaces');
|
|
257
|
+
}
|
|
258
|
+
// Check for proper prop types
|
|
259
|
+
const hasPropTypes = /\w+Props\s*[={]/.test(content);
|
|
260
|
+
if (hasPropTypes) {
|
|
261
|
+
result.push('✅ Defines prop types');
|
|
262
|
+
}
|
|
263
|
+
if (issues.length > 0) {
|
|
264
|
+
result.push('\n## Issues Found:');
|
|
265
|
+
issues.forEach(issue => result.push(issue));
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
result.push('\n✅ No type issues found');
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
content: [{
|
|
272
|
+
type: 'text',
|
|
273
|
+
text: result.join('\n')
|
|
274
|
+
}],
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
return {
|
|
279
|
+
content: [{
|
|
280
|
+
type: 'text',
|
|
281
|
+
text: `Error checking types: ${error.message}`
|
|
282
|
+
}],
|
|
283
|
+
isError: true,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
/**
|
|
288
|
+
* Generate component documentation
|
|
289
|
+
*/
|
|
290
|
+
exports.generateDocsTool = (0, claude_agent_sdk_1.tool)('GenerateDocs', 'Generates documentation for a React component', {
|
|
291
|
+
componentPath: zod_1.z.string().describe('Path to the component file'),
|
|
292
|
+
outputPath: zod_1.z.string().optional().describe('Where to save the documentation'),
|
|
293
|
+
}, async (args) => {
|
|
294
|
+
try {
|
|
295
|
+
const { componentPath, outputPath } = args;
|
|
296
|
+
if (!await fs.pathExists(componentPath)) {
|
|
297
|
+
return {
|
|
298
|
+
content: [{
|
|
299
|
+
type: 'text',
|
|
300
|
+
text: `Error: Component not found at ${componentPath}`
|
|
301
|
+
}],
|
|
302
|
+
isError: true,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
const content = await fs.readFile(componentPath, 'utf-8');
|
|
306
|
+
const componentName = path.basename(componentPath, path.extname(componentPath));
|
|
307
|
+
const docs = [];
|
|
308
|
+
docs.push(`# ${componentName}\n`);
|
|
309
|
+
docs.push(`Component documentation auto-generated from \`${componentPath}\`\n`);
|
|
310
|
+
// Extract description from comments
|
|
311
|
+
const descMatch = content.match(/\/\*\*\s*\n\s*\*\s*(.+)\n/);
|
|
312
|
+
if (descMatch) {
|
|
313
|
+
docs.push(`## Description\n`);
|
|
314
|
+
docs.push(descMatch[1]);
|
|
315
|
+
docs.push('');
|
|
316
|
+
}
|
|
317
|
+
// Extract props interface
|
|
318
|
+
const propsMatch = content.match(/(?:interface|type)\s+(\w+Props)\s*=?\s*{([^}]+)}/);
|
|
319
|
+
if (propsMatch) {
|
|
320
|
+
docs.push(`## Props\n`);
|
|
321
|
+
docs.push('```typescript');
|
|
322
|
+
docs.push(propsMatch[0]);
|
|
323
|
+
docs.push('```\n');
|
|
324
|
+
}
|
|
325
|
+
// Extract imports
|
|
326
|
+
const imports = content.match(/import\s+.+\s+from\s+['"].+['"]/g) || [];
|
|
327
|
+
if (imports.length > 0) {
|
|
328
|
+
docs.push(`## Dependencies\n`);
|
|
329
|
+
imports.slice(0, 5).forEach(imp => {
|
|
330
|
+
const match = imp.match(/from\s+['"](.+)['"]/);
|
|
331
|
+
if (match) {
|
|
332
|
+
docs.push(`- \`${match[1]}\``);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
docs.push('');
|
|
336
|
+
}
|
|
337
|
+
// Usage example
|
|
338
|
+
docs.push(`## Usage\n`);
|
|
339
|
+
docs.push('```tsx');
|
|
340
|
+
docs.push(`import ${componentName} from './${componentName}';`);
|
|
341
|
+
docs.push('');
|
|
342
|
+
docs.push(`<${componentName} />`);
|
|
343
|
+
docs.push('```');
|
|
344
|
+
const docsContent = docs.join('\n');
|
|
345
|
+
// Save if output path provided
|
|
346
|
+
if (outputPath) {
|
|
347
|
+
await fs.ensureDir(path.dirname(outputPath));
|
|
348
|
+
await fs.writeFile(outputPath, docsContent, 'utf-8');
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
content: [{
|
|
352
|
+
type: 'text',
|
|
353
|
+
text: `Documentation generated successfully!\n\n${docsContent}`
|
|
354
|
+
}],
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
return {
|
|
359
|
+
content: [{
|
|
360
|
+
type: 'text',
|
|
361
|
+
text: `Error generating docs: ${error.message}`
|
|
362
|
+
}],
|
|
363
|
+
isError: true,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
/**
|
|
368
|
+
* Get all available MCP tools
|
|
369
|
+
*/
|
|
370
|
+
function getAllMCPTools() {
|
|
371
|
+
return [
|
|
372
|
+
exports.analyzeComponentTool,
|
|
373
|
+
exports.validatePRDTool,
|
|
374
|
+
exports.checkTypesTool,
|
|
375
|
+
exports.generateDocsTool,
|
|
376
|
+
];
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Get MCP tools by name
|
|
380
|
+
*/
|
|
381
|
+
function getMCPToolByName(name) {
|
|
382
|
+
const tools = getAllMCPTools();
|
|
383
|
+
return tools.find(tool => tool.name === name);
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=mcpTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpTools.js","sourceRoot":"","sources":["../../src/utils/mcpTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { RouteDefinition, EnhancedComponent, ServerActionDefinition } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Route Generator
|
|
4
|
+
* Generates Next.js App Router routes based on component hierarchy
|
|
5
|
+
*/
|
|
6
|
+
export declare class RouteGenerator {
|
|
7
|
+
/**
|
|
8
|
+
* Generate routes for a component
|
|
9
|
+
*/
|
|
10
|
+
generateRoutes(component: EnhancedComponent, level: number, parentPath?: string): Promise<RouteDefinition[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Generate root route
|
|
13
|
+
*/
|
|
14
|
+
private generateRootRoute;
|
|
15
|
+
/**
|
|
16
|
+
* Generate feature route
|
|
17
|
+
*/
|
|
18
|
+
private generateFeatureRoute;
|
|
19
|
+
/**
|
|
20
|
+
* Generate form routes (create, edit)
|
|
21
|
+
*/
|
|
22
|
+
private generateFormRoutes;
|
|
23
|
+
/**
|
|
24
|
+
* Generate dynamic route
|
|
25
|
+
*/
|
|
26
|
+
private generateDynamicRoute;
|
|
27
|
+
/**
|
|
28
|
+
* Generate route metadata from component and actions
|
|
29
|
+
*/
|
|
30
|
+
generateRouteMetadata(component: EnhancedComponent, actions: ServerActionDefinition[]): RouteDefinition["metadata"];
|
|
31
|
+
/**
|
|
32
|
+
* Determine if component needs a dynamic route
|
|
33
|
+
*/
|
|
34
|
+
private needsDynamicRoute;
|
|
35
|
+
/**
|
|
36
|
+
* Collect all component names from hierarchy
|
|
37
|
+
*/
|
|
38
|
+
private collectComponentNames;
|
|
39
|
+
/**
|
|
40
|
+
* Extract base name from component name (e.g., "ProductForm" -> "Product")
|
|
41
|
+
*/
|
|
42
|
+
private extractBaseName;
|
|
43
|
+
/**
|
|
44
|
+
* Helper: Convert to kebab-case
|
|
45
|
+
*/
|
|
46
|
+
private toKebabCase;
|
|
47
|
+
/**
|
|
48
|
+
* Generate layout file content for route
|
|
49
|
+
*/
|
|
50
|
+
generateLayoutContent(component: EnhancedComponent, childRoutes: RouteDefinition[]): string;
|
|
51
|
+
/**
|
|
52
|
+
* Generate page file content for route
|
|
53
|
+
*/
|
|
54
|
+
generatePageContent(component: EnhancedComponent, route: RouteDefinition): string;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=routeGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/routeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAW,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC;IA0B7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,sBAAsB,EAAE,GAChC,eAAe,CAAC,UAAU,CAAC;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM;IAmBT;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,eAAe,GACrB,MAAM;CAmBV"}
|