sedd 0.1.9 → 0.1.10
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 +140 -2
- package/commands/sedd.board.md +67 -0
- package/commands/sedd.clarify.md +23 -0
- package/commands/sedd.specify.md +22 -0
- package/dist/cli/board.d.ts +9 -0
- package/dist/cli/board.d.ts.map +1 -0
- package/dist/cli/board.js +211 -0
- package/dist/cli/board.js.map +1 -0
- package/dist/cli/clarify.d.ts +5 -1
- package/dist/cli/clarify.d.ts.map +1 -1
- package/dist/cli/clarify.js +52 -8
- package/dist/cli/clarify.js.map +1 -1
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup-github.d.ts +5 -0
- package/dist/cli/setup-github.d.ts.map +1 -0
- package/dist/cli/setup-github.js +437 -0
- package/dist/cli/setup-github.js.map +1 -0
- package/dist/cli/specify.d.ts +1 -0
- package/dist/cli/specify.d.ts.map +1 -1
- package/dist/cli/specify.js +82 -9
- package/dist/cli/specify.js.map +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +31 -0
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/tasks.d.ts.map +1 -1
- package/dist/cli/tasks.js +102 -1
- package/dist/cli/tasks.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +21 -0
- package/dist/cli/update.js.map +1 -1
- package/dist/core/board-manager.d.ts +65 -0
- package/dist/core/board-manager.d.ts.map +1 -0
- package/dist/core/board-manager.js +326 -0
- package/dist/core/board-manager.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +117 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/github.d.ts +99 -0
- package/dist/utils/github.d.ts.map +1 -0
- package/dist/utils/github.js +488 -0
- package/dist/utils/github.js.map +1 -0
- package/package.json +61 -61
package/README.md
CHANGED
|
@@ -179,9 +179,22 @@ Criar migration de follow-up? [Y/n]
|
|
|
179
179
|
|---------|-----------|
|
|
180
180
|
| `sedd init` | Inicializar SEDD no projeto |
|
|
181
181
|
| `sedd specify <id> <name>` | Criar nova feature spec |
|
|
182
|
+
| `sedd specify <id> <name> --from-issue <url>` | Criar feature a partir de GitHub issue (baixa imagens) |
|
|
182
183
|
| `sedd clarify` | Criar migration com decisões |
|
|
184
|
+
| `sedd clarify --from-issue <url>` | Pre-popular migration com dados de GitHub issue (baixa imagens) |
|
|
183
185
|
| `sedd status` | Ver status atual |
|
|
186
|
+
| `sedd check` | Verificar estrutura e pre-requisitos |
|
|
187
|
+
| `sedd tasks <json>` | Adicionar tasks a migration atual |
|
|
188
|
+
| `sedd complete <task-id>` | Marcar task como concluida |
|
|
189
|
+
| `sedd estimate` | Estimar esforco da feature atual |
|
|
190
|
+
| `sedd validate` | Validar implementacao contra expectativa |
|
|
191
|
+
| `sedd board` | Kanban board no terminal |
|
|
184
192
|
| `sedd update` | Atualizar templates e migrar features existentes |
|
|
193
|
+
| `sedd migrate` | Migrar specs legados para nova estrutura |
|
|
194
|
+
| `sedd github setup` | Configurar integracao com GitHub Projects |
|
|
195
|
+
| `sedd github status` | Ver status da integracao GitHub |
|
|
196
|
+
| `sedd github sync` | Forcar sync bidirecional com GitHub |
|
|
197
|
+
| `sedd github refresh` | Re-ler colunas do projeto GitHub |
|
|
185
198
|
|
|
186
199
|
## Slash Commands (AI)
|
|
187
200
|
|
|
@@ -194,6 +207,9 @@ Criar migration de follow-up? [Y/n]
|
|
|
194
207
|
| `/sedd.dashboard` | Ver status atual de migrations e tasks |
|
|
195
208
|
| `/sedd.estimate` | Estimar prazo e complexidade antes de começar |
|
|
196
209
|
| `/sedd.validate` | Validar implementação contra expectativa |
|
|
210
|
+
| `/sedd.board` | Ver kanban board da feature |
|
|
211
|
+
| `/sedd.tasks` | Gerar tasks para migration |
|
|
212
|
+
| `/sedd.migrate` | Migrar specs legados |
|
|
197
213
|
|
|
198
214
|
---
|
|
199
215
|
|
|
@@ -318,12 +334,16 @@ Gaps: 1 encontrado
|
|
|
318
334
|
.sedd/001-user-auth/
|
|
319
335
|
├── spec.md # Especificação + Expectativa
|
|
320
336
|
├── _meta.json # Metadados + expectation estruturada
|
|
337
|
+
├── assets/ # Imagens baixadas de GitHub issues
|
|
338
|
+
│ ├── image-001.png
|
|
339
|
+
│ └── image-002.jpg
|
|
321
340
|
│
|
|
322
341
|
├── 001_timestamp/ # Migration 1
|
|
323
342
|
│ ├── clarify.md # Discussão + DEVE/NÃO DEVE
|
|
324
343
|
│ ├── decisions.md # Decisões
|
|
325
344
|
│ ├── tasks.md # Tasks T001-XXX
|
|
326
|
-
│
|
|
345
|
+
│ ├── acceptance.md # Critérios positivos e negativos
|
|
346
|
+
│ └── assets/ # Imagens de --from-issue no clarify
|
|
327
347
|
│
|
|
328
348
|
└── progress.md # Progresso + checkpoints + desvios
|
|
329
349
|
```
|
|
@@ -365,6 +385,114 @@ Pending tasks:
|
|
|
365
385
|
|
|
366
386
|
---
|
|
367
387
|
|
|
388
|
+
## GitHub Integration
|
|
389
|
+
|
|
390
|
+
SEDD integra com GitHub Projects V2 para sincronizar tasks como issues e gerenciar status via kanban board.
|
|
391
|
+
|
|
392
|
+
### Passo a passo
|
|
393
|
+
|
|
394
|
+
**1. Instalar GitHub CLI**
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
# Windows
|
|
398
|
+
winget install GitHub.cli
|
|
399
|
+
|
|
400
|
+
# Mac
|
|
401
|
+
brew install gh
|
|
402
|
+
|
|
403
|
+
# Linux
|
|
404
|
+
sudo apt install gh
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**2. Autenticar**
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
gh auth login
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Selecione as opcoes:
|
|
414
|
+
- `GitHub.com`
|
|
415
|
+
- `HTTPS`
|
|
416
|
+
- `Login with a web browser`
|
|
417
|
+
|
|
418
|
+
O terminal vai mostrar um codigo (ex: `XXXX-XXXX`). Copie o codigo no terminal e cole no navegador quando solicitado.
|
|
419
|
+
|
|
420
|
+
Verifique:
|
|
421
|
+
```bash
|
|
422
|
+
gh auth status
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
**3. Adicionar scope de projetos**
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
gh auth refresh -s project
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
O terminal vai mostrar outro codigo. Mesmo processo: copie no terminal e cole no navegador.
|
|
432
|
+
|
|
433
|
+
**4. Ter um GitHub Project**
|
|
434
|
+
|
|
435
|
+
Va em github.com > seu repo > Projects > New Project > Board.
|
|
436
|
+
Crie colunas como: Todo, In Progress, Done.
|
|
437
|
+
|
|
438
|
+
**5. Configurar SEDD**
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
sedd github setup
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
O setup interativo vai:
|
|
445
|
+
- Detectar seu repositorio
|
|
446
|
+
- Listar suas organizacoes e conta pessoal
|
|
447
|
+
- Permitir escolher o owner dos projetos
|
|
448
|
+
- Listar projetos disponiveis
|
|
449
|
+
- Mapear colunas do board
|
|
450
|
+
|
|
451
|
+
### Comandos GitHub
|
|
452
|
+
|
|
453
|
+
| Comando | Descricao |
|
|
454
|
+
|---------|-----------|
|
|
455
|
+
| `sedd github setup` | Configuracao interativa |
|
|
456
|
+
| `sedd github status` | Ver config e testar conexao |
|
|
457
|
+
| `sedd github sync` | Forcar sync bidirecional |
|
|
458
|
+
| `sedd github refresh` | Re-ler colunas se mudaram no GitHub |
|
|
459
|
+
| `sedd board` | Kanban board no terminal |
|
|
460
|
+
|
|
461
|
+
### Funcionalidades
|
|
462
|
+
|
|
463
|
+
- Use `--from-issue <url>` no `sedd specify` ou `sedd clarify` para criar features/migrations a partir de GitHub issues
|
|
464
|
+
- Imagens da issue sao baixadas automaticamente para `assets/` e os links reescritos para paths relativos, permitindo que a AI veja o conteudo visual
|
|
465
|
+
- Use `sedd board` para visualizar o kanban no terminal
|
|
466
|
+
- Multi-org: escolha entre suas organizacoes e conta pessoal durante o setup
|
|
467
|
+
|
|
468
|
+
### From Issue com Download de Imagens
|
|
469
|
+
|
|
470
|
+
Ao usar `--from-issue`, o SEDD automaticamente:
|
|
471
|
+
|
|
472
|
+
1. Busca titulo, body e labels da issue
|
|
473
|
+
2. Detecta imagens no body (`.png`, `.jpg`, `.gif`, `.webp`, `.svg` e `github.com/user-attachments`)
|
|
474
|
+
3. Baixa cada imagem para `assets/` dentro do diretorio da feature/migration
|
|
475
|
+
4. Reescreve os links markdown para paths relativos (`./assets/image-001.png`)
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
sedd specify 042 from-issue --from-issue https://github.com/org/repo/issues/42
|
|
479
|
+
|
|
480
|
+
✓ Issue #42: Add dark mode toggle
|
|
481
|
+
✓ Downloaded 3 images to assets/
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Resultado no `spec.md`:
|
|
485
|
+
```markdown
|
|
486
|
+

|
|
487
|
+

|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
Isso permite que a AI veja o conteudo visual das imagens via Read tool, em vez de apenas a URL como texto.
|
|
491
|
+
|
|
492
|
+
Se o download de alguma imagem falhar, o link original e mantido.
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
368
496
|
## Configuração
|
|
369
497
|
|
|
370
498
|
`sedd.config.json`:
|
|
@@ -373,7 +501,17 @@ Pending tasks:
|
|
|
373
501
|
{
|
|
374
502
|
"specsDir": ".sedd",
|
|
375
503
|
"branchPattern": "{{id}}-{{name}}",
|
|
376
|
-
"scriptRunner": "auto"
|
|
504
|
+
"scriptRunner": "auto",
|
|
505
|
+
"github": {
|
|
506
|
+
"engine": "both",
|
|
507
|
+
"owner": "user",
|
|
508
|
+
"repo": "my-project",
|
|
509
|
+
"project": {
|
|
510
|
+
"projectNumber": 3,
|
|
511
|
+
"projectId": "PVT_...",
|
|
512
|
+
"title": "My Kanban"
|
|
513
|
+
}
|
|
514
|
+
}
|
|
377
515
|
}
|
|
378
516
|
```
|
|
379
517
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# /sedd.board — View Kanban Board
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Display the kanban board for the current feature, showing task status across columns (Todo, In Progress, Done). Provides WIP limit warnings and suggests the next task to work on.
|
|
5
|
+
|
|
6
|
+
## When to Use
|
|
7
|
+
- To visualize the current state of tasks in a feature migration
|
|
8
|
+
- To check WIP limits and flow health
|
|
9
|
+
- To see suggestions for what to work on next
|
|
10
|
+
- To sync task status with GitHub Projects
|
|
11
|
+
|
|
12
|
+
## Pre-flight Checks
|
|
13
|
+
1. Must be in a SEDD project (`.sedd/` directory exists)
|
|
14
|
+
2. Must have at least one feature with tasks
|
|
15
|
+
3. For GitHub sync: `sedd.config.json` must have `github.engine` set to `github` or `both`
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
### View current feature board
|
|
20
|
+
```bash
|
|
21
|
+
sedd board
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### View all feature boards
|
|
25
|
+
```bash
|
|
26
|
+
sedd board --all
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### JSON output (for programmatic use)
|
|
30
|
+
```bash
|
|
31
|
+
sedd board --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Move a task to a different column
|
|
35
|
+
```bash
|
|
36
|
+
sedd board --move T001-001 "In Progress"
|
|
37
|
+
sedd board --move T001-002 "Done"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Sync board with GitHub
|
|
41
|
+
```bash
|
|
42
|
+
sedd board --sync
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Board Layout
|
|
46
|
+
```
|
|
47
|
+
Kanban: 001-my-feature (Migration 003)
|
|
48
|
+
|
|
49
|
+
Todo [2/5] In Progress [1/3] Done [4]
|
|
50
|
+
───────────── ───────────── ─────────
|
|
51
|
+
T003-004 Setup DB T003-002 Auth API T003-001 Init
|
|
52
|
+
T003-005 Tests T003-003 Schema
|
|
53
|
+
|
|
54
|
+
WIP: OK
|
|
55
|
+
Next: T003-004 "Setup DB" (Next in queue)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Workflow
|
|
59
|
+
1. Run `/sedd.board` to see current status
|
|
60
|
+
2. When starting a task: `sedd board --move T001-001 "In Progress"`
|
|
61
|
+
3. When completing a task: `sedd complete T001-001` (auto-moves to Done)
|
|
62
|
+
4. If using GitHub: `sedd board --sync` to push changes to the project board
|
|
63
|
+
|
|
64
|
+
## Notes
|
|
65
|
+
- Works in local mode (no GitHub) by reading tasks.md directly
|
|
66
|
+
- WIP limits are optional, configured via `sedd github setup`
|
|
67
|
+
- Suggestions use a Lean algorithm: prioritize finishing in-progress work, then pick the next task in queue
|
package/commands/sedd.clarify.md
CHANGED
|
@@ -635,6 +635,9 @@ For automated workflows, use the SEDD CLI:
|
|
|
635
635
|
# Create new migration (creates clarify.md, tasks.md, decisions.md)
|
|
636
636
|
sedd clarify
|
|
637
637
|
|
|
638
|
+
# Create migration pre-populated from a GitHub issue
|
|
639
|
+
sedd clarify --from-issue https://github.com/owner/repo/issues/42
|
|
640
|
+
|
|
638
641
|
# Add tasks to current migration
|
|
639
642
|
sedd tasks '[{"story":"US1","description":"Task description"}]'
|
|
640
643
|
|
|
@@ -645,4 +648,24 @@ sedd complete T001-001
|
|
|
645
648
|
sedd status
|
|
646
649
|
```
|
|
647
650
|
|
|
651
|
+
**Options:**
|
|
652
|
+
- `--from-issue <url>` - Pre-populate clarify.md with context from a GitHub issue
|
|
653
|
+
|
|
654
|
+
### --from-issue Flow
|
|
655
|
+
|
|
656
|
+
When `--from-issue` is provided:
|
|
657
|
+
|
|
658
|
+
1. Fetches issue title and body from GitHub
|
|
659
|
+
2. **Downloads images** from the issue body to `{migration}/assets/` and rewrites links to relative paths (e.g. `./assets/image-001.png`), so the AI can see the visual content via Read tool
|
|
660
|
+
3. Pre-populates `clarify.md` with:
|
|
661
|
+
- `## Context (from GitHub Issue #N)` containing the issue body (with local image paths)
|
|
662
|
+
- `## Expected Outcome` set to the issue title
|
|
663
|
+
4. Links migration to the issue in `.github-sync.json`
|
|
664
|
+
5. Comments on the issue: "SEDD migration {id} started from this issue"
|
|
665
|
+
|
|
666
|
+
Supported image formats: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, and any `github.com/user-attachments` URL.
|
|
667
|
+
If a download fails, the original URL link is kept.
|
|
668
|
+
|
|
669
|
+
**Requires:** `gh` CLI installed and authenticated. GitHub integration (`sedd github setup`) needed for board/comment features.
|
|
670
|
+
|
|
648
671
|
Scripts also available in `.sedd/scripts/powershell/` and `.sedd/scripts/bash/`.
|
package/commands/sedd.specify.md
CHANGED
|
@@ -193,6 +193,9 @@ sedd specify 024 dark-mode-toggle -d "Add dark mode support"
|
|
|
193
193
|
# Create with expectation (recommended)
|
|
194
194
|
sedd specify 024 dark-mode-toggle -d "Add dark mode support" -e "User can toggle dark mode"
|
|
195
195
|
|
|
196
|
+
# Create from GitHub issue (reads title, body, labels)
|
|
197
|
+
sedd specify 042 from-issue --from-issue https://github.com/owner/repo/issues/42
|
|
198
|
+
|
|
196
199
|
# Check structure
|
|
197
200
|
sedd check
|
|
198
201
|
|
|
@@ -203,5 +206,24 @@ sedd status
|
|
|
203
206
|
**Options:**
|
|
204
207
|
- `-d, --description` - Feature description
|
|
205
208
|
- `-e, --expectation` - Expected outcome (used for alignment verification)
|
|
209
|
+
- `--from-issue <url>` - Create feature from a GitHub issue URL
|
|
210
|
+
|
|
211
|
+
### --from-issue Flow
|
|
212
|
+
|
|
213
|
+
When `--from-issue` is provided:
|
|
214
|
+
|
|
215
|
+
1. Fetches issue title, body, and labels from GitHub
|
|
216
|
+
2. Uses issue title as feature name (if feature-name is `from-issue` or `_`)
|
|
217
|
+
3. Extracts acceptance criteria from issue body (if present)
|
|
218
|
+
4. Creates branch, spec.md, interfaces.ts, _meta.json
|
|
219
|
+
5. **Downloads images** from the issue body to `assets/` and rewrites links to relative paths (e.g. `./assets/image-001.png`), so the AI can see the visual content via Read tool
|
|
220
|
+
6. Saves `sourceIssue` in `_meta.json` (permanent link)
|
|
221
|
+
7. Moves issue to "In Progress" on the GitHub project board
|
|
222
|
+
8. Comments on the issue: "SEDD feature created from this issue"
|
|
223
|
+
|
|
224
|
+
Supported image formats: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, and any `github.com/user-attachments` URL.
|
|
225
|
+
If a download fails, the original URL link is kept.
|
|
226
|
+
|
|
227
|
+
**Requires:** `gh` CLI installed and authenticated. GitHub integration (`sedd github setup`) needed for board/comment features.
|
|
206
228
|
|
|
207
229
|
Scripts also available in `.sedd/scripts/powershell/sedd-specify.ps1` and `.sedd/scripts/bash/sedd-specify.sh`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"AAQA,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FrE"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import { loadConfig } from '../types/index.js';
|
|
6
|
+
import { GitOperations } from '../utils/git.js';
|
|
7
|
+
import { BoardManager } from '../core/board-manager.js';
|
|
8
|
+
export async function board(options = {}) {
|
|
9
|
+
const cwd = process.cwd();
|
|
10
|
+
const config = loadConfig(cwd);
|
|
11
|
+
const git = new GitOperations(cwd);
|
|
12
|
+
const bm = new BoardManager(config, cwd);
|
|
13
|
+
const specsDir = join(cwd, config.specsDir);
|
|
14
|
+
if (!existsSync(specsDir)) {
|
|
15
|
+
console.log(chalk.yellow('No specs directory found. Run "sedd init" first.'));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (options.move) {
|
|
19
|
+
const args = process.argv;
|
|
20
|
+
const moveIdx = args.indexOf('--move');
|
|
21
|
+
const taskId = args[moveIdx + 1];
|
|
22
|
+
const targetColumn = args[moveIdx + 2];
|
|
23
|
+
if (!taskId || !targetColumn) {
|
|
24
|
+
console.log(chalk.red('Usage: sedd board --move <task-id> "<column>"'));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const { featureDir, meta } = getFeatureContext(cwd, config, git);
|
|
28
|
+
if (!featureDir || !meta)
|
|
29
|
+
return;
|
|
30
|
+
const success = bm.moveTask(featureDir, meta, taskId, targetColumn);
|
|
31
|
+
if (!success) {
|
|
32
|
+
console.log(chalk.red(`Failed to move ${taskId}`));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log(chalk.green(`✓ Moved ${taskId} to "${targetColumn}"`));
|
|
36
|
+
if (bm.isGitHubEnabled()) {
|
|
37
|
+
const autoSync = config.github?.autoSync || 'ask';
|
|
38
|
+
if (autoSync === 'off')
|
|
39
|
+
return;
|
|
40
|
+
if (autoSync === 'ask') {
|
|
41
|
+
const { shouldSync } = await inquirer.prompt([{
|
|
42
|
+
type: 'confirm',
|
|
43
|
+
name: 'shouldSync',
|
|
44
|
+
message: 'Sync this change to GitHub?',
|
|
45
|
+
default: true,
|
|
46
|
+
}]);
|
|
47
|
+
if (!shouldSync)
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const result = bm.syncToGitHub(featureDir, meta);
|
|
51
|
+
if (result.moved > 0 || result.synced > 0) {
|
|
52
|
+
console.log(chalk.green(`✓ Synced to GitHub`));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (options.sync) {
|
|
58
|
+
const { featureDir, meta } = getFeatureContext(cwd, config, git);
|
|
59
|
+
if (!featureDir || !meta)
|
|
60
|
+
return;
|
|
61
|
+
if (!bm.isGitHubEnabled()) {
|
|
62
|
+
console.log(chalk.yellow('GitHub sync not enabled. Run "sedd github setup" first.'));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
console.log(chalk.cyan('Syncing board with GitHub...'));
|
|
66
|
+
const result = bm.syncToGitHub(featureDir, meta);
|
|
67
|
+
console.log(chalk.green(`✓ Synced: ${result.synced} | Created: ${result.created} | Moved: ${result.moved}`));
|
|
68
|
+
if (result.errors.length > 0) {
|
|
69
|
+
result.errors.forEach(e => console.log(chalk.yellow(` ⚠ ${e}`)));
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (options.all) {
|
|
74
|
+
showAllBoards(cwd, config, bm, options.json);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const { featureDir, meta } = getFeatureContext(cwd, config, git);
|
|
78
|
+
if (!featureDir || !meta)
|
|
79
|
+
return;
|
|
80
|
+
const boardStatus = bm.getBoard(featureDir, meta);
|
|
81
|
+
if (!boardStatus) {
|
|
82
|
+
console.log(chalk.yellow('No active migration with tasks. Run "sedd clarify" then "sedd tasks" first.'));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (options.json) {
|
|
86
|
+
console.log(JSON.stringify(boardStatus, null, 2));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
renderBoard(boardStatus, bm, config);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function getFeatureContext(cwd, config, git) {
|
|
93
|
+
const specsDir = join(cwd, config.specsDir);
|
|
94
|
+
let currentFeature = null;
|
|
95
|
+
if (git.hasGit()) {
|
|
96
|
+
const branch = git.getCurrentBranch();
|
|
97
|
+
if (git.isFeatureBranch(branch)) {
|
|
98
|
+
const featureDir = join(specsDir, branch);
|
|
99
|
+
if (existsSync(featureDir)) {
|
|
100
|
+
currentFeature = branch;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!currentFeature) {
|
|
105
|
+
const features = readdirSync(specsDir, { withFileTypes: true })
|
|
106
|
+
.filter(d => d.isDirectory() && /^\d{3}-/.test(d.name))
|
|
107
|
+
.map(d => d.name)
|
|
108
|
+
.sort()
|
|
109
|
+
.reverse();
|
|
110
|
+
if (features.length > 0) {
|
|
111
|
+
currentFeature = features[0];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!currentFeature) {
|
|
115
|
+
console.log(chalk.yellow('No features found.'));
|
|
116
|
+
return { featureDir: null, meta: null };
|
|
117
|
+
}
|
|
118
|
+
const featureDir = join(specsDir, currentFeature);
|
|
119
|
+
const metaPath = join(featureDir, '_meta.json');
|
|
120
|
+
if (!existsSync(metaPath)) {
|
|
121
|
+
console.log(chalk.yellow(`No _meta.json for feature ${currentFeature}`));
|
|
122
|
+
return { featureDir: null, meta: null };
|
|
123
|
+
}
|
|
124
|
+
const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
|
|
125
|
+
return { featureDir, meta };
|
|
126
|
+
}
|
|
127
|
+
function showAllBoards(cwd, config, bm, json) {
|
|
128
|
+
const specsDir = join(cwd, config.specsDir);
|
|
129
|
+
const features = readdirSync(specsDir, { withFileTypes: true })
|
|
130
|
+
.filter(d => d.isDirectory() && /^\d{3}-/.test(d.name))
|
|
131
|
+
.map(d => d.name)
|
|
132
|
+
.sort();
|
|
133
|
+
if (features.length === 0) {
|
|
134
|
+
console.log(chalk.yellow('No features found.'));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const allBoards = [];
|
|
138
|
+
for (const feature of features) {
|
|
139
|
+
const featureDir = join(specsDir, feature);
|
|
140
|
+
const metaPath = join(featureDir, '_meta.json');
|
|
141
|
+
if (!existsSync(metaPath))
|
|
142
|
+
continue;
|
|
143
|
+
const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
|
|
144
|
+
const boardStatus = bm.getBoard(featureDir, meta);
|
|
145
|
+
if (boardStatus) {
|
|
146
|
+
allBoards.push(boardStatus);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (json) {
|
|
150
|
+
console.log(JSON.stringify(allBoards, null, 2));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (allBoards.length === 0) {
|
|
154
|
+
console.log(chalk.yellow('No active boards found.'));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
for (const boardStatus of allBoards) {
|
|
158
|
+
renderBoard(boardStatus, bm, config);
|
|
159
|
+
console.log('');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function renderBoard(boardStatus, bm, config) {
|
|
163
|
+
console.log(chalk.cyan.bold(`\nKanban: ${boardStatus.featureName} (Migration ${boardStatus.migrationId})\n`));
|
|
164
|
+
const colWidth = 22;
|
|
165
|
+
const headers = boardStatus.columns.map(col => {
|
|
166
|
+
const countStr = col.wipLimit
|
|
167
|
+
? `[${col.tasks.length}/${col.wipLimit}]`
|
|
168
|
+
: `[${col.tasks.length}]`;
|
|
169
|
+
const header = `${col.name} ${countStr}`;
|
|
170
|
+
return header.padEnd(colWidth);
|
|
171
|
+
});
|
|
172
|
+
console.log(chalk.bold(headers.join(' ')));
|
|
173
|
+
const separators = boardStatus.columns.map(() => '─'.repeat(colWidth));
|
|
174
|
+
console.log(chalk.gray(separators.join(' ')));
|
|
175
|
+
const maxRows = Math.max(...boardStatus.columns.map(c => c.tasks.length));
|
|
176
|
+
for (let i = 0; i < maxRows; i++) {
|
|
177
|
+
const cells = boardStatus.columns.map(col => {
|
|
178
|
+
const task = col.tasks[i];
|
|
179
|
+
if (!task)
|
|
180
|
+
return ' '.repeat(colWidth);
|
|
181
|
+
const text = `${task.id} ${truncate(task.description, colWidth - task.id.length - 2)}`;
|
|
182
|
+
return text.padEnd(colWidth);
|
|
183
|
+
});
|
|
184
|
+
console.log(cells.join(' '));
|
|
185
|
+
}
|
|
186
|
+
if (maxRows === 0) {
|
|
187
|
+
console.log(chalk.gray(' (no tasks)'));
|
|
188
|
+
}
|
|
189
|
+
const violations = bm.checkWipLimits(boardStatus);
|
|
190
|
+
if (violations.length > 0) {
|
|
191
|
+
console.log('');
|
|
192
|
+
for (const v of violations) {
|
|
193
|
+
console.log(chalk.red(`⚠ WIP: "${v.column}" has ${v.current}/${v.limit} items`));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log(chalk.gray('\nWIP: OK'));
|
|
198
|
+
}
|
|
199
|
+
const suggestions = bm.suggestNext(boardStatus);
|
|
200
|
+
if (suggestions.length > 0) {
|
|
201
|
+
const top = suggestions[0];
|
|
202
|
+
console.log(chalk.cyan(`Next: ${top.taskId} "${truncate(top.description, 40)}" (${top.reason})`));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function truncate(str, maxLen) {
|
|
206
|
+
const clean = str.replace(/\[[\w-]+\]\s*/g, '');
|
|
207
|
+
if (clean.length <= maxLen)
|
|
208
|
+
return clean;
|
|
209
|
+
return clean.substring(0, maxLen - 3) + '...';
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/cli/board.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/clarify.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/cli/clarify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/cli/clarify.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgL1F"}
|