specpilot 1.3.0 → 1.6.1

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 (75) hide show
  1. package/README.md +96 -27
  2. package/dist/cli.js +23 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add-specs.d.ts.map +1 -1
  5. package/dist/commands/add-specs.js +4 -9
  6. package/dist/commands/add-specs.js.map +1 -1
  7. package/dist/commands/archive.d.ts +5 -0
  8. package/dist/commands/archive.d.ts.map +1 -0
  9. package/dist/commands/archive.js +52 -0
  10. package/dist/commands/archive.js.map +1 -0
  11. package/dist/commands/init.d.ts +1 -0
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +131 -14
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/list.d.ts.map +1 -1
  16. package/dist/commands/list.js +23 -3
  17. package/dist/commands/list.js.map +1 -1
  18. package/dist/commands/migrate.d.ts.map +1 -1
  19. package/dist/commands/migrate.js.map +1 -1
  20. package/dist/commands/refine.d.ts +8 -0
  21. package/dist/commands/refine.d.ts.map +1 -0
  22. package/dist/commands/refine.js +286 -0
  23. package/dist/commands/refine.js.map +1 -0
  24. package/dist/commands/specify.d.ts.map +1 -1
  25. package/dist/commands/specify.js +98 -15
  26. package/dist/commands/specify.js.map +1 -1
  27. package/dist/commands/validate.d.ts.map +1 -1
  28. package/dist/commands/validate.js.map +1 -1
  29. package/dist/utils/agentConfigGenerator.d.ts +15 -0
  30. package/dist/utils/agentConfigGenerator.d.ts.map +1 -0
  31. package/dist/utils/agentConfigGenerator.js +234 -0
  32. package/dist/utils/agentConfigGenerator.js.map +1 -0
  33. package/dist/utils/codeAnalyzer.js +10 -10
  34. package/dist/utils/codeAnalyzer.js.map +1 -1
  35. package/dist/utils/frameworks.d.ts +2 -0
  36. package/dist/utils/frameworks.d.ts.map +1 -0
  37. package/dist/utils/frameworks.js +11 -0
  38. package/dist/utils/frameworks.js.map +1 -0
  39. package/dist/utils/ideConfigGenerator.d.ts +20 -0
  40. package/dist/utils/ideConfigGenerator.d.ts.map +1 -0
  41. package/dist/utils/ideConfigGenerator.js +176 -0
  42. package/dist/utils/ideConfigGenerator.js.map +1 -0
  43. package/dist/utils/logger.d.ts.map +1 -1
  44. package/dist/utils/logger.js +27 -18
  45. package/dist/utils/logger.js.map +1 -1
  46. package/dist/utils/projectDetector.d.ts.map +1 -1
  47. package/dist/utils/projectDetector.js.map +1 -1
  48. package/dist/utils/projectMigrator.d.ts.map +1 -1
  49. package/dist/utils/projectMigrator.js +36 -33
  50. package/dist/utils/projectMigrator.js.map +1 -1
  51. package/dist/utils/specArchiver.d.ts +20 -0
  52. package/dist/utils/specArchiver.d.ts.map +1 -0
  53. package/dist/utils/specArchiver.js +124 -0
  54. package/dist/utils/specArchiver.js.map +1 -0
  55. package/dist/utils/specFileGenerator.d.ts +27 -0
  56. package/dist/utils/specFileGenerator.d.ts.map +1 -0
  57. package/dist/utils/specFileGenerator.js +805 -0
  58. package/dist/utils/specFileGenerator.js.map +1 -0
  59. package/dist/utils/specGenerator.d.ts +11 -14
  60. package/dist/utils/specGenerator.d.ts.map +1 -1
  61. package/dist/utils/specGenerator.js +25 -431
  62. package/dist/utils/specGenerator.js.map +1 -1
  63. package/dist/utils/specTreePrinter.d.ts +8 -0
  64. package/dist/utils/specTreePrinter.d.ts.map +1 -0
  65. package/dist/utils/specTreePrinter.js +38 -0
  66. package/dist/utils/specTreePrinter.js.map +1 -0
  67. package/dist/utils/specValidator.d.ts +3 -0
  68. package/dist/utils/specValidator.d.ts.map +1 -1
  69. package/dist/utils/specValidator.js +85 -10
  70. package/dist/utils/specValidator.js.map +1 -1
  71. package/dist/utils/templateEngine.d.ts +9 -3
  72. package/dist/utils/templateEngine.d.ts.map +1 -1
  73. package/dist/utils/templateEngine.js +44 -36
  74. package/dist/utils/templateEngine.js.map +1 -1
  75. package/package.json +10 -6
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAkBrD"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAuBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAmBrD"}
@@ -1,13 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.listCommand = listCommand;
4
- const templateRegistry_1 = require("../utils/templateRegistry");
5
4
  const logger_1 = require("../utils/logger");
5
+ /** Static catalog of supported templates. All produce the same .specs/ file structure. */
6
+ const TEMPLATES = [
7
+ // TypeScript
8
+ { name: 'generic', language: 'typescript', framework: undefined, description: 'Basic TypeScript project structure', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
9
+ { name: 'react', language: 'typescript', framework: 'react', description: 'React application with modern tooling', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
10
+ { name: 'express', language: 'typescript', framework: 'express', description: 'REST API server setup', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
11
+ { name: 'next', language: 'typescript', framework: 'next', description: 'Next.js full-stack application', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
12
+ { name: 'cli', language: 'typescript', framework: 'cli', description: 'Command-line tool development', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
13
+ // Python
14
+ { name: 'generic', language: 'python', framework: undefined, description: 'Basic Python project structure', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
15
+ { name: 'fastapi', language: 'python', framework: 'fastapi', description: 'Modern API development', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
16
+ { name: 'django', language: 'python', framework: 'django', description: 'Web application framework', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
17
+ { name: 'data-science', language: 'python', framework: 'data-science', description: 'Jupyter, pandas, scikit-learn setup', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
18
+ // JavaScript
19
+ { name: 'generic', language: 'javascript', framework: undefined, description: 'Basic JavaScript project structure', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
20
+ { name: 'react', language: 'javascript', framework: 'react', description: 'React application', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
21
+ // Java
22
+ { name: 'generic', language: 'java', framework: undefined, description: 'Basic Java project structure', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
23
+ { name: 'spring-boot', language: 'java', framework: 'spring-boot', description: 'Spring Boot application', files: ['project.yaml', 'architecture.md', 'requirements.md', 'api.yaml', 'tests.md', 'tasks.md', 'context.md', 'prompts.md', 'docs.md'] },
24
+ ];
6
25
  async function listCommand(options) {
7
26
  const logger = new logger_1.Logger();
8
27
  try {
9
- const registry = new templateRegistry_1.TemplateRegistry();
10
- const templates = await registry.getTemplates(options.lang);
28
+ const templates = options.lang
29
+ ? TEMPLATES.filter(t => t.language === options.lang)
30
+ : [...TEMPLATES];
11
31
  if (templates.length === 0) {
12
32
  logger.displayInfo('No Templates Found', '⚠️ No templates found matching your criteria');
13
33
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;AAUA,kCAkBC;AA1BD,gEAA6D;AAC7D,4CAAyC;AAOlC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,mCAAgB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC1G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAoF3D"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAoF3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface RefineOptions {
2
+ dir: string;
3
+ specsName: string;
4
+ prompts: boolean;
5
+ update: boolean;
6
+ }
7
+ export declare function refineCommand(description: string | undefined, options: RefineOptions): Promise<void>;
8
+ //# sourceMappingURL=refine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../src/commands/refine.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,iBA0J1F"}
@@ -0,0 +1,286 @@
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.refineCommand = refineCommand;
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 refineCommand(description, options) {
15
+ const logger = new logger_1.Logger();
16
+ try {
17
+ logger.info('📝 Refining project specifications...');
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(`🎯 Specifications refined 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('Specifications Refined'),
129
+ '',
130
+ chalk_1.default.green('✅ Successfully refined 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 refine specifications: ${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 refine 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 refine 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=refine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.js","sourceRoot":"","sources":["../../src/commands/refine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,cAAc,iBAmH5F"}
1
+ {"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,cAAc,iBA0J5F"}
@@ -48,29 +48,62 @@ async function specifyCommand(description, options) {
48
48
  const language = extractLanguage(projectYaml);
49
49
  const framework = extractFramework(projectYaml);
50
50
  logger.info(`🔍 Found project: ${projectName} (${language}${framework ? ` + ${framework}` : ''})`);
51
- // Update requirements.md with the new description
51
+ // ── Collect pending changes (without writing yet) ────────────
52
+ const pendingChanges = [];
52
53
  const requirementsPath = (0, path_1.join)(specsDir, 'project', 'requirements.md');
53
54
  if ((0, fs_1.existsSync)(requirementsPath)) {
54
- const currentContent = (0, fs_1.readFileSync)(requirementsPath, 'utf-8');
55
- const updatedContent = updateRequirementsWithDescription(currentContent, projectDescription, options.update);
56
- (0, fs_1.writeFileSync)(requirementsPath, updatedContent);
57
- logger.success('✅ Updated requirements.md with new description');
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
+ }
58
60
  }
59
- // Update context.md with the specification
60
61
  const contextPath = (0, path_1.join)(specsDir, 'development', 'context.md');
61
62
  if ((0, fs_1.existsSync)(contextPath)) {
62
- const currentContent = (0, fs_1.readFileSync)(contextPath, 'utf-8');
63
- const updatedContent = updateContextWithSpecification(currentContent, projectDescription);
64
- (0, fs_1.writeFileSync)(contextPath, updatedContent);
65
- logger.success('✅ Updated context.md with specification details');
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
+ }
66
68
  }
67
- // Update prompts.md to log this interaction
68
69
  const promptsPath = (0, path_1.join)(specsDir, 'development', 'prompts.md');
69
70
  if ((0, fs_1.existsSync)(promptsPath)) {
70
- const currentContent = (0, fs_1.readFileSync)(promptsPath, 'utf-8');
71
- const updatedContent = updatePromptsLog(currentContent, projectDescription);
72
- (0, fs_1.writeFileSync)(promptsPath, updatedContent);
73
- logger.success('✅ Logged specification in prompts.md');
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}`);
74
107
  }
75
108
  // If update flag is set, regenerate specs with new context
76
109
  if (options.update) {
@@ -200,4 +233,54 @@ function updatePromptsLog(currentContent, description) {
200
233
  return currentContent.replace(/(## Overview[\s\S]*?)(\n## |\n*$)/, `$1\n\n## Latest Entries\n${promptEntry}$2`);
201
234
  }
202
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
+ }
203
286
  //# sourceMappingURL=specify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/commands/specify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA6D7D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA6D7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TemplateEngine, TemplateContext } from './templateEngine';
2
+ /**
3
+ * Generates AI agent configuration files:
4
+ * - Cowork Skills (.claude/skills/specpilot-project/SKILL.md)
5
+ * - Codex Instructions (CODEX_INSTRUCTIONS.md at project root)
6
+ */
7
+ export declare class AgentConfigGenerator {
8
+ private templateEngine;
9
+ constructor(templateEngine: TemplateEngine);
10
+ /** Entry point — routes to the correct agent config generator. */
11
+ generate(projectDir: string, context: TemplateContext, agent: string): Promise<void>;
12
+ private generateCoworkSkills;
13
+ private generateCodexInstructions;
14
+ }
15
+ //# sourceMappingURL=agentConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/agentConfigGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAElD,kEAAkE;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAW5E,oBAAoB;YAkFpB,yBAAyB;CAmIxC"}