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.
- package/README.md +96 -27
- package/dist/cli.js +23 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +4 -9
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/archive.d.ts +5 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +52 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +131 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +23 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/refine.d.ts +8 -0
- package/dist/commands/refine.d.ts.map +1 -0
- package/dist/commands/refine.js +286 -0
- package/dist/commands/refine.js.map +1 -0
- package/dist/commands/specify.d.ts.map +1 -1
- package/dist/commands/specify.js +98 -15
- package/dist/commands/specify.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/agentConfigGenerator.d.ts +15 -0
- package/dist/utils/agentConfigGenerator.d.ts.map +1 -0
- package/dist/utils/agentConfigGenerator.js +234 -0
- package/dist/utils/agentConfigGenerator.js.map +1 -0
- package/dist/utils/codeAnalyzer.js +10 -10
- package/dist/utils/codeAnalyzer.js.map +1 -1
- package/dist/utils/frameworks.d.ts +2 -0
- package/dist/utils/frameworks.d.ts.map +1 -0
- package/dist/utils/frameworks.js +11 -0
- package/dist/utils/frameworks.js.map +1 -0
- package/dist/utils/ideConfigGenerator.d.ts +20 -0
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -0
- package/dist/utils/ideConfigGenerator.js +176 -0
- package/dist/utils/ideConfigGenerator.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +27 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/projectDetector.d.ts.map +1 -1
- package/dist/utils/projectDetector.js.map +1 -1
- package/dist/utils/projectMigrator.d.ts.map +1 -1
- package/dist/utils/projectMigrator.js +36 -33
- package/dist/utils/projectMigrator.js.map +1 -1
- package/dist/utils/specArchiver.d.ts +20 -0
- package/dist/utils/specArchiver.d.ts.map +1 -0
- package/dist/utils/specArchiver.js +124 -0
- package/dist/utils/specArchiver.js.map +1 -0
- package/dist/utils/specFileGenerator.d.ts +27 -0
- package/dist/utils/specFileGenerator.d.ts.map +1 -0
- package/dist/utils/specFileGenerator.js +805 -0
- package/dist/utils/specFileGenerator.js.map +1 -0
- package/dist/utils/specGenerator.d.ts +11 -14
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +25 -431
- package/dist/utils/specGenerator.js.map +1 -1
- package/dist/utils/specTreePrinter.d.ts +8 -0
- package/dist/utils/specTreePrinter.d.ts.map +1 -0
- package/dist/utils/specTreePrinter.js +38 -0
- package/dist/utils/specTreePrinter.js.map +1 -0
- package/dist/utils/specValidator.d.ts +3 -0
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +85 -10
- package/dist/utils/specValidator.js.map +1 -1
- package/dist/utils/templateEngine.d.ts +9 -3
- package/dist/utils/templateEngine.d.ts.map +1 -1
- package/dist/utils/templateEngine.js +44 -36
- package/dist/utils/templateEngine.js.map +1 -1
- package/package.json +10 -6
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentConfigGenerator = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
/**
|
|
7
|
+
* Generates AI agent configuration files:
|
|
8
|
+
* - Cowork Skills (.claude/skills/specpilot-project/SKILL.md)
|
|
9
|
+
* - Codex Instructions (CODEX_INSTRUCTIONS.md at project root)
|
|
10
|
+
*/
|
|
11
|
+
class AgentConfigGenerator {
|
|
12
|
+
constructor(templateEngine) {
|
|
13
|
+
this.templateEngine = templateEngine;
|
|
14
|
+
}
|
|
15
|
+
/** Entry point — routes to the correct agent config generator. */
|
|
16
|
+
async generate(projectDir, context, agent) {
|
|
17
|
+
switch (agent.toLowerCase()) {
|
|
18
|
+
case 'cowork':
|
|
19
|
+
await this.generateCoworkSkills(projectDir, context);
|
|
20
|
+
break;
|
|
21
|
+
case 'codex':
|
|
22
|
+
await this.generateCodexInstructions(projectDir, context);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async generateCoworkSkills(projectDir, context) {
|
|
27
|
+
const skillsDir = (0, path_1.join)(projectDir, '.claude', 'skills', 'specpilot-project');
|
|
28
|
+
(0, fs_1.mkdirSync)(skillsDir, { recursive: true });
|
|
29
|
+
const skillContent = `---
|
|
30
|
+
name: specpilot-project
|
|
31
|
+
description: SpecPilot project context, specifications, and development guidelines. Use to understand project architecture, requirements, and AI interaction history.
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# SpecPilot Project Context
|
|
35
|
+
|
|
36
|
+
This Skill provides context about the {{projectName}} project structure, specifications, and development practices.
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
The project uses Specification-Driven Development (SDD). All context lives in the \`.specs/\` folder:
|
|
41
|
+
|
|
42
|
+
- **.specs/project/** - Project metadata and requirements
|
|
43
|
+
- **.specs/architecture/** - System design and API specifications
|
|
44
|
+
- **.specs/planning/** - Tasks, roadmap, and project management
|
|
45
|
+
- **.specs/quality/** - Testing strategies and quality guidelines
|
|
46
|
+
- **.specs/development/** - AI prompts, context, and development logs
|
|
47
|
+
|
|
48
|
+
## Key Files to Reference
|
|
49
|
+
|
|
50
|
+
1. **.specs/project/project.yaml** - Project configuration, rules, and tech stack
|
|
51
|
+
2. **.specs/project/requirements.md** - Functional and non-functional requirements
|
|
52
|
+
3. **.specs/architecture/architecture.md** - System architecture and design decisions
|
|
53
|
+
4. **.specs/planning/tasks.md** - Current tasks, sprints, and priorities
|
|
54
|
+
5. **.specs/development/prompts.md** - AI interaction history and onboarding guide
|
|
55
|
+
|
|
56
|
+
## Project Rules
|
|
57
|
+
|
|
58
|
+
\`\`\`bash
|
|
59
|
+
# Always follow these mandates:
|
|
60
|
+
- Update .specs/ files when making changes
|
|
61
|
+
- Maintain .specs/ as single source of truth
|
|
62
|
+
- Never modify .specs/ folder structure or file names
|
|
63
|
+
- Document decisions in context.md
|
|
64
|
+
- Update prompts.md with AI interactions
|
|
65
|
+
- Follow stable ID conventions (REQ-###, TASK-###, ARCH-###)
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
## Architecture Overview
|
|
69
|
+
|
|
70
|
+
Project: {{projectName}}
|
|
71
|
+
Language: {{language}}
|
|
72
|
+
{{#if framework}}
|
|
73
|
+
Framework: {{framework}}
|
|
74
|
+
{{/if}}
|
|
75
|
+
|
|
76
|
+
## Development Process
|
|
77
|
+
|
|
78
|
+
1. Review requirements in .specs/project/requirements.md
|
|
79
|
+
2. Check tasks in .specs/planning/tasks.md
|
|
80
|
+
3. Reference architecture in .specs/architecture/architecture.md
|
|
81
|
+
4. Update specs after major changes
|
|
82
|
+
5. Document decisions and context
|
|
83
|
+
|
|
84
|
+
## AI Onboarding
|
|
85
|
+
|
|
86
|
+
For full AI onboarding instructions, see **.specs/development/prompts.md**.
|
|
87
|
+
This includes a comprehensive first-use prompt for populating all specs.
|
|
88
|
+
|
|
89
|
+
## Cross-References
|
|
90
|
+
|
|
91
|
+
All spec files link to each other for easy navigation. Follow the links in relative paths like:
|
|
92
|
+
- ../project/project.yaml
|
|
93
|
+
- ../architecture/architecture.md
|
|
94
|
+
- ../planning/tasks.md
|
|
95
|
+
`;
|
|
96
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(skillsDir, 'SKILL.md'), skillContent
|
|
97
|
+
.replace(/\{\{projectName\}\}/g, context.projectName)
|
|
98
|
+
.replace(/\{\{language\}\}/g, context.language)
|
|
99
|
+
.replace(/{{#if framework}}/g, context.framework ? '' : '<!-- ')
|
|
100
|
+
.replace(/{{\/if}}/g, context.framework ? '' : ' -->'));
|
|
101
|
+
}
|
|
102
|
+
async generateCodexInstructions(projectDir, context) {
|
|
103
|
+
const codexInstructions = `# OpenAI Codex Instructions for {{projectName}}
|
|
104
|
+
|
|
105
|
+
This file provides context and guidelines for OpenAI Codex when working on {{projectName}}.
|
|
106
|
+
|
|
107
|
+
## Project Overview
|
|
108
|
+
|
|
109
|
+
- **Project**: {{projectName}}
|
|
110
|
+
- **Language**: {{language}}
|
|
111
|
+
{{#if framework}}
|
|
112
|
+
- **Framework**: {{framework}}
|
|
113
|
+
{{/if}}
|
|
114
|
+
- **Author**: {{author}}
|
|
115
|
+
- **Description**: {{description}}
|
|
116
|
+
|
|
117
|
+
## Specification-Driven Development
|
|
118
|
+
|
|
119
|
+
This project follows **Specification-Driven Development (SDD)** where specifications come first.
|
|
120
|
+
|
|
121
|
+
### Specification Folder Structure
|
|
122
|
+
|
|
123
|
+
All project specifications live in the \`.specs/\` folder:
|
|
124
|
+
|
|
125
|
+
\`\`\`
|
|
126
|
+
.specs/
|
|
127
|
+
├── project/ # Project configuration and requirements
|
|
128
|
+
│ ├── project.yaml # Project metadata, rules, tech stack
|
|
129
|
+
│ └── requirements.md # Functional/non-functional requirements
|
|
130
|
+
├── architecture/ # System design and APIs
|
|
131
|
+
│ ├── architecture.md # Architecture decisions and design
|
|
132
|
+
│ └── api.yaml # API specifications
|
|
133
|
+
├── planning/ # Development planning
|
|
134
|
+
│ ├── tasks.md # Task tracking (backlog, sprint, completed)
|
|
135
|
+
│ └── roadmap.md # Project roadmap and milestones
|
|
136
|
+
├── quality/ # Quality assurance
|
|
137
|
+
│ └── tests.md # Test strategy and coverage
|
|
138
|
+
└── development/ # Development context
|
|
139
|
+
├── prompts.md # AI interaction history and prompts
|
|
140
|
+
├── context.md # Project context and decisions
|
|
141
|
+
└── docs.md # Development documentation
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
## Key Rules for Development
|
|
145
|
+
|
|
146
|
+
### Mandate: Spec Updates
|
|
147
|
+
**Always update .specs/ files when making significant changes:**
|
|
148
|
+
- Update relevant spec files BEFORE committing code
|
|
149
|
+
- Update metadata (lastUpdated, version, contributors)
|
|
150
|
+
- Maintain cross-references between specs
|
|
151
|
+
- Document architectural decisions in context.md
|
|
152
|
+
|
|
153
|
+
### Mandate: Stable IDs
|
|
154
|
+
Use stable ID conventions for traceability:
|
|
155
|
+
- **REQ-###**: Requirements
|
|
156
|
+
- **TASK-###**: Tasks
|
|
157
|
+
- **ARCH-###**: Architecture components
|
|
158
|
+
- **TEST-###**: Test cases
|
|
159
|
+
|
|
160
|
+
Zero-pad numbers: REQ-001, REQ-042, etc.
|
|
161
|
+
|
|
162
|
+
### Mandate: Preserve .specs Folder Structure
|
|
163
|
+
**The .specs/ folder structure is IMMUTABLE and must never be altered.**
|
|
164
|
+
- ❌ Do NOT rename files or folders
|
|
165
|
+
- ❌ Do NOT move files between subfolders
|
|
166
|
+
- ❌ Do NOT delete files or folders
|
|
167
|
+
- ❌ Do NOT change file extensions
|
|
168
|
+
- ✅ DO update file CONTENTS and add sections
|
|
169
|
+
- ✅ DO add metadata headers and cross-references
|
|
170
|
+
|
|
171
|
+
The stable structure ensures AI agents can reliably locate specifications and automation tools function correctly.
|
|
172
|
+
|
|
173
|
+
### Mandate: No Git Operations Without Approval
|
|
174
|
+
**Never commit, push, or publish without explicit user approval.**
|
|
175
|
+
Always ask before:
|
|
176
|
+
- Committing code
|
|
177
|
+
- Pushing to remote
|
|
178
|
+
- Creating tags or releases
|
|
179
|
+
- Publishing to NPM
|
|
180
|
+
|
|
181
|
+
## Important Files to Review
|
|
182
|
+
|
|
183
|
+
1. **.specs/project/project.yaml** - Read first for project rules and tech stack
|
|
184
|
+
2. **.specs/project/requirements.md** - Requirements and constraints
|
|
185
|
+
3. **.specs/architecture/architecture.md** - System design patterns
|
|
186
|
+
4. **.specs/planning/tasks.md** - Current priorities and tasks
|
|
187
|
+
|
|
188
|
+
## When Starting Work
|
|
189
|
+
|
|
190
|
+
1. Read .specs/project/requirements.md for scope
|
|
191
|
+
2. Check .specs/planning/tasks.md for current sprint
|
|
192
|
+
3. Reference .specs/architecture/architecture.md for design guidelines
|
|
193
|
+
4. Read relevant sections in .specs/development/context.md
|
|
194
|
+
|
|
195
|
+
## When Finishing Work
|
|
196
|
+
|
|
197
|
+
1. Update .specs/ files that were affected
|
|
198
|
+
2. Update lastUpdated timestamps
|
|
199
|
+
3. Increment version numbers (semantic versioning)
|
|
200
|
+
4. Document decisions in .specs/development/context.md
|
|
201
|
+
5. Update task status in .specs/planning/tasks.md
|
|
202
|
+
|
|
203
|
+
## AI Interaction Best Practices
|
|
204
|
+
|
|
205
|
+
- Copy the first-use prompt from .specs/development/prompts.md for onboarding
|
|
206
|
+
- Log all significant interactions in .specs/development/prompts.md
|
|
207
|
+
- Reference spec IDs (REQ-001, TASK-###) in commit messages
|
|
208
|
+
- Keep .specs/development/context.md current with project state
|
|
209
|
+
|
|
210
|
+
## Testing and Validation
|
|
211
|
+
|
|
212
|
+
Run \`specpilot validate\` to check:
|
|
213
|
+
- Metadata consistency
|
|
214
|
+
- Cross-reference validity
|
|
215
|
+
- Spec file structure compliance
|
|
216
|
+
|
|
217
|
+
## Reference Documentation
|
|
218
|
+
|
|
219
|
+
- Full guide: See .specs/README.md for comprehensive documentation
|
|
220
|
+
- API spec: See .specs/architecture/api.yaml
|
|
221
|
+
- Project roadmap: See .specs/planning/roadmap.md
|
|
222
|
+
- Context history: See .specs/development/context.md
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
*Last Generated: {{currentDate}}*
|
|
227
|
+
*For more details, see .specs/development/prompts.md*
|
|
228
|
+
`;
|
|
229
|
+
const rendered = this.templateEngine.renderFromString(codexInstructions, context);
|
|
230
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(projectDir, 'CODEX_INSTRUCTIONS.md'), rendered);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.AgentConfigGenerator = AgentConfigGenerator;
|
|
234
|
+
//# sourceMappingURL=agentConfigGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentConfigGenerator.js","sourceRoot":"","sources":["../../src/utils/agentConfigGenerator.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,2BAA8C;AAG9C;;;;GAIG;AACH,MAAa,oBAAoB;IAC/B,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAEtD,kEAAkE;IAClE,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,OAAwB,EAAE,KAAa;QACxE,QAAQ,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM;QACV,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,UAAkB,EAAE,OAAwB;QAC7E,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC7E,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkExB,CAAC;QAEE,IAAA,kBAAa,EACX,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,EAC3B,YAAY;aACT,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,WAAW,CAAC;aACpD,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC9C,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aAC/D,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CACzD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,UAAkB,EAAE,OAAwB;QAClF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6H7B,CAAC;QAEE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAClF,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,uBAAuB,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;CACF;AApOD,oDAoOC"}
|
|
@@ -44,13 +44,13 @@ class CodeAnalyzer {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
catch
|
|
47
|
+
catch {
|
|
48
48
|
// Skip files that can't be read
|
|
49
49
|
continue;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
catch
|
|
53
|
+
catch {
|
|
54
54
|
// Skip directories that can't be read
|
|
55
55
|
}
|
|
56
56
|
return todos;
|
|
@@ -77,7 +77,7 @@ class CodeAnalyzer {
|
|
|
77
77
|
testCount += testMatches.length;
|
|
78
78
|
}
|
|
79
79
|
// Categorize tests
|
|
80
|
-
if (file.includes('e2e')
|
|
80
|
+
if (file.includes('e2e')) {
|
|
81
81
|
hasE2E = true;
|
|
82
82
|
}
|
|
83
83
|
else if (file.includes('integration')) {
|
|
@@ -87,7 +87,7 @@ class CodeAnalyzer {
|
|
|
87
87
|
hasUnit = true;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
catch
|
|
90
|
+
catch {
|
|
91
91
|
// Skip files that can't be read
|
|
92
92
|
}
|
|
93
93
|
});
|
|
@@ -116,12 +116,12 @@ class CodeAnalyzer {
|
|
|
116
116
|
testFiles.push(fullPath.replace(dir + '/', ''));
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
catch
|
|
119
|
+
catch {
|
|
120
120
|
continue;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
catch
|
|
124
|
+
catch {
|
|
125
125
|
// Skip directories that can't be read
|
|
126
126
|
}
|
|
127
127
|
}
|
|
@@ -151,7 +151,7 @@ class CodeAnalyzer {
|
|
|
151
151
|
return 'playwright';
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
catch
|
|
154
|
+
catch {
|
|
155
155
|
// No package.json or can't read it
|
|
156
156
|
}
|
|
157
157
|
// Check for Python test frameworks
|
|
@@ -165,7 +165,7 @@ class CodeAnalyzer {
|
|
|
165
165
|
return 'unittest';
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
catch
|
|
168
|
+
catch {
|
|
169
169
|
// No requirements.txt
|
|
170
170
|
}
|
|
171
171
|
return undefined;
|
|
@@ -209,12 +209,12 @@ class CodeAnalyzer {
|
|
|
209
209
|
result += `${prefix}${item}\n`;
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
|
-
catch
|
|
212
|
+
catch {
|
|
213
213
|
continue;
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
catch
|
|
217
|
+
catch {
|
|
218
218
|
// Skip directories that can't be read
|
|
219
219
|
}
|
|
220
220
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeAnalyzer.js","sourceRoot":"","sources":["../../src/utils/codeAnalyzer.ts"],"names":[],"mappings":";;;AAAA,2BAAyD;AACzD,+BAAqC;AA8BrC,MAAa,YAAY;IAAzB;QACU,gBAAW,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/F,mBAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAqOxF,CAAC;IAnOC,KAAK,CAAC,eAAe,CAAC,aAAqB,OAAO,CAAC,GAAG,EAAE;QACtD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;SACnD,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,GAAW,EAAE,QAAoB,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAC;YAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;oBAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;wBAClC,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACvD,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;4BAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC;gCACvD,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;4BAEnE,IAAI,SAAS,EAAE,CAAC;gCACd,KAAK,CAAC,IAAI,CAAC;oCACT,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;oCACrC,IAAI,EAAE,KAAK,GAAG,CAAC;oCACf,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAwC;oCACtE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iCAC1B,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,
|
|
1
|
+
{"version":3,"file":"codeAnalyzer.js","sourceRoot":"","sources":["../../src/utils/codeAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/utils/frameworks.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAOnE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFrameworksForLanguage = getFrameworksForLanguage;
|
|
4
|
+
function getFrameworksForLanguage(language) {
|
|
5
|
+
const frameworks = {
|
|
6
|
+
typescript: ['react', 'express', 'next', 'nest', 'vue', 'angular'],
|
|
7
|
+
python: ['fastapi', 'django', 'flask', 'streamlit']
|
|
8
|
+
};
|
|
9
|
+
return frameworks[language] || [];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=frameworks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/utils/frameworks.ts"],"names":[],"mappings":";;AAAA,4DAOC;AAPD,SAAgB,wBAAwB,CAAC,QAAgB;IACvD,MAAM,UAAU,GAA6B;QAC3C,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;QAClE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC;KACpD,CAAC;IAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TemplateContext } from './templateEngine';
|
|
2
|
+
/**
|
|
3
|
+
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .kiro, .antigravity).
|
|
4
|
+
* Each IDE gets a settings.json and extensions.json with a shared base config
|
|
5
|
+
* plus per-IDE overlay keys.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IdeConfigGenerator {
|
|
8
|
+
/** Entry point — routes to the correct IDE settings generator. */
|
|
9
|
+
generate(projectDir: string, context: TemplateContext, ide: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Generates .github/copilot-instructions.md with critical mandates.
|
|
12
|
+
* Read automatically by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
13
|
+
* Always generated regardless of IDE choice.
|
|
14
|
+
*/
|
|
15
|
+
generateCopilotInstructions(projectDir: string, context: TemplateContext): Promise<void>;
|
|
16
|
+
private buildCopilotInstructions;
|
|
17
|
+
private generateIDESettings;
|
|
18
|
+
private buildSettingsJson;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ideConfigGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ideConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA0CnD;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,kEAAkE;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxF;;;;OAIG;IACG,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9F,OAAO,CAAC,wBAAwB;YAwClB,mBAAmB;IAsBjC,OAAO,CAAC,iBAAiB;CA2D1B"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdeConfigGenerator = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
/** IDE-specific overlay keys appended on top of the shared base settings.
|
|
7
|
+
* NOTE: These keys are aspirational — they are NOT confirmed in each IDE's
|
|
8
|
+
* official documentation. Unknown keys are silently ignored, but they are
|
|
9
|
+
* included here as hints for IDEs that may adopt spec-aware settings in future.
|
|
10
|
+
* Remove any keys that cause warnings in your specific IDE version.
|
|
11
|
+
*/
|
|
12
|
+
const IDE_OVERRIDES = {
|
|
13
|
+
cursor: {
|
|
14
|
+
// ASPIRATIONAL — not in official Cursor docs
|
|
15
|
+
'cursor.aiAccess': true,
|
|
16
|
+
'cursor.enableAIContext': true,
|
|
17
|
+
},
|
|
18
|
+
windsurf: {
|
|
19
|
+
// ASPIRATIONAL — not in official Windsurf docs
|
|
20
|
+
'windsurf.aiContext.enabled': true,
|
|
21
|
+
'windsurf.specs.integration': true,
|
|
22
|
+
'windsurf.codeCompletion.contextAware': true,
|
|
23
|
+
},
|
|
24
|
+
kiro: {
|
|
25
|
+
// ASPIRATIONAL — not in official Kiro docs
|
|
26
|
+
'kiro.ai.contextAware': true,
|
|
27
|
+
'kiro.specs.enabled': true,
|
|
28
|
+
},
|
|
29
|
+
antigravity: {
|
|
30
|
+
// ASPIRATIONAL — not in official Antigravity docs
|
|
31
|
+
'antigravity.ai.enabled': true,
|
|
32
|
+
'antigravity.contextual': true,
|
|
33
|
+
'antigravity.specs.integration': true,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/** IDE directory names used for settings files. */
|
|
37
|
+
const IDE_DIRS = {
|
|
38
|
+
vscode: '.vscode',
|
|
39
|
+
cursor: '.cursor',
|
|
40
|
+
windsurf: '.windsurf',
|
|
41
|
+
kiro: '.kiro',
|
|
42
|
+
antigravity: '.antigravity',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .kiro, .antigravity).
|
|
46
|
+
* Each IDE gets a settings.json and extensions.json with a shared base config
|
|
47
|
+
* plus per-IDE overlay keys.
|
|
48
|
+
*/
|
|
49
|
+
class IdeConfigGenerator {
|
|
50
|
+
/** Entry point — routes to the correct IDE settings generator. */
|
|
51
|
+
async generate(projectDir, context, ide) {
|
|
52
|
+
await this.generateIDESettings(projectDir, context, ide);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generates .github/copilot-instructions.md with critical mandates.
|
|
56
|
+
* Read automatically by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
57
|
+
* Always generated regardless of IDE choice.
|
|
58
|
+
*/
|
|
59
|
+
async generateCopilotInstructions(projectDir, context) {
|
|
60
|
+
const githubDir = (0, path_1.join)(projectDir, '.github');
|
|
61
|
+
(0, fs_1.mkdirSync)(githubDir, { recursive: true });
|
|
62
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(githubDir, 'copilot-instructions.md'), this.buildCopilotInstructions(context));
|
|
63
|
+
}
|
|
64
|
+
buildCopilotInstructions(context) {
|
|
65
|
+
const stack = context.framework
|
|
66
|
+
? `${context.language} / ${context.framework}`
|
|
67
|
+
: context.language;
|
|
68
|
+
return `# AI Coding Instructions — ${context.projectName}
|
|
69
|
+
|
|
70
|
+
> This file is automatically read by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
71
|
+
> Keep this file short — only critical mandates. Full context is in \`.specs/project/project.yaml\`.
|
|
72
|
+
|
|
73
|
+
## Project
|
|
74
|
+
|
|
75
|
+
- **Name:** ${context.projectName}
|
|
76
|
+
- **Stack:** ${stack}
|
|
77
|
+
- **Specs location:** \`.specs/\`
|
|
78
|
+
|
|
79
|
+
## 🔴 Critical Mandates — Never violate, no exceptions
|
|
80
|
+
|
|
81
|
+
1. **NEVER commit** code to git unless the developer explicitly asks. Always ask first.
|
|
82
|
+
2. **NEVER push** to git unless the developer explicitly asks. Always ask first.
|
|
83
|
+
3. **NEVER deploy, publish, or release** the project unless the developer explicitly asks. Always ask first.
|
|
84
|
+
4. **NEVER modify** the \`.specs/\` folder structure, subfolder names, or file names. Only update file contents.
|
|
85
|
+
5. **ALWAYS update** affected \`.specs/\` files after every code change — without being asked:
|
|
86
|
+
- Structural changes → \`architecture/architecture.md\`
|
|
87
|
+
- Feature changes → \`project/requirements.md\`
|
|
88
|
+
- Test changes → \`quality/tests.md\`
|
|
89
|
+
- Task status → \`planning/tasks.md\`
|
|
90
|
+
- Completed work → \`CHANGELOG.md\`
|
|
91
|
+
|
|
92
|
+
## 🟡 Process Mandates
|
|
93
|
+
|
|
94
|
+
- **Spec-First:** Update \`.specs/\` before writing code.
|
|
95
|
+
- **Log all AI interactions** in \`.specs/development/prompts.md\` with timestamps.
|
|
96
|
+
- **Document decisions** in \`.specs/development/context.md\`.
|
|
97
|
+
|
|
98
|
+
## Re-Anchor
|
|
99
|
+
|
|
100
|
+
If you lose context mid-session, read \`.specs/project/project.yaml\` to restore full project context.\nFor a ready-made re-anchor prompt, see \`.specs/development/prompts.md → ## Re-Anchor Prompt\`.
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
async generateIDESettings(projectDir, context, ide) {
|
|
104
|
+
const key = ide.toLowerCase();
|
|
105
|
+
const ideDir = IDE_DIRS[key] ?? '.vscode';
|
|
106
|
+
const overrides = IDE_OVERRIDES[key] ?? {};
|
|
107
|
+
const fullDir = (0, path_1.join)(projectDir, ideDir);
|
|
108
|
+
(0, fs_1.mkdirSync)(fullDir, { recursive: true });
|
|
109
|
+
const settingsWithComment = this.buildSettingsJson(ide, context, overrides);
|
|
110
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(fullDir, 'settings.json'), settingsWithComment);
|
|
111
|
+
const extensions = {
|
|
112
|
+
recommendations: [
|
|
113
|
+
'esbenp.prettier-vscode',
|
|
114
|
+
'redhat.vscode-yaml',
|
|
115
|
+
'github.copilot',
|
|
116
|
+
'ms-vscode.vscode-typescript-next',
|
|
117
|
+
],
|
|
118
|
+
unwantedRecommendations: [],
|
|
119
|
+
};
|
|
120
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(fullDir, 'extensions.json'), JSON.stringify(extensions, null, 2));
|
|
121
|
+
}
|
|
122
|
+
buildSettingsJson(ide, context, overrides) {
|
|
123
|
+
const displayName = ide === 'vscode' ? 'VS Code' : ide.charAt(0).toUpperCase() + ide.slice(1);
|
|
124
|
+
const noteComment = ide === 'vscode'
|
|
125
|
+
? '// Copy the "First-Use Onboarding Prompt" and paste into your AI agent to populate specs'
|
|
126
|
+
: `// Copy the "First-Use Onboarding Prompt" and paste into ${displayName}'s AI chat to populate specs`;
|
|
127
|
+
// Build override lines
|
|
128
|
+
const overrideLines = Object.entries(overrides)
|
|
129
|
+
.map(([k, v]) => ` "${k}": ${JSON.stringify(v)},`)
|
|
130
|
+
.join('\n');
|
|
131
|
+
const overrideBlock = overrideLines
|
|
132
|
+
? `\n // ${displayName}-specific AI settings (ASPIRATIONAL — not confirmed in official docs; unknown keys are silently ignored)\n${overrideLines}\n`
|
|
133
|
+
: '';
|
|
134
|
+
return `{
|
|
135
|
+
// SpecPilot AI IDE Configuration${ide !== 'vscode' ? ` for ${displayName}` : ''}
|
|
136
|
+
// This file configures ${displayName} to work effectively with SpecPilot specs
|
|
137
|
+
|
|
138
|
+
// AI CONTEXT: The recommended way to give AI agents access to your .specs files
|
|
139
|
+
// is via .github/copilot-instructions.md (VS Code Copilot) or your IDE's equivalent
|
|
140
|
+
// custom instructions file. See .specs/development/prompts.md for guidelines.
|
|
141
|
+
${noteComment}
|
|
142
|
+
|
|
143
|
+
// Ensure .specs folder is included in workspace search (not excluded)
|
|
144
|
+
"search.exclude": {
|
|
145
|
+
"**/.specs/*": false
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
// Markdown formatting for spec files
|
|
149
|
+
"[markdown]": {
|
|
150
|
+
"editor.wordWrap": "on",
|
|
151
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
// YAML formatting for spec files (project.yaml, api.yaml)
|
|
155
|
+
"[yaml]": {
|
|
156
|
+
"editor.insertSpaces": true,
|
|
157
|
+
"editor.tabSize": 2
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
// YAML validation (requires redhat.vscode-yaml extension)
|
|
161
|
+
"yaml.validate": true,
|
|
162
|
+
"yaml.schemas": {
|
|
163
|
+
"https://json.schemastore.org/github-workflow.json": ".github/workflows/*.{yml,yaml}"
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
// General file exclusions
|
|
167
|
+
"files.exclude": {
|
|
168
|
+
"**/.git": true,
|
|
169
|
+
"**/node_modules": true,
|
|
170
|
+
"**/__pycache__": true
|
|
171
|
+
}${overrideBlock}
|
|
172
|
+
}`;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.IdeConfigGenerator = IdeConfigGenerator;
|
|
176
|
+
//# sourceMappingURL=ideConfigGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ideConfigGenerator.js","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAOnB;IAIF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAYxC,cAAc,IAAI,IAAI;IA4BtB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAoCtL,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAsCxJ,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA0BnF,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,OAAc,GAAG,IAAI;IAgBnF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CASlD"}
|