sedd 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -99
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update.d.ts +7 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +343 -0
- package/dist/cli/update.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,152 +20,173 @@
|
|
|
20
20
|
|
|
21
21
|
## Quick Start
|
|
22
22
|
|
|
23
|
-
### Instalação
|
|
24
|
-
|
|
25
23
|
```bash
|
|
24
|
+
# Instalar
|
|
26
25
|
npm install -g sedd
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Uso
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
# 1. Navegue para seu projeto
|
|
27
|
+
# Inicializar no projeto
|
|
33
28
|
cd meu-projeto
|
|
34
|
-
|
|
35
|
-
# 2. Inicialize SEDD
|
|
36
29
|
sedd init
|
|
37
30
|
|
|
38
|
-
#
|
|
31
|
+
# Criar feature spec
|
|
39
32
|
sedd specify 001 user-auth
|
|
40
33
|
|
|
41
|
-
#
|
|
42
|
-
# .sedd/001-user-auth/spec.md
|
|
43
|
-
|
|
44
|
-
# 5. Use seu LLM favorito para implementar
|
|
34
|
+
# Usar AI assistant
|
|
45
35
|
claude # ou cursor, copilot, etc.
|
|
46
36
|
|
|
47
|
-
#
|
|
48
|
-
sedd
|
|
37
|
+
# Comandos no AI
|
|
38
|
+
/sedd.clarify # Definir expectativa e gerar tasks
|
|
39
|
+
/sedd.implement # Executar tasks
|
|
49
40
|
```
|
|
50
41
|
|
|
51
|
-
### Comandos
|
|
52
|
-
|
|
53
|
-
| Comando | Descrição |
|
|
54
|
-
|---------|-----------|
|
|
55
|
-
| `sedd init` | Inicializar SEDD no projeto |
|
|
56
|
-
| `sedd specify <id> <name>` | Criar nova feature spec |
|
|
57
|
-
| `sedd clarify` | Criar migration com decisões |
|
|
58
|
-
| `sedd status` | Ver status atual |
|
|
59
|
-
| `sedd --help` | Ver todos os comandos |
|
|
60
|
-
|
|
61
42
|
---
|
|
62
43
|
|
|
63
44
|
## O que é SEDD?
|
|
64
45
|
|
|
65
|
-
SEDD
|
|
46
|
+
SEDD captura sua **expectativa** antes de qualquer código. A AI sempre sabe o que você espera.
|
|
66
47
|
|
|
67
48
|
```
|
|
68
|
-
|
|
69
|
-
```
|
|
49
|
+
🎯 EXPECTATIVA: "User can toggle dark mode and persist across sessions"
|
|
70
50
|
|
|
71
|
-
|
|
51
|
+
📊 Coverage: ~85% 🟢
|
|
72
52
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
| **Expectation** | Como você espera que funcione? | `clarify.md` |
|
|
79
|
-
| **Decision** | Por que foi decidido assim? | `decisions.md` |
|
|
53
|
+
Tasks:
|
|
54
|
+
- T001-001: Create ThemeContext
|
|
55
|
+
- T001-002: Add toggle component
|
|
56
|
+
- T001-003: Persist to localStorage
|
|
57
|
+
```
|
|
80
58
|
|
|
81
59
|
---
|
|
82
60
|
|
|
83
|
-
##
|
|
61
|
+
## Expectation-First Workflow
|
|
84
62
|
|
|
85
|
-
|
|
63
|
+
### 1. Captura Obrigatória
|
|
86
64
|
|
|
87
|
-
|
|
88
|
-
|----------|----------|----------|
|
|
89
|
-
| **Contexto perdido** | AI "esquece" decisões anteriores | Tudo documentado em migrations |
|
|
90
|
-
| **Falta de rastreabilidade** | "Por que fizemos assim?" | `decisions.md` com timestamps |
|
|
91
|
-
| **Specs vagas** | Retrabalho constante | Clarificação interativa |
|
|
92
|
-
| **Tasks desorganizadas** | Espalhadas ou esquecidas | `tasks.md` com IDs únicos |
|
|
93
|
-
| **Difícil retomar** | Onde parei? O que falta? | `progress.md` atualizado |
|
|
65
|
+
Ao usar `/sedd.specify` ou `/sedd.clarify`, a AI pergunta primeiro:
|
|
94
66
|
|
|
95
|
-
|
|
67
|
+
```
|
|
68
|
+
🎯 Qual é sua EXPECTATIVA para esta feature?
|
|
69
|
+
|
|
70
|
+
O que você espera ver funcionando quando estiver pronto?
|
|
71
|
+
```
|
|
96
72
|
|
|
97
|
-
|
|
73
|
+
### 2. Score de Alinhamento
|
|
98
74
|
|
|
99
|
-
|
|
75
|
+
Ao gerar tasks, SEDD calcula cobertura:
|
|
100
76
|
|
|
101
77
|
```
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
78
|
+
📊 Coverage: ~83% 🟢
|
|
79
|
+
|
|
80
|
+
Tokens encontrados:
|
|
81
|
+
✅ toggle (T001-003)
|
|
82
|
+
✅ dark mode (T001-003, T001-004)
|
|
83
|
+
✅ persist (T001-003)
|
|
84
|
+
❌ sessions - não encontrado
|
|
85
|
+
|
|
86
|
+
⚠️ Deseja adicionar tasks para cobrir os gaps? [Y/n]
|
|
108
87
|
```
|
|
109
88
|
|
|
110
|
-
###
|
|
89
|
+
### 3. Acceptance Criteria Automático
|
|
90
|
+
|
|
91
|
+
SEDD gera `acceptance.md` baseado na expectativa:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
## Checklist de Aceite
|
|
111
95
|
|
|
96
|
+
- [ ] AC-001: User can toggle dark mode
|
|
97
|
+
- [ ] AC-002: Toggle está em settings
|
|
98
|
+
- [ ] AC-003: Theme persists after refresh
|
|
99
|
+
- [ ] AC-004: Theme persists across sessions
|
|
112
100
|
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
│ ├── clarify.md # Discussão
|
|
119
|
-
│ ├── decisions.md # Decisões
|
|
120
|
-
│ └── tasks.md # Tasks T001-XXX
|
|
121
|
-
│
|
|
122
|
-
├── M002/ # Migration 2
|
|
123
|
-
│ ├── clarify.md
|
|
124
|
-
│ ├── decisions.md
|
|
125
|
-
│ └── tasks.md # Tasks T002-XXX
|
|
126
|
-
│
|
|
127
|
-
└── progress.md # Progresso geral
|
|
101
|
+
|
|
102
|
+
### 4. Checkpoints Durante Implementação
|
|
103
|
+
|
|
104
|
+
A cada 3 tasks, SEDD verifica alinhamento:
|
|
105
|
+
|
|
128
106
|
```
|
|
107
|
+
⏸️ Checkpoint - 3/10 tasks completas
|
|
129
108
|
|
|
130
|
-
|
|
109
|
+
Sua expectativa:
|
|
110
|
+
> User can toggle dark mode and persist
|
|
131
111
|
|
|
132
|
-
|
|
112
|
+
Isso ainda está alinhado? [Y/n/ajustar]
|
|
113
|
+
```
|
|
133
114
|
|
|
134
|
-
|
|
115
|
+
### 5. Validação Final
|
|
135
116
|
|
|
136
|
-
|
|
117
|
+
Ao completar migration, valida contra acceptance criteria:
|
|
137
118
|
|
|
138
|
-
```bash
|
|
139
|
-
sedd clarify → Migration M001 (5 tasks)
|
|
140
|
-
# implemente...
|
|
141
|
-
sedd clarify → Migration M002 (3 tasks mais)
|
|
142
|
-
# implemente...
|
|
143
|
-
sedd clarify → Migration M003 (ajustes)
|
|
144
119
|
```
|
|
120
|
+
🏁 Migration 001 Completa!
|
|
145
121
|
|
|
146
|
-
|
|
122
|
+
Acceptance Criteria:
|
|
123
|
+
- [x] AC-001: User can toggle ✓
|
|
124
|
+
- [x] AC-002: Toggle in settings ✓
|
|
125
|
+
- [ ] AC-003: Persist after refresh ✗
|
|
147
126
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- **Flexibilidade**: Implemente M001, depois clarifica mais
|
|
151
|
-
- **Retomada fácil**: Volte semanas depois e saiba onde parou
|
|
127
|
+
Criar migration de follow-up? [Y/n]
|
|
128
|
+
```
|
|
152
129
|
|
|
153
130
|
---
|
|
154
131
|
|
|
155
|
-
##
|
|
132
|
+
## Comandos CLI
|
|
133
|
+
|
|
134
|
+
| Comando | Descrição |
|
|
135
|
+
|---------|-----------|
|
|
136
|
+
| `sedd init` | Inicializar SEDD no projeto |
|
|
137
|
+
| `sedd specify <id> <name>` | Criar nova feature spec |
|
|
138
|
+
| `sedd clarify` | Criar migration com decisões |
|
|
139
|
+
| `sedd status` | Ver status atual |
|
|
140
|
+
| `sedd update` | Atualizar templates e migrar features existentes |
|
|
156
141
|
|
|
157
|
-
|
|
142
|
+
## Slash Commands (AI)
|
|
158
143
|
|
|
159
144
|
| Comando | Descrição |
|
|
160
145
|
|---------|-----------|
|
|
161
|
-
| `/sedd.specify` | Criar spec
|
|
162
|
-
| `/sedd.clarify` | Clarificar e gerar tasks |
|
|
163
|
-
| `/sedd.
|
|
164
|
-
| `/sedd.implement` | Executar tasks |
|
|
146
|
+
| `/sedd.specify` | Criar spec (pergunta expectativa primeiro) |
|
|
147
|
+
| `/sedd.clarify` | Clarificar e gerar tasks com score |
|
|
148
|
+
| `/sedd.implement` | Executar tasks com checkpoints |
|
|
165
149
|
| `/sedd.implement --all` | Executar tudo sem parar |
|
|
166
150
|
|
|
167
151
|
---
|
|
168
152
|
|
|
153
|
+
## Estrutura de Pastas
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
.sedd/001-user-auth/
|
|
157
|
+
├── spec.md # Especificação + Expectativa
|
|
158
|
+
├── _meta.json # Metadados + expectation field
|
|
159
|
+
│
|
|
160
|
+
├── 001_timestamp/ # Migration 1
|
|
161
|
+
│ ├── clarify.md # Discussão
|
|
162
|
+
│ ├── decisions.md # Decisões
|
|
163
|
+
│ ├── tasks.md # Tasks T001-XXX
|
|
164
|
+
│ └── acceptance.md # Critérios de aceite
|
|
165
|
+
│
|
|
166
|
+
└── progress.md # Progresso + checkpoints
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Hooks Inteligentes
|
|
172
|
+
|
|
173
|
+
O hook `check-roadmap.js` sempre mostra:
|
|
174
|
+
|
|
175
|
+
```xml
|
|
176
|
+
<sedd-context>
|
|
177
|
+
Branch: 024-feature | Migration: 001 | Progress: 3/10 🟢 ~85%
|
|
178
|
+
|
|
179
|
+
🎯 FEATURE: User can customize theme
|
|
180
|
+
📍 MIGRATION 001: Toggle dark mode with persistence
|
|
181
|
+
|
|
182
|
+
Pending tasks:
|
|
183
|
+
- T001-004: Add to settings page
|
|
184
|
+
- T001-005: API endpoint
|
|
185
|
+
</sedd-context>
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
169
190
|
## Configuração
|
|
170
191
|
|
|
171
192
|
`sedd.config.json`:
|
|
@@ -178,12 +199,6 @@ Use estes comandos no Claude Code, Cursor, etc:
|
|
|
178
199
|
}
|
|
179
200
|
```
|
|
180
201
|
|
|
181
|
-
| Opção | Default | Descrição |
|
|
182
|
-
|-------|---------|-----------|
|
|
183
|
-
| `specsDir` | `.sedd` | Pasta das specs |
|
|
184
|
-
| `branchPattern` | `{{id}}-{{name}}` | Formato do nome da branch |
|
|
185
|
-
| `scriptRunner` | `auto` | `auto`, `powershell`, ou `bash` |
|
|
186
|
-
|
|
187
202
|
---
|
|
188
203
|
|
|
189
204
|
## Licença
|
|
@@ -195,5 +210,5 @@ MIT
|
|
|
195
210
|
<p align="center">
|
|
196
211
|
<b>Especificações dizem O QUE construir.<br>
|
|
197
212
|
Expectativas dizem COMO você imagina que deve funcionar.<br>
|
|
198
|
-
|
|
213
|
+
SEDD garante que as duas estejam sempre alinhadas.</b>
|
|
199
214
|
</p>
|
package/dist/cli/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { migrate } from './migrate.js';
|
|
|
16
16
|
import { specify } from './specify.js';
|
|
17
17
|
import { clarify } from './clarify.js';
|
|
18
18
|
import { addTasks, completeTask } from './tasks.js';
|
|
19
|
+
import { update } from './update.js';
|
|
19
20
|
const SEDD_DIR = '.sedd';
|
|
20
21
|
function getFeatures(seddPath) {
|
|
21
22
|
if (!existsSync(seddPath))
|
|
@@ -101,6 +102,7 @@ function showWelcome() {
|
|
|
101
102
|
${chalk.cyan('sedd specify <id> <name>')} Create new feature spec
|
|
102
103
|
${chalk.cyan('sedd clarify')} Create clarify/tasks/decisions
|
|
103
104
|
${chalk.cyan('sedd status')} Show project status
|
|
105
|
+
${chalk.cyan('sedd update')} Update templates/commands/hooks
|
|
104
106
|
${chalk.cyan('sedd --help')} Show all commands
|
|
105
107
|
`);
|
|
106
108
|
}
|
|
@@ -161,6 +163,12 @@ async function main() {
|
|
|
161
163
|
.description('Mark a task as completed')
|
|
162
164
|
.argument('<task-id>', 'Task ID (e.g., "T001-001")')
|
|
163
165
|
.action(completeTask);
|
|
166
|
+
program
|
|
167
|
+
.command('update')
|
|
168
|
+
.description('Update SEDD templates, commands, hooks and scripts')
|
|
169
|
+
.option('-f, --force', 'Skip confirmation prompt')
|
|
170
|
+
.option('-b, --backup', 'Create backup before updating')
|
|
171
|
+
.action(update);
|
|
164
172
|
// No arguments - show welcome
|
|
165
173
|
if (args.length === 0) {
|
|
166
174
|
showWelcome();
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,WAAW;AACX,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAWA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAoSD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvE"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, copyFileSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join, dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const TEMPLATES_DIR = join(__dirname, '../../templates');
|
|
7
|
+
const COMMANDS_DIR = join(__dirname, '../../commands');
|
|
8
|
+
const HOOKS_DIR = join(__dirname, '../../hooks');
|
|
9
|
+
const SCRIPTS_DIR = join(__dirname, '../../scripts');
|
|
10
|
+
function getInstalledVersion() {
|
|
11
|
+
try {
|
|
12
|
+
const pkgPath = join(__dirname, '../../package.json');
|
|
13
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
14
|
+
return pkg.version || 'unknown';
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return 'unknown';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function scanFeatures(seddDir) {
|
|
21
|
+
const features = [];
|
|
22
|
+
if (!existsSync(seddDir))
|
|
23
|
+
return features;
|
|
24
|
+
const items = readdirSync(seddDir, { withFileTypes: true });
|
|
25
|
+
for (const item of items) {
|
|
26
|
+
if (!item.isDirectory() || !/^\d{3}-/.test(item.name))
|
|
27
|
+
continue;
|
|
28
|
+
if (item.name === 'templates' || item.name === 'scripts' || item.name === 'cache')
|
|
29
|
+
continue;
|
|
30
|
+
const featurePath = join(seddDir, item.name);
|
|
31
|
+
const metaPath = join(featurePath, '_meta.json');
|
|
32
|
+
const specPath = join(featurePath, 'spec.md');
|
|
33
|
+
let hasMetaExpectation = false;
|
|
34
|
+
if (existsSync(metaPath)) {
|
|
35
|
+
try {
|
|
36
|
+
const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
|
|
37
|
+
hasMetaExpectation = !!meta.expectation;
|
|
38
|
+
}
|
|
39
|
+
catch { }
|
|
40
|
+
}
|
|
41
|
+
let hasSpecExpectation = false;
|
|
42
|
+
if (existsSync(specPath)) {
|
|
43
|
+
try {
|
|
44
|
+
const spec = readFileSync(specPath, 'utf-8');
|
|
45
|
+
hasSpecExpectation = /^##\s*Expectat/im.test(spec);
|
|
46
|
+
}
|
|
47
|
+
catch { }
|
|
48
|
+
}
|
|
49
|
+
const migrations = [];
|
|
50
|
+
const contents = readdirSync(featurePath, { withFileTypes: true });
|
|
51
|
+
for (const content of contents) {
|
|
52
|
+
if (!content.isDirectory())
|
|
53
|
+
continue;
|
|
54
|
+
if (!/^\d{3}[_-]/.test(content.name))
|
|
55
|
+
continue;
|
|
56
|
+
const migPath = join(featurePath, content.name);
|
|
57
|
+
const hasAcceptance = existsSync(join(migPath, 'acceptance.md'));
|
|
58
|
+
let taskCount = 0;
|
|
59
|
+
const tasksPath = join(migPath, 'tasks.md');
|
|
60
|
+
if (existsSync(tasksPath)) {
|
|
61
|
+
try {
|
|
62
|
+
const tasks = readFileSync(tasksPath, 'utf-8');
|
|
63
|
+
const matches = tasks.match(/^\s*-\s*\[[\sx]\]\s*T\d{3}-\d{3}/gim);
|
|
64
|
+
taskCount = matches ? matches.length : 0;
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
67
|
+
}
|
|
68
|
+
const migId = content.name.split(/[_-]/)[0];
|
|
69
|
+
migrations.push({
|
|
70
|
+
id: migId,
|
|
71
|
+
folder: content.name,
|
|
72
|
+
path: migPath,
|
|
73
|
+
hasAcceptance,
|
|
74
|
+
taskCount,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
migrations.sort((a, b) => a.id.localeCompare(b.id));
|
|
78
|
+
features.push({
|
|
79
|
+
name: item.name,
|
|
80
|
+
path: featurePath,
|
|
81
|
+
hasMetaExpectation,
|
|
82
|
+
hasSpecExpectation,
|
|
83
|
+
migrations,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return features.sort((a, b) => a.name.localeCompare(b.name));
|
|
87
|
+
}
|
|
88
|
+
function updateSeddFiles(cwd) {
|
|
89
|
+
const seddDir = join(cwd, '.sedd');
|
|
90
|
+
const claudeDir = join(cwd, '.claude');
|
|
91
|
+
const seddTemplatesDir = join(seddDir, 'templates');
|
|
92
|
+
const seddScriptsDir = join(seddDir, 'scripts');
|
|
93
|
+
const commandsDestDir = join(claudeDir, 'commands');
|
|
94
|
+
const hooksDestDir = join(claudeDir, 'hooks');
|
|
95
|
+
if (!existsSync(seddTemplatesDir))
|
|
96
|
+
mkdirSync(seddTemplatesDir, { recursive: true });
|
|
97
|
+
if (!existsSync(commandsDestDir))
|
|
98
|
+
mkdirSync(commandsDestDir, { recursive: true });
|
|
99
|
+
if (!existsSync(hooksDestDir))
|
|
100
|
+
mkdirSync(hooksDestDir, { recursive: true });
|
|
101
|
+
if (existsSync(TEMPLATES_DIR)) {
|
|
102
|
+
for (const file of readdirSync(TEMPLATES_DIR)) {
|
|
103
|
+
copyFileSync(join(TEMPLATES_DIR, file), join(seddTemplatesDir, file));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (existsSync(COMMANDS_DIR)) {
|
|
107
|
+
for (const file of readdirSync(COMMANDS_DIR)) {
|
|
108
|
+
copyFileSync(join(COMMANDS_DIR, file), join(commandsDestDir, file));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (existsSync(HOOKS_DIR)) {
|
|
112
|
+
for (const file of readdirSync(HOOKS_DIR)) {
|
|
113
|
+
copyFileSync(join(HOOKS_DIR, file), join(hooksDestDir, file));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (existsSync(SCRIPTS_DIR)) {
|
|
117
|
+
const isWindows = process.platform === 'win32';
|
|
118
|
+
for (const folder of ['powershell', 'bash']) {
|
|
119
|
+
const srcFolder = join(SCRIPTS_DIR, folder);
|
|
120
|
+
const destFolder = join(seddScriptsDir, folder);
|
|
121
|
+
if (existsSync(srcFolder)) {
|
|
122
|
+
if (!existsSync(destFolder))
|
|
123
|
+
mkdirSync(destFolder, { recursive: true });
|
|
124
|
+
for (const file of readdirSync(srcFolder)) {
|
|
125
|
+
copyFileSync(join(srcFolder, file), join(destFolder, file));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function migrateFeature(feature) {
|
|
132
|
+
const { default: inquirer } = await import('inquirer');
|
|
133
|
+
console.log(chalk.blue(`\n📝 Migrando ${feature.name}...\n`));
|
|
134
|
+
let specSummary = '';
|
|
135
|
+
const specPath = join(feature.path, 'spec.md');
|
|
136
|
+
if (existsSync(specPath)) {
|
|
137
|
+
const spec = readFileSync(specPath, 'utf-8');
|
|
138
|
+
const lines = spec.split('\n').slice(0, 20);
|
|
139
|
+
const descLine = lines.find(l => l.startsWith('>') || (l.length > 20 && !l.startsWith('#')));
|
|
140
|
+
if (descLine) {
|
|
141
|
+
specSummary = descLine.replace(/^>\s*/, '').slice(0, 100);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (specSummary) {
|
|
145
|
+
console.log(chalk.gray('Resumo da feature:'));
|
|
146
|
+
console.log(chalk.white(`> ${specSummary}\n`));
|
|
147
|
+
}
|
|
148
|
+
const { expectation } = await inquirer.prompt([{
|
|
149
|
+
type: 'input',
|
|
150
|
+
name: 'expectation',
|
|
151
|
+
message: '🎯 Qual é a EXPECTATIVA para esta feature?',
|
|
152
|
+
validate: (input) => input.length > 5 || 'Expectativa muito curta',
|
|
153
|
+
}]);
|
|
154
|
+
const metaPath = join(feature.path, '_meta.json');
|
|
155
|
+
if (existsSync(metaPath)) {
|
|
156
|
+
try {
|
|
157
|
+
const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
|
|
158
|
+
meta.expectation = expectation;
|
|
159
|
+
writeFileSync(metaPath, JSON.stringify(meta, null, 2) + '\n');
|
|
160
|
+
console.log(chalk.green('✓'), 'Adicionado ao _meta.json');
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.log(chalk.red('✗'), 'Erro ao atualizar _meta.json');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (existsSync(specPath) && !feature.hasSpecExpectation) {
|
|
167
|
+
try {
|
|
168
|
+
const spec = readFileSync(specPath, 'utf-8');
|
|
169
|
+
const lines = spec.split('\n');
|
|
170
|
+
let insertIndex = 0;
|
|
171
|
+
for (let i = 0; i < lines.length; i++) {
|
|
172
|
+
if (lines[i].startsWith('# ')) {
|
|
173
|
+
insertIndex = i + 1;
|
|
174
|
+
while (insertIndex < lines.length && lines[insertIndex].trim() === '') {
|
|
175
|
+
insertIndex++;
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const expectationSection = `\n## Expectation\n\n> ${expectation}\n`;
|
|
181
|
+
lines.splice(insertIndex, 0, expectationSection);
|
|
182
|
+
writeFileSync(specPath, lines.join('\n'));
|
|
183
|
+
console.log(chalk.green('✓'), 'Adicionado ao spec.md');
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.log(chalk.red('✗'), 'Erro ao atualizar spec.md');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (feature.migrations.length > 0) {
|
|
190
|
+
const migrationsWithoutAC = feature.migrations.filter(m => !m.hasAcceptance && m.taskCount > 0);
|
|
191
|
+
if (migrationsWithoutAC.length > 0) {
|
|
192
|
+
const { createAC } = await inquirer.prompt([{
|
|
193
|
+
type: 'confirm',
|
|
194
|
+
name: 'createAC',
|
|
195
|
+
message: `Criar acceptance.md para ${migrationsWithoutAC.length} migration(s)?`,
|
|
196
|
+
default: true,
|
|
197
|
+
}]);
|
|
198
|
+
if (createAC) {
|
|
199
|
+
for (const mig of migrationsWithoutAC) {
|
|
200
|
+
await generateAcceptance(mig, expectation);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function generateAcceptance(migration, expectation) {
|
|
207
|
+
const tasksPath = join(migration.path, 'tasks.md');
|
|
208
|
+
if (!existsSync(tasksPath))
|
|
209
|
+
return;
|
|
210
|
+
const tasks = readFileSync(tasksPath, 'utf-8');
|
|
211
|
+
const taskMatches = tasks.match(/^\s*-\s*\[[\sx]\]\s*(T\d{3}-\d{3})\s*\[?[^\]]*\]?\s*(.+)/gim) || [];
|
|
212
|
+
const criteria = [];
|
|
213
|
+
let acNum = 1;
|
|
214
|
+
for (const match of taskMatches) {
|
|
215
|
+
const parts = match.match(/^\s*-\s*\[[\sx]\]\s*(T\d{3}-\d{3})\s*\[?[^\]]*\]?\s*(.+)/i);
|
|
216
|
+
if (parts && parts[2]) {
|
|
217
|
+
const taskDesc = parts[2].replace(/`[^`]+`/g, '').trim();
|
|
218
|
+
const acId = `AC-${String(acNum).padStart(3, '0')}`;
|
|
219
|
+
criteria.push(`- [ ] **${acId}:** ${taskDesc}`);
|
|
220
|
+
acNum++;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (criteria.length === 0)
|
|
224
|
+
return;
|
|
225
|
+
const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');
|
|
226
|
+
const acceptance = `# Acceptance Criteria - Migration ${migration.id}
|
|
227
|
+
|
|
228
|
+
> Generated from tasks
|
|
229
|
+
> Timestamp: ${timestamp}
|
|
230
|
+
|
|
231
|
+
## Expectativa
|
|
232
|
+
|
|
233
|
+
> ${expectation}
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Checklist de Aceite
|
|
238
|
+
|
|
239
|
+
${criteria.join('\n - Verificar: Testar manualmente\n\n')}
|
|
240
|
+
- Verificar: Testar manualmente
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Sign-off
|
|
245
|
+
|
|
246
|
+
| Critério | Status | Verificado Por | Data |
|
|
247
|
+
|----------|--------|----------------|------|
|
|
248
|
+
${criteria.map((_, i) => `| AC-${String(i + 1).padStart(3, '0')} | pending | - | - |`).join('\n')}
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Notas
|
|
253
|
+
|
|
254
|
+
_Gerado automaticamente por \`sedd update\`_
|
|
255
|
+
`;
|
|
256
|
+
writeFileSync(join(migration.path, 'acceptance.md'), acceptance);
|
|
257
|
+
console.log(chalk.green('✓'), `Criado ${migration.folder}/acceptance.md (${criteria.length} critérios)`);
|
|
258
|
+
}
|
|
259
|
+
export async function update(options = {}) {
|
|
260
|
+
const cwd = process.cwd();
|
|
261
|
+
const seddDir = join(cwd, '.sedd');
|
|
262
|
+
const claudeDir = join(cwd, '.claude');
|
|
263
|
+
if (!existsSync(seddDir) && !existsSync(claudeDir)) {
|
|
264
|
+
console.log(chalk.red('\n❌ SEDD não inicializado neste projeto.'));
|
|
265
|
+
console.log(chalk.gray(' Execute'), chalk.cyan('sedd init'), chalk.gray('primeiro.\n'));
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const version = getInstalledVersion();
|
|
269
|
+
console.log(chalk.blue(`\n🔄 SEDD Update - v${version}\n`));
|
|
270
|
+
console.log(chalk.gray('Escaneando projeto...\n'));
|
|
271
|
+
const features = scanFeatures(seddDir);
|
|
272
|
+
if (features.length === 0) {
|
|
273
|
+
console.log(chalk.yellow('Nenhuma feature encontrada.\n'));
|
|
274
|
+
console.log(chalk.gray('Atualizando templates/commands/hooks...\n'));
|
|
275
|
+
updateSeddFiles(cwd);
|
|
276
|
+
console.log(chalk.green('\n✨ Atualização concluída!\n'));
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
console.log(chalk.white(`📁 Features encontradas: ${features.length}`));
|
|
280
|
+
for (const f of features) {
|
|
281
|
+
console.log(chalk.gray(` ${f.name}`));
|
|
282
|
+
}
|
|
283
|
+
console.log('');
|
|
284
|
+
console.log(chalk.bold('📋 Análise de compatibilidade:\n'));
|
|
285
|
+
const maxName = Math.max(...features.map(f => f.name.length), 15);
|
|
286
|
+
console.log(chalk.gray(`┌${'─'.repeat(maxName + 2)}┬──────────┬────────────┬─────────────┐`));
|
|
287
|
+
console.log(chalk.gray(`│ ${'Feature'.padEnd(maxName)} │ meta.exp │ spec.exp │ migrations │`));
|
|
288
|
+
console.log(chalk.gray(`├${'─'.repeat(maxName + 2)}┼──────────┼────────────┼─────────────┤`));
|
|
289
|
+
let needsMigration = 0;
|
|
290
|
+
for (const f of features) {
|
|
291
|
+
const metaIcon = f.hasMetaExpectation ? chalk.green('✅') : chalk.red('❌');
|
|
292
|
+
const specIcon = f.hasSpecExpectation ? chalk.green('✅') : chalk.red('❌');
|
|
293
|
+
const migsWithAC = f.migrations.filter(m => m.hasAcceptance).length;
|
|
294
|
+
const migInfo = f.migrations.length > 0
|
|
295
|
+
? `${f.migrations.length} (${migsWithAC} c/ AC)`
|
|
296
|
+
: '0';
|
|
297
|
+
if (!f.hasMetaExpectation || !f.hasSpecExpectation)
|
|
298
|
+
needsMigration++;
|
|
299
|
+
console.log(chalk.gray(`│ `) + f.name.padEnd(maxName) + chalk.gray(` │ `) + metaIcon.padEnd(8) + chalk.gray(` │ `) + specIcon.padEnd(10) + chalk.gray(` │ `) + migInfo.padEnd(11) + chalk.gray(` │`));
|
|
300
|
+
}
|
|
301
|
+
console.log(chalk.gray(`└${'─'.repeat(maxName + 2)}┴──────────┴────────────┴─────────────┘`));
|
|
302
|
+
console.log(chalk.gray('\nLegenda:'));
|
|
303
|
+
console.log(chalk.gray(' meta.exp = _meta.json tem campo expectation'));
|
|
304
|
+
console.log(chalk.gray(' spec.exp = spec.md tem seção ## Expectation'));
|
|
305
|
+
console.log(chalk.gray(' AC = acceptance.md\n'));
|
|
306
|
+
if (needsMigration > 0) {
|
|
307
|
+
console.log(chalk.yellow(`⚠️ ${needsMigration} feature(s) sem expectation definida\n`));
|
|
308
|
+
}
|
|
309
|
+
const { default: inquirer } = await import('inquirer');
|
|
310
|
+
const choices = [
|
|
311
|
+
{ name: '1. Atualizar só templates/commands (novas features terão expectation)', value: 'templates' },
|
|
312
|
+
];
|
|
313
|
+
if (needsMigration > 0) {
|
|
314
|
+
choices.push({ name: '2. Migrar features existentes (perguntar expectation para cada)', value: 'migrate' });
|
|
315
|
+
}
|
|
316
|
+
choices.push({ name: needsMigration > 0 ? '3. Cancelar' : '2. Cancelar', value: 'cancel' });
|
|
317
|
+
const { action } = await inquirer.prompt([{
|
|
318
|
+
type: 'list',
|
|
319
|
+
name: 'action',
|
|
320
|
+
message: 'O que deseja fazer?',
|
|
321
|
+
choices,
|
|
322
|
+
}]);
|
|
323
|
+
if (action === 'cancel') {
|
|
324
|
+
console.log(chalk.gray('\nAbortado.\n'));
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
if (action === 'migrate') {
|
|
328
|
+
const featuresToMigrate = features.filter(f => !f.hasMetaExpectation || !f.hasSpecExpectation);
|
|
329
|
+
for (const feature of featuresToMigrate) {
|
|
330
|
+
await migrateFeature(feature);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
console.log(chalk.blue('\n📦 Atualizando templates/commands/hooks/scripts...\n'));
|
|
334
|
+
updateSeddFiles(cwd);
|
|
335
|
+
const templatesCount = existsSync(TEMPLATES_DIR) ? readdirSync(TEMPLATES_DIR).length : 0;
|
|
336
|
+
const commandsCount = existsSync(COMMANDS_DIR) ? readdirSync(COMMANDS_DIR).length : 0;
|
|
337
|
+
const hooksCount = existsSync(HOOKS_DIR) ? readdirSync(HOOKS_DIR).length : 0;
|
|
338
|
+
console.log(chalk.green('✓'), `Templates: ${templatesCount} arquivos`);
|
|
339
|
+
console.log(chalk.green('✓'), `Commands: ${commandsCount} arquivos`);
|
|
340
|
+
console.log(chalk.green('✓'), `Hooks: ${hooksCount} arquivos`);
|
|
341
|
+
console.log(chalk.blue(`\n✨ SEDD atualizado para v${version}!\n`));
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED