metacoding 1.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/LICENSE +21 -0
  3. package/README.md +244 -0
  4. package/bin/metacoding.js +27 -0
  5. package/lib/cli.d.ts +2 -0
  6. package/lib/cli.d.ts.map +1 -0
  7. package/lib/cli.js +83 -0
  8. package/lib/cli.js.map +1 -0
  9. package/lib/commands/init.d.ts +15 -0
  10. package/lib/commands/init.d.ts.map +1 -0
  11. package/lib/commands/init.js +185 -0
  12. package/lib/commands/init.js.map +1 -0
  13. package/lib/commands/update.d.ts +5 -0
  14. package/lib/commands/update.d.ts.map +1 -0
  15. package/lib/commands/update.js +20 -0
  16. package/lib/commands/update.js.map +1 -0
  17. package/lib/commands/validate.d.ts +5 -0
  18. package/lib/commands/validate.d.ts.map +1 -0
  19. package/lib/commands/validate.js +20 -0
  20. package/lib/commands/validate.js.map +1 -0
  21. package/lib/services/filesystem.d.ts +13 -0
  22. package/lib/services/filesystem.d.ts.map +1 -0
  23. package/lib/services/filesystem.js +84 -0
  24. package/lib/services/filesystem.js.map +1 -0
  25. package/lib/services/project-detector.d.ts +12 -0
  26. package/lib/services/project-detector.d.ts.map +1 -0
  27. package/lib/services/project-detector.js +191 -0
  28. package/lib/services/project-detector.js.map +1 -0
  29. package/lib/services/template-manager.d.ts +15 -0
  30. package/lib/services/template-manager.d.ts.map +1 -0
  31. package/lib/services/template-manager.js +167 -0
  32. package/lib/services/template-manager.js.map +1 -0
  33. package/lib/services/vscode.d.ts +10 -0
  34. package/lib/services/vscode.d.ts.map +1 -0
  35. package/lib/services/vscode.js +108 -0
  36. package/lib/services/vscode.js.map +1 -0
  37. package/lib/types/index.d.ts +66 -0
  38. package/lib/types/index.d.ts.map +1 -0
  39. package/lib/types/index.js +3 -0
  40. package/lib/types/index.js.map +1 -0
  41. package/package.json +134 -0
  42. package/templates/general/files/code-review.instructions.md +111 -0
  43. package/templates/general/files/copilot-instructions.md.template +404 -0
  44. package/templates/general/files/docs-update.instructions.md +203 -0
  45. package/templates/general/files/release.instructions.md +72 -0
  46. package/templates/general/files/test-runner.instructions.md +107 -0
  47. package/templates/general/template.json +9 -0
  48. package/templates/node/files/code-review.instructions.md +222 -0
  49. package/templates/node/files/copilot-instructions.md.template +391 -0
  50. package/templates/node/files/docs-update.instructions.md +203 -0
  51. package/templates/node/files/release.instructions.md +72 -0
  52. package/templates/node/files/test-runner.instructions.md +108 -0
  53. package/templates/node/template.json +23 -0
  54. package/templates/python/files/code-review.instructions.md +215 -0
  55. package/templates/python/files/copilot-instructions.md.template +418 -0
  56. package/templates/python/files/docs-update.instructions.md +203 -0
  57. package/templates/python/files/release.instructions.md +72 -0
  58. package/templates/python/files/test-runner.instructions.md +108 -0
  59. package/templates/python/template.json +75 -0
  60. package/templates/react/files/code-review.instructions.md +160 -0
  61. package/templates/react/files/copilot-instructions.md.template +472 -0
  62. package/templates/react/files/docs-update.instructions.md +203 -0
  63. package/templates/react/files/release.instructions.md +72 -0
  64. package/templates/react/files/test-runner.instructions.md +108 -0
  65. package/templates/react/template.json +14 -0
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InitCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const template_manager_1 = require("../services/template-manager");
11
+ const filesystem_1 = require("../services/filesystem");
12
+ const vscode_1 = require("../services/vscode");
13
+ const project_detector_1 = require("../services/project-detector");
14
+ class InitCommand {
15
+ constructor() {
16
+ this.templateManager = new template_manager_1.TemplateManager();
17
+ this.fileSystem = new filesystem_1.FileSystemService();
18
+ this.vscodeService = new vscode_1.VSCodeService();
19
+ this.projectDetector = new project_detector_1.ProjectDetector();
20
+ }
21
+ async execute(options) {
22
+ console.log(chalk_1.default.cyan.bold('🚀 Welcome to metacoding Setup!\n'));
23
+ const projectInfo = await this.projectDetector.detectProject();
24
+ if ((await this.fileSystem.isMetaCodingSetup()) && !options.force) {
25
+ const { proceed } = await inquirer_1.default.prompt([
26
+ {
27
+ type: 'confirm',
28
+ name: 'proceed',
29
+ message: 'metacoding is already set up in this directory. Do you want to reconfigure it?',
30
+ default: false,
31
+ },
32
+ ]);
33
+ if (!proceed) {
34
+ console.log(chalk_1.default.yellow('Setup cancelled.'));
35
+ return;
36
+ }
37
+ }
38
+ const config = await this.getProjectConfiguration(options, projectInfo);
39
+ await this.setupProject(config, options);
40
+ console.log(chalk_1.default.green.bold('\n✅ metacoding setup complete!\n'));
41
+ this.displayNextSteps();
42
+ }
43
+ async getProjectConfiguration(options, projectInfo) {
44
+ if (options.force && process.env.NODE_ENV === 'test') {
45
+ return {
46
+ name: projectInfo.name || 'test-project',
47
+ description: 'A test project using metacoding workflow',
48
+ techStack: ['TypeScript', 'Jest'],
49
+ projectType: options.template,
50
+ testFramework: 'Jest',
51
+ buildTool: 'TypeScript Compiler',
52
+ };
53
+ }
54
+ const questions = [
55
+ {
56
+ type: 'input',
57
+ name: 'name',
58
+ message: 'Project name:',
59
+ default: projectInfo.name || 'my-project',
60
+ validate: (input) => {
61
+ if (!input.trim()) {
62
+ return 'Project name is required';
63
+ }
64
+ return true;
65
+ },
66
+ },
67
+ {
68
+ type: 'input',
69
+ name: 'description',
70
+ message: 'Project description:',
71
+ default: 'A guided development project using metacoding workflow',
72
+ },
73
+ {
74
+ type: 'list',
75
+ name: 'projectType',
76
+ message: 'What type of project are you working on?',
77
+ choices: [
78
+ { name: 'React/Frontend Application', value: 'react' },
79
+ { name: 'Node.js/Backend Application', value: 'node' },
80
+ { name: 'Python Application', value: 'python' },
81
+ { name: 'General/Other', value: 'general' },
82
+ ],
83
+ default: options.template !== 'general' ? options.template : undefined,
84
+ },
85
+ {
86
+ type: 'input',
87
+ name: 'techStack',
88
+ message: 'Tech stack (comma-separated):',
89
+ default: (answers) => {
90
+ switch (answers.projectType) {
91
+ case 'react':
92
+ return 'React, TypeScript, Jest, Vite';
93
+ case 'node':
94
+ return 'Node.js, TypeScript, Express, Jest';
95
+ case 'python':
96
+ return 'Python, FastAPI, Pytest';
97
+ default:
98
+ return 'TypeScript, Jest';
99
+ }
100
+ },
101
+ filter: (input) => input.split(',').map((item) => item.trim()),
102
+ },
103
+ {
104
+ type: 'confirm',
105
+ name: 'enableTesting',
106
+ message: 'Enable test automation features?',
107
+ default: true,
108
+ },
109
+ {
110
+ type: 'confirm',
111
+ name: 'enableReleaseManagement',
112
+ message: 'Enable release management workflow?',
113
+ default: true,
114
+ },
115
+ ];
116
+ const answers = await inquirer_1.default.prompt(questions);
117
+ return {
118
+ name: answers.name,
119
+ description: answers.description,
120
+ techStack: answers.techStack,
121
+ projectType: answers.projectType,
122
+ testFramework: answers.enableTesting
123
+ ? this.getDefaultTestFramework(answers.projectType)
124
+ : undefined,
125
+ buildTool: this.getDefaultBuildTool(answers.projectType),
126
+ };
127
+ }
128
+ async setupProject(config, options) {
129
+ const spinner = (0, ora_1.default)('Setting up metacoding files...').start();
130
+ try {
131
+ await this.fileSystem.ensureDirectoryExists('.github');
132
+ await this.fileSystem.ensureDirectoryExists('.github/instructions');
133
+ const template = await this.templateManager.getTemplate(config.projectType);
134
+ const processedFiles = await this.templateManager.processTemplate(template, config);
135
+ for (const file of processedFiles) {
136
+ await this.fileSystem.writeFile(file.path, file.content);
137
+ spinner.text = `Created ${file.path}`;
138
+ }
139
+ if (!options.skipVscode) {
140
+ spinner.text = 'Configuring VS Code settings...';
141
+ await this.vscodeService.updateSettings(template.vscodeSettings || {});
142
+ }
143
+ spinner.succeed('metacoding files created successfully');
144
+ }
145
+ catch (error) {
146
+ spinner.fail('Failed to set up metacoding');
147
+ throw error;
148
+ }
149
+ }
150
+ getDefaultTestFramework(projectType) {
151
+ switch (projectType) {
152
+ case 'react':
153
+ return 'Jest + React Testing Library';
154
+ case 'node':
155
+ return 'Jest';
156
+ case 'python':
157
+ return 'Pytest';
158
+ default:
159
+ return 'Jest';
160
+ }
161
+ }
162
+ getDefaultBuildTool(projectType) {
163
+ switch (projectType) {
164
+ case 'react':
165
+ return 'Vite';
166
+ case 'node':
167
+ return 'TypeScript Compiler';
168
+ case 'python':
169
+ return 'Poetry';
170
+ default:
171
+ return 'TypeScript Compiler';
172
+ }
173
+ }
174
+ displayNextSteps() {
175
+ console.log(chalk_1.default.cyan('Next steps:'));
176
+ console.log(chalk_1.default.dim('1.'), 'Restart VS Code to apply settings');
177
+ console.log(chalk_1.default.dim('2.'), 'Open GitHub Copilot Chat');
178
+ console.log(chalk_1.default.dim('3.'), 'Ask: "What are the coding standards for this project?"');
179
+ console.log(chalk_1.default.dim('4.'), 'Start coding with guided workflow support!');
180
+ console.log('');
181
+ console.log(chalk_1.default.cyan('Need help?'), 'Visit https://github.com/anton-g-kulikov/metacoding');
182
+ }
183
+ }
184
+ exports.InitCommand = InitCommand;
185
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { UpdateOptions } from '../types';
2
+ export declare class UpdateCommand {
3
+ execute(_options: UpdateOptions): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,qBAAa,aAAa;IAClB,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAWtD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UpdateCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ class UpdateCommand {
9
+ async execute(_options) {
10
+ console.log(chalk_1.default.cyan('🔄 Updating metacoding setup...\n'));
11
+ console.log(chalk_1.default.yellow('⚠️ Update command is not yet implemented.'));
12
+ console.log(chalk_1.default.dim('This feature will:'));
13
+ console.log(chalk_1.default.dim('- Update instruction files to latest version'));
14
+ console.log(chalk_1.default.dim('- Migrate configuration if needed'));
15
+ console.log(chalk_1.default.dim('- Backup existing files'));
16
+ console.log(chalk_1.default.dim('- Apply template updates'));
17
+ }
18
+ }
19
+ exports.UpdateCommand = UpdateCommand;
20
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAM1B,MAAa,aAAa;IACxB,KAAK,CAAC,OAAO,CAAC,QAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAG7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,CAAC;CACF;AAZD,sCAYC"}
@@ -0,0 +1,5 @@
1
+ import { ValidateOptions } from '../types';
2
+ export declare class ValidateCommand {
3
+ execute(_options: ValidateOptions): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK3C,qBAAa,eAAe;IACpB,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAWxD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ValidateCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ class ValidateCommand {
9
+ async execute(_options) {
10
+ console.log(chalk_1.default.cyan('🔍 Validating metacoding setup...\n'));
11
+ console.log(chalk_1.default.yellow('⚠️ Validation command is not yet implemented.'));
12
+ console.log(chalk_1.default.dim('This feature will check:'));
13
+ console.log(chalk_1.default.dim('- Required files exist'));
14
+ console.log(chalk_1.default.dim('- VS Code settings are configured'));
15
+ console.log(chalk_1.default.dim('- Instruction files are valid'));
16
+ console.log(chalk_1.default.dim('- Template consistency'));
17
+ }
18
+ }
19
+ exports.ValidateCommand = ValidateCommand;
20
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAM1B,MAAa,eAAe;IAC1B,KAAK,CAAC,OAAO,CAAC,QAAyB;QACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAG/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAZD,0CAYC"}
@@ -0,0 +1,13 @@
1
+ export declare class FileSystemService {
2
+ isMetaCodingSetup(): Promise<boolean>;
3
+ ensureDirectoryExists(dirPath: string): Promise<void>;
4
+ writeFile(filePath: string, content: string): Promise<void>;
5
+ readFile(filePath: string): Promise<string>;
6
+ fileExists(filePath: string): Promise<boolean>;
7
+ copyFile(source: string, destination: string): Promise<void>;
8
+ listFiles(dirPath: string): Promise<string[]>;
9
+ backupFile(filePath: string): Promise<string>;
10
+ getCurrentDirectory(): string;
11
+ getCurrentDirectoryName(): string;
12
+ }
13
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":"AAMA,qBAAa,iBAAiB;IAItB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAcrC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU7C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnD,mBAAmB,IAAI,MAAM;IAO7B,uBAAuB,IAAI,MAAM;CAGlC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FileSystemService = void 0;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ class FileSystemService {
40
+ async isMetaCodingSetup() {
41
+ const githubDir = '.github';
42
+ const copilotInstructions = path.join(githubDir, 'copilot-instructions.md');
43
+ const instructionsDir = path.join(githubDir, 'instructions');
44
+ return ((await fs.pathExists(copilotInstructions)) &&
45
+ (await fs.pathExists(instructionsDir)));
46
+ }
47
+ async ensureDirectoryExists(dirPath) {
48
+ await fs.ensureDir(dirPath);
49
+ }
50
+ async writeFile(filePath, content) {
51
+ await fs.ensureDir(path.dirname(filePath));
52
+ await fs.writeFile(filePath, content, 'utf8');
53
+ }
54
+ async readFile(filePath) {
55
+ return await fs.readFile(filePath, 'utf8');
56
+ }
57
+ async fileExists(filePath) {
58
+ return await fs.pathExists(filePath);
59
+ }
60
+ async copyFile(source, destination) {
61
+ await fs.ensureDir(path.dirname(destination));
62
+ await fs.copy(source, destination);
63
+ }
64
+ async listFiles(dirPath) {
65
+ if (!(await fs.pathExists(dirPath))) {
66
+ return [];
67
+ }
68
+ return await fs.readdir(dirPath);
69
+ }
70
+ async backupFile(filePath) {
71
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
72
+ const backupPath = `${filePath}.backup-${timestamp}`;
73
+ await fs.copy(filePath, backupPath);
74
+ return backupPath;
75
+ }
76
+ getCurrentDirectory() {
77
+ return process.cwd();
78
+ }
79
+ getCurrentDirectoryName() {
80
+ return path.basename(this.getCurrentDirectory());
81
+ }
82
+ }
83
+ exports.FileSystemService = FileSystemService;
84
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/services/filesystem.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAK7B,MAAa,iBAAiB;IAI5B,KAAK,CAAC,iBAAiB;QACrB,MAAM,SAAS,GAAG,SAAS,CAAC;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE7D,OAAO,CACL,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAC1C,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CACvC,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,qBAAqB,CAAC,OAAe;QACzC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAKD,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAe;QAC/C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAKD,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAKD,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAKD,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,WAAmB;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IAKD,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAKD,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,GAAG,QAAQ,WAAW,SAAS,EAAE,CAAC;QACrD,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,UAAU,CAAC;IACpB,CAAC;IAKD,mBAAmB;QACjB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAKD,uBAAuB;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACnD,CAAC;CACF;AArFD,8CAqFC"}
@@ -0,0 +1,12 @@
1
+ export declare class ProjectDetector {
2
+ detectProject(): Promise<any>;
3
+ private detectProjectType;
4
+ private hasReactIndicators;
5
+ private hasNodeIndicators;
6
+ private hasPythonIndicators;
7
+ private hasGitRepository;
8
+ private hasVSCodeConfiguration;
9
+ private hasPackageJson;
10
+ private detectTechStack;
11
+ }
12
+ //# sourceMappingURL=project-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/services/project-detector.ts"],"names":[],"mappings":"AAMA,qBAAa,eAAe;IAIpB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;YAiBrB,iBAAiB;YAsBjB,kBAAkB;YAsClB,iBAAiB;YA+CjB,mBAAmB;YAuBnB,gBAAgB;YAOhB,sBAAsB;YAOtB,cAAc;YAOd,eAAe;CAqC9B"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProjectDetector = void 0;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ class ProjectDetector {
40
+ async detectProject() {
41
+ const currentDir = process.cwd();
42
+ const projectName = path.basename(currentDir);
43
+ return {
44
+ name: projectName,
45
+ type: await this.detectProjectType(),
46
+ hasGit: await this.hasGitRepository(),
47
+ hasVSCode: await this.hasVSCodeConfiguration(),
48
+ hasPackageJson: await this.hasPackageJson(),
49
+ techStack: await this.detectTechStack(),
50
+ };
51
+ }
52
+ async detectProjectType() {
53
+ if (await this.hasReactIndicators()) {
54
+ return 'react';
55
+ }
56
+ if (await this.hasNodeIndicators()) {
57
+ return 'node';
58
+ }
59
+ if (await this.hasPythonIndicators()) {
60
+ return 'python';
61
+ }
62
+ return 'general';
63
+ }
64
+ async hasReactIndicators() {
65
+ const packageJsonPath = 'package.json';
66
+ if (await fs.pathExists(packageJsonPath)) {
67
+ try {
68
+ const packageJson = await fs.readJson(packageJsonPath);
69
+ const deps = {
70
+ ...packageJson.dependencies,
71
+ ...packageJson.devDependencies,
72
+ };
73
+ return !!(deps.react || deps['@types/react'] || deps['react-dom']);
74
+ }
75
+ catch {
76
+ }
77
+ }
78
+ const reactFiles = [
79
+ 'src/App.tsx',
80
+ 'src/App.jsx',
81
+ 'public/index.html',
82
+ 'vite.config.ts',
83
+ 'vite.config.js',
84
+ ];
85
+ for (const file of reactFiles) {
86
+ if (await fs.pathExists(file)) {
87
+ return true;
88
+ }
89
+ }
90
+ return false;
91
+ }
92
+ async hasNodeIndicators() {
93
+ const packageJsonPath = 'package.json';
94
+ if (await fs.pathExists(packageJsonPath)) {
95
+ try {
96
+ const packageJson = await fs.readJson(packageJsonPath);
97
+ const deps = {
98
+ ...packageJson.dependencies,
99
+ ...packageJson.devDependencies,
100
+ };
101
+ const nodeIndicators = [
102
+ 'express',
103
+ 'fastify',
104
+ 'koa',
105
+ '@types/node',
106
+ 'nodemon',
107
+ ];
108
+ return nodeIndicators.some((indicator) => deps[indicator]);
109
+ }
110
+ catch {
111
+ }
112
+ }
113
+ const nodeFiles = [
114
+ 'server.js',
115
+ 'server.ts',
116
+ 'app.js',
117
+ 'app.ts',
118
+ 'index.js',
119
+ 'index.ts',
120
+ ];
121
+ for (const file of nodeFiles) {
122
+ if (await fs.pathExists(file)) {
123
+ return true;
124
+ }
125
+ }
126
+ return false;
127
+ }
128
+ async hasPythonIndicators() {
129
+ const pythonFiles = [
130
+ 'requirements.txt',
131
+ 'pyproject.toml',
132
+ 'setup.py',
133
+ 'Pipfile',
134
+ 'poetry.lock',
135
+ 'main.py',
136
+ 'app.py',
137
+ ];
138
+ for (const file of pythonFiles) {
139
+ if (await fs.pathExists(file)) {
140
+ return true;
141
+ }
142
+ }
143
+ return false;
144
+ }
145
+ async hasGitRepository() {
146
+ return await fs.pathExists('.git');
147
+ }
148
+ async hasVSCodeConfiguration() {
149
+ return await fs.pathExists('.vscode');
150
+ }
151
+ async hasPackageJson() {
152
+ return await fs.pathExists('package.json');
153
+ }
154
+ async detectTechStack() {
155
+ const techStack = [];
156
+ if (await fs.pathExists('package.json')) {
157
+ try {
158
+ const packageJson = await fs.readJson('package.json');
159
+ const deps = {
160
+ ...packageJson.dependencies,
161
+ ...packageJson.devDependencies,
162
+ };
163
+ if (deps.react)
164
+ techStack.push('React');
165
+ if (deps.typescript || deps['@types/node'])
166
+ techStack.push('TypeScript');
167
+ if (deps.express)
168
+ techStack.push('Express');
169
+ if (deps.jest)
170
+ techStack.push('Jest');
171
+ if (deps.vite)
172
+ techStack.push('Vite');
173
+ if (deps.webpack)
174
+ techStack.push('Webpack');
175
+ if (deps.next)
176
+ techStack.push('Next.js');
177
+ }
178
+ catch {
179
+ }
180
+ }
181
+ if (await this.hasPythonIndicators()) {
182
+ techStack.push('Python');
183
+ }
184
+ if (techStack.length === 0) {
185
+ techStack.push('TypeScript', 'Jest');
186
+ }
187
+ return techStack;
188
+ }
189
+ }
190
+ exports.ProjectDetector = ProjectDetector;
191
+ //# sourceMappingURL=project-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/services/project-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Template, ProjectConfig } from '../types';
2
+ export declare class TemplateManager {
3
+ private readonly templatesDir;
4
+ constructor();
5
+ getTemplate(templateName: string): Promise<Template>;
6
+ processTemplate(template: Template, config: ProjectConfig): Promise<Array<{
7
+ path: string;
8
+ content: string;
9
+ }>>;
10
+ getAvailableTemplates(): Promise<string[]>;
11
+ private loadTemplateFiles;
12
+ private processTemplateContent;
13
+ private getProjectDomain;
14
+ }
15
+ //# sourceMappingURL=template-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-manager.d.ts","sourceRoot":"","sources":["../../src/services/template-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKnD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;;IAUhC,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BpD,eAAe,CACnB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAiC9C,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YA0BlC,iBAAiB;IAiD/B,OAAO,CAAC,sBAAsB;IA2D9B,OAAO,CAAC,gBAAgB;CAYzB"}