specpilot 1.6.1 → 1.6.3
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 +6 -2
- package/dist/commands/add-specs.d.ts.map +1 -1
- package/dist/commands/add-specs.js +1 -0
- package/dist/commands/add-specs.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 +10 -1
- package/dist/utils/ideConfigGenerator.d.ts.map +1 -1
- package/dist/utils/ideConfigGenerator.js +84 -2
- package/dist/utils/ideConfigGenerator.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 +1 -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 +6 -0
- package/dist/utils/specValidator.d.ts.map +1 -1
- package/dist/utils/specValidator.js +161 -9
- package/dist/utils/specValidator.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -110,8 +110,11 @@ SpecPilot generates a `.specs/` folder with organized subdirectories:
|
|
|
110
110
|
├── project/
|
|
111
111
|
│ ├── project.yaml # Project config, rules, and AI context (MANDATED)
|
|
112
112
|
│ └── requirements.md # Functional & non-functional requirements
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
├── quality/
|
|
114
|
+
│ └── tests.md # Test strategy, coverage targets, acceptance criteria
|
|
115
|
+
└── security/
|
|
116
|
+
├── security-decisions.md # ADR-style security design decisions
|
|
117
|
+
└── threat-model.md # Threat inventory with impact/likelihood/mitigation
|
|
115
118
|
```
|
|
116
119
|
|
|
117
120
|
> Also generated at project root: `.github/copilot-instructions.md` (AI mandate enforcement)
|
|
@@ -257,6 +260,7 @@ npm link # For local testing
|
|
|
257
260
|
## Documentation
|
|
258
261
|
|
|
259
262
|
- **[Full Guide](docs/GUIDE.md)**: Comprehensive documentation
|
|
263
|
+
- **[SpecPilot vs GitHub Spec Kit](docs/comparison.md)**: Side-by-side comparison to help you choose the right tool
|
|
260
264
|
- **[CHANGELOG](CHANGELOG.md)**: Version history
|
|
261
265
|
- **[Issues](https://github.com/girishr/SpecPilot/issues)**: Bug reports & feature requests
|
|
262
266
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-specs.d.ts","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"add-specs.d.ts","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAyH7D"}
|
|
@@ -105,6 +105,7 @@ async function addSpecsCommand(options) {
|
|
|
105
105
|
description,
|
|
106
106
|
analysis: (!options.noAnalysis && analysis) ? analysis : undefined,
|
|
107
107
|
mode: 'existing',
|
|
108
|
+
noPrompts: !options.prompts,
|
|
108
109
|
});
|
|
109
110
|
logger.success('✅ .specs folder created successfully!');
|
|
110
111
|
logger.info(`📁 Location: ${specsDir}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":";;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":";;;;;AAmBA,0CAyHC;AA5ID,+BAA4B;AAC5B,2BAAgC;AAChC,kDAA0B;AAC1B,wDAAgC;AAChC,8DAA2D;AAC3D,oDAA+D;AAC/D,wDAAqD;AACrD,4DAAyD;AACzD,0DAAuD;AACvD,4CAAyC;AAUlC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC5D,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5C,iCAAiC;QACjC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,IAAI,iCAAe,EAAE,CAAC;QACvC,IAAI,WAAW,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,QAAQ,IAAI,YAAY,CAAC;QACvE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,WAAW,EAAE,SAAS,CAAC;QAE5D,oBAAoB;QACpB,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,oBAAoB,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAA,qCAAwB,EAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;wBACtC,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,qBAAqB;wBAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;qBACjC,CAAC,CAAC,CAAC;gBACJ,SAAS,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,aAAa,GAAG,WAAW,EAAE,MAAM,IAAI,WAAW,CAAC;QACvD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1C,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,8CAA8C;oBACvD,OAAO,EAAE,aAAa;iBACvB,CAAC,CAAC,CAAC;YACJ,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC;QACrE,CAAC;QAED,gCAAgC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,2BAAY,EAAE,CAAC;YACpC,QAAQ,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEtD,wBAAwB;YACxB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACpI,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,2BAA2B,QAAQ,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;YAC3I,CAAC;YAED,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,cAAc,GAAG,IAAI,+BAAc,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,cAAc,CAAC,CAAC;QAExD,sCAAsC;QACtC,MAAM,WAAW,GAAG,WAAW,EAAE,IAAI,IAAI,YAAY,CAAC;QACtD,MAAM,WAAW,GAAG,WAAW,EAAE,WAAW;YAC1C,KAAK,QAAQ,WAAW,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEnE,MAAM,aAAa,CAAC,aAAa,CAAC;YAChC,WAAW;YACX,QAAQ;YACR,SAAS;YACT,SAAS,EAAE,UAAU;YACrB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,aAAa;YACrB,WAAW;YACX,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAClE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAExC,4BAA4B;QAC5B,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAElF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAcD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAwG7D"}
|
|
@@ -7,6 +7,18 @@ exports.validateCommand = validateCommand;
|
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const specValidator_1 = require("../utils/specValidator");
|
|
9
9
|
const logger_1 = require("../utils/logger");
|
|
10
|
+
function displayFixPrompts(results) {
|
|
11
|
+
if (results.fixPrompts.length === 0)
|
|
12
|
+
return;
|
|
13
|
+
console.log(chalk_1.default.cyan('\n📋 AI Fix Prompts — copy these to your AI assistant:'));
|
|
14
|
+
console.log(chalk_1.default.dim('─'.repeat(60)));
|
|
15
|
+
for (const { issue, prompt } of results.fixPrompts) {
|
|
16
|
+
console.log(chalk_1.default.white(`\n▸ ${issue}`));
|
|
17
|
+
const indented = prompt.split('\n').map(l => ` ${l}`).join('\n');
|
|
18
|
+
console.log(chalk_1.default.gray(indented));
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk_1.default.dim('─'.repeat(60)));
|
|
21
|
+
}
|
|
10
22
|
async function validateCommand(options) {
|
|
11
23
|
const logger = new logger_1.Logger();
|
|
12
24
|
try {
|
|
@@ -36,9 +48,19 @@ async function validateCommand(options) {
|
|
|
36
48
|
}
|
|
37
49
|
else {
|
|
38
50
|
if (options.fix && results.fixable.length > 0) {
|
|
51
|
+
// Capture pre-fix prompts (e.g. "fill in newly created security files")
|
|
52
|
+
const prefixPrompts = results.fixPrompts;
|
|
39
53
|
console.log(chalk_1.default.blue('\n🔧 Auto-fixing issues...'));
|
|
40
54
|
const fixed = await validator.autoFix(options.dir, results.fixable);
|
|
41
|
-
console.log(chalk_1.default.green(`✅ Fixed ${fixed.length}
|
|
55
|
+
console.log(chalk_1.default.green(`✅ Fixed ${fixed.length} issue(s):`));
|
|
56
|
+
for (const fix of fixed) {
|
|
57
|
+
const label = fix.startsWith('create-')
|
|
58
|
+
? `Created missing file: ${fix.replace('create-', '')}`
|
|
59
|
+
: fix === 'create-prompts-entry'
|
|
60
|
+
? 'Created initial prompts entry in prompts.md'
|
|
61
|
+
: fix;
|
|
62
|
+
console.log(chalk_1.default.green(` • ${label}`));
|
|
63
|
+
}
|
|
42
64
|
// Re-validate after fixing
|
|
43
65
|
const reResults = await validator.validate(options.dir, {
|
|
44
66
|
fix: false,
|
|
@@ -50,6 +72,24 @@ async function validateCommand(options) {
|
|
|
50
72
|
warnings: reResults.warnings.length,
|
|
51
73
|
mandatesVerified: reResults.mandatesVerified
|
|
52
74
|
} : undefined);
|
|
75
|
+
// Combine: re-validation prompts + any prompts from the files just created
|
|
76
|
+
const allPrompts = [
|
|
77
|
+
...reResults.fixPrompts,
|
|
78
|
+
...prefixPrompts.filter(p => !reResults.fixPrompts.some(r => r.issue === p.issue))
|
|
79
|
+
];
|
|
80
|
+
if (!reResults.isValid) {
|
|
81
|
+
// Phase 2: structure is fixed — only content issues remain, show AI prompts
|
|
82
|
+
if (allPrompts.length > 0) {
|
|
83
|
+
console.log(chalk_1.default.cyan('\n📋 Next step — content guidance for your AI assistant:'));
|
|
84
|
+
displayFixPrompts({ ...reResults, fixPrompts: allPrompts });
|
|
85
|
+
}
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
// Re-validation passed — still show fill-in prompts for newly created files
|
|
89
|
+
if (allPrompts.length > 0) {
|
|
90
|
+
console.log(chalk_1.default.cyan('\n📋 Next step — fill in the newly created files:'));
|
|
91
|
+
displayFixPrompts({ ...reResults, fixPrompts: allPrompts });
|
|
92
|
+
}
|
|
53
93
|
}
|
|
54
94
|
else {
|
|
55
95
|
logger.displayValidationResults(false, results.errors, results.warnings, options.verbose ? {
|
|
@@ -58,6 +98,16 @@ async function validateCommand(options) {
|
|
|
58
98
|
warnings: results.warnings.length,
|
|
59
99
|
mandatesVerified: results.mandatesVerified
|
|
60
100
|
} : undefined);
|
|
101
|
+
if (results.fixable.length > 0) {
|
|
102
|
+
// Phase 1: missing files — direct to --fix, suppress AI prompts to avoid confusion
|
|
103
|
+
console.log(chalk_1.default.yellow(`\n💡 ${results.fixable.length} issue(s) can be auto-fixed.`));
|
|
104
|
+
console.log(chalk_1.default.yellow(` Run: specpilot validate --fix`));
|
|
105
|
+
console.log(chalk_1.default.dim(` Once all files are created, re-run validate for content guidance.`));
|
|
106
|
+
}
|
|
107
|
+
else if (results.fixPrompts.length > 0) {
|
|
108
|
+
// Phase 2: all files exist — only content issues remain, show AI prompts
|
|
109
|
+
displayFixPrompts(results);
|
|
110
|
+
}
|
|
61
111
|
process.exit(1);
|
|
62
112
|
}
|
|
63
113
|
}
|
|
@@ -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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"}
|
|
@@ -11,8 +11,17 @@ 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;
|
|
17
26
|
private generateIDESettings;
|
|
18
27
|
private buildSettingsJson;
|
|
@@ -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;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;;;;;;;;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;IAyC3B,OAAO,CAAC,wBAAwB;YAwClB,mBAAmB;IAsBjC,OAAO,CAAC,iBAAiB;CA2D1B"}
|
|
@@ -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
|
|
@@ -55,11 +59,89 @@ class IdeConfigGenerator {
|
|
|
55
59
|
* Generates .github/copilot-instructions.md with critical mandates.
|
|
56
60
|
* Read automatically by GitHub Copilot, Cursor, and other AI tools on every request.
|
|
57
61
|
* Always generated regardless of IDE choice.
|
|
62
|
+
*
|
|
63
|
+
* If the file already exists:
|
|
64
|
+
* - noPrompts=false → asks user: overwrite / append / skip
|
|
65
|
+
* - noPrompts=true → auto-skips and prints a warning
|
|
58
66
|
*/
|
|
59
|
-
async generateCopilotInstructions(projectDir, context) {
|
|
67
|
+
async generateCopilotInstructions(projectDir, context, noPrompts = false) {
|
|
60
68
|
const githubDir = (0, path_1.join)(projectDir, '.github');
|
|
61
69
|
(0, fs_1.mkdirSync)(githubDir, { recursive: true });
|
|
62
|
-
|
|
70
|
+
const filePath = (0, path_1.join)(githubDir, 'copilot-instructions.md');
|
|
71
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
72
|
+
(0, fs_1.writeFileSync)(filePath, this.buildCopilotInstructions(context));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// File already exists
|
|
76
|
+
if (noPrompts) {
|
|
77
|
+
console.log('\u26a0\ufe0f .github/copilot-instructions.md already exists \u2014 skipping (--no-prompts).\n' +
|
|
78
|
+
' Manually merge the SpecPilot mandates shown below into that file:\n\n' +
|
|
79
|
+
this.buildCopilotSection(context));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const { action } = await inquirer_1.default.prompt([
|
|
83
|
+
{
|
|
84
|
+
type: 'list',
|
|
85
|
+
name: 'action',
|
|
86
|
+
message: '⚠️ .github/copilot-instructions.md already exists. What would you like to do?',
|
|
87
|
+
choices: [
|
|
88
|
+
{ name: 'Overwrite with SpecPilot template', value: 'o' },
|
|
89
|
+
{ name: 'Append SpecPilot section to existing file', value: 'a' },
|
|
90
|
+
{ name: 'Skip (keep existing file unchanged)', value: 's' },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
]);
|
|
94
|
+
if (action === 'o') {
|
|
95
|
+
(0, fs_1.writeFileSync)(filePath, this.buildCopilotInstructions(context));
|
|
96
|
+
}
|
|
97
|
+
else if (action === 'a') {
|
|
98
|
+
(0, fs_1.appendFileSync)(filePath, '\n\n' + this.buildCopilotSection(context));
|
|
99
|
+
}
|
|
100
|
+
// action === 's' → leave file unchanged
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Builds just the SpecPilot mandates block — used in append mode and
|
|
104
|
+
* in the --no-prompts warning message.
|
|
105
|
+
*/
|
|
106
|
+
buildCopilotSection(context) {
|
|
107
|
+
const stack = context.framework
|
|
108
|
+
? `${context.language} / ${context.framework}`
|
|
109
|
+
: context.language;
|
|
110
|
+
return `## SpecPilot Mandates — ${context.projectName}
|
|
111
|
+
|
|
112
|
+
> Added by \`specpilot add-specs\`. These mandates apply alongside your existing instructions.
|
|
113
|
+
> Full context is in \`.specs/project/project.yaml\`.
|
|
114
|
+
|
|
115
|
+
### Project
|
|
116
|
+
|
|
117
|
+
- **Name:** ${context.projectName}
|
|
118
|
+
- **Stack:** ${stack}
|
|
119
|
+
- **Specs location:** \`.specs/\`
|
|
120
|
+
|
|
121
|
+
### 🔴 Critical Mandates — Never violate, no exceptions
|
|
122
|
+
|
|
123
|
+
1. **NEVER commit** code to git unless the developer explicitly asks. Always ask first.
|
|
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\`
|
|
133
|
+
|
|
134
|
+
### 🟡 Process Mandates
|
|
135
|
+
|
|
136
|
+
- **Spec-First:** Update \`.specs/\` before writing code.
|
|
137
|
+
- **Log all AI interactions** in \`.specs/development/prompts.md\` with timestamps.
|
|
138
|
+
- **Document decisions** in \`.specs/development/context.md\`.
|
|
139
|
+
|
|
140
|
+
### Re-Anchor
|
|
141
|
+
|
|
142
|
+
If you lose context mid-session, read \`.specs/project/project.yaml\` to restore full project context.
|
|
143
|
+
For a ready-made re-anchor prompt, see \`.specs/development/prompts.md → ## Re-Anchor Prompt\`.
|
|
144
|
+
`;
|
|
63
145
|
}
|
|
64
146
|
buildCopilotInstructions(context) {
|
|
65
147
|
const stack = context.framework
|
|
@@ -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":"specGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAKnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC1B,cAAc,CAAC,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzE,KAAK,EAAE;YACL,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,EAAE,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,cAAc,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,YAAY,EAAE;YACZ,UAAU,EAAE,MAAM,EAAE,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,CAAC;KACH,CAAC;CACH;AAID,qBAAa,aAAa;IAKZ,OAAO,CAAC,cAAc;IAJlC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,oBAAoB,CAAuB;gBAE/B,cAAc,EAAE,cAAc;IAM5C,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BlE"}
|
|
1
|
+
{"version":3,"file":"specGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAKnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzE,KAAK,EAAE;YACL,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,EAAE,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,cAAc,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,YAAY,EAAE;YACZ,UAAU,EAAE,MAAM,EAAE,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,CAAC;KACH,CAAC;CACH;AAID,qBAAa,aAAa;IAKZ,OAAO,CAAC,cAAc;IAJlC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,oBAAoB,CAAuB;gBAE/B,cAAc,EAAE,cAAc;IAM5C,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BlE"}
|
|
@@ -42,7 +42,7 @@ class SpecGenerator {
|
|
|
42
42
|
}
|
|
43
43
|
// Always generate .github/copilot-instructions.md regardless of IDE choice —
|
|
44
44
|
// it is read automatically by Copilot, Cursor, and other AI tools on every request.
|
|
45
|
-
await this.ideConfigGenerator.generateCopilotInstructions(options.targetDir, context);
|
|
45
|
+
await this.ideConfigGenerator.generateCopilotInstructions(options.targetDir, context, options.noPrompts ?? false);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
exports.SpecGenerator = SpecGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,2BAA+B;AAE/B,2DAAwD;AACxD,6DAA0D;AAC1D,iEAA8D;
|
|
1
|
+
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../src/utils/specGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns chalk-formatted lines for a .specs/ folder tree
|
|
3
|
-
*
|
|
2
|
+
* Returns chalk-formatted lines for a .specs/ folder tree that mirrors
|
|
3
|
+
* the Project Structure in README.md. Descriptions are hardcoded — not
|
|
4
|
+
* read from disk.
|
|
4
5
|
*
|
|
5
6
|
* @param specsName Name of the specs folder (e.g. '.specs')
|
|
6
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specTreePrinter.d.ts","sourceRoot":"","sources":["../../src/utils/specTreePrinter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"specTreePrinter.d.ts","sourceRoot":"","sources":["../../src/utils/specTreePrinter.ts"],"names":[],"mappings":"AAsDA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB5D"}
|
|
@@ -5,33 +5,74 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getSpecTreeLines = getSpecTreeLines;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const
|
|
9
|
-
{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
const SPEC_FOLDERS = [
|
|
9
|
+
{
|
|
10
|
+
folder: 'architecture',
|
|
11
|
+
files: [
|
|
12
|
+
{ name: 'api.yaml', description: 'CLI / REST API / GraphQL interface spec' },
|
|
13
|
+
{ name: 'architecture.md', description: 'system design decisions and patterns' },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
folder: 'development',
|
|
18
|
+
files: [
|
|
19
|
+
{ name: 'context.md', description: 'development memory, decisions, learnings' },
|
|
20
|
+
{ name: 'docs.md', description: 'dev guidelines, spec conventions, checklist' },
|
|
21
|
+
{ name: 'prompts.md', description: 'AI interaction log — MANDATED, update every session' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
folder: 'planning',
|
|
26
|
+
files: [
|
|
27
|
+
{ name: 'roadmap.md', description: 'release milestones and objectives' },
|
|
28
|
+
{ name: 'tasks.md', description: 'sprint tracker (backlog / current / completed)' },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
folder: 'project',
|
|
33
|
+
files: [
|
|
34
|
+
{ name: 'project.yaml', description: 'project config, rules, AI context (MANDATED)' },
|
|
35
|
+
{ name: 'requirements.md', description: 'functional and non-functional requirements' },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
folder: 'quality',
|
|
40
|
+
files: [
|
|
41
|
+
{ name: 'tests.md', description: 'test strategy and coverage targets' },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
folder: 'security',
|
|
46
|
+
files: [
|
|
47
|
+
{ name: 'security-decisions.md', description: 'security ADR log (mitigations and rationale)' },
|
|
48
|
+
{ name: 'threat-model.md', description: 'threat model and attack surface analysis' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
22
51
|
];
|
|
23
|
-
const
|
|
52
|
+
const FILE_COL_WIDTH = 22; // wide enough for 'security-decisions.md' + margin
|
|
24
53
|
/**
|
|
25
|
-
* Returns chalk-formatted lines for a .specs/ folder tree
|
|
26
|
-
*
|
|
54
|
+
* Returns chalk-formatted lines for a .specs/ folder tree that mirrors
|
|
55
|
+
* the Project Structure in README.md. Descriptions are hardcoded — not
|
|
56
|
+
* read from disk.
|
|
27
57
|
*
|
|
28
58
|
* @param specsName Name of the specs folder (e.g. '.specs')
|
|
29
59
|
*/
|
|
30
60
|
function getSpecTreeLines(specsName) {
|
|
31
61
|
const lines = [chalk_1.default.yellow.bold(` 📂 ${specsName}/`)];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
62
|
+
const lastFolderIdx = SPEC_FOLDERS.length - 1;
|
|
63
|
+
for (let fi = 0; fi < SPEC_FOLDERS.length; fi++) {
|
|
64
|
+
const { folder, files } = SPEC_FOLDERS[fi];
|
|
65
|
+
const isLastFolder = fi === lastFolderIdx;
|
|
66
|
+
const folderBranch = isLastFolder ? '└──' : '├──';
|
|
67
|
+
const childIndent = isLastFolder ? ' ' : '│ ';
|
|
68
|
+
lines.push(` ${folderBranch} ${chalk_1.default.cyan.bold(folder + '/')}`);
|
|
69
|
+
const lastFileIdx = files.length - 1;
|
|
70
|
+
for (let i = 0; i < files.length; i++) {
|
|
71
|
+
const { name, description } = files[i];
|
|
72
|
+
const fileBranch = i === lastFileIdx ? '└──' : '├──';
|
|
73
|
+
const padded = name.padEnd(FILE_COL_WIDTH);
|
|
74
|
+
lines.push(` ${childIndent}${fileBranch} ${chalk_1.default.white(padded)} ${chalk_1.default.dim('—')} ${chalk_1.default.gray(description)}`);
|
|
75
|
+
}
|
|
35
76
|
}
|
|
36
77
|
return lines;
|
|
37
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specTreePrinter.js","sourceRoot":"","sources":["../../src/utils/specTreePrinter.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"specTreePrinter.js","sourceRoot":"","sources":["../../src/utils/specTreePrinter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export interface ValidationResult {
|
|
|
7
7
|
errors: string[];
|
|
8
8
|
warnings: string[];
|
|
9
9
|
fixable: string[];
|
|
10
|
+
fixPrompts: Array<{
|
|
11
|
+
issue: string;
|
|
12
|
+
prompt: string;
|
|
13
|
+
}>;
|
|
10
14
|
filesChecked: number;
|
|
11
15
|
mandatesVerified: number;
|
|
12
16
|
}
|
|
@@ -31,6 +35,8 @@ export declare class SpecValidator {
|
|
|
31
35
|
private getDefaultPromptsContent;
|
|
32
36
|
private getDefaultArchitecture;
|
|
33
37
|
private getDefaultRequirements;
|
|
38
|
+
private getDefaultThreatModelMd;
|
|
39
|
+
private getDefaultSecurityDecisionsMd;
|
|
34
40
|
private validateStaleDates;
|
|
35
41
|
private validateLineLimits;
|
|
36
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specValidator.d.ts","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"specValidator.d.ts","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAYnB;IAEI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmFnF,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BvE,OAAO,CAAC,YAAY;YAaN,mBAAmB;IAsDjC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,oBAAoB;YAQd,gBAAgB;YAiChB,sBAAsB;YAWtB,2BAA2B;YAwB3B,2BAA2B;YAuB3B,oBAAoB;YAuBpB,iBAAiB;YAoCjB,wBAAwB;YAuCxB,yBAAyB;YAMzB,4BAA4B;IA6C1C,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,wBAAwB;IAgDhC,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,uBAAuB;IAyD/B,OAAO,CAAC,6BAA6B;YA+CvB,kBAAkB;YA8BlB,kBAAkB;CA2BjC"}
|
|
@@ -48,7 +48,9 @@ class SpecValidator {
|
|
|
48
48
|
'planning/tasks.md',
|
|
49
49
|
'development/context.md',
|
|
50
50
|
'development/prompts.md',
|
|
51
|
-
'development/docs.md'
|
|
51
|
+
'development/docs.md',
|
|
52
|
+
'security/threat-model.md',
|
|
53
|
+
'security/security-decisions.md'
|
|
52
54
|
];
|
|
53
55
|
}
|
|
54
56
|
async validate(projectDir, options) {
|
|
@@ -57,6 +59,7 @@ class SpecValidator {
|
|
|
57
59
|
errors: [],
|
|
58
60
|
warnings: [],
|
|
59
61
|
fixable: [],
|
|
62
|
+
fixPrompts: [],
|
|
60
63
|
filesChecked: 0,
|
|
61
64
|
mandatesVerified: 0
|
|
62
65
|
};
|
|
@@ -74,6 +77,35 @@ class SpecValidator {
|
|
|
74
77
|
result.errors.push(`Missing required file: ${file}`);
|
|
75
78
|
result.fixable.push(`create-${file}`);
|
|
76
79
|
result.isValid = false;
|
|
80
|
+
// For security files, also emit a fill-in prompt so the user knows what goes in each section
|
|
81
|
+
if (file === 'security/threat-model.md') {
|
|
82
|
+
result.fixPrompts.push({
|
|
83
|
+
issue: 'security/threat-model.md is missing',
|
|
84
|
+
prompt: 'Run `specpilot validate --fix` first to create `.specs/security/threat-model.md` with the starter template.\n' +
|
|
85
|
+
'Then open the file and ask your AI assistant:\n' +
|
|
86
|
+
' "Read `.specs/security/threat-model.md`. For each [TODO] placeholder:\n' +
|
|
87
|
+
' • SEC-001.1 Overview — describe what this system does, what it reads/writes, and what it does NOT do.\n' +
|
|
88
|
+
' • SEC-002 Threats — identify real threats: injection, path traversal, supply-chain, auth bypass, etc.\n' +
|
|
89
|
+
' • SEC-003 Attack Surface — list all external entry points (CLI args, env vars, file paths, stdin).\n' +
|
|
90
|
+
' • SEC-004 Out of Scope — call out what is explicitly out of scope (OS-level, container isolation, etc.).\n' +
|
|
91
|
+
' Base answers on `project/project.yaml`, `architecture/architecture.md`, and the actual source code.\n' +
|
|
92
|
+
' Preserve YAML front-matter and section structure exactly."'
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else if (file === 'security/security-decisions.md') {
|
|
96
|
+
result.fixPrompts.push({
|
|
97
|
+
issue: 'security/security-decisions.md is missing',
|
|
98
|
+
prompt: 'Run `specpilot validate --fix` first to create `.specs/security/security-decisions.md` with the starter template.\n' +
|
|
99
|
+
'Then open the file and ask your AI assistant:\n' +
|
|
100
|
+
' "Read `.specs/security/security-decisions.md` and `.specs/security/threat-model.md`.\n' +
|
|
101
|
+
' For each ADR entry, fill in the [TODO] placeholders with real decisions:\n' +
|
|
102
|
+
' • What security decision was made (e.g. input validation strategy, auth mechanism, dependency policy)?\n' +
|
|
103
|
+
' • Why this approach over alternatives?\n' +
|
|
104
|
+
' • What are the trade-offs?\n' +
|
|
105
|
+
' • Which threat from threat-model.md does this address?\n' +
|
|
106
|
+
' Base answers on the actual implementation in src/. Preserve structure and front-matter exactly."'
|
|
107
|
+
});
|
|
108
|
+
}
|
|
77
109
|
}
|
|
78
110
|
else {
|
|
79
111
|
result.filesChecked++;
|
|
@@ -162,7 +194,12 @@ class SpecValidator {
|
|
|
162
194
|
const hasMandates = this.checkMandatesInRules(flatRules);
|
|
163
195
|
if (!hasMandates.hasPromptMandate) {
|
|
164
196
|
result.errors.push('Missing MANDATE for prompt tracking in project.yaml rules');
|
|
165
|
-
result.
|
|
197
|
+
result.fixPrompts.push({
|
|
198
|
+
issue: 'Missing MANDATE for prompt tracking in project.yaml rules',
|
|
199
|
+
prompt: 'In `.specs/project/project.yaml`, ensure the `rules.process` section contains a mandate for tracking AI prompts. Add this to the process array:\n' +
|
|
200
|
+
' "MANDATE: Track ALL AI interactions — update .specs/development/prompts.md with every AI prompt, including timestamps and context."\n' +
|
|
201
|
+
'Preserve the existing YAML structure, comments, and formatting exactly.'
|
|
202
|
+
});
|
|
166
203
|
result.isValid = false;
|
|
167
204
|
}
|
|
168
205
|
else {
|
|
@@ -186,9 +223,8 @@ class SpecValidator {
|
|
|
186
223
|
return [];
|
|
187
224
|
}
|
|
188
225
|
checkMandatesInRules(rules) {
|
|
189
|
-
const promptMandatePattern = /MANDATE.*prompt.*tracking|MANDATE.*prompts\.md/i;
|
|
190
226
|
return {
|
|
191
|
-
hasPromptMandate: rules.some(rule =>
|
|
227
|
+
hasPromptMandate: rules.some(rule => /mandate/i.test(rule) && /prompts/i.test(rule))
|
|
192
228
|
};
|
|
193
229
|
}
|
|
194
230
|
async validateMandates(specsDir, result) {
|
|
@@ -288,9 +324,7 @@ class SpecValidator {
|
|
|
288
324
|
// Ensure directory exists
|
|
289
325
|
const dir = (0, path_1.dirname)(filePath);
|
|
290
326
|
if (!(0, fs_1.existsSync)(dir)) {
|
|
291
|
-
|
|
292
|
-
// For now, we'll skip creating files in subdirectories that don't exist
|
|
293
|
-
return;
|
|
327
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
294
328
|
}
|
|
295
329
|
switch (fileName) {
|
|
296
330
|
case 'project/project.yaml':
|
|
@@ -305,6 +339,12 @@ class SpecValidator {
|
|
|
305
339
|
case 'project/requirements.md':
|
|
306
340
|
content = this.getDefaultRequirements();
|
|
307
341
|
break;
|
|
342
|
+
case 'security/threat-model.md':
|
|
343
|
+
content = this.getDefaultThreatModelMd();
|
|
344
|
+
break;
|
|
345
|
+
case 'security/security-decisions.md':
|
|
346
|
+
content = this.getDefaultSecurityDecisionsMd();
|
|
347
|
+
break;
|
|
308
348
|
default:
|
|
309
349
|
content = `# ${fileName.split('/').pop()?.replace('.md', '').replace('.yaml', '')} File\n\n[Content to be added]`;
|
|
310
350
|
}
|
|
@@ -368,14 +408,24 @@ class SpecValidator {
|
|
|
368
408
|
if (file.endsWith('.md')) {
|
|
369
409
|
if (!/^---\n[\s\S]*?\n---/m.test(content)) {
|
|
370
410
|
result.errors.push(`${file} is missing YAML front-matter metadata.`);
|
|
411
|
+
result.fixPrompts.push({
|
|
412
|
+
issue: `${file} is missing YAML front-matter metadata`,
|
|
413
|
+
prompt: `In \`.specs/${file}\`, add a YAML front-matter block at the very top of the file:\n` +
|
|
414
|
+
`\`\`\`\n---\nfileID: [FILE-ID]\nlastUpdated: YYYY-MM-DD\nversion: 1.0\n---\n\`\`\`\n` +
|
|
415
|
+
`Preserve all existing content below the front-matter block.`
|
|
416
|
+
});
|
|
371
417
|
result.isValid = false;
|
|
372
418
|
}
|
|
373
419
|
if (crossRefs) {
|
|
374
420
|
for (const ref of crossRefs) {
|
|
375
421
|
const needle = ref.split('/').pop(); // check by filename presence
|
|
376
422
|
if (!content.includes(needle)) {
|
|
377
|
-
result.
|
|
378
|
-
result.
|
|
423
|
+
result.warnings.push(`${file} should reference ${ref}`);
|
|
424
|
+
result.fixPrompts.push({
|
|
425
|
+
issue: `${file} should reference ${ref}`,
|
|
426
|
+
prompt: `In \`.specs/${file}\`, add \`${ref}\` to the \`relatedFiles\` front-matter list. ` +
|
|
427
|
+
`Preserve all existing content and formatting.`
|
|
428
|
+
});
|
|
379
429
|
}
|
|
380
430
|
}
|
|
381
431
|
}
|
|
@@ -487,6 +537,108 @@ This document outlines the architecture and design decisions for this project.
|
|
|
487
537
|
|
|
488
538
|
---
|
|
489
539
|
*Last updated: ${new Date().toISOString().split('T')[0]}*`;
|
|
540
|
+
}
|
|
541
|
+
getDefaultThreatModelMd() {
|
|
542
|
+
const today = new Date().toISOString().split('T')[0];
|
|
543
|
+
return `---
|
|
544
|
+
fileID: SEC-001
|
|
545
|
+
lastUpdated: ${today}
|
|
546
|
+
version: 1.0
|
|
547
|
+
contributors: [author]
|
|
548
|
+
relatedFiles: [security/security-decisions.md, architecture/architecture.md, project/requirements.md]
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
# Threat Model
|
|
552
|
+
|
|
553
|
+
## Overview [SEC-001.1]
|
|
554
|
+
|
|
555
|
+
> Describe the attack surface: what the system does, what it reads/writes, and what it does NOT do.
|
|
556
|
+
|
|
557
|
+
[TODO: Summarise the system\'s threat surface — input sources, outputs, and offline/online constraints.]
|
|
558
|
+
|
|
559
|
+
## Threat Model [SEC-002]
|
|
560
|
+
|
|
561
|
+
### [Threat Name] [SEC-002.1]
|
|
562
|
+
|
|
563
|
+
| Field | Detail |
|
|
564
|
+
|---|---|
|
|
565
|
+
| **Description** | [TODO: Describe the threat] |
|
|
566
|
+
| **Impact** | [TODO: High / Medium / Low] |
|
|
567
|
+
| **Likelihood** | [TODO: High / Medium / Low / Very low] |
|
|
568
|
+
| **Entry point** | [TODO: Where does attacker-controlled data enter?] |
|
|
569
|
+
| **Mitigation** | [TODO: What control prevents or limits this threat?] |
|
|
570
|
+
| **Residual risk** | [TODO: What risk remains after mitigation?] |
|
|
571
|
+
|
|
572
|
+
### [Threat Name] [SEC-002.2]
|
|
573
|
+
|
|
574
|
+
| Field | Detail |
|
|
575
|
+
|---|---|
|
|
576
|
+
| **Description** | [TODO: Describe the threat] |
|
|
577
|
+
| **Impact** | [TODO: High / Medium / Low] |
|
|
578
|
+
| **Likelihood** | [TODO: High / Medium / Low / Very low] |
|
|
579
|
+
| **Entry point** | [TODO: Where does attacker-controlled data enter?] |
|
|
580
|
+
| **Mitigation** | [TODO: What control prevents or limits this threat?] |
|
|
581
|
+
| **Residual risk** | [TODO: What risk remains after mitigation?] |
|
|
582
|
+
|
|
583
|
+
## Attack Surface Summary [SEC-003]
|
|
584
|
+
|
|
585
|
+
| Entry Point | Data Type | Validated? | Used In |
|
|
586
|
+
|---|---|---|---|
|
|
587
|
+
| [TODO: entry point] | [TODO: type] | [TODO: ✅ / ⚠️ / ❌] | [TODO: component] |
|
|
588
|
+
|
|
589
|
+
## Out of Scope [SEC-004]
|
|
590
|
+
|
|
591
|
+
- [TODO: List threats explicitly out of scope]
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
_Last updated: ${today}_`;
|
|
596
|
+
}
|
|
597
|
+
getDefaultSecurityDecisionsMd() {
|
|
598
|
+
const today = new Date().toISOString().split('T')[0];
|
|
599
|
+
return `---
|
|
600
|
+
fileID: SEC-002
|
|
601
|
+
lastUpdated: ${today}
|
|
602
|
+
version: 1.0
|
|
603
|
+
contributors: [author]
|
|
604
|
+
relatedFiles: [security/threat-model.md, architecture/architecture.md]
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
# Security Decisions
|
|
608
|
+
|
|
609
|
+
> Record security-relevant architectural decisions here in ADR style.
|
|
610
|
+
> Each entry should capture: what was decided, why, and any trade-offs.
|
|
611
|
+
|
|
612
|
+
## Decisions [SEC-002.1]
|
|
613
|
+
|
|
614
|
+
### [Decision title] [ADR-001]
|
|
615
|
+
|
|
616
|
+
| Field | Detail |
|
|
617
|
+
|---|---|
|
|
618
|
+
| **Decision** | [TODO: What was decided?] |
|
|
619
|
+
| **Status** | [TODO: Accepted / Proposed / Deprecated] |
|
|
620
|
+
| **Context** | [TODO: What problem does this solve?] |
|
|
621
|
+
| **Rationale** | [TODO: Why was this approach chosen over alternatives?] |
|
|
622
|
+
| **Trade-offs** | [TODO: What are the downsides or limitations?] |
|
|
623
|
+
| **Related threat** | [TODO: Which threat in threat-model.md does this address?] |
|
|
624
|
+
|
|
625
|
+
### [Decision title] [ADR-002]
|
|
626
|
+
|
|
627
|
+
| Field | Detail |
|
|
628
|
+
|---|---|
|
|
629
|
+
| **Decision** | [TODO: What was decided?] |
|
|
630
|
+
| **Status** | [TODO: Accepted / Proposed / Deprecated] |
|
|
631
|
+
| **Context** | [TODO: What problem does this solve?] |
|
|
632
|
+
| **Rationale** | [TODO: Why was this approach chosen over alternatives?] |
|
|
633
|
+
| **Trade-offs** | [TODO: What are the downsides or limitations?] |
|
|
634
|
+
| **Related threat** | [TODO: Which threat in threat-model.md does this address?] |
|
|
635
|
+
|
|
636
|
+
## Cross-References
|
|
637
|
+
- Threat model: ./threat-model.md
|
|
638
|
+
- Architecture: ../architecture/architecture.md
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
*Last updated: ${today}*`;
|
|
490
642
|
}
|
|
491
643
|
async validateStaleDates(specsDir, result) {
|
|
492
644
|
const mdFiles = this.requiredFiles.filter(f => f.endsWith('.md'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specValidator.js","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAA6D;AAC7D,+BAAqC;AACrC,8CAAgC;AAgBhC,MAAa,aAAa;IAA1B;QACU,kBAAa,GAAG;YACtB,sBAAsB;YACtB,8BAA8B;YAC9B,yBAAyB;YACzB,uBAAuB;YACvB,kBAAkB;YAClB,mBAAmB;YACnB,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;SACtB,CAAC;IAyiBJ,CAAC;IAviBC,KAAK,CAAC,QAAQ,CAAC,UAAkB,EAAE,OAA0B;QAC3D,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;SACpB,CAAC;QAEF,wBAAwB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAEH,kCAAkC;QAClC,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE/C,8BAA8B;QAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE9C,gCAAgC;QAChC,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvE,yCAAyC;QACzC,MAAM,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExD,uEAAuE;QACvE,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhD,sEAAsE;QACtE,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,OAAiB;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBAC5C,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;oBAClC,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;oBAC1C,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;oBAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;gBACvB,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,UAAkB;QACrC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE1E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,MAAwB;QAC1E,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,0CAA0C;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;YAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBACvD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,wBAAwB;YAC5B,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;oBACpE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YAED,0BAA0B;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;gBAChF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAChH,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAiB,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;iBACnD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,oBAAoB,CAAC,KAAe;QAC1C,MAAM,oBAAoB,GAAG,iDAAiD,CAAC;QAE/E,OAAO;YACL,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,MAAwB;QACvE,6CAA6C;QAC7C,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAEhE,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YACpF,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;YAChH,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;YAC1G,CAAC;YAED,0CAA0C;YAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC7G,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,MAAwB,EAAE,OAAgB;QAC/F,yCAAyC;QACzC,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElE,qCAAqC;QACrC,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElE,qCAAqC;QACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,QAAgB,EAAE,MAAwB,EAAE,OAAgB;QACtG,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAEjE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;YAAE,OAAO;QAElC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhD,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CACxD,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,+CAA+C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,QAAgB,EAAE,MAAwB,EAAE,OAAgB;QACtG,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC;YAAE,OAAO;QAEjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/C,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAC3F,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACjG,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,+CAA+C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,MAAwB,EAAE,OAAgB;QAC/F,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC;YAAE,OAAO;QAEnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEjD,mCAAmC;YACnC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACzF,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEpF,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAC3F,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,QAAgB;QAChE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,OAAe,CAAC;QAEpB,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,sGAAsG;YACtG,wEAAwE;YACxE,OAAO;QACT,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,sBAAsB;gBACzB,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvC,MAAM;YACR,KAAK,wBAAwB;gBAC3B,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC1C,MAAM;YACR,KAAK,8BAA8B;gBACjC,OAAO,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,yBAAyB;gBAC5B,OAAO,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACxC,MAAM;YACR;gBACE,OAAO,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,gCAAgC,CAAC;QACtH,CAAC;QAED,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,QAAgB;QACrD,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;YAE9C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACvB,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,QAAQ,GAAG;gBACf,+FAA+F;gBAC/F,sFAAsF;aACvF,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAC3F,0EAA0E;oBAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;yBAAM,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC/E,MAAM,MAAM,GAAG,WAAW,CAAC,KAAiC,CAAC;wBAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;4BAAE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;wBAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mDAAmD;gBAC9E,CAAC;YACH,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAA,kBAAa,EAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAEjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,QAAgB;QACtD,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChD,IAAA,kBAAa,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,QAAgB,EAAE,MAAwB;QACnF,MAAM,MAAM,GAAkD;YAC5D,EAAE,IAAI,EAAE,yBAAyB,EAAE,SAAS,EAAE,CAAC,8BAA8B,EAAE,uBAAuB,EAAE,sBAAsB,CAAC,EAAE;YACjI,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,sBAAsB,CAAC,EAAE;YACpH,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,EAAE;YAC5F,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,EAAE;YAC1I,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,EAAE;YACrH,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,EAAE;YACjG,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,EAAE;SAC7F,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAA,eAAU,EAAC,CAAC,CAAC;gBAAE,SAAS;YAC7B,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;oBACrE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACzB,CAAC;gBACD,IAAI,SAAS,EAAE,CAAC;oBACd,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;wBAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC,6BAA6B;wBACnE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB,GAAG,EAAE,CAAC,CAAC;4BACtD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;wBACzB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,OAAO;;;;;;;;;;;;;;;;;;;CAmBV,CAAC;IACA,CAAC;IAEO,wBAAwB;QAC9B,OAAO;;;;;;;;;qBASU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmC1C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAEO,sBAAsB;QAC5B,OAAO;;;;;;;;;;;;;;;;iBAgBM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAEO,sBAAsB;QAC5B,OAAO;;;;;;;;;;;;;;;iBAeM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,MAAwB;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAEvB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAA4B,CAAC;gBAC5D,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;oBAAE,SAAS;gBAExC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAAE,SAAS;gBAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3F,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;oBAClB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,GAAG,IAAI,oBAAoB,QAAQ,iFAAiF,CACrH,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,MAAwB;QACzE,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,8BAA8B,KAAK,CAAC,MAAM,6FAA6F,CACxI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACvD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACxE,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;oBACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,2CAA2C,YAAY,2FAA2F,CACnJ,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AApjBD,sCAojBC"}
|
|
1
|
+
{"version":3,"file":"specValidator.js","sourceRoot":"","sources":["../../src/utils/specValidator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specpilot",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.3",
|
|
4
4
|
"description": "A CLI tool for initializing specification-driven development projects with flexible, production-ready structures.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"npm": ">=8.0.0"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"chalk": "^
|
|
54
|
+
"chalk": "^4.1.2",
|
|
55
55
|
"commander": "^14.0.1",
|
|
56
56
|
"fs-extra": "^11.3.2",
|
|
57
57
|
"handlebars": "^4.7.8",
|