specpilot 1.3.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +96 -27
  2. package/dist/cli.js +23 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add-specs.d.ts.map +1 -1
  5. package/dist/commands/add-specs.js +4 -9
  6. package/dist/commands/add-specs.js.map +1 -1
  7. package/dist/commands/archive.d.ts +5 -0
  8. package/dist/commands/archive.d.ts.map +1 -0
  9. package/dist/commands/archive.js +52 -0
  10. package/dist/commands/archive.js.map +1 -0
  11. package/dist/commands/init.d.ts +1 -0
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +131 -14
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/list.d.ts.map +1 -1
  16. package/dist/commands/list.js +23 -3
  17. package/dist/commands/list.js.map +1 -1
  18. package/dist/commands/migrate.d.ts.map +1 -1
  19. package/dist/commands/migrate.js.map +1 -1
  20. package/dist/commands/refine.d.ts +8 -0
  21. package/dist/commands/refine.d.ts.map +1 -0
  22. package/dist/commands/refine.js +286 -0
  23. package/dist/commands/refine.js.map +1 -0
  24. package/dist/commands/specify.d.ts.map +1 -1
  25. package/dist/commands/specify.js +98 -15
  26. package/dist/commands/specify.js.map +1 -1
  27. package/dist/commands/validate.d.ts.map +1 -1
  28. package/dist/commands/validate.js.map +1 -1
  29. package/dist/utils/agentConfigGenerator.d.ts +15 -0
  30. package/dist/utils/agentConfigGenerator.d.ts.map +1 -0
  31. package/dist/utils/agentConfigGenerator.js +234 -0
  32. package/dist/utils/agentConfigGenerator.js.map +1 -0
  33. package/dist/utils/codeAnalyzer.js +10 -10
  34. package/dist/utils/codeAnalyzer.js.map +1 -1
  35. package/dist/utils/frameworks.d.ts +2 -0
  36. package/dist/utils/frameworks.d.ts.map +1 -0
  37. package/dist/utils/frameworks.js +11 -0
  38. package/dist/utils/frameworks.js.map +1 -0
  39. package/dist/utils/ideConfigGenerator.d.ts +20 -0
  40. package/dist/utils/ideConfigGenerator.d.ts.map +1 -0
  41. package/dist/utils/ideConfigGenerator.js +176 -0
  42. package/dist/utils/ideConfigGenerator.js.map +1 -0
  43. package/dist/utils/logger.d.ts.map +1 -1
  44. package/dist/utils/logger.js +27 -18
  45. package/dist/utils/logger.js.map +1 -1
  46. package/dist/utils/projectDetector.d.ts.map +1 -1
  47. package/dist/utils/projectDetector.js.map +1 -1
  48. package/dist/utils/projectMigrator.d.ts.map +1 -1
  49. package/dist/utils/projectMigrator.js +36 -33
  50. package/dist/utils/projectMigrator.js.map +1 -1
  51. package/dist/utils/specArchiver.d.ts +20 -0
  52. package/dist/utils/specArchiver.d.ts.map +1 -0
  53. package/dist/utils/specArchiver.js +124 -0
  54. package/dist/utils/specArchiver.js.map +1 -0
  55. package/dist/utils/specFileGenerator.d.ts +27 -0
  56. package/dist/utils/specFileGenerator.d.ts.map +1 -0
  57. package/dist/utils/specFileGenerator.js +805 -0
  58. package/dist/utils/specFileGenerator.js.map +1 -0
  59. package/dist/utils/specGenerator.d.ts +11 -14
  60. package/dist/utils/specGenerator.d.ts.map +1 -1
  61. package/dist/utils/specGenerator.js +25 -431
  62. package/dist/utils/specGenerator.js.map +1 -1
  63. package/dist/utils/specTreePrinter.d.ts +8 -0
  64. package/dist/utils/specTreePrinter.d.ts.map +1 -0
  65. package/dist/utils/specTreePrinter.js +38 -0
  66. package/dist/utils/specTreePrinter.js.map +1 -0
  67. package/dist/utils/specValidator.d.ts +3 -0
  68. package/dist/utils/specValidator.d.ts.map +1 -1
  69. package/dist/utils/specValidator.js +85 -10
  70. package/dist/utils/specValidator.js.map +1 -1
  71. package/dist/utils/templateEngine.d.ts +9 -3
  72. package/dist/utils/templateEngine.d.ts.map +1 -1
  73. package/dist/utils/templateEngine.js +44 -36
  74. package/dist/utils/templateEngine.js.map +1 -1
  75. package/package.json +10 -6
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SpecPilot
2
2
 
3
- [![npm version](https://badge.fury.io/js/specpilot.svg)](https://badge.fury.io/js/specpilot)
3
+ [![npm version](https://img.shields.io/npm/v/specpilot.svg)](https://www.npmjs.com/package/specpilot)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
6
  A CLI tool for initializing specification-driven development projects with flexible, production-ready structures.
@@ -35,14 +35,20 @@ This AI-assisted approach ensures comprehensive, high-quality specifications tai
35
35
 
36
36
  ## Commands
37
37
 
38
- | Command | Description |
39
- | ---------------- | ----------------------------- |
40
- | `init <name>` | Initialize new SDD project |
41
- | `add-specs` | Add specs to existing project |
42
- | `validate` | Validate specification files |
43
- | `list` | Show available templates |
44
- | `migrate` | Migrate between spec versions |
45
- | `specify <desc>` | Update project specifications |
38
+ | Command | Description |
39
+ | ----------------------- | --------------------------------------------------- |
40
+ | `init <name>` | Initialize new SDD project |
41
+ | `init <name> --dry-run` | Preview files that would be created without writing |
42
+ | `add-specs` | Add specs to existing project |
43
+ | `validate` | Validate specification files |
44
+ | `archive` | Archive oversized `prompts.md` / `tasks.md` entries |
45
+ | `list` | Show available templates |
46
+ | `migrate` | Migrate between spec versions |
47
+ | `refine [desc]` | Refine project specifications |
48
+
49
+ > **Tip — command aliases:** All commands have a short alias you can use instead of the full name.
50
+ > `init` → `i` &nbsp;Ā·&nbsp; `validate` → `v` &nbsp;Ā·&nbsp; `migrate` → `m` &nbsp;Ā·&nbsp; `list` → `ls` &nbsp;Ā·&nbsp; `refine` → `ref` &nbsp;Ā·&nbsp; `archive` → `ar` &nbsp;Ā·&nbsp; `add-specs` → `add`
51
+ > Example: `specpilot i my-app` is identical to `specpilot init my-app`.
46
52
 
47
53
  ### Examples
48
54
 
@@ -50,8 +56,11 @@ This AI-assisted approach ensures comprehensive, high-quality specifications tai
50
56
  # Initialize with specific language/framework
51
57
  specpilot init api --lang python --framework fastapi
52
58
 
53
- # Update specifications
54
- specpilot specify "REST API for user management" --update
59
+ # Preview files that would be created without writing anything
60
+ specpilot init api --dry-run
61
+
62
+ # Refine specifications
63
+ specpilot refine "REST API for user management" --update
55
64
 
56
65
  # Validate with auto-fix
57
66
  specpilot validate --fix
@@ -64,20 +73,23 @@ specpilot validate --fix
64
73
  - **React**: SPA applications
65
74
  - **Express**: REST APIs
66
75
  - **Next.js**: Full-stack apps
67
- - **CLI**: Command-line tools
76
+ - **Nest.js**: Scalable server-side apps
77
+ - **Vue**: Progressive UI framework
78
+ - **Angular**: Enterprise SPA framework
68
79
 
69
80
  ### JavaScript
70
81
 
71
82
  - **React**: SPA applications
72
83
  - **Express**: REST APIs
73
- - **Next.js**: Full-stack apps
74
- - **CLI**: Command-line tools
84
+
85
+ > Note: no framework prompt is shown for JavaScript — pass `--framework` explicitly if needed.
75
86
 
76
87
  ### Python
77
88
 
78
89
  - **FastAPI**: Modern REST APIs
79
90
  - **Django**: Full-stack applications
80
- - **Data Science**: ML/Data Science projects
91
+ - **Flask**: Lightweight REST APIs
92
+ - **Streamlit**: Data Science / ML apps
81
93
 
82
94
  ## Project Structure
83
95
 
@@ -85,25 +97,82 @@ SpecPilot generates a `.specs/` folder with organized subdirectories:
85
97
 
86
98
  ```
87
99
  .specs/
88
- ā”œā”€ā”€ project/ # Project config & requirements
89
- ā”œā”€ā”€ architecture/ # System design & API specs
90
- ā”œā”€ā”€ planning/ # Roadmap & task tracking
91
- ā”œā”€ā”€ quality/ # Testing & documentation
92
- └── development/ # AI prompts & context
100
+ ā”œā”€ā”€ architecture/
101
+ │ ā”œā”€ā”€ api.yaml # CLI / REST API / GraphQL interface spec
102
+ │ └── architecture.md # System design decisions and patterns
103
+ ā”œā”€ā”€ development/
104
+ │ ā”œā”€ā”€ context.md # Development memory, decisions, learnings
105
+ │ ā”œā”€ā”€ docs.md # Dev guidelines, spec conventions, checklist
106
+ │ └── prompts.md # AI interaction log — MANDATED, update every session
107
+ ā”œā”€ā”€ planning/
108
+ │ ā”œā”€ā”€ roadmap.md # Release milestones and objectives
109
+ │ └── tasks.md # Sprint tracker (backlog / current / completed)
110
+ ā”œā”€ā”€ project/
111
+ │ ā”œā”€ā”€ project.yaml # Project config, rules, and AI context (MANDATED)
112
+ │ └── requirements.md # Functional & non-functional requirements
113
+ └── quality/
114
+ └── tests.md # Test strategy, coverage targets, acceptance criteria
93
115
  ```
94
116
 
95
- ### Key Files
96
-
97
- - **`project.yaml`**: Project configuration and rules
98
- - **`requirements.md`**: Functional/non-functional requirements
99
- - **`architecture.md`**: System architecture decisions
100
- - **`prompts.md`**: AI interaction tracking (MANDATED)
101
- - **`tasks.md`**: Task management (backlog/sprint/completed)
117
+ > Also generated at project root: `.github/copilot-instructions.md` (AI mandate enforcement)
102
118
 
103
119
  ## Configuration
104
120
 
105
121
  SpecPilot requires no global configuration. Each project is self-contained with settings in `project.yaml`.
106
122
 
123
+ ### IDE & Agent Support
124
+
125
+ SpecPilot generates AI agent configuration files during project initialization. When you run `specpilot init`, you'll be prompted to select your AI IDE/Agent:
126
+
127
+ **Desktop IDEs (Workspace Settings):**
128
+
129
+ - **VSCode** - Industry standard with Copilot integration
130
+ - **Cursor** - AI-first code editor with enhanced AI context
131
+ - **Windsurf** - Advanced AI coding assistant
132
+ - **Kiro** - Specialized AI development environment
133
+ - **Antigravity** - AI-powered IDE with context awareness
134
+
135
+ **Cloud-Based AI Agents (Instruction Files):**
136
+
137
+ - **Cowork** - Anthropic Claude agent with Skills framework
138
+ - **Codex** - OpenAI Codex agent with instruction context
139
+
140
+ **Generated Configuration Files:**
141
+
142
+ For **all** IDE/Agent selections: `.github/copilot-instructions.md`
143
+
144
+ - Critical mandates injected into every AI request automatically
145
+ - Read on every interaction by GitHub Copilot, Cursor, and most AI tools
146
+ - Contains project name/stack, 5 critical mandates, and a Re-Anchor Prompt reference
147
+
148
+ For desktop IDEs: `.vscode/settings.json` (or `.cursor/`, `.windsurf/`, etc.)
149
+
150
+ - IDE-specific workspace folder setup for code + .specs
151
+ - Extensions recommendations for development
152
+ - AI context configuration for better spec integration
153
+
154
+ For cloud agents:
155
+
156
+ - **Cowork**: `.claude/skills/specpilot-project/SKILL.md` with project context and development guidelines
157
+ - **Codex**: `CODEX_INSTRUCTIONS.md` at project root with architecture overview and mandates
158
+
159
+ The generated settings/instructions automatically configure your AI agent to:
160
+
161
+ - Include `.specs/` folder in AI context
162
+ - Understand project structure and requirements
163
+ - Follow specification-driven development principles
164
+ - Access development guidelines and onboarding prompts
165
+
166
+ **Example:**
167
+
168
+ ```bash
169
+ # During init, you'll be prompted to select your IDE/Agent
170
+ specpilot init my-project --lang typescript --framework react
171
+ # Respond with your preferred IDE/Agent:
172
+ # - vscode, cursor, windsurf, kiro, antigravity (desktop)
173
+ # - cowork, codex (cloud agents)
174
+ ```
175
+
107
176
  ## Troubleshooting
108
177
 
109
178
  ### Common Issues
package/dist/cli.js CHANGED
@@ -10,8 +10,9 @@ const init_1 = require("./commands/init");
10
10
  const validate_1 = require("./commands/validate");
11
11
  const migrate_1 = require("./commands/migrate");
12
12
  const list_1 = require("./commands/list");
13
- const specify_1 = require("./commands/specify");
13
+ const refine_1 = require("./commands/refine");
14
14
  const add_specs_1 = require("./commands/add-specs");
15
+ const archive_1 = require("./commands/archive");
15
16
  const logger_1 = require("./utils/logger");
16
17
  const packageJson = require('../package.json');
17
18
  commander_1.program
@@ -29,6 +30,7 @@ commander_1.program
29
30
  .option('-d, --dir <directory>', 'Target directory', '.')
30
31
  .option('--specs-name <name>', 'Name for specs folder', '.specs')
31
32
  .option('--no-prompts', 'Skip interactive prompts')
33
+ .option('--dry-run', 'List files that would be created without writing them')
32
34
  .action(init_1.initCommand);
33
35
  // Validate command
34
36
  commander_1.program
@@ -57,17 +59,24 @@ commander_1.program
57
59
  .option('--lang <language>', 'Filter by language')
58
60
  .option('--verbose', 'Show template details')
59
61
  .action(list_1.listCommand);
60
- // Specify command
62
+ // Refine command
61
63
  commander_1.program
62
- .command('specify')
63
- .alias('spec')
64
- .description('Specify project requirements from natural language description')
65
- .argument('[description]', 'Natural language description of what to build')
64
+ .command('refine')
65
+ .alias('ref')
66
+ .description('Refine project specifications from natural language description')
67
+ .argument('[description]', 'Natural language description of changes to apply')
66
68
  .option('-d, --dir <directory>', 'Project directory', '.')
67
69
  .option('--specs-name <name>', 'Name for specs folder', '.specs')
68
70
  .option('--no-prompts', 'Skip interactive prompts')
69
71
  .option('-u, --update', 'Regenerate specs with new description')
70
- .action(specify_1.specifyCommand);
72
+ .action(refine_1.refineCommand);
73
+ // Archive command
74
+ commander_1.program
75
+ .command('archive')
76
+ .alias('ar')
77
+ .description('Archive oversized .specs/ files (prompts.md > 300 lines, tasks.md Completed > 150 lines)')
78
+ .option('--dry-run', 'Preview what would be archived without writing any files')
79
+ .action(archive_1.archiveCommand);
71
80
  // Add-specs command
72
81
  commander_1.program
73
82
  .command('add-specs')
@@ -79,6 +88,13 @@ commander_1.program
79
88
  .option('--deep-analysis', 'Perform thorough codebase analysis')
80
89
  .option('--no-prompts', 'Skip interactive prompts')
81
90
  .action(add_specs_1.addSpecsCommand);
91
+ commander_1.program.addHelpText('after', `
92
+ Aliases:
93
+ init → i validate → v migrate → m list → ls
94
+ refine → ref archive → ar add-specs → add
95
+
96
+ Per-command options: specpilot <command> --help
97
+ `);
82
98
  // Parse command line arguments
83
99
  const args = process.argv.slice(2);
84
100
  // If no arguments provided, show welcome message
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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,iBAuH7D"}
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,iBAwH7D"}
@@ -9,6 +9,7 @@ const fs_1 = require("fs");
9
9
  const chalk_1 = __importDefault(require("chalk"));
10
10
  const inquirer_1 = __importDefault(require("inquirer"));
11
11
  const projectDetector_1 = require("../utils/projectDetector");
12
+ const frameworks_1 = require("../utils/frameworks");
12
13
  const codeAnalyzer_1 = require("../utils/codeAnalyzer");
13
14
  const templateEngine_1 = require("../utils/templateEngine");
14
15
  const specGenerator_1 = require("../utils/specGenerator");
@@ -45,7 +46,7 @@ async function addSpecsCommand(options) {
45
46
  }
46
47
  // Prompt for missing information
47
48
  if (!framework && options.prompts) {
48
- const frameworks = getFrameworksForLanguage(language);
49
+ const frameworks = (0, frameworks_1.getFrameworksForLanguage)(language);
49
50
  if (frameworks.length > 0) {
50
51
  const response = await inquirer_1.default.prompt([{
51
52
  type: 'list',
@@ -102,7 +103,8 @@ async function addSpecsCommand(options) {
102
103
  specsName: '.specs',
103
104
  author: developerName,
104
105
  description,
105
- analysis: (!options.noAnalysis && analysis) ? analysis : undefined
106
+ analysis: (!options.noAnalysis && analysis) ? analysis : undefined,
107
+ mode: 'existing',
106
108
  });
107
109
  logger.success('āœ… .specs folder created successfully!');
108
110
  logger.info(`šŸ“ Location: ${specsDir}`);
@@ -114,11 +116,4 @@ async function addSpecsCommand(options) {
114
116
  process.exit(1);
115
117
  }
116
118
  }
117
- function getFrameworksForLanguage(language) {
118
- const frameworks = {
119
- typescript: ['react', 'express', 'next', 'nest', 'vue', 'angular'],
120
- python: ['fastapi', 'django', 'flask', 'streamlit']
121
- };
122
- return frameworks[language] || [];
123
- }
124
119
  //# sourceMappingURL=add-specs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-specs.js","sourceRoot":"","sources":["../../src/commands/add-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface ArchiveOptions {
2
+ dryRun: boolean;
3
+ }
4
+ export declare function archiveCommand(options: ArchiveOptions): Promise<void>;
5
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBA2C3D"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.archiveCommand = archiveCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const specArchiver_1 = require("../utils/specArchiver");
9
+ const logger_1 = require("../utils/logger");
10
+ async function archiveCommand(options) {
11
+ const logger = new logger_1.Logger();
12
+ const projectDir = process.cwd();
13
+ try {
14
+ if (options.dryRun) {
15
+ logger.info('šŸ” Dry run — previewing archive operations (no files will be changed)...');
16
+ }
17
+ else {
18
+ logger.info('šŸ“¦ Archiving oversized .specs/ files...');
19
+ }
20
+ const archiver = new specArchiver_1.SpecArchiver();
21
+ const result = await archiver.archive(projectDir, { dryRun: options.dryRun });
22
+ if (result.entries.length === 0) {
23
+ logger.success('āœ… All .specs/ files are within limits. Nothing to archive.');
24
+ return;
25
+ }
26
+ console.log('');
27
+ if (options.dryRun) {
28
+ console.log(chalk_1.default.yellow('šŸ“‹ Archive preview (--dry-run):'));
29
+ }
30
+ else {
31
+ console.log(chalk_1.default.green('šŸ“‹ Archive report:'));
32
+ }
33
+ console.log('');
34
+ for (const entry of result.entries) {
35
+ const verb = options.dryRun ? 'Would move' : 'Moved';
36
+ console.log(` ${chalk_1.default.cyan(entry.file)}`);
37
+ console.log(` ${verb} ${chalk_1.default.yellow(String(entry.linesMoved))} lines → ${chalk_1.default.cyan(entry.archiveFile)}`);
38
+ console.log('');
39
+ }
40
+ if (!options.dryRun) {
41
+ logger.success(`āœ… Archived ${result.entries.length} file(s). Run \`specpilot validate\` to confirm.`);
42
+ }
43
+ else {
44
+ logger.info('šŸ’” Run without --dry-run to apply these changes.');
45
+ }
46
+ }
47
+ catch (error) {
48
+ logger.displayError('Archive Failed', error instanceof Error ? error.message : 'Unknown error');
49
+ process.exit(1);
50
+ }
51
+ }
52
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":";;;;;AAQA,wCA2CC;AAnDD,kDAA0B;AAC1B,wDAAqD;AACrD,4CAAyC;AAMlC,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC1D,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,2BAAY,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,kDAAkD,CAAC,CAAC;QACxG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -4,6 +4,7 @@ export interface InitOptions {
4
4
  dir: string;
5
5
  specsName: string;
6
6
  prompts: boolean;
7
+ dryRun?: boolean;
7
8
  }
8
9
  export declare function initCommand(name: string, options: InitOptions): Promise<void>;
9
10
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBA8InE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBAmRnE"}
@@ -42,6 +42,7 @@ const fs_1 = require("fs");
42
42
  const chalk_1 = __importDefault(require("chalk"));
43
43
  const inquirer_1 = __importDefault(require("inquirer"));
44
44
  const yaml = __importStar(require("js-yaml"));
45
+ const frameworks_1 = require("../utils/frameworks");
45
46
  const templateEngine_1 = require("../utils/templateEngine");
46
47
  const specGenerator_1 = require("../utils/specGenerator");
47
48
  const logger_1 = require("../utils/logger");
@@ -54,9 +55,14 @@ async function initCommand(name, options) {
54
55
  process.exit(1);
55
56
  }
56
57
  const projectName = name.trim();
57
- // Validate project name doesn't contain invalid characters
58
- if (/[<>:"/\\|?*]/.test(projectName)) {
59
- logger.displayError('Invalid Project Name', 'Project name contains invalid characters: < > : " / \\ | ? *\n\nšŸ’” Please use only letters, numbers, hyphens, and underscores');
58
+ // Validate project name length (npm limit)
59
+ if (projectName.length > 214) {
60
+ logger.displayError('Invalid Project Name', 'Project name must be 214 characters or fewer');
61
+ process.exit(1);
62
+ }
63
+ // Validate project name with allowlist (prevents filesystem issues and Handlebars template injection)
64
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(projectName)) {
65
+ logger.displayError('Invalid Project Name', 'Project name must start with a letter or number and contain only letters, numbers, dots, hyphens, and underscores\n\nšŸ’” Example: my-project, app_v2, project.name');
60
66
  process.exit(1);
61
67
  }
62
68
  // Validate supported language
@@ -65,10 +71,58 @@ async function initCommand(name, options) {
65
71
  logger.displayError('Unsupported Language', `Language "${options.lang}" is not supported\n\nšŸ’” Supported languages: ${supportedLanguages.join(', ')}`);
66
72
  process.exit(1);
67
73
  }
74
+ // Dry-run: list files that would be created without writing them
75
+ if (options.dryRun) {
76
+ const targetDir = (0, path_1.resolve)(options.dir, projectName);
77
+ const specsName = options.specsName;
78
+ const specsDir = (0, path_1.join)(targetDir, specsName);
79
+ const ideDir = '.vscode'; // default for dry-run (IDE is chosen interactively)
80
+ const entries = [
81
+ targetDir + '/',
82
+ specsDir + '/',
83
+ (0, path_1.join)(specsDir, 'README.md'),
84
+ (0, path_1.join)(specsDir, 'project') + '/',
85
+ (0, path_1.join)(specsDir, 'project', 'project.yaml'),
86
+ (0, path_1.join)(specsDir, 'project', 'requirements.md'),
87
+ (0, path_1.join)(specsDir, 'architecture') + '/',
88
+ (0, path_1.join)(specsDir, 'architecture', 'architecture.md'),
89
+ (0, path_1.join)(specsDir, 'architecture', 'api.yaml'),
90
+ (0, path_1.join)(specsDir, 'planning') + '/',
91
+ (0, path_1.join)(specsDir, 'planning', 'tasks.md'),
92
+ (0, path_1.join)(specsDir, 'planning', 'roadmap.md'),
93
+ (0, path_1.join)(specsDir, 'quality') + '/',
94
+ (0, path_1.join)(specsDir, 'quality', 'tests.md'),
95
+ (0, path_1.join)(specsDir, 'development') + '/',
96
+ (0, path_1.join)(specsDir, 'development', 'docs.md'),
97
+ (0, path_1.join)(specsDir, 'development', 'context.md'),
98
+ (0, path_1.join)(specsDir, 'development', 'prompts.md'),
99
+ (0, path_1.join)(specsDir, 'security') + '/',
100
+ (0, path_1.join)(specsDir, 'security', 'threat-model.md'),
101
+ (0, path_1.join)(specsDir, 'security', 'security-decisions.md'),
102
+ (0, path_1.join)(targetDir, ideDir) + '/',
103
+ (0, path_1.join)(targetDir, ideDir, 'settings.json'),
104
+ (0, path_1.join)(targetDir, ideDir, 'extensions.json'),
105
+ (0, path_1.join)(targetDir, '.github') + '/',
106
+ (0, path_1.join)(targetDir, '.github', 'copilot-instructions.md'),
107
+ ];
108
+ const content = [
109
+ chalk_1.default.blue('šŸš€ Dry run — no files will be written'),
110
+ '',
111
+ chalk_1.default.blue.bold('Files that would be created:'),
112
+ '',
113
+ ...entries.map(e => chalk_1.default.white(' ' + e)),
114
+ '',
115
+ chalk_1.default.gray(`(${entries.filter(e => !e.endsWith('/')).length} files, ${entries.filter(e => e.endsWith('/')).length} directories)`),
116
+ '',
117
+ chalk_1.default.cyan(`šŸ’” Run without --dry-run to create these files.`),
118
+ ];
119
+ logger.displayWithLogo(content);
120
+ return;
121
+ }
68
122
  // Get framework if not provided and prompts enabled
69
123
  let framework = options.framework;
70
124
  if (!framework && options.prompts) {
71
- const frameworks = getFrameworksForLanguage(options.lang);
125
+ const frameworks = (0, frameworks_1.getFrameworksForLanguage)(options.lang);
72
126
  if (frameworks.length > 0) {
73
127
  // Display logo before framework selection
74
128
  const frameworkPromptContent = [
@@ -102,6 +156,73 @@ async function initCommand(name, options) {
102
156
  }]);
103
157
  developerName = nameResponse.developerName.trim() || 'Your Name';
104
158
  }
159
+ // Get IDE/Agent preference for context configuration
160
+ let ide = 'vscode'; // default
161
+ if (options.prompts) {
162
+ const ideResponse = await inquirer_1.default.prompt([{
163
+ type: 'list',
164
+ name: 'ide',
165
+ message: 'Select your AI IDE/Agent for SpecPilot context:',
166
+ choices: ['vscode', 'Cursor', 'Windsurf', 'Antigravity', 'Kiro', 'Cowork', 'Codex']
167
+ }]);
168
+ ide = ideResponse.ide;
169
+ }
170
+ // Project context questions (helps AI generate better specs)
171
+ const NOT_SPECIFIED = 'Not specified — use your judgment and mark as [ASSUMPTION]';
172
+ let projectContext = {
173
+ whatItDoes: NOT_SPECIFIED,
174
+ targetUsers: NOT_SPECIFIED,
175
+ expectedScale: NOT_SPECIFIED,
176
+ constraints: NOT_SPECIFIED,
177
+ };
178
+ if (options.prompts) {
179
+ console.log('');
180
+ console.log(chalk_1.default.blue.bold('šŸ“‹ Project Context') + chalk_1.default.gray(' (helps AI generate better specs)'));
181
+ console.log('');
182
+ // Mandatory question — re-prompt if empty
183
+ let whatItDoes = '';
184
+ while (!whatItDoes.trim()) {
185
+ const descResponse = await inquirer_1.default.prompt([{
186
+ type: 'input',
187
+ name: 'whatItDoes',
188
+ message: 'What does your project do? (required):',
189
+ }]);
190
+ whatItDoes = descResponse.whatItDoes.trim();
191
+ if (!whatItDoes) {
192
+ console.log(chalk_1.default.yellow(' This is required — a brief sentence about what the project does.'));
193
+ }
194
+ }
195
+ // Optional questions — Enter to skip
196
+ const optionalResponse = await inquirer_1.default.prompt([
197
+ {
198
+ type: 'input',
199
+ name: 'targetUsers',
200
+ message: 'Who are the target users? (Enter to skip):',
201
+ default: '',
202
+ filter: (val) => val.trim(),
203
+ },
204
+ {
205
+ type: 'input',
206
+ name: 'expectedScale',
207
+ message: 'What\'s the expected scale? (Enter to skip):',
208
+ default: '',
209
+ filter: (val) => val.trim(),
210
+ },
211
+ {
212
+ type: 'input',
213
+ name: 'constraints',
214
+ message: 'Any key constraints or requirements? (Enter to skip):',
215
+ default: '',
216
+ filter: (val) => val.trim(),
217
+ },
218
+ ]);
219
+ projectContext = {
220
+ whatItDoes,
221
+ targetUsers: optionalResponse.targetUsers || NOT_SPECIFIED,
222
+ expectedScale: optionalResponse.expectedScale || NOT_SPECIFIED,
223
+ constraints: optionalResponse.constraints || NOT_SPECIFIED,
224
+ };
225
+ }
105
226
  // Create project directory
106
227
  const targetDir = (0, path_1.join)(options.dir, projectName);
107
228
  if (!(0, fs_1.existsSync)(targetDir)) {
@@ -124,7 +245,7 @@ async function initCommand(name, options) {
124
245
  projectInfo += `\n Framework: ${projectData.framework || 'Unknown'}`;
125
246
  projectInfo += `\n Author: ${projectData.author || 'Unknown'}`;
126
247
  }
127
- catch (error) {
248
+ catch {
128
249
  projectInfo += '\n\nāš ļø Could not read project.yaml';
129
250
  }
130
251
  }
@@ -134,7 +255,7 @@ async function initCommand(name, options) {
134
255
  const lines = requirementsContent.split('\n').slice(0, 5); // First 5 lines
135
256
  projectInfo += `\n\nšŸ“ Requirements Preview:\n${lines.map(line => ` ${line}`).join('\n')}`;
136
257
  }
137
- catch (error) {
258
+ catch {
138
259
  projectInfo += '\n\nāš ļø Could not read requirements.md';
139
260
  }
140
261
  }
@@ -163,7 +284,10 @@ async function initCommand(name, options) {
163
284
  framework,
164
285
  targetDir,
165
286
  specsName: options.specsName,
166
- author: developerName
287
+ author: developerName,
288
+ ide,
289
+ mode: 'new',
290
+ projectContext,
167
291
  });
168
292
  // Show success with logo (includes initialization message and all details)
169
293
  logger.displayInitSuccess(projectName, targetDir, (0, path_1.join)(targetDir, options.specsName));
@@ -173,11 +297,4 @@ async function initCommand(name, options) {
173
297
  process.exit(1);
174
298
  }
175
299
  }
176
- function getFrameworksForLanguage(language) {
177
- const frameworks = {
178
- typescript: ['react', 'express', 'next', 'nest', 'vue', 'angular'],
179
- python: ['fastapi', 'django', 'flask', 'streamlit']
180
- };
181
- return frameworks[language] || [];
182
- }
183
300
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,kCAmRC;AAtSD,+BAAqC;AACrC,2BAAyD;AACzD,kDAA0B;AAC1B,wDAAgC;AAChC,8CAAgC;AAChC,oDAA+D;AAC/D,4DAAyD;AACzD,0DAAuD;AACvD,4CAAyC;AAWlC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,OAAoB;IAClE,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,wBAAwB;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,yFAAyF,CAAC,CAAC;YACvI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEhC,2CAA2C;QAC3C,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,8CAA8C,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sGAAsG;QACtG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,mKAAmK,CAAC,CAAC;YACjN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE,aAAa,OAAO,CAAC,IAAI,iDAAiD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iEAAiE;QACjE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,oDAAoD;YAE9E,MAAM,OAAO,GAAa;gBACxB,SAAS,GAAG,GAAG;gBACf,QAAQ,GAAG,GAAG;gBACd,IAAA,WAAI,EAAC,QAAQ,EAAE,WAAW,CAAC;gBAC3B,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,GAAG;gBAC/B,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC;gBACzC,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC;gBAC5C,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,GAAG;gBACpC,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,CAAC;gBACjD,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC;gBAC1C,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG;gBAChC,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;gBACtC,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;gBACxC,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,GAAG;gBAC/B,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;gBACrC,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,GAAG;gBACnC,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC;gBACxC,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC;gBAC3C,IAAA,WAAI,EAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC;gBAC3C,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG;gBAChC,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC;gBAC7C,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,uBAAuB,CAAC;gBACnD,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,CAAC,GAAG,GAAG;gBAC7B,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC;gBACxC,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC;gBAC1C,IAAA,WAAI,EAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG;gBAChC,IAAA,WAAI,EAAC,SAAS,EAAE,SAAS,EAAE,yBAAyB,CAAC;aACtD,CAAC;YAEF,MAAM,OAAO,GAAG;gBACd,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC;gBACnD,EAAE;gBACF,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC;gBAC/C,EAAE;gBACF,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC1C,EAAE;gBACF,eAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC;gBACjI,EAAE;gBACF,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC;aAC9D,CAAC;YACF,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAA,qCAAwB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,0CAA0C;gBAC1C,MAAM,sBAAsB,GAAG;oBAC7B,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;oBAC5C,EAAE;oBACF,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;oBACtC,EAAE;oBACF,eAAK,CAAC,KAAK,CAAC,YAAY,WAAW,EAAE,CAAC;oBACtC,eAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxC,EAAE;oBACF,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC;iBAC1D,CAAC;gBACF,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;gBAE/C,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,0CAA0C;QAC1C,IAAI,aAAa,GAAG,WAAW,CAAC,CAAC,UAAU;QAC3C,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,WAAW;iBACrB,CAAC,CAAC,CAAC;YACJ,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;QACnE,CAAC;QAED,qDAAqD;QACrD,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,UAAU;QAC9B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;oBACzC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,iDAAiD;oBAC1D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;iBACpF,CAAC,CAAC,CAAC;YACJ,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;QACxB,CAAC;QAED,6DAA6D;QAC7D,MAAM,aAAa,GAAG,4DAA4D,CAAC;QACnF,IAAI,cAAc,GAAG;YACnB,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,aAAa;YAC5B,WAAW,EAAE,aAAa;SAC3B,CAAC;QAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;YACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,0CAA0C;YAC1C,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;wBAC1C,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,wCAAwC;qBAClD,CAAC,CAAC,CAAC;gBACJ,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC;gBAClG,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,MAAM,gBAAgB,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC7C;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,4CAA4C;oBACrD,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;iBACpC;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,8CAA8C;oBACvD,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;iBACpC;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,uDAAuD;oBAChE,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;iBACpC;aACF,CAAC,CAAC;YAEH,cAAc,GAAG;gBACf,UAAU;gBACV,WAAW,EAAE,gBAAgB,CAAC,WAAW,IAAI,aAAa;gBAC1D,aAAa,EAAE,gBAAgB,CAAC,aAAa,IAAI,aAAa;gBAC9D,WAAW,EAAE,gBAAgB,CAAC,WAAW,IAAI,aAAa;aAC3D,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,oCAAoC;YACpC,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAClE,MAAM,kBAAkB,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAExE,IAAI,WAAW,GAAG,YAAY,WAAW,uBAAuB,SAAS,EAAE,CAAC;YAE5E,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAQ,CAAC;oBAC5E,WAAW,IAAI,kCAAkC,CAAC;oBAClD,WAAW,IAAI,aAAa,WAAW,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC5D,WAAW,IAAI,gBAAgB,WAAW,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;oBAClE,WAAW,IAAI,iBAAiB,WAAW,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACpE,WAAW,IAAI,kBAAkB,WAAW,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;oBACtE,WAAW,IAAI,eAAe,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClE,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,IAAI,oCAAoC,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,IAAI,IAAA,eAAU,EAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,mBAAmB,GAAG,IAAA,iBAAY,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;oBAC3E,WAAW,IAAI,iCAAiC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9F,CAAC;gBAAC,MAAM,CAAC;oBACP,WAAW,IAAI,uCAAuC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM,sBAAsB,GAAG;gBAC7B,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;gBAC5C,EAAE;gBACF,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;gBACxC,EAAE;gBACF,eAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzB,EAAE;gBACF,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC;gBAC/C,eAAK,CAAC,KAAK,CAAC,QAAQ,SAAS,EAAE,CAAC;gBAChC,eAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC;gBAC1D,eAAK,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,SAAS,0BAA0B,CAAC;aACrE,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,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,aAAa,CAAC,aAAa,CAAC;YAChC,WAAW;YACX,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,SAAS;YACT,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,aAAa;YACrB,GAAG;YACH,IAAI,EAAE,KAAK;YACX,cAAc;SACf,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAExF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}