sedd 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +504 -0
  2. package/bin/sedd.js +6 -0
  3. package/commands/sedd.clarify.md +435 -0
  4. package/commands/sedd.dashboard.md +145 -0
  5. package/commands/sedd.implement.md +326 -0
  6. package/commands/sedd.migrate.md +249 -0
  7. package/commands/sedd.specify.md +198 -0
  8. package/commands/sedd.tasks.md +176 -0
  9. package/dist/cli/check.d.ts +6 -0
  10. package/dist/cli/check.d.ts.map +1 -0
  11. package/dist/cli/check.js +134 -0
  12. package/dist/cli/check.js.map +1 -0
  13. package/dist/cli/clarify.d.ts +2 -0
  14. package/dist/cli/clarify.d.ts.map +1 -0
  15. package/dist/cli/clarify.js +116 -0
  16. package/dist/cli/clarify.js.map +1 -0
  17. package/dist/cli/index.d.ts +8 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +175 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/cli/init.d.ts +9 -0
  22. package/dist/cli/init.d.ts.map +1 -0
  23. package/dist/cli/init.js +236 -0
  24. package/dist/cli/init.js.map +1 -0
  25. package/dist/cli/migrate.d.ts +7 -0
  26. package/dist/cli/migrate.d.ts.map +1 -0
  27. package/dist/cli/migrate.js +197 -0
  28. package/dist/cli/migrate.js.map +1 -0
  29. package/dist/cli/specify.d.ts +7 -0
  30. package/dist/cli/specify.d.ts.map +1 -0
  31. package/dist/cli/specify.js +131 -0
  32. package/dist/cli/specify.js.map +1 -0
  33. package/dist/cli/status.d.ts +6 -0
  34. package/dist/cli/status.d.ts.map +1 -0
  35. package/dist/cli/status.js +118 -0
  36. package/dist/cli/status.js.map +1 -0
  37. package/dist/cli/tasks.d.ts +7 -0
  38. package/dist/cli/tasks.d.ts.map +1 -0
  39. package/dist/cli/tasks.js +165 -0
  40. package/dist/cli/tasks.js.map +1 -0
  41. package/dist/core/changelog.d.ts +30 -0
  42. package/dist/core/changelog.d.ts.map +1 -0
  43. package/dist/core/changelog.js +97 -0
  44. package/dist/core/changelog.js.map +1 -0
  45. package/dist/core/file-splitter.d.ts +39 -0
  46. package/dist/core/file-splitter.d.ts.map +1 -0
  47. package/dist/core/file-splitter.js +162 -0
  48. package/dist/core/file-splitter.js.map +1 -0
  49. package/dist/core/migration-manager.d.ts +76 -0
  50. package/dist/core/migration-manager.d.ts.map +1 -0
  51. package/dist/core/migration-manager.js +230 -0
  52. package/dist/core/migration-manager.js.map +1 -0
  53. package/dist/core/timestamps.d.ts +17 -0
  54. package/dist/core/timestamps.d.ts.map +1 -0
  55. package/dist/core/timestamps.js +37 -0
  56. package/dist/core/timestamps.js.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/types/index.d.ts +102 -0
  62. package/dist/types/index.d.ts.map +1 -0
  63. package/dist/types/index.js +83 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/utils/git.d.ts +63 -0
  66. package/dist/utils/git.d.ts.map +1 -0
  67. package/dist/utils/git.js +179 -0
  68. package/dist/utils/git.js.map +1 -0
  69. package/hooks/README.md +220 -0
  70. package/hooks/check-roadmap.js +231 -0
  71. package/hooks/check-roadmap.ps1 +343 -0
  72. package/package.json +60 -0
  73. package/scripts/bash/sedd-clarify.sh +142 -0
  74. package/scripts/bash/sedd-complete-task.sh +108 -0
  75. package/scripts/bash/sedd-specify.sh +147 -0
  76. package/scripts/powershell/sedd-clarify.ps1 +222 -0
  77. package/scripts/powershell/sedd-complete-task.ps1 +143 -0
  78. package/scripts/powershell/sedd-specify.ps1 +192 -0
  79. package/scripts/powershell/sedd-status.ps1 +153 -0
  80. package/scripts/powershell/sedd-tasks.ps1 +176 -0
  81. package/templates/changelog-template.md +6 -0
  82. package/templates/clarify-template.md +66 -0
  83. package/templates/config-template.json +20 -0
  84. package/templates/decisions-template.md +56 -0
  85. package/templates/interfaces-template.ts +131 -0
  86. package/templates/meta-template.json +12 -0
  87. package/templates/progress-template.md +61 -0
  88. package/templates/sedd.schema.json +95 -0
  89. package/templates/spec-template.md +114 -0
  90. package/templates/tasks-template.md +58 -0
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SEDD CLI - Spec & Expectation Driven Development
4
+ *
5
+ * Main entry point for the CLI.
6
+ */
7
+ import { Command } from 'commander';
8
+ import chalk from 'chalk';
9
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
10
+ import { join, basename } from 'node:path';
11
+ // Commands
12
+ import { init } from './init.js';
13
+ import { check } from './check.js';
14
+ import { status } from './status.js';
15
+ import { migrate } from './migrate.js';
16
+ import { specify } from './specify.js';
17
+ import { clarify } from './clarify.js';
18
+ import { addTasks, completeTask } from './tasks.js';
19
+ const SEDD_DIR = '.sedd';
20
+ function getFeatures(seddPath) {
21
+ if (!existsSync(seddPath))
22
+ return [];
23
+ const features = [];
24
+ try {
25
+ const items = readdirSync(seddPath, { withFileTypes: true });
26
+ for (const item of items) {
27
+ if (item.isDirectory() && /^\d{3}-/.test(item.name)) {
28
+ const featurePath = join(seddPath, item.name);
29
+ const parts = item.name.split('-');
30
+ const id = parts[0];
31
+ const name = parts.slice(1).join('-');
32
+ let migrations = 0;
33
+ try {
34
+ const contents = readdirSync(featurePath, { withFileTypes: true });
35
+ migrations = contents.filter(c => c.isDirectory() && /^M\d{3}$/.test(c.name)).length;
36
+ }
37
+ catch { }
38
+ features.push({
39
+ id,
40
+ name,
41
+ hasSpec: existsSync(join(featurePath, 'spec.md')),
42
+ migrations,
43
+ });
44
+ }
45
+ }
46
+ }
47
+ catch { }
48
+ return features.sort((a, b) => a.id.localeCompare(b.id));
49
+ }
50
+ function showWelcome() {
51
+ const seddPath = join(process.cwd(), SEDD_DIR);
52
+ const hasSedd = existsSync(seddPath);
53
+ const features = hasSedd ? getFeatures(seddPath) : [];
54
+ let projectName = basename(process.cwd());
55
+ const pkgPath = join(process.cwd(), 'package.json');
56
+ if (existsSync(pkgPath)) {
57
+ try {
58
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
59
+ projectName = pkg.name || projectName;
60
+ }
61
+ catch { }
62
+ }
63
+ console.log(chalk.cyan.bold(`
64
+ SEDD - Spec & Expectation Driven Development
65
+ Use with Claude Code, Cursor, Copilot, or any LLM
66
+ `));
67
+ if (!hasSedd) {
68
+ console.log(chalk.yellow(` No SEDD project found in: ${process.cwd()}`));
69
+ console.log(chalk.white(` Run ${chalk.cyan('sedd init')} to initialize.\n`));
70
+ }
71
+ else {
72
+ console.log(chalk.green(` Project: ${chalk.bold.white(projectName)}`));
73
+ if (features.length === 0) {
74
+ console.log(chalk.yellow(` No features yet.`));
75
+ console.log(chalk.white(` Create one: ${chalk.cyan('sedd specify 001 my-feature')}\n`));
76
+ }
77
+ else {
78
+ console.log(chalk.white(` Features (${features.length}):`));
79
+ for (const f of features.slice(0, 5)) {
80
+ const dot = f.hasSpec ? chalk.green('●') : chalk.red('○');
81
+ const mig = f.migrations > 0 ? chalk.gray(` [${f.migrations}]`) : '';
82
+ console.log(` ${dot} ${chalk.cyan(f.id)} ${f.name}${mig}`);
83
+ }
84
+ if (features.length > 5) {
85
+ console.log(chalk.gray(` ... +${features.length - 5} more`));
86
+ }
87
+ console.log('');
88
+ }
89
+ }
90
+ console.log(chalk.bold(' Workflow:'));
91
+ console.log(`
92
+ 1. ${chalk.cyan('sedd init')} Initialize SEDD
93
+ 2. ${chalk.cyan('sedd specify 001 feature')} Create feature spec
94
+ 3. Edit ${chalk.yellow('.sedd/001-feature/spec.md')}
95
+ 4. Run ${chalk.cyan('claude')} or your LLM Implement the spec
96
+ 5. ${chalk.cyan('sedd clarify')} Document decisions
97
+ `);
98
+ console.log(chalk.bold(' Commands:'));
99
+ console.log(`
100
+ ${chalk.cyan('sedd init')} Initialize SEDD in project
101
+ ${chalk.cyan('sedd specify <id> <name>')} Create new feature spec
102
+ ${chalk.cyan('sedd clarify')} Create clarify/tasks/decisions
103
+ ${chalk.cyan('sedd status')} Show project status
104
+ ${chalk.cyan('sedd --help')} Show all commands
105
+ `);
106
+ }
107
+ async function main() {
108
+ const args = process.argv.slice(2);
109
+ const program = new Command();
110
+ program
111
+ .name('sedd')
112
+ .description('SEDD - Spec & Expectation Driven Development')
113
+ .version('0.1.0');
114
+ program
115
+ .command('init')
116
+ .description('Initialize SEDD in current project')
117
+ .argument('[project-name]', 'Project name (auto-detected from package.json)')
118
+ .option('--no-git', 'Skip git integration')
119
+ .option('--no-gitignore', 'Skip .gitignore updates')
120
+ .option('--legacy', 'Use specs/ folder instead of .sedd/')
121
+ .option('-f, --force', 'Force update existing files')
122
+ .action(init);
123
+ program
124
+ .command('check')
125
+ .description('Check SEDD structure and prerequisites')
126
+ .option('-f, --fix', 'Attempt to fix issues')
127
+ .action(check);
128
+ program
129
+ .command('status')
130
+ .description('Show current feature status')
131
+ .option('-j, --json', 'Output as JSON')
132
+ .action(status);
133
+ program
134
+ .command('migrate')
135
+ .description('Migrate existing specs to new structure')
136
+ .argument('[feature-dir]', 'Feature directory to migrate')
137
+ .option('-a, --all', 'Migrate all features')
138
+ .option('-d, --dry-run', 'Show what would be done')
139
+ .action(migrate);
140
+ program
141
+ .command('specify')
142
+ .description('Create a new feature specification')
143
+ .argument('<feature-id>', 'Feature ID (e.g., "001")')
144
+ .argument('<feature-name>', 'Feature name (e.g., "user-auth")')
145
+ .option('-d, --description <desc>', 'Brief description')
146
+ .option('-e, --expectation <exp>', 'Expected outcome')
147
+ .action(specify);
148
+ program
149
+ .command('clarify')
150
+ .description('Create new migration with clarify/tasks/decisions')
151
+ .argument('[branch]', 'Feature branch (auto-detected)')
152
+ .action(clarify);
153
+ program
154
+ .command('tasks')
155
+ .description('Add tasks to current migration')
156
+ .argument('<tasks-json>', 'JSON array of tasks')
157
+ .option('-m, --migration <id>', 'Specific migration ID')
158
+ .action(addTasks);
159
+ program
160
+ .command('complete')
161
+ .description('Mark a task as completed')
162
+ .argument('<task-id>', 'Task ID (e.g., "T001-001")')
163
+ .action(completeTask);
164
+ // No arguments - show welcome
165
+ if (args.length === 0) {
166
+ showWelcome();
167
+ return;
168
+ }
169
+ await program.parseAsync(process.argv);
170
+ }
171
+ main().catch((err) => {
172
+ console.error(chalk.red('Error:'), err.message);
173
+ process.exit(1);
174
+ });
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface InitOptions {
2
+ git?: boolean;
3
+ gitignore?: boolean;
4
+ legacy?: boolean;
5
+ force?: boolean;
6
+ }
7
+ export declare function init(projectName?: string, options?: InitOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgCD,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoOzF"}
@@ -0,0 +1,236 @@
1
+ import { existsSync, mkdirSync, copyFileSync, readdirSync, writeFileSync, readFileSync } from 'node:fs';
2
+ import { join, dirname, basename } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import chalk from 'chalk';
5
+ import { GitOperations } from '../utils/git.js';
6
+ import { DEFAULT_CONFIG } from '../types/index.js';
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const TEMPLATES_DIR = join(__dirname, '../../templates');
9
+ const COMMANDS_DIR = join(__dirname, '../../commands');
10
+ const HOOKS_DIR = join(__dirname, '../../hooks');
11
+ const SCRIPTS_DIR = join(__dirname, '../../scripts');
12
+ function detectProject(cwd) {
13
+ const packageJsonPath = join(cwd, 'package.json');
14
+ if (existsSync(packageJsonPath)) {
15
+ try {
16
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
17
+ return { name: pkg.name || basename(cwd), found: true };
18
+ }
19
+ catch {
20
+ return { name: basename(cwd), found: true };
21
+ }
22
+ }
23
+ const projectIndicators = [
24
+ 'pyproject.toml', // Python
25
+ 'Cargo.toml', // Rust
26
+ 'go.mod', // Go
27
+ 'composer.json', // PHP
28
+ 'Gemfile', // Ruby
29
+ '.git', // Git repo
30
+ ];
31
+ for (const indicator of projectIndicators) {
32
+ if (existsSync(join(cwd, indicator))) {
33
+ return { name: basename(cwd), found: true };
34
+ }
35
+ }
36
+ return { name: '', found: false };
37
+ }
38
+ export async function init(projectName, options = {}) {
39
+ const cwd = process.cwd();
40
+ const git = new GitOperations(cwd);
41
+ if (!projectName) {
42
+ const detected = detectProject(cwd);
43
+ if (!detected.found) {
44
+ console.log(chalk.yellow('\n⚠️ No project detected in current directory.\n'));
45
+ console.log('SEDD works best inside a project. Try one of these:');
46
+ console.log(chalk.gray(' 1.'), 'Run', chalk.cyan('npm init -y'), 'to create a package.json');
47
+ console.log(chalk.gray(' 2.'), 'Run', chalk.cyan('sedd init my-project'), 'to specify a project name');
48
+ console.log(chalk.gray(' 3.'), 'Navigate to an existing project folder');
49
+ console.log();
50
+ const { default: inquirer } = await import('inquirer');
51
+ const { continueAnyway } = await inquirer.prompt([{
52
+ type: 'confirm',
53
+ name: 'continueAnyway',
54
+ message: 'Initialize SEDD anyway in current directory?',
55
+ default: false,
56
+ }]);
57
+ if (!continueAnyway) {
58
+ console.log(chalk.gray('\nAborted.\n'));
59
+ return;
60
+ }
61
+ projectName = basename(cwd);
62
+ }
63
+ else {
64
+ projectName = detected.name;
65
+ console.log(chalk.blue(`\n🔍 Detected project: ${chalk.bold(projectName)}\n`));
66
+ }
67
+ }
68
+ console.log(chalk.blue('🚀 Initializing SEDD...\n'));
69
+ const configPath = join(cwd, 'sedd.config.json');
70
+ const specsDir = options.legacy ? 'specs' : '.sedd';
71
+ const specsDirPath = join(cwd, specsDir);
72
+ const claudeDir = join(cwd, '.claude');
73
+ const commandsDir = join(claudeDir, 'commands');
74
+ const hooksDir = join(claudeDir, 'hooks');
75
+ if (!existsSync(configPath)) {
76
+ const config = { ...DEFAULT_CONFIG, specsDir };
77
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
78
+ console.log(chalk.green('✓'), 'Created sedd.config.json');
79
+ }
80
+ if (!existsSync(specsDirPath)) {
81
+ mkdirSync(specsDirPath, { recursive: true });
82
+ console.log(chalk.green('✓'), `Created ${specsDir}/`);
83
+ }
84
+ const seddInternalDir = join(cwd, '.sedd');
85
+ if (!existsSync(seddInternalDir)) {
86
+ mkdirSync(seddInternalDir, { recursive: true });
87
+ }
88
+ const seddTemplatesDir = join(seddInternalDir, 'templates');
89
+ if (!existsSync(seddTemplatesDir)) {
90
+ mkdirSync(seddTemplatesDir, { recursive: true });
91
+ console.log(chalk.green('✓'), 'Created .sedd/templates/');
92
+ }
93
+ if (!existsSync(claudeDir)) {
94
+ mkdirSync(claudeDir, { recursive: true });
95
+ console.log(chalk.green('✓'), 'Created .claude/');
96
+ }
97
+ if (!existsSync(commandsDir)) {
98
+ mkdirSync(commandsDir, { recursive: true });
99
+ console.log(chalk.green('✓'), 'Created .claude/commands/');
100
+ }
101
+ if (!existsSync(hooksDir)) {
102
+ mkdirSync(hooksDir, { recursive: true });
103
+ console.log(chalk.green('✓'), 'Created .claude/hooks/');
104
+ }
105
+ const shouldCopy = (dest) => !existsSync(dest) || options.force;
106
+ const actionVerb = options.force ? 'Updated' : 'Installed';
107
+ if (existsSync(TEMPLATES_DIR)) {
108
+ const templates = readdirSync(TEMPLATES_DIR);
109
+ for (const template of templates) {
110
+ const src = join(TEMPLATES_DIR, template);
111
+ const dest = join(seddTemplatesDir, template);
112
+ if (shouldCopy(dest)) {
113
+ copyFileSync(src, dest);
114
+ console.log(chalk.green('✓'), `${actionVerb} template: ${template}`);
115
+ }
116
+ }
117
+ }
118
+ if (existsSync(COMMANDS_DIR)) {
119
+ const commands = readdirSync(COMMANDS_DIR);
120
+ for (const command of commands) {
121
+ const src = join(COMMANDS_DIR, command);
122
+ const dest = join(commandsDir, command);
123
+ if (shouldCopy(dest)) {
124
+ copyFileSync(src, dest);
125
+ console.log(chalk.green('✓'), `${actionVerb} command: ${command}`);
126
+ }
127
+ }
128
+ }
129
+ if (existsSync(HOOKS_DIR)) {
130
+ const hooks = readdirSync(HOOKS_DIR);
131
+ for (const hook of hooks) {
132
+ const src = join(HOOKS_DIR, hook);
133
+ const dest = join(hooksDir, hook);
134
+ if (shouldCopy(dest)) {
135
+ copyFileSync(src, dest);
136
+ console.log(chalk.green('✓'), `${actionVerb} hook: ${hook}`);
137
+ }
138
+ }
139
+ }
140
+ const seddScriptsDir = join(seddInternalDir, 'scripts');
141
+ if (existsSync(SCRIPTS_DIR)) {
142
+ const isWindows = process.platform === 'win32';
143
+ let scriptRunner = 'auto';
144
+ if (existsSync(configPath)) {
145
+ try {
146
+ const existingConfig = JSON.parse(readFileSync(configPath, 'utf-8'));
147
+ if (existingConfig.scriptRunner && existingConfig.scriptRunner !== 'auto') {
148
+ scriptRunner = existingConfig.scriptRunner;
149
+ }
150
+ }
151
+ catch {
152
+ // Ignore parse errors
153
+ }
154
+ }
155
+ const primaryFolder = scriptRunner !== 'auto'
156
+ ? scriptRunner
157
+ : (isWindows ? 'powershell' : 'bash');
158
+ const platformName = scriptRunner !== 'auto'
159
+ ? `${scriptRunner} (configured in sedd.config.json)`
160
+ : (isWindows ? 'Windows (PowerShell)' : process.platform === 'darwin' ? 'macOS (Bash)' : 'Linux (Bash)');
161
+ console.log(chalk.gray(` Script runner: ${platformName}`));
162
+ const srcFolder = join(SCRIPTS_DIR, primaryFolder);
163
+ const destFolder = join(seddScriptsDir, primaryFolder);
164
+ if (existsSync(srcFolder)) {
165
+ if (!existsSync(destFolder)) {
166
+ mkdirSync(destFolder, { recursive: true });
167
+ }
168
+ const scripts = readdirSync(srcFolder);
169
+ for (const script of scripts) {
170
+ const src = join(srcFolder, script);
171
+ const dest = join(destFolder, script);
172
+ if (shouldCopy(dest)) {
173
+ copyFileSync(src, dest);
174
+ console.log(chalk.green('✓'), `${actionVerb} script: ${primaryFolder}/${script}`);
175
+ }
176
+ }
177
+ }
178
+ const secondaryFolder = isWindows ? 'bash' : 'powershell';
179
+ const secondarySrcFolder = join(SCRIPTS_DIR, secondaryFolder);
180
+ const secondaryDestFolder = join(seddScriptsDir, secondaryFolder);
181
+ if (existsSync(secondarySrcFolder)) {
182
+ if (!existsSync(secondaryDestFolder)) {
183
+ mkdirSync(secondaryDestFolder, { recursive: true });
184
+ }
185
+ const scripts = readdirSync(secondarySrcFolder);
186
+ for (const script of scripts) {
187
+ const src = join(secondarySrcFolder, script);
188
+ const dest = join(secondaryDestFolder, script);
189
+ if (shouldCopy(dest)) {
190
+ copyFileSync(src, dest);
191
+ }
192
+ }
193
+ }
194
+ }
195
+ // Update .gitignore with SEDD entries
196
+ const shouldUpdateGitignore = options.git !== false && options.gitignore !== false && git.hasGit();
197
+ if (shouldUpdateGitignore) {
198
+ const gitignorePath = join(cwd, '.gitignore');
199
+ const { appendFileSync } = await import('node:fs');
200
+ // Default entries to ignore
201
+ const seddIgnoreEntries = [
202
+ '# SEDD - Generated files',
203
+ '.sedd/cache/',
204
+ '.sedd/scripts/',
205
+ '.sedd/templates/',
206
+ '',
207
+ '# Claude Code hooks output',
208
+ '.claude/hooks/*.log',
209
+ '.claude/hooks/*.tmp',
210
+ '',
211
+ '# SEDD config (optional - uncomment to ignore)',
212
+ '# sedd.config.json',
213
+ ];
214
+ if (existsSync(gitignorePath)) {
215
+ const gitignore = readFileSync(gitignorePath, 'utf-8');
216
+ // Check if SEDD section already exists
217
+ if (!gitignore.includes('# SEDD')) {
218
+ appendFileSync(gitignorePath, '\n' + seddIgnoreEntries.join('\n') + '\n');
219
+ console.log(chalk.green('✓'), 'Updated .gitignore with SEDD entries');
220
+ }
221
+ }
222
+ else {
223
+ // Create .gitignore if it doesn't exist
224
+ writeFileSync(gitignorePath, seddIgnoreEntries.join('\n') + '\n');
225
+ console.log(chalk.green('✓'), 'Created .gitignore with SEDD entries');
226
+ }
227
+ }
228
+ console.log(chalk.blue('\n✨ SEDD initialized successfully!\n'));
229
+ console.log('Next steps:');
230
+ console.log(chalk.gray(' 1. Run'), chalk.cyan('/sedd.specify'), chalk.gray('to start a new feature'));
231
+ console.log(chalk.gray(' 2. Use'), chalk.cyan('/sedd.clarify'), chalk.gray('to refine requirements'));
232
+ console.log(chalk.gray(' 3. Use'), chalk.cyan('/sedd.tasks'), chalk.gray('to generate tasks'));
233
+ console.log(chalk.gray(' 4. Use'), chalk.cyan('/sedd.implement'), chalk.gray('to start implementation'));
234
+ console.log();
235
+ }
236
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACzD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AASrD,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG;QACxB,gBAAgB,EAAG,SAAS;QAC5B,YAAY,EAAO,OAAO;QAC1B,QAAQ,EAAW,KAAK;QACxB,eAAe,EAAI,MAAM;QACzB,SAAS,EAAU,OAAO;QAC1B,MAAM,EAAa,WAAW;KAC/B,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,WAAoB,EAAE,UAAuB,EAAE;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,0BAA0B,CAAC,CAAC;YAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,2BAA2B,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,8CAA8C;oBACvD,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC/C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,QAAQ,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAE3D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,cAAc,QAAQ,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,aAAa,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,UAAU,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAE/C,IAAI,YAAY,GAAmC,MAAM,CAAC;QAC1D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBACrE,IAAI,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;oBAC1E,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;gBAC7C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,YAAY,KAAK,MAAM;YAC3C,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,YAAY,KAAK,MAAM;YAC1C,CAAC,CAAC,GAAG,YAAY,mCAAmC;YACpD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAE3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAEvD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACtC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,YAAY,aAAa,IAAI,MAAM,EAAE,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAElE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrC,SAAS,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;IACnG,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnD,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG;YACxB,0BAA0B;YAC1B,cAAc;YACd,gBAAgB;YAChB,kBAAkB;YAClB,EAAE;YACF,4BAA4B;YAC5B,qBAAqB;YACrB,qBAAqB;YACrB,EAAE;YACF,gDAAgD;YAChD,oBAAoB;SACrB,CAAC;QAEF,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAEvD,uCAAuC;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,cAAc,CAAC,aAAa,EAAE,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface MigrateOptions {
2
+ all?: boolean;
3
+ dryRun?: boolean;
4
+ }
5
+ export declare function migrate(featureDir?: string, options?: MigrateOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAQA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD9F"}