specpilot 1.6.2 → 1.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -11
- package/dist/cli.js +15 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +17 -9
- package/dist/commands/add-specs.js.map +1 -1
- package/dist/commands/archive.d.ts +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +66 -0
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/backfill.d.ts +8 -0
- package/dist/commands/backfill.d.ts.map +1 -0
- package/dist/commands/backfill.js +81 -0
- package/dist/commands/backfill.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +51 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/ideConfigGenerator.d.ts +19 -2
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -1
- package/dist/utils/ideConfigGenerator.js +117 -20
- package/dist/utils/ideConfigGenerator.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/specArchiver.js +4 -4
- package/dist/utils/specArchiver.js.map +1 -1
- package/dist/utils/specBackfiller.d.ts +66 -0
- package/dist/utils/specBackfiller.d.ts.map +1 -0
- package/dist/utils/specBackfiller.js +502 -0
- package/dist/utils/specBackfiller.js.map +1 -0
- package/dist/utils/specFileGenerator.d.ts.map +1 -1
- package/dist/utils/specFileGenerator.js +15 -3
- package/dist/utils/specFileGenerator.js.map +1 -1
- package/dist/utils/specGenerator.d.ts +1 -0
- package/dist/utils/specGenerator.d.ts.map +1 -1
- package/dist/utils/specGenerator.js +3 -1
- package/dist/utils/specGenerator.js.map +1 -1
- package/dist/utils/specTreePrinter.d.ts +3 -2
- package/dist/utils/specTreePrinter.d.ts.map +1 -1
- package/dist/utils/specTreePrinter.js +61 -20
- package/dist/utils/specTreePrinter.js.map +1 -1
- package/dist/utils/specValidator.d.ts +8 -0
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +171 -19
- package/dist/utils/specValidator.js.map +1 -1
- package/dist/utils/templateEngine.d.ts.map +1 -1
- package/dist/utils/templateEngine.js +2 -0
- package/dist/utils/templateEngine.js.map +1 -1
- package/package.json +3 -3
- package/dist/commands/specify.d.ts +0 -8
- package/dist/commands/specify.d.ts.map +0 -1
- package/dist/commands/specify.js +0 -286
- package/dist/commands/specify.js.map +0 -1
- package/dist/utils/templateRegistry.d.ts +0 -14
- package/dist/utils/templateRegistry.d.ts.map +0 -1
- package/dist/utils/templateRegistry.js +0 -87
- package/dist/utils/templateRegistry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TemplateContext } from './templateEngine';
|
|
2
2
|
/**
|
|
3
|
-
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .
|
|
3
|
+
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .antigravity).
|
|
4
4
|
* Each IDE gets a settings.json and extensions.json with a shared base config
|
|
5
5
|
* plus per-IDE overlay keys.
|
|
6
6
|
*/
|
|
@@ -11,10 +11,27 @@ export declare class IdeConfigGenerator {
|
|
|
11
11
|
* Generates .github/copilot-instructions.md with critical mandates.
|
|
12
12
|
* Read automatically by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
13
13
|
* Always generated regardless of IDE choice.
|
|
14
|
+
*
|
|
15
|
+
* If the file already exists:
|
|
16
|
+
* - noPrompts=false → asks user: overwrite / append / skip
|
|
17
|
+
* - noPrompts=true → auto-skips and prints a warning
|
|
14
18
|
*/
|
|
15
|
-
generateCopilotInstructions(projectDir: string, context: TemplateContext): Promise<void>;
|
|
19
|
+
generateCopilotInstructions(projectDir: string, context: TemplateContext, noPrompts?: boolean): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Builds just the SpecPilot mandates block — used in append mode and
|
|
22
|
+
* in the --no-prompts warning message.
|
|
23
|
+
*/
|
|
24
|
+
private buildCopilotSection;
|
|
16
25
|
private buildCopilotInstructions;
|
|
26
|
+
private buildCriticalMandatesMarkdown;
|
|
27
|
+
private buildProcessMandatesMarkdown;
|
|
17
28
|
private generateIDESettings;
|
|
18
29
|
private buildSettingsJson;
|
|
30
|
+
/**
|
|
31
|
+
* Generates (or updates) .gitattributes at project root with merge=union rules
|
|
32
|
+
* for append-heavy spec files, preventing git merge conflicts on shared branches.
|
|
33
|
+
* If the file already exists, only missing lines are appended.
|
|
34
|
+
*/
|
|
35
|
+
generateGitAttributes(projectDir: string): void;
|
|
19
36
|
}
|
|
20
37
|
//# sourceMappingURL=ideConfigGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ideConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"
|
|
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;IACG,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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.IdeConfigGenerator = void 0;
|
|
4
7
|
const path_1 = require("path");
|
|
5
8
|
const fs_1 = require("fs");
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
6
10
|
/** IDE-specific overlay keys appended on top of the shared base settings.
|
|
7
11
|
* NOTE: These keys are aspirational — they are NOT confirmed in each IDE's
|
|
8
12
|
* official documentation. Unknown keys are silently ignored, but they are
|
|
@@ -21,11 +25,6 @@ const IDE_OVERRIDES = {
|
|
|
21
25
|
'windsurf.specs.integration': true,
|
|
22
26
|
'windsurf.codeCompletion.contextAware': true,
|
|
23
27
|
},
|
|
24
|
-
kiro: {
|
|
25
|
-
// ASPIRATIONAL — not in official Kiro docs
|
|
26
|
-
'kiro.ai.contextAware': true,
|
|
27
|
-
'kiro.specs.enabled': true,
|
|
28
|
-
},
|
|
29
28
|
antigravity: {
|
|
30
29
|
// ASPIRATIONAL — not in official Antigravity docs
|
|
31
30
|
'antigravity.ai.enabled': true,
|
|
@@ -38,11 +37,10 @@ const IDE_DIRS = {
|
|
|
38
37
|
vscode: '.vscode',
|
|
39
38
|
cursor: '.cursor',
|
|
40
39
|
windsurf: '.windsurf',
|
|
41
|
-
kiro: '.kiro',
|
|
42
40
|
antigravity: '.antigravity',
|
|
43
41
|
};
|
|
44
42
|
/**
|
|
45
|
-
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .
|
|
43
|
+
* Generates IDE workspace settings (.vscode, .cursor, .windsurf, .antigravity).
|
|
46
44
|
* Each IDE gets a settings.json and extensions.json with a shared base config
|
|
47
45
|
* plus per-IDE overlay keys.
|
|
48
46
|
*/
|
|
@@ -55,11 +53,78 @@ class IdeConfigGenerator {
|
|
|
55
53
|
* Generates .github/copilot-instructions.md with critical mandates.
|
|
56
54
|
* Read automatically by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
57
55
|
* Always generated regardless of IDE choice.
|
|
56
|
+
*
|
|
57
|
+
* If the file already exists:
|
|
58
|
+
* - noPrompts=false → asks user: overwrite / append / skip
|
|
59
|
+
* - noPrompts=true → auto-skips and prints a warning
|
|
58
60
|
*/
|
|
59
|
-
async generateCopilotInstructions(projectDir, context) {
|
|
61
|
+
async generateCopilotInstructions(projectDir, context, noPrompts = false) {
|
|
60
62
|
const githubDir = (0, path_1.join)(projectDir, '.github');
|
|
61
63
|
(0, fs_1.mkdirSync)(githubDir, { recursive: true });
|
|
62
|
-
|
|
64
|
+
const filePath = (0, path_1.join)(githubDir, 'copilot-instructions.md');
|
|
65
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
66
|
+
(0, fs_1.writeFileSync)(filePath, this.buildCopilotInstructions(context));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// File already exists
|
|
70
|
+
if (noPrompts) {
|
|
71
|
+
console.log('\u26a0\ufe0f .github/copilot-instructions.md already exists \u2014 skipping (--no-prompts).\n' +
|
|
72
|
+
' Manually merge the SpecPilot mandates shown below into that file:\n\n' +
|
|
73
|
+
this.buildCopilotSection(context));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const { action } = await inquirer_1.default.prompt([
|
|
77
|
+
{
|
|
78
|
+
type: 'list',
|
|
79
|
+
name: 'action',
|
|
80
|
+
message: '⚠️ .github/copilot-instructions.md already exists. What would you like to do?',
|
|
81
|
+
choices: [
|
|
82
|
+
{ name: 'Overwrite with SpecPilot template', value: 'o' },
|
|
83
|
+
{ name: 'Append SpecPilot section to existing file', value: 'a' },
|
|
84
|
+
{ name: 'Skip (keep existing file unchanged)', value: 's' },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
]);
|
|
88
|
+
if (action === 'o') {
|
|
89
|
+
(0, fs_1.writeFileSync)(filePath, this.buildCopilotInstructions(context));
|
|
90
|
+
}
|
|
91
|
+
else if (action === 'a') {
|
|
92
|
+
(0, fs_1.appendFileSync)(filePath, '\n\n' + this.buildCopilotSection(context));
|
|
93
|
+
}
|
|
94
|
+
// action === 's' → leave file unchanged
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Builds just the SpecPilot mandates block — used in append mode and
|
|
98
|
+
* in the --no-prompts warning message.
|
|
99
|
+
*/
|
|
100
|
+
buildCopilotSection(context) {
|
|
101
|
+
const stack = context.framework
|
|
102
|
+
? `${context.language} / ${context.framework}`
|
|
103
|
+
: context.language;
|
|
104
|
+
return `## SpecPilot Mandates — ${context.projectName}
|
|
105
|
+
|
|
106
|
+
> Added by \`specpilot add-specs\`. These mandates apply alongside your existing instructions.
|
|
107
|
+
> Full context is in \`.specs/project/project.yaml\`.
|
|
108
|
+
|
|
109
|
+
### Project
|
|
110
|
+
|
|
111
|
+
- **Name:** ${context.projectName}
|
|
112
|
+
- **Stack:** ${stack}
|
|
113
|
+
- **Specs location:** \`.specs/\`
|
|
114
|
+
|
|
115
|
+
### 🔴 Critical Mandates — Never violate, no exceptions
|
|
116
|
+
|
|
117
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
118
|
+
|
|
119
|
+
### 🟡 Process Mandates
|
|
120
|
+
|
|
121
|
+
${this.buildProcessMandatesMarkdown()}
|
|
122
|
+
|
|
123
|
+
### Re-Anchor
|
|
124
|
+
|
|
125
|
+
If you lose context mid-session, read \`.specs/project/project.yaml\` to restore full project context.
|
|
126
|
+
For a ready-made re-anchor prompt, see \`.specs/development/prompts.md → ## Re-Anchor Prompt\`.
|
|
127
|
+
`;
|
|
63
128
|
}
|
|
64
129
|
buildCopilotInstructions(context) {
|
|
65
130
|
const stack = context.framework
|
|
@@ -78,7 +143,19 @@ class IdeConfigGenerator {
|
|
|
78
143
|
|
|
79
144
|
## 🔴 Critical Mandates — Never violate, no exceptions
|
|
80
145
|
|
|
81
|
-
|
|
146
|
+
${this.buildCriticalMandatesMarkdown()}
|
|
147
|
+
|
|
148
|
+
## 🟡 Process Mandates
|
|
149
|
+
|
|
150
|
+
${this.buildProcessMandatesMarkdown()}
|
|
151
|
+
|
|
152
|
+
## Re-Anchor
|
|
153
|
+
|
|
154
|
+
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\`.
|
|
155
|
+
`;
|
|
156
|
+
}
|
|
157
|
+
buildCriticalMandatesMarkdown() {
|
|
158
|
+
return `1. **NEVER commit** code to git unless the developer explicitly asks. Always ask first.
|
|
82
159
|
2. **NEVER push** to git unless the developer explicitly asks. Always ask first.
|
|
83
160
|
3. **NEVER deploy, publish, or release** the project unless the developer explicitly asks. Always ask first.
|
|
84
161
|
4. **NEVER modify** the \`.specs/\` folder structure, subfolder names, or file names. Only update file contents.
|
|
@@ -88,17 +165,14 @@ class IdeConfigGenerator {
|
|
|
88
165
|
- Test changes → \`quality/tests.md\`
|
|
89
166
|
- Task status → \`planning/tasks.md\`
|
|
90
167
|
- Completed work → \`CHANGELOG.md\`
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
168
|
+
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.
|
|
169
|
+
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.
|
|
170
|
+
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.`;
|
|
171
|
+
}
|
|
172
|
+
buildProcessMandatesMarkdown() {
|
|
173
|
+
return `- **Spec-First:** Update \`.specs/\` before writing code.
|
|
95
174
|
- **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
|
-
`;
|
|
175
|
+
- **Document decisions** in \`.specs/development/context.md\`.`;
|
|
102
176
|
}
|
|
103
177
|
async generateIDESettings(projectDir, context, ide) {
|
|
104
178
|
const key = ide.toLowerCase();
|
|
@@ -171,6 +245,29 @@ If you lose context mid-session, read \`.specs/project/project.yaml\` to restore
|
|
|
171
245
|
}${overrideBlock}
|
|
172
246
|
}`;
|
|
173
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Generates (or updates) .gitattributes at project root with merge=union rules
|
|
250
|
+
* for append-heavy spec files, preventing git merge conflicts on shared branches.
|
|
251
|
+
* If the file already exists, only missing lines are appended.
|
|
252
|
+
*/
|
|
253
|
+
generateGitAttributes(projectDir) {
|
|
254
|
+
const GITATTRIBUTES_LINES = [
|
|
255
|
+
'.specs/development/prompts*.md merge=union',
|
|
256
|
+
'.specs/planning/tasks.md merge=union',
|
|
257
|
+
'CHANGELOG.md merge=union',
|
|
258
|
+
];
|
|
259
|
+
const filePath = (0, path_1.join)(projectDir, '.gitattributes');
|
|
260
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
261
|
+
(0, fs_1.writeFileSync)(filePath, GITATTRIBUTES_LINES.join('\n') + '\n');
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const existing = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
265
|
+
const missing = GITATTRIBUTES_LINES.filter(line => !existing.includes(line));
|
|
266
|
+
if (missing.length > 0) {
|
|
267
|
+
const suffix = existing.endsWith('\n') ? '' : '\n';
|
|
268
|
+
(0, fs_1.appendFileSync)(filePath, suffix + missing.join('\n') + '\n');
|
|
269
|
+
}
|
|
270
|
+
}
|
|
174
271
|
}
|
|
175
272
|
exports.IdeConfigGenerator = IdeConfigGenerator;
|
|
176
273
|
//# sourceMappingURL=ideConfigGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ideConfigGenerator.js","sourceRoot":"","sources":["../../src/utils/ideConfigGenerator.ts"],"names":[],"mappings":"
|
|
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,66 @@
|
|
|
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 BackfillResult {
|
|
9
|
+
projectYaml: BackfillFileResult;
|
|
10
|
+
copilotInstructions: BackfillFileResult;
|
|
11
|
+
tasksMd: BackfillFileResult;
|
|
12
|
+
}
|
|
13
|
+
export declare class SpecBackfiller {
|
|
14
|
+
backfill(projectDir: string, specsName: string, dryRun: boolean, noPrompts?: boolean): Promise<BackfillResult>;
|
|
15
|
+
private backfillProjectYaml;
|
|
16
|
+
/**
|
|
17
|
+
* Text-based (not yaml.dump) insertion — preserves comments, emoji, and formatting.
|
|
18
|
+
*
|
|
19
|
+
* Strategy: find the last ` - "MANDATE:` line in the file and insert
|
|
20
|
+
* missing mandate lines immediately after it. If no MANDATE lines exist yet,
|
|
21
|
+
* find the ` critical:` key and append after it. As a final fallback, append
|
|
22
|
+
* a complete `critical:` block at the end of the file.
|
|
23
|
+
*/
|
|
24
|
+
private insertYamlMandates;
|
|
25
|
+
private backfillCopilotInstructions;
|
|
26
|
+
private buildMdBackfillBlock;
|
|
27
|
+
/**
|
|
28
|
+
* Reads the first entry from `contributors:` list in project.yaml.
|
|
29
|
+
* Handles both inline (`contributors: ["girishr"]`) and block-list forms.
|
|
30
|
+
* Falls back to os.userInfo().username if not found.
|
|
31
|
+
*/
|
|
32
|
+
private readContributorsFirst;
|
|
33
|
+
/**
|
|
34
|
+
* Writes `team:\n devPrefix: "<handle>"` into project.yaml after the `license:` line.
|
|
35
|
+
* If a `team:` block already exists (but devPrefix is missing), inserts devPrefix inside it.
|
|
36
|
+
* Text-based insertion — does not parse YAML to preserve formatting.
|
|
37
|
+
*/
|
|
38
|
+
private writeDevPrefix;
|
|
39
|
+
/**
|
|
40
|
+
* When team.devPrefix is absent from project.yaml:
|
|
41
|
+
* - Reads contributors[0] as suggestion (fallback: os.userInfo().username)
|
|
42
|
+
* - Prompts user (unless noPrompts or dryRun), looping until non-empty
|
|
43
|
+
* - Writes devPrefix into project.yaml (skipped on dryRun)
|
|
44
|
+
*/
|
|
45
|
+
private ensureDevPrefix;
|
|
46
|
+
/**
|
|
47
|
+
* Prompts the user for their short handle, suggesting contributors[0].
|
|
48
|
+
* Loops until a non-empty value is provided.
|
|
49
|
+
*/
|
|
50
|
+
private promptHandle;
|
|
51
|
+
/**
|
|
52
|
+
* Reads a top-level scalar field from project.yaml using a simple regex.
|
|
53
|
+
* Handles both quoted (`name: "My Project"`) and unquoted (`name: my-project`) values.
|
|
54
|
+
* Does not parse YAML to preserve formatting safety.
|
|
55
|
+
*/
|
|
56
|
+
private readProjectField;
|
|
57
|
+
/**
|
|
58
|
+
* Reads `team.devPrefix` from project.yaml.
|
|
59
|
+
* The field is nested under a `team:` block, e.g.:
|
|
60
|
+
* team:
|
|
61
|
+
* devPrefix: "girishr"
|
|
62
|
+
*/
|
|
63
|
+
private readDevPrefix;
|
|
64
|
+
private backfillTasksMd;
|
|
65
|
+
}
|
|
66
|
+
//# 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,cAAc;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,OAAO,EAAE,kBAAkB,CAAC;CAC7B;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;IAwB1B,OAAO,CAAC,mBAAmB;IAiC3B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YA+BZ,2BAA2B;IA6CzC,OAAO,CAAC,oBAAoB;IAY5B;;;;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"}
|