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,198 @@
1
+ # /sedd.specify - Create Feature Specification
2
+
3
+ ## Purpose
4
+ Create a new feature with base specification (spec.md + interfaces.ts).
5
+
6
+ ## Trigger
7
+ User runs `/sedd.specify "feature description"` or `/sedd.specify` (interactive)
8
+
9
+ ## Pre-flight Checks
10
+
11
+ 1. **Load Configuration**
12
+ ```
13
+ Read sedd.config.json (or use defaults)
14
+ Default specsDir: .sedd
15
+ ```
16
+
17
+ 2. **Verify SEDD is initialized**
18
+ - Check if specsDir exists
19
+ - If not: suggest `npx sedd init`
20
+
21
+ 3. **Check for existing feature branch**
22
+ - If on feature branch (###-name): use existing feature
23
+ - If not: create new feature
24
+
25
+ ## Configuration
26
+
27
+ Default `sedd.config.json`:
28
+ ```json
29
+ {
30
+ "specsDir": ".sedd",
31
+ "branchPattern": "{{id}}-{{name}}",
32
+ "autoSplit": { "enabled": true, "maxLines": 400 },
33
+ "commit": { "askBeforeCommit": true }
34
+ }
35
+ ```
36
+
37
+ ## Workflow
38
+
39
+ ### Step 1: Parse Input
40
+
41
+ Extract feature description from user input or ask interactively.
42
+
43
+ ### Step 2: Architecture Analysis (MANDATORY)
44
+
45
+ Before creating spec, MUST search for related implementations:
46
+
47
+ ```
48
+ Find similar:
49
+ - Existing specs in {{specsDir}}/
50
+ - Related code patterns
51
+ - Reusable components
52
+ ```
53
+
54
+ Document findings in spec.md.
55
+
56
+ ### Step 3: Capture Expectation (NEW)
57
+
58
+ Ask user for their expectation:
59
+ ```
60
+ What do you expect as the final outcome of this feature?
61
+ (This will be used to verify alignment when implementation is complete)
62
+ ```
63
+
64
+ Save expectation in:
65
+ - `spec.md` under `## Expectation` section
66
+ - `_meta.json` in `expectation` field
67
+
68
+ ### Step 4: Create Feature Structure
69
+
70
+ ```
71
+ {{specsDir}}/{{FEATURE_ID}}-{{SHORT_NAME}}/
72
+ ├── _meta.json # Metadata (with expectation)
73
+ ├── CHANGELOG.md # Changelog
74
+ ├── spec.md # Base specification (with Expectation section)
75
+ ├── interfaces.ts # TypeScript interfaces
76
+ └── ui-mockups/ # If UI feature
77
+ └── component-name.md
78
+ ```
79
+
80
+ ### Step 5: Generate spec.md
81
+
82
+ Use template with:
83
+ - Feature name, ID, timestamp
84
+ - User stories based on description
85
+ - Mark requirements as NEEDS_CLARIFICATION where unclear
86
+ - Include Expectation section
87
+
88
+ ### Step 6: Generate interfaces.ts (MANDATORY)
89
+
90
+ Extract entities from description and create TypeScript interfaces:
91
+ - Identify nouns → Entities
92
+ - Identify verbs → Actions/Events
93
+ - Define DTOs for API
94
+
95
+ ### Step 7: UI Mockups (MANDATORY if UI feature)
96
+
97
+ If feature involves UI components, CREATE ASCII mockups:
98
+
99
+ ```
100
+ ┌────────────────────────────────────────┐
101
+ │ Header [X] │
102
+ ├────────────────────────────────────────┤
103
+ │ │
104
+ │ ┌──────────┐ ┌──────────┐ │
105
+ │ │ Card 1 │ │ Card 2 │ │
106
+ │ └──────────┘ └──────────┘ │
107
+ │ │
108
+ │ [Button Primary] [Button Secondary] │
109
+ │ │
110
+ └────────────────────────────────────────┘
111
+ ```
112
+
113
+ Save to `ui-mockups/{{component}}.md`
114
+
115
+ ### Step 8: Initialize _meta.json
116
+
117
+ ```json
118
+ {
119
+ "featureId": "024",
120
+ "featureName": "dark-mode-toggle",
121
+ "branch": "024-dark-mode-toggle",
122
+ "createdAt": "2026-01-11T10:00:00Z",
123
+ "specCreatedAt": "2026-01-11T10:00:00Z",
124
+ "currentMigration": null,
125
+ "migrations": {},
126
+ "splits": [],
127
+ "commits": [],
128
+ "expectation": "User can toggle dark mode in settings and have it persist across sessions"
129
+ }
130
+ ```
131
+
132
+ ### Step 9: Update Changelog
133
+
134
+ ```markdown
135
+ ## [2026-01-11] - Feature Created
136
+
137
+ - Created initial specification
138
+ - Defined {{N}} user stories
139
+ - Identified {{M}} key entities
140
+ - Generated TypeScript interfaces
141
+ ```
142
+
143
+ ### Step 10: Ask About Commit
144
+
145
+ ```
146
+ Do you want to commit?
147
+ Message: "feat(024): create spec for dark-mode-toggle"
148
+ ```
149
+
150
+ ### Step 11: Offer Next Step
151
+
152
+ ```
153
+ Specification created! Next step:
154
+ /sedd.clarify - Refine requirements and generate tasks
155
+
156
+ Would you like to proceed with clarification?
157
+ ```
158
+
159
+ ## Output
160
+
161
+ 1. **spec.md** - Complete specification
162
+ 2. **interfaces.ts** - TypeScript interfaces
163
+ 3. **ui-mockups/** - ASCII mockups (if UI)
164
+ 4. **_meta.json** - Feature metadata
165
+ 5. **CHANGELOG.md** - Initial entry
166
+
167
+ ## Rules
168
+
169
+ - NEVER create spec without architecture analysis
170
+ - ALWAYS create interfaces.ts
171
+ - ALWAYS create ASCII mockups for UI features
172
+ - Mark unclear items as NEEDS_CLARIFICATION
173
+ - Auto-split files > 400 lines
174
+ - No migrations created yet (happens in /sedd.clarify)
175
+
176
+ ## CLI Alternative
177
+
178
+ For automated workflows, use the SEDD CLI:
179
+
180
+ ```bash
181
+ # Create new feature structure
182
+ sedd specify 024 dark-mode-toggle -d "Add dark mode support"
183
+
184
+ # Create with expectation (recommended)
185
+ sedd specify 024 dark-mode-toggle -d "Add dark mode support" -e "User can toggle dark mode"
186
+
187
+ # Check structure
188
+ sedd check
189
+
190
+ # View status
191
+ sedd status
192
+ ```
193
+
194
+ **Options:**
195
+ - `-d, --description` - Feature description
196
+ - `-e, --expectation` - Expected outcome (used for alignment verification)
197
+
198
+ Scripts also available in `.sedd/scripts/powershell/sedd-specify.ps1` and `.sedd/scripts/bash/sedd-specify.sh`.
@@ -0,0 +1,176 @@
1
+ # /sedd.tasks - Generate Tasks
2
+
3
+ ## Purpose
4
+ Add tasks to the current migration. Usually called after /sedd.clarify to populate tasks.md.
5
+
6
+ ## Trigger
7
+ User runs `/sedd.tasks`
8
+
9
+ ## Pre-flight Checks
10
+
11
+ 1. **Read sedd.config.json** to get `specsDir` (default: `.sedd`, legacy: `specs`)
12
+ ```
13
+ Read sedd.config.json → specsDir = "specs" or ".sedd"
14
+ ```
15
+
16
+ 2. **Get current branch** from git
17
+ ```
18
+ git rev-parse --abbrev-ref HEAD → "023-agent-executor"
19
+ ```
20
+
21
+ 3. **Find feature directory**
22
+ ```
23
+ {specsDir}/{branch}/ → specs/023-agent-executor/
24
+ ```
25
+
26
+ 4. **Load _meta.json** to get current migration
27
+
28
+ 5. **Verify current migration exists** (run /sedd.clarify first)
29
+
30
+ ## CRITICAL RULE
31
+
32
+ ⚠️ **NOTHING HAPPENS WITHOUT A TASK**
33
+ - Every action must be a task in tasks.md
34
+ - NEVER skip task registration
35
+ - ALWAYS update task status before/after work
36
+
37
+ ## Workflow
38
+
39
+ ### Step 1: Load Context
40
+
41
+ Read from feature directory:
42
+ - `spec.md` (requirements)
43
+ - `interfaces.ts` (entities)
44
+ - `{currentMigration}/clarify.md` (clarifications)
45
+ - `{currentMigration}/decisions.md` (decisions)
46
+
47
+ ### Step 2: Extract Work Items
48
+
49
+ From spec.md:
50
+ - Each User Story → Task group
51
+ - Each Functional Requirement → Task
52
+ - Each Entity in interfaces.ts → CRUD tasks
53
+
54
+ From decisions.md:
55
+ - Each decision with implementation impact → Task
56
+
57
+ ### Step 3: Generate Task IDs
58
+
59
+ Tasks are prefixed with migration ID:
60
+
61
+ ```
62
+ T{migration}-{sequence}
63
+
64
+ T001-001 = Migration 001, Task 1
65
+ T001-002 = Migration 001, Task 2
66
+ T002-001 = Migration 002, Task 1
67
+ ```
68
+
69
+ ### Step 4: Create Task Categories
70
+
71
+ | Category | Description |
72
+ |----------|-------------|
73
+ | Foundation | Infrastructure, base setup |
74
+ | US{N} | User Story implementation |
75
+ | Integration | External services |
76
+ | Tests | Unit, integration tests |
77
+
78
+ ### Step 5: Write tasks.md
79
+
80
+ Append to `{currentMigration}/tasks.md`:
81
+
82
+ ```markdown
83
+ # Tasks - Migration 001
84
+
85
+ Migration: 001
86
+ Timestamp: 2026-01-11_10-30-45
87
+ Parent: (none)
88
+
89
+ ## Summary
90
+ Total: 8 | Completed: 0 | Pending: 8
91
+
92
+ ## Tasks
93
+
94
+ ### Foundation
95
+ - [ ] T001-001 [Foundation] Create database migration for new tables
96
+ - [ ] T001-002 [Foundation] Set up API route structure
97
+
98
+ ### US1: Dark Mode Toggle
99
+ - [ ] T001-003 [US1] Create ThemeContext with localStorage persistence
100
+ - [ ] T001-004 [US1] Build ThemeToggle component
101
+ - [ ] T001-005 [US1] Add toggle to settings page
102
+
103
+ ### US2: Theme Sync
104
+ - [ ] T001-006 [US2] Create user preference API endpoint
105
+ - [ ] T001-007 [US2] Implement cross-device sync
106
+
107
+ ### Tests
108
+ - [ ] T001-008 [Tests] Write unit tests for ThemeContext
109
+
110
+ ## Dependencies
111
+
112
+ T001-001, T001-002 → T001-003 → T001-004 → T001-005
113
+ → T001-006 → T001-007
114
+ T001-003 → T001-008
115
+ ```
116
+
117
+ ### Step 6: Update _meta.json
118
+
119
+ ```json
120
+ {
121
+ "migrations": {
122
+ "001": {
123
+ "tasksTotal": 8,
124
+ "tasksCompleted": 0,
125
+ "status": "in-progress"
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ### Step 7: Ask About Commit
132
+
133
+ ```
134
+ Tasks generated! 8 tasks in migration 001.
135
+
136
+ Do you want to commit?
137
+ Message: "docs(024): add tasks for migration 001"
138
+ ```
139
+
140
+ ## Task Format
141
+
142
+ ```
143
+ - [ ] T{MIG}-{SEQ} [{CATEGORY}] {Description} `{file_path}` (optional)
144
+ ```
145
+
146
+ Examples:
147
+ ```
148
+ - [ ] T001-001 [Foundation] Create ThemeContext `src/contexts/ThemeContext.tsx`
149
+ - [ ] T001-002 [US1] Add dark mode toggle to header
150
+ - [x] T001-003 [Tests] Write unit tests for ThemeContext
151
+ ```
152
+
153
+ ## Rules
154
+
155
+ - Tasks MUST have migration prefix (T001-XXX)
156
+ - Tasks MUST have category in brackets
157
+ - File paths are optional but recommended
158
+ - Update task count in _meta.json
159
+ - Tasks can span multiple migrations
160
+
161
+ ## CLI Alternative
162
+
163
+ For automated workflows, use the SEDD CLI:
164
+
165
+ ```bash
166
+ # Add tasks to current migration
167
+ sedd tasks '[{"story":"US1","description":"Create component"},{"story":"US2","description":"Add API"}]'
168
+
169
+ # Mark task complete
170
+ sedd complete T001-001
171
+
172
+ # View status
173
+ sedd status
174
+ ```
175
+
176
+ Scripts also available in `.sedd/scripts/powershell/sedd-tasks.ps1`.
@@ -0,0 +1,6 @@
1
+ interface CheckOptions {
2
+ fix?: boolean;
3
+ }
4
+ export declare function check(options?: CheckOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"AAOA,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAQD,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IrE"}
@@ -0,0 +1,134 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import chalk from 'chalk';
4
+ import { GitOperations } from '../utils/git.js';
5
+ import { MigrationManager } from '../core/migration-manager.js';
6
+ import { loadConfig } from '../types/index.js';
7
+ export async function check(options = {}) {
8
+ const cwd = process.cwd();
9
+ const git = new GitOperations(cwd);
10
+ const config = loadConfig(cwd);
11
+ console.log(chalk.blue('\n🔍 Checking SEDD structure...\n'));
12
+ const result = {
13
+ valid: true,
14
+ errors: [],
15
+ warnings: [],
16
+ };
17
+ // Check config file
18
+ const configPath = join(cwd, 'sedd.config.json');
19
+ if (existsSync(configPath)) {
20
+ console.log(chalk.green('✓'), 'sedd.config.json exists');
21
+ }
22
+ else {
23
+ result.warnings.push('sedd.config.json not found. Using defaults.');
24
+ console.log(chalk.yellow('⚠'), 'sedd.config.json not found (using defaults)');
25
+ }
26
+ // Check specs directory
27
+ const specsDir = join(cwd, config.specsDir);
28
+ if (!existsSync(specsDir)) {
29
+ result.warnings.push(`${config.specsDir}/ directory not found. No features created yet.`);
30
+ console.log(chalk.yellow('⚠'), `${config.specsDir}/ not found`);
31
+ }
32
+ else {
33
+ console.log(chalk.green('✓'), `${config.specsDir}/ directory exists`);
34
+ const features = readdirSync(specsDir, { withFileTypes: true })
35
+ .filter((d) => d.isDirectory())
36
+ .map((d) => d.name);
37
+ for (const feature of features) {
38
+ const featureDir = join(specsDir, feature);
39
+ const metaPath = join(featureDir, '_meta.json');
40
+ if (existsSync(metaPath)) {
41
+ console.log(chalk.green('✓'), `${feature}/ has valid _meta.json`);
42
+ const mm = new MigrationManager(featureDir);
43
+ const meta = mm.loadMeta();
44
+ if (meta) {
45
+ const migrations = Object.keys(meta.migrations).length;
46
+ const current = meta.currentMigration || 'none';
47
+ console.log(chalk.gray(' └'), `Migrations: ${migrations}, Current: ${current}`);
48
+ }
49
+ }
50
+ else {
51
+ const hasOldStructure = existsSync(join(featureDir, 'spec.md')) || existsSync(join(featureDir, 'tasks.md'));
52
+ if (hasOldStructure) {
53
+ result.warnings.push(`${feature}/ uses old structure. Run "sedd migrate ${feature}" to upgrade.`);
54
+ console.log(chalk.yellow('⚠'), `${feature}/ needs migration`);
55
+ }
56
+ else {
57
+ result.warnings.push(`${feature}/ has no _meta.json`);
58
+ console.log(chalk.yellow('⚠'), `${feature}/ missing _meta.json`);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ // Check .claude directory
64
+ const claudeDir = join(cwd, '.claude');
65
+ const commandsDir = join(claudeDir, 'commands');
66
+ const hooksDir = join(claudeDir, 'hooks');
67
+ if (!existsSync(commandsDir)) {
68
+ result.warnings.push('.claude/commands/ not found. Run "sedd init" to install commands.');
69
+ }
70
+ else {
71
+ const requiredCommands = [
72
+ 'sedd.specify.md',
73
+ 'sedd.clarify.md',
74
+ 'sedd.implement.md',
75
+ ];
76
+ for (const cmd of requiredCommands) {
77
+ const cmdPath = join(commandsDir, cmd);
78
+ if (existsSync(cmdPath)) {
79
+ console.log(chalk.green('✓'), `Command: ${cmd}`);
80
+ }
81
+ else {
82
+ result.warnings.push(`Missing command: ${cmd}`);
83
+ console.log(chalk.yellow('⚠'), `Missing: ${cmd}`);
84
+ }
85
+ }
86
+ }
87
+ if (!existsSync(hooksDir)) {
88
+ result.warnings.push('.claude/hooks/ not found. Run "sedd init" to install hooks.');
89
+ }
90
+ else {
91
+ const hookFiles = ['check-roadmap.js', 'check-roadmap.ps1'];
92
+ for (const hook of hookFiles) {
93
+ const hookPath = join(hooksDir, hook);
94
+ if (existsSync(hookPath)) {
95
+ console.log(chalk.green('✓'), `Hook: ${hook}`);
96
+ }
97
+ }
98
+ }
99
+ // Check git branch
100
+ if (git.hasGit()) {
101
+ const branch = git.getCurrentBranch();
102
+ if (git.isFeatureBranch(branch)) {
103
+ console.log(chalk.green('✓'), `On feature branch: ${branch}`);
104
+ }
105
+ else {
106
+ result.warnings.push(`Not on a feature branch (current: ${branch})`);
107
+ console.log(chalk.yellow('⚠'), `Not on feature branch: ${branch}`);
108
+ }
109
+ }
110
+ console.log();
111
+ if (result.errors.length > 0) {
112
+ console.log(chalk.red('Errors:'));
113
+ for (const error of result.errors) {
114
+ console.log(chalk.red(' ✗'), error);
115
+ }
116
+ }
117
+ if (result.warnings.length > 0) {
118
+ console.log(chalk.yellow('Warnings:'));
119
+ for (const warning of result.warnings) {
120
+ console.log(chalk.yellow(' ⚠'), warning);
121
+ }
122
+ }
123
+ if (result.valid && result.warnings.length === 0) {
124
+ console.log(chalk.green('✨ All checks passed!\n'));
125
+ }
126
+ else if (result.valid) {
127
+ console.log(chalk.yellow('\n⚠ Some warnings found, but structure is valid.\n'));
128
+ }
129
+ else {
130
+ console.log(chalk.red('\n✗ Structure is invalid. Please fix errors.\n'));
131
+ process.exit(1);
132
+ }
133
+ }
134
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function clarify(branch?: string): Promise<void>;
2
+ //# sourceMappingURL=clarify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/cli/clarify.ts"],"names":[],"mappings":"AAOA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiI5D"}
@@ -0,0 +1,116 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import chalk from 'chalk';
4
+ import { loadConfig, getNextMigrationId, getMigrationFolder } from '../types/index.js';
5
+ import { GitOperations } from '../utils/git.js';
6
+ import { getSessionTimestamp, formatTimestamp } from '../core/timestamps.js';
7
+ export async function clarify(branch) {
8
+ const cwd = process.cwd();
9
+ const config = loadConfig(cwd);
10
+ const git = new GitOperations(cwd);
11
+ const currentBranch = branch || git.getCurrentBranch();
12
+ if (!git.isFeatureBranch(currentBranch)) {
13
+ console.log(chalk.red(`Error: Not on a feature branch (current: ${currentBranch})`));
14
+ process.exit(1);
15
+ }
16
+ let featureDir = join(cwd, config.specsDir, currentBranch);
17
+ if (!existsSync(featureDir)) {
18
+ featureDir = join(cwd, 'specs', currentBranch);
19
+ }
20
+ if (!existsSync(featureDir)) {
21
+ console.log(chalk.red(`Error: Feature directory not found for branch: ${currentBranch}`));
22
+ process.exit(1);
23
+ }
24
+ const metaPath = join(featureDir, '_meta.json');
25
+ if (!existsSync(metaPath)) {
26
+ console.log(chalk.red('Error: _meta.json not found. Run /sedd.specify first.'));
27
+ process.exit(1);
28
+ }
29
+ const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
30
+ const migrationId = getNextMigrationId(meta);
31
+ const timestamp = getSessionTimestamp();
32
+ const migrationFolder = getMigrationFolder(migrationId, timestamp);
33
+ const migrationDir = join(featureDir, migrationFolder);
34
+ mkdirSync(migrationDir, { recursive: true });
35
+ console.log(chalk.green('✓'), `Created migration: ${migrationFolder}`);
36
+ const dateStr = formatTimestamp();
37
+ const previousMigration = meta.currentMigration;
38
+ const clarifyContent = `# Clarification Session - Migration ${migrationId}
39
+
40
+ **Timestamp:** ${dateStr}
41
+ **Branch:** ${currentBranch}
42
+
43
+ ## Expected Outcome
44
+
45
+ > What do you expect to achieve with this migration?
46
+
47
+ [Define your expected outcome here]
48
+
49
+ ---
50
+
51
+ ## Questions & Answers
52
+
53
+ <!-- Questions discussed during this clarification session -->
54
+
55
+ ### Q1: [Question]
56
+
57
+ **Answer:** [Answer]
58
+
59
+ `;
60
+ writeFileSync(join(migrationDir, 'clarify.md'), clarifyContent, 'utf-8');
61
+ console.log(chalk.green('✓'), 'Created: clarify.md');
62
+ const decisionsContent = `# Decisions - Migration ${migrationId}
63
+
64
+ **Timestamp:** ${dateStr}
65
+
66
+ ## Decisions Made
67
+
68
+ | # | Decision | Rationale |
69
+ |---|----------|-----------|
70
+ | 1 | [Decision] | [Why] |
71
+
72
+ `;
73
+ writeFileSync(join(migrationDir, 'decisions.md'), decisionsContent, 'utf-8');
74
+ console.log(chalk.green('✓'), 'Created: decisions.md');
75
+ const tasksContent = `# Tasks - Migration ${migrationId}
76
+
77
+ **Migration:** ${migrationId}
78
+ **Timestamp:** ${timestamp}
79
+ **Parent:** ${previousMigration || 'none'}
80
+
81
+ ## Tasks
82
+
83
+ <!-- Tasks will be added here by /sedd.tasks -->
84
+ <!-- Format: - [ ] T${migrationId}-001 [US1] Task description -->
85
+
86
+ `;
87
+ writeFileSync(join(migrationDir, 'tasks.md'), tasksContent, 'utf-8');
88
+ console.log(chalk.green('✓'), 'Created: tasks.md');
89
+ meta.currentMigration = migrationId;
90
+ meta.migrations[migrationId] = {
91
+ id: migrationId,
92
+ timestamp,
93
+ folder: migrationFolder,
94
+ parent: previousMigration || undefined,
95
+ status: 'pending',
96
+ tasksTotal: 0,
97
+ tasksCompleted: 0,
98
+ createdAt: new Date().toISOString(),
99
+ };
100
+ writeFileSync(metaPath, JSON.stringify(meta, null, 2), 'utf-8');
101
+ console.log(chalk.green('✓'), 'Updated: _meta.json');
102
+ console.log(chalk.cyan(`\n✨ Migration ${migrationId} created successfully!`));
103
+ console.log(chalk.cyan('Next steps:'));
104
+ console.log(' 1. Add questions/answers to clarify.md');
105
+ console.log(' 2. Document decisions in decisions.md');
106
+ console.log(' 3. Run /sedd.tasks to generate tasks');
107
+ console.log(chalk.gray('\n---SEDD-OUTPUT---'));
108
+ console.log(JSON.stringify({
109
+ success: true,
110
+ migrationId,
111
+ migrationFolder,
112
+ migrationDir,
113
+ files: ['clarify.md', 'decisions.md', 'tasks.md'],
114
+ }));
115
+ }
116
+ //# sourceMappingURL=clarify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarify.js","sourceRoot":"","sources":["../../src/cli/clarify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SEDD CLI - Spec & Expectation Driven Development
4
+ *
5
+ * Main entry point for the CLI.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}