specpilot 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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +430 -0
  3. package/cli.js +3 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +67 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/init.d.ts +9 -0
  9. package/dist/commands/init.d.ts.map +1 -0
  10. package/dist/commands/init.js +72 -0
  11. package/dist/commands/init.js.map +1 -0
  12. package/dist/commands/list.d.ts +6 -0
  13. package/dist/commands/list.d.ts.map +1 -0
  14. package/dist/commands/list.js +53 -0
  15. package/dist/commands/list.js.map +1 -0
  16. package/dist/commands/migrate.d.ts +8 -0
  17. package/dist/commands/migrate.d.ts.map +1 -0
  18. package/dist/commands/migrate.js +55 -0
  19. package/dist/commands/migrate.js.map +1 -0
  20. package/dist/commands/specify.d.ts +8 -0
  21. package/dist/commands/specify.d.ts.map +1 -0
  22. package/dist/commands/specify.js +194 -0
  23. package/dist/commands/specify.js.map +1 -0
  24. package/dist/commands/validate.d.ts +7 -0
  25. package/dist/commands/validate.d.ts.map +1 -0
  26. package/dist/commands/validate.js +54 -0
  27. package/dist/commands/validate.js.map +1 -0
  28. package/dist/utils/logger.d.ts +8 -0
  29. package/dist/utils/logger.d.ts.map +1 -0
  30. package/dist/utils/logger.js +28 -0
  31. package/dist/utils/logger.js.map +1 -0
  32. package/dist/utils/projectMigrator.d.ts +25 -0
  33. package/dist/utils/projectMigrator.d.ts.map +1 -0
  34. package/dist/utils/projectMigrator.js +227 -0
  35. package/dist/utils/projectMigrator.js.map +1 -0
  36. package/dist/utils/specGenerator.d.ts +45 -0
  37. package/dist/utils/specGenerator.d.ts.map +1 -0
  38. package/dist/utils/specGenerator.js +1109 -0
  39. package/dist/utils/specGenerator.js.map +1 -0
  40. package/dist/utils/specValidator.d.ts +33 -0
  41. package/dist/utils/specValidator.d.ts.map +1 -0
  42. package/dist/utils/specValidator.js +425 -0
  43. package/dist/utils/specValidator.js.map +1 -0
  44. package/dist/utils/templateEngine.d.ts +22 -0
  45. package/dist/utils/templateEngine.d.ts.map +1 -0
  46. package/dist/utils/templateEngine.js +213 -0
  47. package/dist/utils/templateEngine.js.map +1 -0
  48. package/dist/utils/templateRegistry.d.ts +14 -0
  49. package/dist/utils/templateRegistry.d.ts.map +1 -0
  50. package/dist/utils/templateRegistry.js +101 -0
  51. package/dist/utils/templateRegistry.js.map +1 -0
  52. package/package.json +72 -0
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectMigrator = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ class ProjectMigrator {
7
+ async validateSource(projectDir, sourceType) {
8
+ const sourceDir = (0, path_1.join)(projectDir, this.getSourceDirName(sourceType));
9
+ return (0, fs_1.existsSync)(sourceDir);
10
+ }
11
+ async createBackup(projectDir) {
12
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
13
+ const backupDir = (0, path_1.join)(projectDir, `backup-${timestamp}`);
14
+ (0, fs_1.mkdirSync)(backupDir, { recursive: true });
15
+ // Copy all files and directories
16
+ const items = (0, fs_1.readdirSync)(projectDir);
17
+ for (const item of items) {
18
+ if (item.startsWith('backup-'))
19
+ continue; // Skip existing backups
20
+ const sourcePath = (0, path_1.join)(projectDir, item);
21
+ const targetPath = (0, path_1.join)(backupDir, item);
22
+ const stat = (0, fs_1.statSync)(sourcePath);
23
+ if (stat.isDirectory()) {
24
+ this.copyDirectory(sourcePath, targetPath);
25
+ }
26
+ else {
27
+ (0, fs_1.copyFileSync)(sourcePath, targetPath);
28
+ }
29
+ }
30
+ }
31
+ async migrate(projectDir, options) {
32
+ const result = {
33
+ filesMigrated: 0,
34
+ filesMerged: 0,
35
+ filesCreated: 0,
36
+ warnings: []
37
+ };
38
+ const sourceDir = (0, path_1.join)(projectDir, this.getSourceDirName(options.from));
39
+ const targetDir = (0, path_1.join)(projectDir, this.getTargetDirName(options.to));
40
+ if (!(0, fs_1.existsSync)(sourceDir)) {
41
+ throw new Error(`Source directory ${sourceDir} does not exist`);
42
+ }
43
+ // Create target directory
44
+ (0, fs_1.mkdirSync)(targetDir, { recursive: true });
45
+ // Migrate files based on source type
46
+ if (options.from === 'complex' || options.from === 'project-spec') {
47
+ await this.migrateFromComplex(sourceDir, targetDir, result);
48
+ }
49
+ else {
50
+ await this.migrateFromSimple(sourceDir, targetDir, result);
51
+ }
52
+ return result;
53
+ }
54
+ getSourceDirName(sourceType) {
55
+ switch (sourceType) {
56
+ case 'complex':
57
+ case 'project-spec':
58
+ return '.project-spec';
59
+ case 'simple':
60
+ return '.specs';
61
+ default:
62
+ return sourceType;
63
+ }
64
+ }
65
+ getTargetDirName(targetType) {
66
+ switch (targetType) {
67
+ case 'simple':
68
+ return '.specs';
69
+ case 'complex':
70
+ return '.project-spec';
71
+ default:
72
+ return targetType;
73
+ }
74
+ }
75
+ async migrateFromComplex(sourceDir, targetDir, result) {
76
+ const files = (0, fs_1.readdirSync)(sourceDir, { recursive: true });
77
+ for (const file of files) {
78
+ if (typeof file !== 'string')
79
+ continue;
80
+ const sourcePath = (0, path_1.join)(sourceDir, file);
81
+ const stat = (0, fs_1.statSync)(sourcePath);
82
+ if (stat.isDirectory())
83
+ continue; // Skip directories
84
+ const fileName = file.split('/').pop() || file;
85
+ const targetPath = this.mapComplexToSimpleFile(fileName, targetDir);
86
+ if (targetPath) {
87
+ try {
88
+ // Check if target file already exists
89
+ if ((0, fs_1.existsSync)(targetPath)) {
90
+ await this.mergeFileContent(sourcePath, targetPath);
91
+ result.filesMerged++;
92
+ }
93
+ else {
94
+ (0, fs_1.copyFileSync)(sourcePath, targetPath);
95
+ result.filesMigrated++;
96
+ }
97
+ }
98
+ catch (error) {
99
+ result.warnings.push(`Failed to migrate ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
100
+ }
101
+ }
102
+ }
103
+ // Create any missing files
104
+ await this.createMissingSimpleFiles(targetDir, result);
105
+ }
106
+ async migrateFromSimple(sourceDir, targetDir, result) {
107
+ // For now, just copy all files
108
+ const files = (0, fs_1.readdirSync)(sourceDir);
109
+ for (const file of files) {
110
+ const sourcePath = (0, path_1.join)(sourceDir, file);
111
+ const targetPath = (0, path_1.join)(targetDir, file);
112
+ if ((0, fs_1.existsSync)(targetPath)) {
113
+ result.warnings.push(`Target file ${file} already exists, skipping`);
114
+ continue;
115
+ }
116
+ (0, fs_1.copyFileSync)(sourcePath, targetPath);
117
+ result.filesMigrated++;
118
+ }
119
+ }
120
+ mapComplexToSimpleFile(fileName, targetDir) {
121
+ const mapping = {
122
+ // Direct mappings
123
+ 'project.yaml': (0, path_1.join)(targetDir, 'project.yaml'),
124
+ 'architecture.md': (0, path_1.join)(targetDir, 'architecture.md'),
125
+ 'requirements.md': (0, path_1.join)(targetDir, 'requirements.md'),
126
+ 'api.yaml': (0, path_1.join)(targetDir, 'api.yaml'),
127
+ 'tests.md': (0, path_1.join)(targetDir, 'tests.md'),
128
+ 'tasks.md': (0, path_1.join)(targetDir, 'tasks.md'),
129
+ 'context.md': (0, path_1.join)(targetDir, 'context.md'),
130
+ 'prompts.md': (0, path_1.join)(targetDir, 'prompts.md'),
131
+ 'docs.md': (0, path_1.join)(targetDir, 'docs.md'),
132
+ // Complex structure mappings
133
+ 'config/project.yaml': (0, path_1.join)(targetDir, 'project.yaml'),
134
+ 'specs/architecture/architecture.md': (0, path_1.join)(targetDir, 'architecture.md'),
135
+ 'specs/features/requirements.md': (0, path_1.join)(targetDir, 'requirements.md'),
136
+ 'specs/technical/api.yaml': (0, path_1.join)(targetDir, 'api.yaml'),
137
+ 'specs/technical/tests.md': (0, path_1.join)(targetDir, 'tests.md'),
138
+ 'tools/tasks.md': (0, path_1.join)(targetDir, 'tasks.md'),
139
+ 'docs/context.md': (0, path_1.join)(targetDir, 'context.md'),
140
+ 'docs/prompts.md': (0, path_1.join)(targetDir, 'prompts.md'),
141
+ 'docs/docs.md': (0, path_1.join)(targetDir, 'docs.md'),
142
+ };
143
+ return mapping[fileName] || null;
144
+ }
145
+ async mergeFileContent(sourcePath, targetPath) {
146
+ const sourceContent = (0, fs_1.readFileSync)(sourcePath, 'utf-8');
147
+ const targetContent = (0, fs_1.readFileSync)(targetPath, 'utf-8');
148
+ // Simple merge strategy: append source content to target with separator
149
+ const mergedContent = targetContent + '\n\n---\n\n' + sourceContent;
150
+ (0, fs_1.writeFileSync)(targetPath, mergedContent);
151
+ }
152
+ async createMissingSimpleFiles(targetDir, result) {
153
+ const requiredFiles = [
154
+ 'project.yaml',
155
+ 'architecture.md',
156
+ 'requirements.md',
157
+ 'api.yaml',
158
+ 'tests.md',
159
+ 'tasks.md',
160
+ 'context.md',
161
+ 'prompts.md',
162
+ 'docs.md'
163
+ ];
164
+ for (const file of requiredFiles) {
165
+ const filePath = (0, path_1.join)(targetDir, file);
166
+ if (!(0, fs_1.existsSync)(filePath)) {
167
+ await this.createDefaultFile(filePath, file);
168
+ result.filesCreated++;
169
+ }
170
+ }
171
+ }
172
+ async createDefaultFile(filePath, fileName) {
173
+ let content = '';
174
+ switch (fileName) {
175
+ case 'project.yaml':
176
+ content = `# Project Configuration
177
+ name: "migrated-project"
178
+ version: "1.0.0"
179
+ language: "typescript"
180
+ description: "Migrated from complex structure"
181
+
182
+ rules:
183
+ - "MANDATE: Update .specs/prompts.md with ALL AI interactions and development prompts by default"
184
+ - "MANDATE: Maintain chronological prompt history for complete development traceability"`;
185
+ break;
186
+ case 'prompts.md':
187
+ content = `# Development Prompts Log
188
+
189
+ ## Overview
190
+ This file contains ALL AI interactions and development prompts, maintaining complete traceability of the development process.
191
+
192
+ **🚨 MANDATE**: This file MUST be updated with every AI interaction during development.
193
+
194
+ ## Migration Note
195
+ This file was created during migration from complex to simplified structure.
196
+
197
+ ---
198
+ *Last updated: ${new Date().toISOString().split('T')[0]}*`;
199
+ break;
200
+ default:
201
+ content = `# ${fileName.replace('.md', '').replace('.yaml', '')}
202
+
203
+ [Content migrated from complex structure]
204
+
205
+ ---
206
+ *Last updated: ${new Date().toISOString().split('T')[0]}*`;
207
+ }
208
+ (0, fs_1.writeFileSync)(filePath, content);
209
+ }
210
+ copyDirectory(source, target) {
211
+ (0, fs_1.mkdirSync)(target, { recursive: true });
212
+ const files = (0, fs_1.readdirSync)(source);
213
+ for (const file of files) {
214
+ const sourcePath = (0, path_1.join)(source, file);
215
+ const targetPath = (0, path_1.join)(target, file);
216
+ const stat = (0, fs_1.statSync)(sourcePath);
217
+ if (stat.isDirectory()) {
218
+ this.copyDirectory(sourcePath, targetPath);
219
+ }
220
+ else {
221
+ (0, fs_1.copyFileSync)(sourcePath, targetPath);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ exports.ProjectMigrator = ProjectMigrator;
227
+ //# sourceMappingURL=projectMigrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectMigrator.js","sourceRoot":"","sources":["../../src/utils/projectMigrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { TemplateEngine } from './templateEngine';
2
+ export interface SpecGeneratorOptions {
3
+ projectName: string;
4
+ language: string;
5
+ framework?: string;
6
+ targetDir: string;
7
+ specsName: string;
8
+ author?: string;
9
+ description?: string;
10
+ }
11
+ export declare class SpecGenerator {
12
+ private templateEngine;
13
+ constructor(templateEngine: TemplateEngine);
14
+ generateSpecs(options: SpecGeneratorOptions): Promise<void>;
15
+ private generateProjectYaml;
16
+ private generateArchitectureMd;
17
+ private generateRequirementsMd;
18
+ private getTechnicalRequirements;
19
+ private generateApiYaml;
20
+ private generateTestsMd;
21
+ private getTestFramework;
22
+ private getIntegrationTestFramework;
23
+ private getE2ETestFramework;
24
+ private generateTasksMd;
25
+ private generateContextMd;
26
+ private generatePromptsMd;
27
+ private generateDocsMd;
28
+ private getPrerequisites;
29
+ private getInstallCommand;
30
+ private getEnvironmentSetup;
31
+ private getCodeStandards;
32
+ private getProjectStructure;
33
+ private getAvailableScripts;
34
+ private getDatabaseUrl;
35
+ private getAuthenticationDocs;
36
+ private getMigrationCommands;
37
+ private getBackupCommands;
38
+ private getBuildCommand;
39
+ private getDeployCommand;
40
+ private getTroubleshootingCommands;
41
+ private getLanguageDocsUrl;
42
+ private getFrameworkDocsUrl;
43
+ private getLintingTools;
44
+ }
45
+ //# sourceMappingURL=specGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAE5C,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;YA0BnD,mBAAmB;YAUnB,sBAAsB;YAUtB,sBAAsB;IA6EpC,OAAO,CAAC,wBAAwB;YAgClB,eAAe;YAmJf,eAAe;IAsG7B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,mBAAmB;YAOb,eAAe;YA+Ef,iBAAiB;YAgGjB,iBAAiB;YAsJjB,cAAc;IA4M5B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;CAMxB"}