specpilot 1.6.2 → 1.6.7
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 +27 -11
- package/dist/cli.js +15 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +17 -9
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/archive.d.ts +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +66 -0
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/backfill.d.ts +8 -0
- package/dist/commands/backfill.d.ts.map +1 -0
- package/dist/commands/backfill.js +81 -0
- package/dist/commands/backfill.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +51 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/ideConfigGenerator.d.ts +19 -2
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -1
- package/dist/utils/ideConfigGenerator.js +117 -20
- package/dist/utils/ideConfigGenerator.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/specArchiver.js +4 -4
- package/dist/utils/specArchiver.js.map +1 -1
- package/dist/utils/specBackfiller.d.ts +66 -0
- package/dist/utils/specBackfiller.d.ts.map +1 -0
- package/dist/utils/specBackfiller.js +502 -0
- package/dist/utils/specBackfiller.js.map +1 -0
- package/dist/utils/specFileGenerator.d.ts.map +1 -1
- package/dist/utils/specFileGenerator.js +15 -3
- package/dist/utils/specFileGenerator.js.map +1 -1
- package/dist/utils/specGenerator.d.ts +1 -0
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +3 -1
- package/dist/utils/specGenerator.js.map +1 -1
- package/dist/utils/specTreePrinter.d.ts +3 -2
- package/dist/utils/specTreePrinter.d.ts.map +1 -1
- package/dist/utils/specTreePrinter.js +61 -20
- package/dist/utils/specTreePrinter.js.map +1 -1
- package/dist/utils/specValidator.d.ts +8 -0
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +171 -19
- package/dist/utils/specValidator.js.map +1 -1
- package/dist/utils/templateEngine.d.ts.map +1 -1
- package/dist/utils/templateEngine.js +2 -0
- package/dist/utils/templateEngine.js.map +1 -1
- package/package.json +3 -3
- package/dist/commands/specify.d.ts +0 -8
- package/dist/commands/specify.d.ts.map +0 -1
- package/dist/commands/specify.js +0 -286
- package/dist/commands/specify.js.map +0 -1
- package/dist/utils/templateRegistry.d.ts +0 -14
- package/dist/utils/templateRegistry.d.ts.map +0 -1
- package/dist/utils/templateRegistry.js +0 -87
- package/dist/utils/templateRegistry.js.map +0 -1
package/dist/commands/specify.js
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
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.specifyCommand = specifyCommand;
|
|
7
|
-
const path_1 = require("path");
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
-
const templateEngine_1 = require("../utils/templateEngine");
|
|
12
|
-
const specGenerator_1 = require("../utils/specGenerator");
|
|
13
|
-
const logger_1 = require("../utils/logger");
|
|
14
|
-
async function specifyCommand(description, options) {
|
|
15
|
-
const logger = new logger_1.Logger();
|
|
16
|
-
try {
|
|
17
|
-
logger.info('📝 Processing specification description...');
|
|
18
|
-
// Get description if not provided
|
|
19
|
-
let projectDescription = description;
|
|
20
|
-
if (!projectDescription && options.prompts) {
|
|
21
|
-
const response = await inquirer_1.default.prompt([{
|
|
22
|
-
type: 'input',
|
|
23
|
-
name: 'description',
|
|
24
|
-
message: 'Describe what you want to build:',
|
|
25
|
-
validate: (input) => input.length > 0 || 'Description is required'
|
|
26
|
-
}]);
|
|
27
|
-
projectDescription = response.description;
|
|
28
|
-
}
|
|
29
|
-
if (!projectDescription) {
|
|
30
|
-
logger.error('❌ No description provided. Use --help for usage information.');
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
// Find .specs directory
|
|
34
|
-
const specsDir = (0, path_1.join)(options.dir, options.specsName);
|
|
35
|
-
if (!(0, fs_1.existsSync)(specsDir)) {
|
|
36
|
-
logger.error(`❌ Specs directory not found: ${specsDir}`);
|
|
37
|
-
logger.info('💡 Run "specpilot init" first to create the project structure.');
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
40
|
-
// Read existing project.yaml to get current context
|
|
41
|
-
const projectYamlPath = (0, path_1.join)(specsDir, 'project', 'project.yaml');
|
|
42
|
-
if (!(0, fs_1.existsSync)(projectYamlPath)) {
|
|
43
|
-
logger.error('❌ project.yaml not found. Please ensure this is a valid SDD project.');
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
const projectYaml = (0, fs_1.readFileSync)(projectYamlPath, 'utf-8');
|
|
47
|
-
const projectName = extractProjectName(projectYaml);
|
|
48
|
-
const language = extractLanguage(projectYaml);
|
|
49
|
-
const framework = extractFramework(projectYaml);
|
|
50
|
-
logger.info(`🔍 Found project: ${projectName} (${language}${framework ? ` + ${framework}` : ''})`);
|
|
51
|
-
// ── Collect pending changes (without writing yet) ────────────
|
|
52
|
-
const pendingChanges = [];
|
|
53
|
-
const requirementsPath = (0, path_1.join)(specsDir, 'project', 'requirements.md');
|
|
54
|
-
if ((0, fs_1.existsSync)(requirementsPath)) {
|
|
55
|
-
const before = (0, fs_1.readFileSync)(requirementsPath, 'utf-8');
|
|
56
|
-
const after = updateRequirementsWithDescription(before, projectDescription, options.update);
|
|
57
|
-
if (after !== before) {
|
|
58
|
-
pendingChanges.push({ filePath: requirementsPath, label: 'requirements.md', before, after });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const contextPath = (0, path_1.join)(specsDir, 'development', 'context.md');
|
|
62
|
-
if ((0, fs_1.existsSync)(contextPath)) {
|
|
63
|
-
const before = (0, fs_1.readFileSync)(contextPath, 'utf-8');
|
|
64
|
-
const after = updateContextWithSpecification(before, projectDescription);
|
|
65
|
-
if (after !== before) {
|
|
66
|
-
pendingChanges.push({ filePath: contextPath, label: 'context.md', before, after });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const promptsPath = (0, path_1.join)(specsDir, 'development', 'prompts.md');
|
|
70
|
-
if ((0, fs_1.existsSync)(promptsPath)) {
|
|
71
|
-
const before = (0, fs_1.readFileSync)(promptsPath, 'utf-8');
|
|
72
|
-
const after = updatePromptsLog(before, projectDescription);
|
|
73
|
-
if (after !== before) {
|
|
74
|
-
pendingChanges.push({ filePath: promptsPath, label: 'prompts.md', before, after });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (pendingChanges.length === 0) {
|
|
78
|
-
logger.info('ℹ️ No changes detected — spec files are already up to date.');
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
// ── Show diff preview ────────────────────────────────────────
|
|
82
|
-
console.log('');
|
|
83
|
-
logger.info(chalk_1.default.blue.bold('📋 Proposed changes:'));
|
|
84
|
-
console.log('');
|
|
85
|
-
for (const change of pendingChanges) {
|
|
86
|
-
console.log(chalk_1.default.cyan(`── ${change.label} ──`));
|
|
87
|
-
printSimpleDiff(change.before, change.after);
|
|
88
|
-
console.log('');
|
|
89
|
-
}
|
|
90
|
-
// ── Ask for confirmation (unless --no-prompts) ───────────────
|
|
91
|
-
if (options.prompts) {
|
|
92
|
-
const { confirmed } = await inquirer_1.default.prompt([{
|
|
93
|
-
type: 'confirm',
|
|
94
|
-
name: 'confirmed',
|
|
95
|
-
message: `Apply changes to ${pendingChanges.length} file(s)?`,
|
|
96
|
-
default: true,
|
|
97
|
-
}]);
|
|
98
|
-
if (!confirmed) {
|
|
99
|
-
logger.info('❌ Aborted — no files were modified.');
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// ── Apply changes ────────────────────────────────────────────
|
|
104
|
-
for (const change of pendingChanges) {
|
|
105
|
-
(0, fs_1.writeFileSync)(change.filePath, change.after);
|
|
106
|
-
logger.success(`✅ Updated ${change.label}`);
|
|
107
|
-
}
|
|
108
|
-
// If update flag is set, regenerate specs with new context
|
|
109
|
-
if (options.update) {
|
|
110
|
-
logger.info('🔄 Regenerating specifications with updated context...');
|
|
111
|
-
const templateEngine = new templateEngine_1.TemplateEngine();
|
|
112
|
-
const specGenerator = new specGenerator_1.SpecGenerator(templateEngine);
|
|
113
|
-
await specGenerator.generateSpecs({
|
|
114
|
-
projectName: projectName || 'updated-project',
|
|
115
|
-
language: language || 'typescript',
|
|
116
|
-
framework: framework,
|
|
117
|
-
targetDir: options.dir,
|
|
118
|
-
specsName: options.specsName,
|
|
119
|
-
description: projectDescription
|
|
120
|
-
});
|
|
121
|
-
logger.success('✅ Regenerated specifications with new description');
|
|
122
|
-
}
|
|
123
|
-
logger.success(`🎯 Specification processed successfully!`);
|
|
124
|
-
logger.info(`📁 Specs location: ${specsDir}`);
|
|
125
|
-
logger.info(`📋 Description: "${projectDescription}"`);
|
|
126
|
-
// Show next steps with logo
|
|
127
|
-
const nextStepsContent = [
|
|
128
|
-
chalk_1.default.blue.bold('Specification Processed'),
|
|
129
|
-
'',
|
|
130
|
-
chalk_1.default.green('✅ Successfully updated project specifications'),
|
|
131
|
-
chalk_1.default.white(`📁 Location: ${specsDir}`),
|
|
132
|
-
chalk_1.default.white(`📋 Description: "${projectDescription}"`),
|
|
133
|
-
'',
|
|
134
|
-
chalk_1.default.cyan('📖 Next steps:'),
|
|
135
|
-
chalk_1.default.white(` # Review updated specifications in ${options.specsName}/`),
|
|
136
|
-
chalk_1.default.white(' specpilot validate # Validate your specifications'),
|
|
137
|
-
chalk_1.default.white(' # Continue development based on the updated requirements')
|
|
138
|
-
];
|
|
139
|
-
logger.displayWithLogo(nextStepsContent);
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
logger.error(`❌ Failed to process specification: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function extractProjectName(yamlContent) {
|
|
147
|
-
const match = yamlContent.match(/name:\s*(.+)/);
|
|
148
|
-
return match ? match[1].trim() : undefined;
|
|
149
|
-
}
|
|
150
|
-
function extractLanguage(yamlContent) {
|
|
151
|
-
const match = yamlContent.match(/language:\s*(.+)/);
|
|
152
|
-
return match ? match[1].trim() : undefined;
|
|
153
|
-
}
|
|
154
|
-
function extractFramework(yamlContent) {
|
|
155
|
-
const match = yamlContent.match(/framework:\s*(.+)/);
|
|
156
|
-
return match ? match[1].trim() : undefined;
|
|
157
|
-
}
|
|
158
|
-
function updateRequirementsWithDescription(currentContent, description, replace = false) {
|
|
159
|
-
const descriptionSection = `## Project Overview
|
|
160
|
-
${description}
|
|
161
|
-
|
|
162
|
-
## Functional Requirements
|
|
163
|
-
`;
|
|
164
|
-
if (replace || !currentContent.includes('## Project Overview')) {
|
|
165
|
-
// Replace or add the project overview section
|
|
166
|
-
const lines = currentContent.split('\n');
|
|
167
|
-
const overviewIndex = lines.findIndex(line => line.includes('## Project Overview'));
|
|
168
|
-
if (overviewIndex !== -1) {
|
|
169
|
-
// Find the end of the overview section
|
|
170
|
-
let endIndex = overviewIndex + 1;
|
|
171
|
-
while (endIndex < lines.length && !lines[endIndex].startsWith('## ')) {
|
|
172
|
-
endIndex++;
|
|
173
|
-
}
|
|
174
|
-
// Replace the overview section
|
|
175
|
-
lines.splice(overviewIndex, endIndex - overviewIndex, ...descriptionSection.split('\n'));
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
// Add after title
|
|
179
|
-
const titleIndex = lines.findIndex(line => line.startsWith('# '));
|
|
180
|
-
if (titleIndex !== -1) {
|
|
181
|
-
lines.splice(titleIndex + 1, 0, '', descriptionSection);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return lines.join('\n');
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
// Append to existing overview
|
|
188
|
-
return currentContent.replace(/(## Project Overview[\s\S]*?)(\n## |\n*$)/, `$1\n\n### Additional Context\n${description}$2`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
function updateContextWithSpecification(currentContent, description) {
|
|
192
|
-
const specEntry = `### Latest Specification Update
|
|
193
|
-
**Date**: ${new Date().toISOString().split('T')[0]}
|
|
194
|
-
**Description**: ${description}
|
|
195
|
-
**Source**: specpilot specify command
|
|
196
|
-
|
|
197
|
-
`;
|
|
198
|
-
// Add to the Project Memory section
|
|
199
|
-
if (currentContent.includes('## Project Memory')) {
|
|
200
|
-
return currentContent.replace(/(## Project Memory[\s\S]*?)(\n## |\n*$)/, `$1\n${specEntry}$2`);
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
// Add new section
|
|
204
|
-
return currentContent + '\n\n## Project Memory\n' + specEntry;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
function updatePromptsLog(currentContent, description) {
|
|
208
|
-
const promptEntry = `### Specification Update (${new Date().toISOString().split('T')[0]})
|
|
209
|
-
|
|
210
|
-
#### Prompt: Project Specification
|
|
211
|
-
**Prompt**: "${description}"
|
|
212
|
-
|
|
213
|
-
**Context**: User provided specification description via specpilot specify command
|
|
214
|
-
|
|
215
|
-
**Response**:
|
|
216
|
-
- Updated requirements.md with project description
|
|
217
|
-
- Updated context.md with specification details
|
|
218
|
-
- Logged interaction in prompts.md
|
|
219
|
-
|
|
220
|
-
**Files Modified**: requirements.md, context.md, prompts.md
|
|
221
|
-
|
|
222
|
-
**Next Actions**: Review and validate updated specifications
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
`;
|
|
227
|
-
// Add to the Latest Entries section
|
|
228
|
-
if (currentContent.includes('## Latest Entries')) {
|
|
229
|
-
return currentContent.replace(/(## Latest Entries[\s\S]*?)(\n## |\n*$)/, `$1\n${promptEntry}$2`);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
// Add after Overview
|
|
233
|
-
return currentContent.replace(/(## Overview[\s\S]*?)(\n## |\n*$)/, `$1\n\n## Latest Entries\n${promptEntry}$2`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Print a simple line-level diff between two strings.
|
|
238
|
-
* Added lines are green with "+", removed lines are red with "−".
|
|
239
|
-
* Only changed regions (with 2 lines of context) are shown.
|
|
240
|
-
*/
|
|
241
|
-
function printSimpleDiff(before, after) {
|
|
242
|
-
const oldLines = before.split('\n');
|
|
243
|
-
const newLines = after.split('\n');
|
|
244
|
-
const maxLen = Math.max(oldLines.length, newLines.length);
|
|
245
|
-
const CONTEXT = 2;
|
|
246
|
-
// Find which line indices have changes
|
|
247
|
-
const changedIndices = new Set();
|
|
248
|
-
for (let i = 0; i < maxLen; i++) {
|
|
249
|
-
if (oldLines[i] !== newLines[i]) {
|
|
250
|
-
changedIndices.add(i);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
if (changedIndices.size === 0)
|
|
254
|
-
return;
|
|
255
|
-
// Expand to include context lines
|
|
256
|
-
const visibleIndices = new Set();
|
|
257
|
-
for (const idx of changedIndices) {
|
|
258
|
-
for (let c = idx - CONTEXT; c <= idx + CONTEXT; c++) {
|
|
259
|
-
if (c >= 0 && c < maxLen)
|
|
260
|
-
visibleIndices.add(c);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
const sortedIndices = [...visibleIndices].sort((a, b) => a - b);
|
|
264
|
-
let lastPrinted = -2;
|
|
265
|
-
for (const i of sortedIndices) {
|
|
266
|
-
if (i > lastPrinted + 1) {
|
|
267
|
-
console.log(chalk_1.default.gray(' ...'));
|
|
268
|
-
}
|
|
269
|
-
lastPrinted = i;
|
|
270
|
-
const ol = oldLines[i];
|
|
271
|
-
const nl = newLines[i];
|
|
272
|
-
if (ol === nl) {
|
|
273
|
-
// Context line — unchanged
|
|
274
|
-
console.log(chalk_1.default.gray(` ${ol ?? ''}`));
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
if (ol !== undefined) {
|
|
278
|
-
console.log(chalk_1.default.red(`- ${ol}`));
|
|
279
|
-
}
|
|
280
|
-
if (nl !== undefined) {
|
|
281
|
-
console.log(chalk_1.default.green(`+ ${nl}`));
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
//# sourceMappingURL=specify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface Template {
|
|
2
|
-
name: string;
|
|
3
|
-
language: string;
|
|
4
|
-
framework?: string;
|
|
5
|
-
description: string;
|
|
6
|
-
files: string[];
|
|
7
|
-
}
|
|
8
|
-
export declare class TemplateRegistry {
|
|
9
|
-
private templates;
|
|
10
|
-
getTemplates(language?: string): Promise<Template[]>;
|
|
11
|
-
getTemplate(language: string, framework?: string): Promise<Template | undefined>;
|
|
12
|
-
addTemplate(template: Template): Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=templateRegistry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templateRegistry.d.ts","sourceRoot":"","sources":["../../src/utils/templateRegistry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAiEf;IAEI,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAOhF,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TemplateRegistry = void 0;
|
|
4
|
-
class TemplateRegistry {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.templates = [
|
|
7
|
-
// TypeScript Templates
|
|
8
|
-
{
|
|
9
|
-
name: 'generic',
|
|
10
|
-
language: 'typescript',
|
|
11
|
-
description: 'Basic TypeScript project structure',
|
|
12
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
name: 'react',
|
|
16
|
-
language: 'typescript',
|
|
17
|
-
framework: 'react',
|
|
18
|
-
description: 'React application with modern tooling',
|
|
19
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: 'express',
|
|
23
|
-
language: 'typescript',
|
|
24
|
-
framework: 'express',
|
|
25
|
-
description: 'REST API server setup',
|
|
26
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: 'next',
|
|
30
|
-
language: 'typescript',
|
|
31
|
-
framework: 'next',
|
|
32
|
-
description: 'Next.js full-stack application',
|
|
33
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: 'cli',
|
|
37
|
-
language: 'typescript',
|
|
38
|
-
framework: 'cli',
|
|
39
|
-
description: 'Command-line tool development',
|
|
40
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
41
|
-
},
|
|
42
|
-
// Python Templates
|
|
43
|
-
{
|
|
44
|
-
name: 'generic',
|
|
45
|
-
language: 'python',
|
|
46
|
-
description: 'Basic Python project structure',
|
|
47
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'fastapi',
|
|
51
|
-
language: 'python',
|
|
52
|
-
framework: 'fastapi',
|
|
53
|
-
description: 'Modern API development',
|
|
54
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: 'django',
|
|
58
|
-
language: 'python',
|
|
59
|
-
framework: 'django',
|
|
60
|
-
description: 'Web application framework',
|
|
61
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: 'data-science',
|
|
65
|
-
language: 'python',
|
|
66
|
-
framework: 'data-science',
|
|
67
|
-
description: 'Jupyter, pandas, scikit-learn setup',
|
|
68
|
-
files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md']
|
|
69
|
-
}
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
async getTemplates(language) {
|
|
73
|
-
if (language) {
|
|
74
|
-
return this.templates.filter(t => t.language === language);
|
|
75
|
-
}
|
|
76
|
-
return this.templates;
|
|
77
|
-
}
|
|
78
|
-
async getTemplate(language, framework) {
|
|
79
|
-
return this.templates.find(t => t.language === language &&
|
|
80
|
-
(framework ? t.framework === framework : !t.framework || t.name === 'generic'));
|
|
81
|
-
}
|
|
82
|
-
async addTemplate(template) {
|
|
83
|
-
this.templates.push(template);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.TemplateRegistry = TemplateRegistry;
|
|
87
|
-
//# sourceMappingURL=templateRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templateRegistry.js","sourceRoot":"","sources":["../../src/utils/templateRegistry.ts"],"names":[],"mappings":"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"}
|