specpilot 1.6.3 → 1.7.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.
- package/README.md +26 -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 +27 -8
- 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 +111 -0
- package/dist/commands/backfill.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +18 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/utils/ideConfigGenerator.d.ts +23 -1
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -1
- package/dist/utils/ideConfigGenerator.js +192 -31
- 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 +78 -0
- package/dist/utils/specBackfiller.d.ts.map +1 -0
- package/dist/utils/specBackfiller.js +583 -0
- package/dist/utils/specBackfiller.js.map +1 -0
- package/dist/utils/specFileGenerator.d.ts.map +1 -1
- package/dist/utils/specFileGenerator.js +25 -3
- package/dist/utils/specFileGenerator.js.map +1 -1
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +4 -3
- package/dist/utils/specGenerator.js.map +1 -1
- package/dist/utils/specValidator.d.ts +2 -0
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +10 -10
- package/dist/utils/specValidator.js.map +1 -1
- package/dist/utils/templateEngine.d.ts.map +1 -1
- package/dist/utils/templateEngine.js +3 -0
- package/dist/utils/templateEngine.js.map +1 -1
- package/package.json +2 -2
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ideConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ideConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAoCnD;;;;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;;;;;;;;OAQG;IACH;;;;;;OAMG;IACG,qBAAqB,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EACX,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAgBhB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,wBAAwB;YAMlB,gBAAgB;IA2C9B,OAAO,CAAC,aAAa;IAuCrB,OAAO,CAAC,oBAAoB;IAiCtB,2BAA2B,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAyChB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,6BAA6B;IAgBrC,OAAO,CAAC,4BAA4B;YAMtB,mBAAmB;IAsBjC,OAAO,CAAC,iBAAiB;IA4DzB;;;;OAIG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAqBhD"}
|
|
@@ -25,11 +25,6 @@ const IDE_OVERRIDES = {
|
|
|
25
25
|
'windsurf.specs.integration': true,
|
|
26
26
|
'windsurf.codeCompletion.contextAware': true,
|
|
27
27
|
},
|
|
28
|
-
kiro: {
|
|
29
|
-
// ASPIRATIONAL — not in official Kiro docs
|
|
30
|
-
'kiro.ai.contextAware': true,
|
|
31
|
-
'kiro.specs.enabled': true,
|
|
32
|
-
},
|
|
33
28
|
antigravity: {
|
|
34
29
|
// ASPIRATIONAL — not in official Antigravity docs
|
|
35
30
|
'antigravity.ai.enabled': true,
|
|
@@ -42,11 +37,10 @@ const IDE_DIRS = {
|
|
|
42
37
|
vscode: '.vscode',
|
|
43
38
|
cursor: '.cursor',
|
|
44
39
|
windsurf: '.windsurf',
|
|
45
|
-
kiro: '.kiro',
|
|
46
40
|
antigravity: '.antigravity',
|
|
47
41
|
};
|
|
48
42
|
/**
|
|
49
|
-
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .
|
|
43
|
+
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .antigravity).
|
|
50
44
|
* Each IDE gets a settings.json and extensions.json with a shared base config
|
|
51
45
|
* plus per-IDE overlay keys.
|
|
52
46
|
*/
|
|
@@ -64,6 +58,152 @@ class IdeConfigGenerator {
|
|
|
64
58
|
* - noPrompts=false → asks user: overwrite / append / skip
|
|
65
59
|
* - noPrompts=true → auto-skips and prints a warning
|
|
66
60
|
*/
|
|
61
|
+
/**
|
|
62
|
+
* Routes to the correct IDE-native AI context file based on the selected IDE.
|
|
63
|
+
* - vscode / codex → .github/copilot-instructions.md
|
|
64
|
+
* - cursor → .cursor/rules/project.mdc
|
|
65
|
+
* - windsurf → .windsurfrules
|
|
66
|
+
* - antigravity → .antigravity/rules.md
|
|
67
|
+
*/
|
|
68
|
+
async generateAiContextFile(projectDir, context, ide, noPrompts = false) {
|
|
69
|
+
const key = ide.toLowerCase();
|
|
70
|
+
if (key === 'cursor') {
|
|
71
|
+
await this.generateCursorRules(projectDir, context);
|
|
72
|
+
}
|
|
73
|
+
else if (key === 'windsurf') {
|
|
74
|
+
await this.generateWindsurfRules(projectDir, context);
|
|
75
|
+
}
|
|
76
|
+
else if (key === 'antigravity') {
|
|
77
|
+
await this.generateAntigravityRules(projectDir, context);
|
|
78
|
+
}
|
|
79
|
+
else if (key === 'cowork') {
|
|
80
|
+
await this.generateClaudeMd(projectDir, context, noPrompts);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// vscode, codex, and unknown IDEs → copilot-instructions.md
|
|
84
|
+
await this.generateCopilotInstructions(projectDir, context, noPrompts);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
generateCursorRules(projectDir, context) {
|
|
88
|
+
const rulesDir = (0, path_1.join)(projectDir, '.cursor', 'rules');
|
|
89
|
+
(0, fs_1.mkdirSync)(rulesDir, { recursive: true });
|
|
90
|
+
const filePath = (0, path_1.join)(rulesDir, 'project.mdc');
|
|
91
|
+
const content = `---\ndescription: Project mandates and AI coding rules\nglobs:\nalwaysApply: true\n---\n\n` +
|
|
92
|
+
this.buildCopilotInstructions(context);
|
|
93
|
+
(0, fs_1.writeFileSync)(filePath, content);
|
|
94
|
+
}
|
|
95
|
+
generateWindsurfRules(projectDir, context) {
|
|
96
|
+
const filePath = (0, path_1.join)(projectDir, '.windsurfrules');
|
|
97
|
+
(0, fs_1.writeFileSync)(filePath, this.buildCopilotInstructions(context));
|
|
98
|
+
}
|
|
99
|
+
generateAntigravityRules(projectDir, context) {
|
|
100
|
+
const rulesDir = (0, path_1.join)(projectDir, '.antigravity');
|
|
101
|
+
(0, fs_1.mkdirSync)(rulesDir, { recursive: true });
|
|
102
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(rulesDir, 'rules.md'), this.buildCopilotInstructions(context));
|
|
103
|
+
}
|
|
104
|
+
async generateClaudeMd(projectDir, context, noPrompts = false) {
|
|
105
|
+
const filePath = (0, path_1.join)(projectDir, 'CLAUDE.md');
|
|
106
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
107
|
+
(0, fs_1.writeFileSync)(filePath, this.buildClaudeMd(context));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// File already exists
|
|
111
|
+
if (noPrompts) {
|
|
112
|
+
console.log('\u26a0\ufe0f CLAUDE.md already exists \u2014 skipping (--no-prompts).\n' +
|
|
113
|
+
' Manually merge the SpecPilot mandates shown below into that file:\n\n' +
|
|
114
|
+
this.buildClaudeMdSection(context));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const { action } = await inquirer_1.default.prompt([
|
|
118
|
+
{
|
|
119
|
+
type: 'list',
|
|
120
|
+
name: 'action',
|
|
121
|
+
message: '\u26a0\ufe0f CLAUDE.md already exists. What would you like to do?',
|
|
122
|
+
choices: [
|
|
123
|
+
{ name: 'Overwrite with SpecPilot template', value: 'o' },
|
|
124
|
+
{ name: 'Append SpecPilot section to existing file', value: 'a' },
|
|
125
|
+
{ name: 'Skip (keep existing file unchanged)', value: 's' },
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
]);
|
|
129
|
+
if (action === 'o') {
|
|
130
|
+
(0, fs_1.writeFileSync)(filePath, this.buildClaudeMd(context));
|
|
131
|
+
}
|
|
132
|
+
else if (action === 'a') {
|
|
133
|
+
(0, fs_1.appendFileSync)(filePath, '\n\n' + this.buildClaudeMdSection(context));
|
|
134
|
+
}
|
|
135
|
+
// action === 's' → leave file unchanged
|
|
136
|
+
}
|
|
137
|
+
buildClaudeMd(context) {
|
|
138
|
+
const stack = context.framework
|
|
139
|
+
? `${context.language} / ${context.framework}`
|
|
140
|
+
: context.language;
|
|
141
|
+
return `# CLAUDE.md \u2014 ${context.projectName}
|
|
142
|
+
|
|
143
|
+
> This file is the primary instructions file for Claude Code / Cowork.
|
|
144
|
+
> Keep it lean \u2014 use it as a router to your \`.specs/\` files, not a dumping ground.
|
|
145
|
+
> Full project context is in \`.specs/project/project.yaml\`.
|
|
146
|
+
|
|
147
|
+
## Project
|
|
148
|
+
|
|
149
|
+
- **Name:** ${context.projectName}
|
|
150
|
+
- **Stack:** ${stack}
|
|
151
|
+
- **Specs location:** \`.specs/\`
|
|
152
|
+
|
|
153
|
+
## \ud83d\udd34 Critical Mandates \u2014 Never violate, no exceptions
|
|
154
|
+
|
|
155
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
156
|
+
|
|
157
|
+
## \ud83d\udfe1 Process Mandates
|
|
158
|
+
|
|
159
|
+
${this.buildProcessMandatesMarkdown()}
|
|
160
|
+
|
|
161
|
+
## Context Files \u2014 Read in this order
|
|
162
|
+
|
|
163
|
+
1. \`.specs/project/project.yaml\` \u2014 project config, rules, tech stack
|
|
164
|
+
2. \`.specs/project/requirements.md\` \u2014 functional and non-functional requirements
|
|
165
|
+
3. \`.specs/architecture/architecture.md\` \u2014 system design and decisions
|
|
166
|
+
4. \`.specs/planning/tasks.md\` \u2014 current sprint and backlog
|
|
167
|
+
5. \`.claude/skills/specpilot-project/SKILL.md\` \u2014 project skill context
|
|
168
|
+
|
|
169
|
+
## Re-Anchor
|
|
170
|
+
|
|
171
|
+
If you lose context mid-session, read \`.specs/project/project.yaml\` to restore full project context.
|
|
172
|
+
For a ready-made re-anchor prompt, see \`.specs/development/prompts.md \u2192 ## Re-Anchor Prompt\`.
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
buildClaudeMdSection(context) {
|
|
176
|
+
const stack = context.framework
|
|
177
|
+
? `${context.language} / ${context.framework}`
|
|
178
|
+
: context.language;
|
|
179
|
+
return `## SpecPilot Mandates \u2014 ${context.projectName}
|
|
180
|
+
|
|
181
|
+
> Added by \`specpilot add-specs\`. These mandates apply alongside your existing instructions.
|
|
182
|
+
> Full context is in \`.specs/project/project.yaml\`.
|
|
183
|
+
|
|
184
|
+
### Project
|
|
185
|
+
|
|
186
|
+
- **Name:** ${context.projectName}
|
|
187
|
+
- **Stack:** ${stack}
|
|
188
|
+
- **Specs location:** \`.specs/\`
|
|
189
|
+
|
|
190
|
+
### \ud83d\udd34 Critical Mandates \u2014 Never violate, no exceptions
|
|
191
|
+
|
|
192
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
193
|
+
|
|
194
|
+
### \ud83d\udfe1 Process Mandates
|
|
195
|
+
|
|
196
|
+
${this.buildProcessMandatesMarkdown()}
|
|
197
|
+
|
|
198
|
+
### Context Files \u2014 Read in this order
|
|
199
|
+
|
|
200
|
+
1. \`.specs/project/project.yaml\` \u2014 project config, rules, tech stack
|
|
201
|
+
2. \`.specs/project/requirements.md\` \u2014 functional and non-functional requirements
|
|
202
|
+
3. \`.specs/architecture/architecture.md\` \u2014 system design and decisions
|
|
203
|
+
4. \`.specs/planning/tasks.md\` \u2014 current sprint and backlog
|
|
204
|
+
5. \`.claude/skills/specpilot-project/SKILL.md\` \u2014 project skill context
|
|
205
|
+
`;
|
|
206
|
+
}
|
|
67
207
|
async generateCopilotInstructions(projectDir, context, noPrompts = false) {
|
|
68
208
|
const githubDir = (0, path_1.join)(projectDir, '.github');
|
|
69
209
|
(0, fs_1.mkdirSync)(githubDir, { recursive: true });
|
|
@@ -120,22 +260,11 @@ class IdeConfigGenerator {
|
|
|
120
260
|
|
|
121
261
|
### 🔴 Critical Mandates — Never violate, no exceptions
|
|
122
262
|
|
|
123
|
-
|
|
124
|
-
2. **NEVER push** to git unless the developer explicitly asks. Always ask first.
|
|
125
|
-
3. **NEVER deploy, publish, or release** the project unless the developer explicitly asks. Always ask first.
|
|
126
|
-
4. **NEVER modify** the \`.specs/\` folder structure, subfolder names, or file names. Only update file contents.
|
|
127
|
-
5. **ALWAYS update** affected \`.specs/\` files after every code change — without being asked:
|
|
128
|
-
- Structural changes → \`architecture/architecture.md\`
|
|
129
|
-
- Feature changes → \`project/requirements.md\`
|
|
130
|
-
- Test changes → \`quality/tests.md\`
|
|
131
|
-
- Task status → \`planning/tasks.md\`
|
|
132
|
-
- Completed work → \`CHANGELOG.md\`
|
|
263
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
133
264
|
|
|
134
265
|
### 🟡 Process Mandates
|
|
135
266
|
|
|
136
|
-
|
|
137
|
-
- **Log all AI interactions** in \`.specs/development/prompts.md\` with timestamps.
|
|
138
|
-
- **Document decisions** in \`.specs/development/context.md\`.
|
|
267
|
+
${this.buildProcessMandatesMarkdown()}
|
|
139
268
|
|
|
140
269
|
### Re-Anchor
|
|
141
270
|
|
|
@@ -160,7 +289,19 @@ For a ready-made re-anchor prompt, see \`.specs/development/prompts.md → ## Re
|
|
|
160
289
|
|
|
161
290
|
## 🔴 Critical Mandates — Never violate, no exceptions
|
|
162
291
|
|
|
163
|
-
|
|
292
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
293
|
+
|
|
294
|
+
## 🟡 Process Mandates
|
|
295
|
+
|
|
296
|
+
${this.buildProcessMandatesMarkdown()}
|
|
297
|
+
|
|
298
|
+
## Re-Anchor
|
|
299
|
+
|
|
300
|
+
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\`.
|
|
301
|
+
`;
|
|
302
|
+
}
|
|
303
|
+
buildCriticalMandatesMarkdown() {
|
|
304
|
+
return `1. **NEVER commit** code to git unless the developer explicitly asks. Always ask first.
|
|
164
305
|
2. **NEVER push** to git unless the developer explicitly asks. Always ask first.
|
|
165
306
|
3. **NEVER deploy, publish, or release** the project unless the developer explicitly asks. Always ask first.
|
|
166
307
|
4. **NEVER modify** the \`.specs/\` folder structure, subfolder names, or file names. Only update file contents.
|
|
@@ -170,17 +311,14 @@ For a ready-made re-anchor prompt, see \`.specs/development/prompts.md → ## Re
|
|
|
170
311
|
- Test changes → \`quality/tests.md\`
|
|
171
312
|
- Task status → \`planning/tasks.md\`
|
|
172
313
|
- Completed work → \`CHANGELOG.md\`
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
314
|
+
6. **NEVER describe, quote, or reference file contents** without first reading the file via a tool call in this session. If you have not read the file yet, say so explicitly before answering.
|
|
315
|
+
7. **NEVER implement, write code, or make file changes** unless the developer explicitly asks. If the next step seems obvious, ask first — do not assume.
|
|
316
|
+
8. **SPEC-FIRST review gate**: Before touching any code or non-spec files, read all relevant \`.specs/\` files, update all affected spec files first, present a **Spec Report** summarizing what changed, which files were affected, and what the specs now say, then wait for the developer's explicit \`yes, proceed\` before writing code. If the developer declines, revert the spec changes and stop.`;
|
|
317
|
+
}
|
|
318
|
+
buildProcessMandatesMarkdown() {
|
|
319
|
+
return `- **Spec-First:** Update \`.specs/\` before writing code.
|
|
177
320
|
- **Log all AI interactions** in \`.specs/development/prompts.md\` with timestamps.
|
|
178
|
-
- **Document decisions** in \`.specs/development/context.md
|
|
179
|
-
|
|
180
|
-
## Re-Anchor
|
|
181
|
-
|
|
182
|
-
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\`.
|
|
183
|
-
`;
|
|
321
|
+
- **Document decisions** in \`.specs/development/context.md\`.`;
|
|
184
322
|
}
|
|
185
323
|
async generateIDESettings(projectDir, context, ide) {
|
|
186
324
|
const key = ide.toLowerCase();
|
|
@@ -253,6 +391,29 @@ If you lose context mid-session, read \`.specs/project/project.yaml\` to restore
|
|
|
253
391
|
}${overrideBlock}
|
|
254
392
|
}`;
|
|
255
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Generates (or updates) .gitattributes at project root with merge=union rules
|
|
396
|
+
* for append-heavy spec files, preventing git merge conflicts on shared branches.
|
|
397
|
+
* If the file already exists, only missing lines are appended.
|
|
398
|
+
*/
|
|
399
|
+
generateGitAttributes(projectDir) {
|
|
400
|
+
const GITATTRIBUTES_LINES = [
|
|
401
|
+
'.specs/development/prompts*.md merge=union',
|
|
402
|
+
'.specs/planning/tasks.md merge=union',
|
|
403
|
+
'CHANGELOG.md merge=union',
|
|
404
|
+
];
|
|
405
|
+
const filePath = (0, path_1.join)(projectDir, '.gitattributes');
|
|
406
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
407
|
+
(0, fs_1.writeFileSync)(filePath, GITATTRIBUTES_LINES.join('\n') + '\n');
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
const existing = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
411
|
+
const missing = GITATTRIBUTES_LINES.filter(line => !existing.includes(line));
|
|
412
|
+
if (missing.length > 0) {
|
|
413
|
+
const suffix = existing.endsWith('\n') ? '' : '\n';
|
|
414
|
+
(0, fs_1.appendFileSync)(filePath, suffix + missing.join('\n') + '\n');
|
|
415
|
+
}
|
|
416
|
+
}
|
|
256
417
|
}
|
|
257
418
|
exports.IdeConfigGenerator = IdeConfigGenerator;
|
|
258
419
|
//# sourceMappingURL=ideConfigGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ideConfigGenerator.js","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA4B;AAC5B,
|
|
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":"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;
|
|
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;IA6BtB,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"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -59,12 +59,13 @@ class Logger {
|
|
|
59
59
|
chalk_1.default.white(' • add-specs|add [options] - Add specs to existing project'),
|
|
60
60
|
chalk_1.default.white(' • validate|v [options] - Validate specification files'),
|
|
61
61
|
chalk_1.default.white(' • archive|ar [options] - Archive oversized prompts.md / tasks.md entries'),
|
|
62
|
+
chalk_1.default.white(' • backfill|bf [options] - Backfill missing mandates into existing projects'),
|
|
62
63
|
chalk_1.default.white(' • list|ls [options] - Show available templates'),
|
|
63
|
-
chalk_1.default.white(' • migrate|m [options] -
|
|
64
|
+
chalk_1.default.white(' • migrate|m [options] - Convert legacy .project-spec folder (rarely needed)'),
|
|
64
65
|
chalk_1.default.white(' • refine|ref [options] [desc]- Refine project specifications from natural language description'),
|
|
65
66
|
'',
|
|
66
67
|
chalk_1.default.cyan('Aliases:'),
|
|
67
|
-
chalk_1.default.white(' init→i validate→v migrate→m list→ls refine→ref archive→ar add-specs→add'),
|
|
68
|
+
chalk_1.default.white(' init→i validate→v migrate→m list→ls refine→ref archive→ar add-specs→add backfill→bf'),
|
|
68
69
|
'',
|
|
69
70
|
chalk_1.default.yellow('⚠️ Tip: Use --help for detailed command options, e.g. specpilot init --help'),
|
|
70
71
|
'',
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+BAAgC;AAChC,uDAAqD;AACrD,8DAA8D;AAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C,MAAa,MAAM;IAAnB;QACmB,SAAI,GAAG;YACxB,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,oEAAoE;YACpE,oEAAoE;YACpE,oEAAoE;SACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,12 @@ const fs_1 = require("fs");
|
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const SPECS_DIR_CANDIDATES = ['.specs', '.project-spec', 'specs', 'specifications'];
|
|
7
7
|
/** Trim prompts.md to this many total lines after archiving. */
|
|
8
|
-
const PROMPTS_LINE_LIMIT =
|
|
9
|
-
const PROMPTS_KEEP_LINES =
|
|
8
|
+
const PROMPTS_LINE_LIMIT = 100;
|
|
9
|
+
const PROMPTS_KEEP_LINES = 80;
|
|
10
10
|
/** Archive tasks.md Completed section when it exceeds this many lines. */
|
|
11
|
-
const COMPLETED_LINE_LIMIT =
|
|
11
|
+
const COMPLETED_LINE_LIMIT = 25;
|
|
12
12
|
/** How many Completed entries to retain in the active file. */
|
|
13
|
-
const COMPLETED_KEEP_ENTRIES =
|
|
13
|
+
const COMPLETED_KEEP_ENTRIES = 20;
|
|
14
14
|
class SpecArchiver {
|
|
15
15
|
findSpecsDir(projectDir) {
|
|
16
16
|
for (const name of SPECS_DIR_CANDIDATES) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specArchiver.js","sourceRoot":"","sources":["../../src/utils/specArchiver.ts"],"names":[],"mappings":";;;AAAA,2BAA6D;AAC7D,+BAA4B;AAa5B,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAEpF,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"specArchiver.js","sourceRoot":"","sources":["../../src/utils/specArchiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export interface BackfillFileResult {
|
|
2
|
+
action: 'updated' | 'created' | 'skipped' | 'missing';
|
|
3
|
+
found: number;
|
|
4
|
+
total: number;
|
|
5
|
+
added: string[];
|
|
6
|
+
reason?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IdeFileBackfillResult {
|
|
9
|
+
path: string;
|
|
10
|
+
action: 'updated' | 'created' | 'skipped' | 'missing' | 'stale';
|
|
11
|
+
found: number;
|
|
12
|
+
total: number;
|
|
13
|
+
added: string[];
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface BackfillResult {
|
|
17
|
+
projectYaml: BackfillFileResult;
|
|
18
|
+
copilotInstructions: BackfillFileResult;
|
|
19
|
+
tasksMd: BackfillFileResult;
|
|
20
|
+
ideFiles: IdeFileBackfillResult[];
|
|
21
|
+
}
|
|
22
|
+
export declare class SpecBackfiller {
|
|
23
|
+
backfill(projectDir: string, specsName: string, dryRun: boolean, noPrompts?: boolean): Promise<BackfillResult>;
|
|
24
|
+
private backfillProjectYaml;
|
|
25
|
+
/**
|
|
26
|
+
* Text-based (not yaml.dump) insertion — preserves comments, emoji, and formatting.
|
|
27
|
+
*
|
|
28
|
+
* Strategy: find the last ` - "MANDATE:` line in the file and insert
|
|
29
|
+
* missing mandate lines immediately after it. If no MANDATE lines exist yet,
|
|
30
|
+
* find the ` critical:` key and append after it. As a final fallback, append
|
|
31
|
+
* a complete `critical:` block at the end of the file.
|
|
32
|
+
*/
|
|
33
|
+
private insertYamlMandates;
|
|
34
|
+
private backfillCopilotInstructions;
|
|
35
|
+
private buildMdBackfillBlock;
|
|
36
|
+
private backfillIdeFiles;
|
|
37
|
+
private backfillMarkdownIdeFile;
|
|
38
|
+
private checkSkillFile;
|
|
39
|
+
/**
|
|
40
|
+
* Reads the first entry from `contributors:` list in project.yaml.
|
|
41
|
+
* Handles both inline (`contributors: ["girishr"]`) and block-list forms.
|
|
42
|
+
* Falls back to os.userInfo().username if not found.
|
|
43
|
+
*/
|
|
44
|
+
private readContributorsFirst;
|
|
45
|
+
/**
|
|
46
|
+
* Writes `team:\n devPrefix: "<handle>"` into project.yaml after the `license:` line.
|
|
47
|
+
* If a `team:` block already exists (but devPrefix is missing), inserts devPrefix inside it.
|
|
48
|
+
* Text-based insertion — does not parse YAML to preserve formatting.
|
|
49
|
+
*/
|
|
50
|
+
private writeDevPrefix;
|
|
51
|
+
/**
|
|
52
|
+
* When team.devPrefix is absent from project.yaml:
|
|
53
|
+
* - Reads contributors[0] as suggestion (fallback: os.userInfo().username)
|
|
54
|
+
* - Prompts user (unless noPrompts or dryRun), looping until non-empty
|
|
55
|
+
* - Writes devPrefix into project.yaml (skipped on dryRun)
|
|
56
|
+
*/
|
|
57
|
+
private ensureDevPrefix;
|
|
58
|
+
/**
|
|
59
|
+
* Prompts the user for their short handle, suggesting contributors[0].
|
|
60
|
+
* Loops until a non-empty value is provided.
|
|
61
|
+
*/
|
|
62
|
+
private promptHandle;
|
|
63
|
+
/**
|
|
64
|
+
* Reads a top-level scalar field from project.yaml using a simple regex.
|
|
65
|
+
* Handles both quoted (`name: "My Project"`) and unquoted (`name: my-project`) values.
|
|
66
|
+
* Does not parse YAML to preserve formatting safety.
|
|
67
|
+
*/
|
|
68
|
+
private readProjectField;
|
|
69
|
+
/**
|
|
70
|
+
* Reads `team.devPrefix` from project.yaml.
|
|
71
|
+
* The field is nested under a `team:` block, e.g.:
|
|
72
|
+
* team:
|
|
73
|
+
* devPrefix: "girishr"
|
|
74
|
+
*/
|
|
75
|
+
private readDevPrefix;
|
|
76
|
+
private backfillTasksMd;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=specBackfiller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specBackfiller.d.ts","sourceRoot":"","sources":["../../src/utils/specBackfiller.ts"],"names":[],"mappings":"AA4GA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,qBAAa,cAAc;IACnB,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,cAAc,CAAC;IAyB1B,OAAO,CAAC,mBAAmB;IAiC3B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YA+BZ,2BAA2B;IA6CzC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,uBAAuB;IAqC/B,OAAO,CAAC,cAAc;IA2CtB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA0BtB;;;;;OAKG;YACW,eAAe;IAsB7B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAsBpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,eAAe;CA+FxB"}
|