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 @@
1
+ {"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface ValidationOptions {
2
+ fix: boolean;
3
+ verbose: boolean;
4
+ }
5
+ export interface ValidationResult {
6
+ isValid: boolean;
7
+ errors: string[];
8
+ warnings: string[];
9
+ fixable: string[];
10
+ filesChecked: number;
11
+ mandatesVerified: number;
12
+ }
13
+ export declare class SpecValidator {
14
+ private requiredFiles;
15
+ validate(projectDir: string, options: ValidationOptions): Promise<ValidationResult>;
16
+ autoFix(projectDir: string, fixable: string[]): Promise<string[]>;
17
+ private findSpecsDir;
18
+ private validateProjectYaml;
19
+ private checkMandatesInRules;
20
+ private validateMandates;
21
+ private validateContentQuality;
22
+ private validateArchitectureContent;
23
+ private validateRequirementsContent;
24
+ private validateTasksContent;
25
+ private createMissingFile;
26
+ private addMandatesToProjectYaml;
27
+ private createInitialPromptsEntry;
28
+ private getDefaultProjectYaml;
29
+ private getDefaultPromptsContent;
30
+ private getDefaultArchitecture;
31
+ private getDefaultRequirements;
32
+ }
33
+ //# sourceMappingURL=specValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specValidator.d.ts","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAUnB;IAEI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0CnF,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BvE,OAAO,CAAC,YAAY;YAaN,mBAAmB;IA+CjC,OAAO,CAAC,oBAAoB;YAQd,gBAAgB;YAiChB,sBAAsB;YAWtB,2BAA2B;YAwB3B,2BAA2B;YAuB3B,oBAAoB;YAuBpB,iBAAiB;YAwBjB,wBAAwB;YA8BxB,yBAAyB;IAMvC,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,wBAAwB;IAgDhC,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,sBAAsB;CAkB/B"}
@@ -0,0 +1,425 @@
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.SpecValidator = void 0;
37
+ const fs_1 = require("fs");
38
+ const path_1 = require("path");
39
+ const yaml = __importStar(require("js-yaml"));
40
+ class SpecValidator {
41
+ constructor() {
42
+ this.requiredFiles = [
43
+ 'project.yaml',
44
+ 'architecture.md',
45
+ 'requirements.md',
46
+ 'api.yaml',
47
+ 'tests.md',
48
+ 'tasks.md',
49
+ 'context.md',
50
+ 'prompts.md',
51
+ 'docs.md'
52
+ ];
53
+ }
54
+ async validate(projectDir, options) {
55
+ const result = {
56
+ isValid: true,
57
+ errors: [],
58
+ warnings: [],
59
+ fixable: [],
60
+ filesChecked: 0,
61
+ mandatesVerified: 0
62
+ };
63
+ // Find .specs directory
64
+ const specsDir = this.findSpecsDir(projectDir);
65
+ if (!specsDir) {
66
+ result.errors.push('No .specs directory found in project');
67
+ result.isValid = false;
68
+ return result;
69
+ }
70
+ // Validate required files exist
71
+ for (const file of this.requiredFiles) {
72
+ const filePath = (0, path_1.join)(specsDir, file);
73
+ if (!(0, fs_1.existsSync)(filePath)) {
74
+ result.errors.push(`Missing required file: ${file}`);
75
+ result.fixable.push(`create-${file}`);
76
+ result.isValid = false;
77
+ }
78
+ else {
79
+ result.filesChecked++;
80
+ }
81
+ }
82
+ // Validate project.yaml structure
83
+ await this.validateProjectYaml(specsDir, result);
84
+ // Validate mandate compliance
85
+ await this.validateMandates(specsDir, result);
86
+ // Validate file content quality
87
+ await this.validateContentQuality(specsDir, result, options.verbose);
88
+ return result;
89
+ }
90
+ async autoFix(projectDir, fixable) {
91
+ const fixed = [];
92
+ const specsDir = this.findSpecsDir(projectDir);
93
+ if (!specsDir) {
94
+ return fixed;
95
+ }
96
+ for (const fix of fixable) {
97
+ try {
98
+ if (fix.startsWith('create-')) {
99
+ const fileName = fix.replace('create-', '');
100
+ await this.createMissingFile(specsDir, fileName);
101
+ fixed.push(fix);
102
+ }
103
+ else if (fix === 'add-mandates') {
104
+ await this.addMandatesToProjectYaml(specsDir);
105
+ fixed.push(fix);
106
+ }
107
+ else if (fix === 'create-prompts-entry') {
108
+ await this.createInitialPromptsEntry(specsDir);
109
+ fixed.push(fix);
110
+ }
111
+ }
112
+ catch (error) {
113
+ // Skip fixes that fail
114
+ continue;
115
+ }
116
+ }
117
+ return fixed;
118
+ }
119
+ findSpecsDir(projectDir) {
120
+ const candidates = ['.specs', '.project-spec', 'specs', 'specifications'];
121
+ for (const candidate of candidates) {
122
+ const fullPath = (0, path_1.join)(projectDir, candidate);
123
+ if ((0, fs_1.existsSync)(fullPath)) {
124
+ return fullPath;
125
+ }
126
+ }
127
+ return null;
128
+ }
129
+ async validateProjectYaml(specsDir, result) {
130
+ const projectYamlPath = (0, path_1.join)(specsDir, 'project.yaml');
131
+ if (!(0, fs_1.existsSync)(projectYamlPath)) {
132
+ return; // Already handled by file existence check
133
+ }
134
+ try {
135
+ const content = (0, fs_1.readFileSync)(projectYamlPath, 'utf-8');
136
+ const projectData = yaml.load(content);
137
+ if (!projectData) {
138
+ result.errors.push('project.yaml is empty or invalid');
139
+ result.isValid = false;
140
+ return;
141
+ }
142
+ // Check required fields
143
+ const requiredFields = ['name', 'version', 'language'];
144
+ for (const field of requiredFields) {
145
+ if (!projectData[field]) {
146
+ result.errors.push(`project.yaml missing required field: ${field}`);
147
+ result.isValid = false;
148
+ }
149
+ }
150
+ // Check for rules section
151
+ if (!projectData.rules || !Array.isArray(projectData.rules)) {
152
+ result.warnings.push('project.yaml should have a rules section');
153
+ }
154
+ // Validate mandates exist
155
+ const hasMandates = this.checkMandatesInRules(projectData.rules || []);
156
+ if (!hasMandates.hasPromptMandate) {
157
+ result.errors.push('Missing MANDATE for prompt tracking in project.yaml rules');
158
+ result.fixable.push('add-mandates');
159
+ result.isValid = false;
160
+ }
161
+ else {
162
+ result.mandatesVerified++;
163
+ }
164
+ }
165
+ catch (error) {
166
+ result.errors.push(`Failed to parse project.yaml: ${error instanceof Error ? error.message : 'Unknown error'}`);
167
+ result.isValid = false;
168
+ }
169
+ }
170
+ checkMandatesInRules(rules) {
171
+ const promptMandatePattern = /MANDATE.*prompt.*tracking|MANDATE.*prompts\.md/i;
172
+ return {
173
+ hasPromptMandate: rules.some(rule => promptMandatePattern.test(rule))
174
+ };
175
+ }
176
+ async validateMandates(specsDir, result) {
177
+ // Check if prompts.md exists and has content
178
+ const promptsPath = (0, path_1.join)(specsDir, 'prompts.md');
179
+ if (!(0, fs_1.existsSync)(promptsPath)) {
180
+ result.errors.push('prompts.md is missing - this violates prompt tracking mandate');
181
+ result.isValid = false;
182
+ return;
183
+ }
184
+ try {
185
+ const content = (0, fs_1.readFileSync)(promptsPath, 'utf-8');
186
+ if (content.trim().length < 100) {
187
+ result.warnings.push('prompts.md appears to have minimal content - ensure AI interactions are being tracked');
188
+ }
189
+ // Check for recent updates (basic heuristic)
190
+ if (!content.includes(new Date().getFullYear().toString())) {
191
+ result.warnings.push('prompts.md may not be up to date - ensure recent AI interactions are documented');
192
+ }
193
+ // Check for mandate compliance indicators
194
+ if (content.includes('MANDATE') && content.includes('AI interaction')) {
195
+ result.mandatesVerified++;
196
+ }
197
+ }
198
+ catch (error) {
199
+ result.errors.push(`Failed to read prompts.md: ${error instanceof Error ? error.message : 'Unknown error'}`);
200
+ result.isValid = false;
201
+ }
202
+ }
203
+ async validateContentQuality(specsDir, result, verbose) {
204
+ // Check architecture.md has key sections
205
+ await this.validateArchitectureContent(specsDir, result, verbose);
206
+ // Check requirements.md completeness
207
+ await this.validateRequirementsContent(specsDir, result, verbose);
208
+ // Check tasks.md is being maintained
209
+ await this.validateTasksContent(specsDir, result, verbose);
210
+ }
211
+ async validateArchitectureContent(specsDir, result, verbose) {
212
+ const archPath = (0, path_1.join)(specsDir, 'architecture.md');
213
+ if (!(0, fs_1.existsSync)(archPath))
214
+ return;
215
+ try {
216
+ const content = (0, fs_1.readFileSync)(archPath, 'utf-8');
217
+ const requiredSections = ['Overview', 'Architecture', 'Components', 'Decisions'];
218
+ const missingSections = requiredSections.filter(section => !content.toLowerCase().includes(section.toLowerCase()));
219
+ if (missingSections.length > 0) {
220
+ result.warnings.push(`architecture.md missing sections: ${missingSections.join(', ')}`);
221
+ }
222
+ }
223
+ catch (error) {
224
+ if (verbose) {
225
+ result.warnings.push(`Could not validate architecture.md content: ${error instanceof Error ? error.message : 'Unknown error'}`);
226
+ }
227
+ }
228
+ }
229
+ async validateRequirementsContent(specsDir, result, verbose) {
230
+ const reqPath = (0, path_1.join)(specsDir, 'requirements.md');
231
+ if (!(0, fs_1.existsSync)(reqPath))
232
+ return;
233
+ try {
234
+ const content = (0, fs_1.readFileSync)(reqPath, 'utf-8');
235
+ if (content.includes('[Placeholder') || content.includes('[To be')) {
236
+ result.warnings.push('requirements.md contains placeholder text that should be updated');
237
+ }
238
+ if (!content.includes('User Stories') && !content.includes('Functional Requirements')) {
239
+ result.warnings.push('requirements.md should include user stories or functional requirements');
240
+ }
241
+ }
242
+ catch (error) {
243
+ if (verbose) {
244
+ result.warnings.push(`Could not validate requirements.md content: ${error instanceof Error ? error.message : 'Unknown error'}`);
245
+ }
246
+ }
247
+ }
248
+ async validateTasksContent(specsDir, result, verbose) {
249
+ const tasksPath = (0, path_1.join)(specsDir, 'tasks.md');
250
+ if (!(0, fs_1.existsSync)(tasksPath))
251
+ return;
252
+ try {
253
+ const content = (0, fs_1.readFileSync)(tasksPath, 'utf-8');
254
+ // Check if tasks are being tracked
255
+ const hasInProgress = content.includes('In Progress') || content.includes('in-progress');
256
+ const hasCompleted = content.includes('Completed') || content.includes('completed');
257
+ if (!hasInProgress && !hasCompleted) {
258
+ result.warnings.push('tasks.md should track task status (In Progress, Completed, etc.)');
259
+ }
260
+ }
261
+ catch (error) {
262
+ if (verbose) {
263
+ result.warnings.push(`Could not validate tasks.md content: ${error instanceof Error ? error.message : 'Unknown error'}`);
264
+ }
265
+ }
266
+ }
267
+ async createMissingFile(specsDir, fileName) {
268
+ const filePath = (0, path_1.join)(specsDir, fileName);
269
+ let content = '';
270
+ switch (fileName) {
271
+ case 'project.yaml':
272
+ content = this.getDefaultProjectYaml();
273
+ break;
274
+ case 'prompts.md':
275
+ content = this.getDefaultPromptsContent();
276
+ break;
277
+ case 'architecture.md':
278
+ content = this.getDefaultArchitecture();
279
+ break;
280
+ case 'requirements.md':
281
+ content = this.getDefaultRequirements();
282
+ break;
283
+ default:
284
+ content = `# ${fileName.replace('.md', '').replace('.yaml', '')} File\n\n[Content to be added]`;
285
+ }
286
+ (0, fs_1.writeFileSync)(filePath, content);
287
+ }
288
+ async addMandatesToProjectYaml(specsDir) {
289
+ const projectYamlPath = (0, path_1.join)(specsDir, 'project.yaml');
290
+ try {
291
+ const content = (0, fs_1.readFileSync)(projectYamlPath, 'utf-8');
292
+ const projectData = yaml.load(content);
293
+ if (!projectData.rules) {
294
+ projectData.rules = [];
295
+ }
296
+ const mandates = [
297
+ "MANDATE: Update .specs/prompts.md with ALL AI interactions and development prompts by default",
298
+ "MANDATE: Maintain chronological prompt history for complete development traceability"
299
+ ];
300
+ for (const mandate of mandates) {
301
+ if (!projectData.rules.some((rule) => rule.includes('MANDATE') && rule.includes('prompt'))) {
302
+ projectData.rules.push(mandate);
303
+ }
304
+ }
305
+ const updatedContent = yaml.dump(projectData, { lineWidth: 120, indent: 2 });
306
+ (0, fs_1.writeFileSync)(projectYamlPath, updatedContent);
307
+ }
308
+ catch (error) {
309
+ throw new Error(`Failed to update project.yaml: ${error instanceof Error ? error.message : 'Unknown error'}`);
310
+ }
311
+ }
312
+ async createInitialPromptsEntry(specsDir) {
313
+ const promptsPath = (0, path_1.join)(specsDir, 'prompts.md');
314
+ const content = this.getDefaultPromptsContent();
315
+ (0, fs_1.writeFileSync)(promptsPath, content);
316
+ }
317
+ getDefaultProjectYaml() {
318
+ return `# Project Configuration
319
+ name: "project-name"
320
+ version: "1.0.0"
321
+ language: "typescript"
322
+ description: "Project description"
323
+
324
+ # Project Rules and AI Context
325
+ rules:
326
+ - "Follow best practices and coding standards"
327
+ - "Write comprehensive tests for all functionality"
328
+ - "Document all public APIs and interfaces"
329
+ - "MANDATE: Update .specs/prompts.md with ALL AI interactions and development prompts by default"
330
+ - "MANDATE: Maintain chronological prompt history for complete development traceability"
331
+
332
+ # Development Context for AI
333
+ ai_context:
334
+ - "This is a specification-driven development project"
335
+ - "All changes should be documented in appropriate .specs/ files"
336
+ - "Follow the established architecture patterns"
337
+ `;
338
+ }
339
+ getDefaultPromptsContent() {
340
+ return `# Development Prompts Log
341
+
342
+ ## Overview
343
+ This file contains ALL AI interactions and development prompts, maintaining complete traceability of the development process.
344
+
345
+ **🚨 MANDATE**: This file MUST be updated with every AI interaction during development.
346
+
347
+ ## Latest Entries
348
+
349
+ ### Project Setup (${new Date().toISOString().split('T')[0]})
350
+
351
+ #### Prompt: Initial Validation
352
+ **Prompt**: "Validate project specifications and fix any issues"
353
+
354
+ **Context**: Running specpilot validation to ensure project compliance
355
+
356
+ **Response**:
357
+ - Validated project structure
358
+ - Ensured mandate compliance
359
+ - Created missing specification files
360
+
361
+ **Files Modified**: Various .specs/ files
362
+
363
+ **Next Actions**: Continue development following specifications
364
+
365
+ ---
366
+
367
+ ## Template for Future Entries
368
+
369
+ ### Session [N]: [Session Title]
370
+ **Date**: [YYYY-MM-DD]
371
+ **Duration**: [Time spent]
372
+ **Participants**: [Team members, AI interactions]
373
+
374
+ #### Prompts and Responses
375
+
376
+ 1. **[Prompt Category]**
377
+ - **Prompt**: "[Exact prompt text]"
378
+ - **Context**: "[Why this prompt was needed]"
379
+ - **Response**: "[Summary of AI response]"
380
+ - **Code Generated**: "[File paths and brief description]"
381
+ - **Outcome**: "[Result of the interaction]"
382
+
383
+ ---
384
+ *Last updated: ${new Date().toISOString().split('T')[0]}*`;
385
+ }
386
+ getDefaultArchitecture() {
387
+ return `# Project Architecture
388
+
389
+ ## Overview
390
+ This document outlines the architecture and design decisions for this project.
391
+
392
+ ## Architecture Patterns
393
+ - **Architecture Style**: [To be defined]
394
+ - **Data Flow**: [To be defined]
395
+
396
+ ## Core Components
397
+ [To be documented]
398
+
399
+ ## Design Decisions
400
+ [To be added as decisions are made]
401
+
402
+ ---
403
+ *Last updated: ${new Date().toISOString().split('T')[0]}*`;
404
+ }
405
+ getDefaultRequirements() {
406
+ return `# Project Requirements
407
+
408
+ ## Project Overview
409
+ [Project description to be added]
410
+
411
+ ## Functional Requirements
412
+ [To be defined]
413
+
414
+ ## Non-Functional Requirements
415
+ [To be defined]
416
+
417
+ ## User Stories
418
+ [To be added]
419
+
420
+ ---
421
+ *Last updated: ${new Date().toISOString().split('T')[0]}*`;
422
+ }
423
+ }
424
+ exports.SpecValidator = SpecValidator;
425
+ //# sourceMappingURL=specValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specValidator.js","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface TemplateContext {
2
+ projectName: string;
3
+ language: string;
4
+ framework?: string;
5
+ author?: string;
6
+ description?: string;
7
+ [key: string]: any;
8
+ }
9
+ export declare class TemplateEngine {
10
+ private templates;
11
+ constructor();
12
+ private registerHelpers;
13
+ loadTemplate(templatePath: string, name: string): void;
14
+ render(templateName: string, context: TemplateContext): string;
15
+ renderFromString(templateString: string, context: TemplateContext): string;
16
+ getBuiltinTemplate(language: string, framework: string | undefined, fileName: string): string;
17
+ private getBuiltinTemplateContent;
18
+ private getProjectYamlTemplate;
19
+ private getDependencySection;
20
+ private getArchitectureTemplate;
21
+ }
22
+ //# sourceMappingURL=templateEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateEngine.d.ts","sourceRoot":"","sources":["../../src/utils/templateEngine.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAsD;;IAMvE,OAAO,CAAC,eAAe;IAWvB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAUtD,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM;IAS9D,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM;IAK1E,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK7F,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,sBAAsB;IAyC9B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,uBAAuB;CA8ChC"}