@maestro-ai/mcp-server 5.4.4 → 5.5.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 (134) hide show
  1. package/README.md +68 -83
  2. package/dist/content/rules/RULES.md +14 -0
  3. package/dist/core/metrics/MetricsCollector.d.ts +28 -12
  4. package/dist/core/metrics/MetricsCollector.d.ts.map +1 -1
  5. package/dist/core/metrics/MetricsCollector.js +151 -12
  6. package/dist/core/metrics/MetricsCollector.js.map +1 -1
  7. package/dist/core/validation/ValidationPipeline.d.ts +24 -2
  8. package/dist/core/validation/ValidationPipeline.d.ts.map +1 -1
  9. package/dist/core/validation/ValidationPipeline.js +46 -2
  10. package/dist/core/validation/ValidationPipeline.js.map +1 -1
  11. package/dist/core/validation/layers/DeliverableValidator.d.ts +13 -0
  12. package/dist/core/validation/layers/DeliverableValidator.d.ts.map +1 -0
  13. package/dist/core/validation/layers/DeliverableValidator.js +276 -0
  14. package/dist/core/validation/layers/DeliverableValidator.js.map +1 -0
  15. package/dist/gates/contextual-recommender.d.ts.map +1 -1
  16. package/dist/gates/contextual-recommender.js +260 -1
  17. package/dist/gates/contextual-recommender.js.map +1 -1
  18. package/dist/gates/estrutura.d.ts +10 -2
  19. package/dist/gates/estrutura.d.ts.map +1 -1
  20. package/dist/gates/estrutura.js +27 -4
  21. package/dist/gates/estrutura.js.map +1 -1
  22. package/dist/gates/validator.d.ts +5 -6
  23. package/dist/gates/validator.d.ts.map +1 -1
  24. package/dist/gates/validator.js +18 -7
  25. package/dist/gates/validator.js.map +1 -1
  26. package/dist/handlers/prototype-phase-handler.d.ts.map +1 -1
  27. package/dist/handlers/prototype-phase-handler.js +517 -54
  28. package/dist/handlers/prototype-phase-handler.js.map +1 -1
  29. package/dist/middleware/adr-generation.middleware.d.ts +5 -0
  30. package/dist/middleware/adr-generation.middleware.d.ts.map +1 -0
  31. package/dist/middleware/adr-generation.middleware.js +214 -0
  32. package/dist/middleware/adr-generation.middleware.js.map +1 -0
  33. package/dist/middleware/flow-engine.middleware.d.ts +5 -3
  34. package/dist/middleware/flow-engine.middleware.d.ts.map +1 -1
  35. package/dist/middleware/flow-engine.middleware.js +18 -10
  36. package/dist/middleware/flow-engine.middleware.js.map +1 -1
  37. package/dist/middleware/index.d.ts +18 -11
  38. package/dist/middleware/index.d.ts.map +1 -1
  39. package/dist/middleware/index.js +24 -11
  40. package/dist/middleware/index.js.map +1 -1
  41. package/dist/middleware/orchestration-pipeline.middleware.d.ts +42 -0
  42. package/dist/middleware/orchestration-pipeline.middleware.d.ts.map +1 -0
  43. package/dist/middleware/orchestration-pipeline.middleware.js +57 -0
  44. package/dist/middleware/orchestration-pipeline.middleware.js.map +1 -0
  45. package/dist/middleware/skill-injection.middleware.js +1 -1
  46. package/dist/middleware/skill-injection.middleware.js.map +1 -1
  47. package/dist/middleware/validation.middleware.d.ts +11 -0
  48. package/dist/middleware/validation.middleware.d.ts.map +1 -1
  49. package/dist/middleware/validation.middleware.js +54 -0
  50. package/dist/middleware/validation.middleware.js.map +1 -1
  51. package/dist/router.d.ts.map +1 -1
  52. package/dist/router.js +20 -14
  53. package/dist/router.js.map +1 -1
  54. package/dist/services/flow-engine.d.ts +1 -0
  55. package/dist/services/flow-engine.d.ts.map +1 -1
  56. package/dist/services/flow-engine.js +14 -2
  57. package/dist/services/flow-engine.js.map +1 -1
  58. package/dist/services/watcher.service.d.ts +45 -0
  59. package/dist/services/watcher.service.d.ts.map +1 -0
  60. package/dist/services/watcher.service.js +106 -0
  61. package/dist/services/watcher.service.js.map +1 -0
  62. package/dist/state/context.d.ts +15 -4
  63. package/dist/state/context.d.ts.map +1 -1
  64. package/dist/state/context.js +36 -9
  65. package/dist/state/context.js.map +1 -1
  66. package/dist/state/storage.d.ts.map +1 -1
  67. package/dist/state/storage.js +6 -0
  68. package/dist/state/storage.js.map +1 -1
  69. package/dist/tests/aprovar-gate.test.d.ts +2 -0
  70. package/dist/tests/aprovar-gate.test.d.ts.map +1 -0
  71. package/dist/tests/aprovar-gate.test.js +113 -0
  72. package/dist/tests/aprovar-gate.test.js.map +1 -0
  73. package/dist/tests/deliverable-validator.test.d.ts +12 -0
  74. package/dist/tests/deliverable-validator.test.d.ts.map +1 -0
  75. package/dist/tests/deliverable-validator.test.js +214 -0
  76. package/dist/tests/deliverable-validator.test.js.map +1 -0
  77. package/dist/tests/flow-engine.test.d.ts +2 -0
  78. package/dist/tests/flow-engine.test.d.ts.map +1 -0
  79. package/dist/tests/flow-engine.test.js +85 -0
  80. package/dist/tests/flow-engine.test.js.map +1 -0
  81. package/dist/tests/gate-orientation.test.d.ts +2 -0
  82. package/dist/tests/gate-orientation.test.d.ts.map +1 -0
  83. package/dist/tests/gate-orientation.test.js +59 -0
  84. package/dist/tests/gate-orientation.test.js.map +1 -0
  85. package/dist/tests/middleware.test.js +30 -4
  86. package/dist/tests/middleware.test.js.map +1 -1
  87. package/dist/tests/watcher.service.test.d.ts +2 -0
  88. package/dist/tests/watcher.service.test.d.ts.map +1 -0
  89. package/dist/tests/watcher.service.test.js +119 -0
  90. package/dist/tests/watcher.service.test.js.map +1 -0
  91. package/dist/tools/aprovar-gate.d.ts.map +1 -1
  92. package/dist/tools/aprovar-gate.js +4 -0
  93. package/dist/tools/aprovar-gate.js.map +1 -1
  94. package/dist/tools/contexto.d.ts.map +1 -1
  95. package/dist/tools/contexto.js +41 -0
  96. package/dist/tools/contexto.js.map +1 -1
  97. package/dist/tools/proximo.d.ts.map +1 -1
  98. package/dist/tools/proximo.js +224 -54
  99. package/dist/tools/proximo.js.map +1 -1
  100. package/dist/tools/status.d.ts.map +1 -1
  101. package/dist/tools/status.js +27 -0
  102. package/dist/tools/status.js.map +1 -1
  103. package/dist/tools/validar-gate.d.ts +8 -1
  104. package/dist/tools/validar-gate.d.ts.map +1 -1
  105. package/dist/tools/validar-gate.js +147 -99
  106. package/dist/tools/validar-gate.js.map +1 -1
  107. package/dist/types/config.d.ts +2 -0
  108. package/dist/types/config.d.ts.map +1 -1
  109. package/dist/types/config.js +2 -0
  110. package/dist/types/config.js.map +1 -1
  111. package/dist/types/index.d.ts +6 -0
  112. package/dist/types/index.d.ts.map +1 -1
  113. package/dist/types/index.js.map +1 -1
  114. package/dist/utils/gate-orientation.d.ts +11 -0
  115. package/dist/utils/gate-orientation.d.ts.map +1 -0
  116. package/dist/utils/gate-orientation.js +64 -0
  117. package/dist/utils/gate-orientation.js.map +1 -0
  118. package/dist/utils/ide-paths.d.ts +11 -0
  119. package/dist/utils/ide-paths.d.ts.map +1 -1
  120. package/dist/utils/ide-paths.js +27 -0
  121. package/dist/utils/ide-paths.js.map +1 -1
  122. package/dist/utils/instructions.d.ts +6 -1
  123. package/dist/utils/instructions.d.ts.map +1 -1
  124. package/dist/utils/instructions.js +32 -1
  125. package/dist/utils/instructions.js.map +1 -1
  126. package/package.json +2 -1
  127. package/dist/gates/compatibility-wrapper.d.ts +0 -139
  128. package/dist/gates/compatibility-wrapper.d.ts.map +0 -1
  129. package/dist/gates/compatibility-wrapper.js +0 -362
  130. package/dist/gates/compatibility-wrapper.js.map +0 -1
  131. package/dist/gates/unified-validator.d.ts +0 -67
  132. package/dist/gates/unified-validator.d.ts.map +0 -1
  133. package/dist/gates/unified-validator.js +0 -234
  134. package/dist/gates/unified-validator.js.map +0 -1
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # MCP Maestro v2.1
1
+ # MCP Maestro v5.5.0
2
2
 
3
- Servidor MCP (Model Context Protocol) para o Maestro - Guia de Desenvolvimento Assistido por IA.
3
+ Servidor MCP (Model Context Protocol) para o Maestro - Orquestração Autônoma Avançada e Zero-API.
4
4
 
5
- **Pacote**: `@maestro-ai/mcp-server@2.1.0`
5
+ **Pacote**: `@maestro-ai/mcp-server@5.5.0`
6
6
 
7
7
  ## 🚀 Uso via npx (Recomendado)
8
8
 
9
- O Maestro agora é distribuído como pacote npm e executado localmente via `npx`, garantindo acesso direto aos arquivos do seu projeto.
9
+ O Maestro agora é distribuído como pacote npm e executado localmente via `npx`, garantindo acesso direto aos arquivos do seu projeto e orquestração autônoma da IA da IDE.
10
10
 
11
11
  ### Instalação e Configuração
12
12
 
@@ -43,38 +43,28 @@ O Maestro agora é distribuído como pacote npm e executado localmente via `npx`
43
43
 
44
44
 
45
45
 
46
- ### Fluxo de Uso (inclui modos e discovery)
46
+ ### Mecânica 5 Tools (V3+)
47
+
48
+ O Maestro consolidou suas dezenas de tools antigas em **5 Entry Points Inteligentes** que auto-gerenciam o estado do projeto.
47
49
 
48
50
  ```bash
49
- # 1. Iniciar novo projeto (analisa e sugere classificação)
50
- iniciar_projeto(
51
- nome: "Meu App",
52
- descricao: "Sistema de gestão de tarefas",
53
- diretorio: "D:\\Projetos\\meu-app",
54
- ide: "windsurf",
55
- modo: "balanced" # economy | balanced | quality
56
- )
51
+ # 1. Maestro (Entry Point)
52
+ maestro({ diretorio: "D:\\Projetos\\meu-app" }) # Autodetecta status atual
53
+ maestro({ acao: "criar_projeto", respostas: {...} }) # Cria novo projeto
54
+ maestro({ acao: "setup_inicial", respostas: { ide: "windsurf" } }) # Define ambiente
57
55
 
58
- # 2. Confirmar criação (injeta conteúdo automaticamente)
59
- confirmar_projeto(
60
- nome: "Meu App",
61
- diretorio: "D:\\Projetos\\meu-app",
62
- tipo_artefato: "product",
63
- nivel_complexidade: "medio",
64
- ide: "windsurf",
65
- modo: "balanced"
66
- )
67
-
68
- # 3. Coletar discovery (reduz prompts)
69
- discovery(
70
- estado_json: "<conteudo do estado.json>",
71
- diretorio: "D:\\Projetos\\meu-app"
72
- )
56
+ # 2. Executar (Ações Mutações)
57
+ executar({ acao: "avancar", entregavel: "..." }) # Avança fluxo com validação
58
+ executar({ acao: "salvar", conteudo: "...", tipo: "rascunho" }) # Gravação intermediária
73
59
 
74
- # 4. Trabalhar nas fases
75
- proximo() # Avança para próxima fase
76
- status() # Ver status completo
77
- salvar() # Salva entregáveis
60
+ # 3. Validar (Checagens)
61
+ validar({ diretorio: "D:\\Projetos\\meu-app" }) # Roda pipeline de validação da fase
62
+
63
+ # 4. Analisar (Insights e Refatoração)
64
+ analisar({ diretorio: "D:\\Projetos\\meu-app", tipo: "completo" }) # Relatório de Technical/AI Debt
65
+
66
+ # 5. Contextualizar
67
+ contexto({ diretorio: "D:\\Projetos\\meu-app" }) # Sumarização de estado e regras base
78
68
  ```
79
69
 
80
70
  ### Injeção Automática de Conteúdo
@@ -93,48 +83,42 @@ meu-app/
93
83
  │ └── resumo.json # Memória do projeto
94
84
  ```
95
85
 
96
- ### Comandos Principais
86
+ ### Comandos Principais e Fluxo Inteligente (Automação Zero-API)
97
87
 
98
- | Comando | Descrição |
88
+ Com a arquitetura Fat MCP v5.5, a IA agora conta com um **Pipeline de Validação Watcher** (`chokidar`) totalmente engrenado.
89
+
90
+ | Tool | Descrição |
99
91
  |---------|-----------|
100
- | `iniciar_projeto` | Analisa e sugere classificação |
101
- | `confirmar_projeto` | Cria projeto e injeta conteúdo |
102
- | `carregar_projeto` | Carrega projeto existente |
103
- | `proximo` | Salva entregável e avança fase |
104
- | `status` | Retorna status completo |
105
- | `discovery` | Coleta perguntas iniciais agrupadas e salva em `estado.discovery` |
106
- | `injetar_conteudo` | Reinjeta conteúdo (use `force:true`) |
92
+ | `maestro` | Portal de engajamento do projeto. Auto-resolve entre inicializar e obter status. |
93
+ | `executar` | Comando central para mutações, lidar com TDD invertido, auto-correção forçada e transições lógicas. |
94
+ | `validar` | Disparo manual ou auto-acionado pelo Watcher ao salvar um MD (score baseado em regex e semântica). |
95
+ | `analisar` | Camada de verificação de Code Smells e Architectural Debt. |
96
+ | `contexto` | Permite à IA compreender regras atuais com segurança sem divagar. |
107
97
 
108
98
  ---
109
99
 
110
- ## Destaques do Changelog v2.1
111
- - Modos de operação: economy / balanced / quality com otimizações automáticas
112
- - Discovery agrupado para reduzir 40-75% dos prompts iniciais
113
- - Multi-IDE consolidado via `ide-paths.ts` (Windsurf, Cursor, Antigravity)
114
- - Correções de dependências e atualização do SDK MCP para 1.25.3
100
+ ## Destaques do Changelog v5.5 (V6)
101
+ - **Watcher Progressivo (Sprint 5):** Qualquer save num entregável via IDE agora dispara a pontuação via background automaticamente sem queima de tokens.
102
+ - **TDD Invertido (Sprint 4):** A IA passa a ler um `.checklist-esperante.md` obrigatório ANTES de escrever o documento.
103
+ - **Hydration Multi-IDE (Sprint 3):** Prompt adaptável que manda links reais locais em favorísticos MCP (`@.cursor`, etc).
104
+ - **Zero Pause Points & Auto-Flow (Sprint 6):** Pipeline de transição avança automaticamente as etapas (derivação ou técnicas), parando unicamente em bloqueios (Score < 70) ou requerimentos explícitos humanos.
115
105
 
116
106
  ---
117
107
 
118
- ## Tools Disponíveis
108
+ ## Estrutura do Projeto Gerada
119
109
 
120
- | Tool | Descrição |
121
- |------|-----------|
122
- | `iniciar_projeto` | Inicia um novo projeto com classificação |
123
- | `confirmar_projeto` | Confirma criação e injeta conteúdo |
124
- | `carregar_projeto` | Carrega projeto existente |
125
- | `proximo` | Salva entregável e avança para próxima fase |
126
- | `status` | Retorna status atual do projeto |
127
- | `validar_gate` | Valida checklist antes de avançar fase |
128
- | `contexto` | Obtém contexto completo do projeto |
129
- | `salvar` | Salva artefatos do projeto |
130
- | `injetar_conteudo` | Injeta conteúdo base no projeto |
131
- | `nova_feature` | Fluxo para adicionar nova feature |
132
- | `corrigir_bug` | Fluxo para correção de bugs |
133
- | `refatorar` | Fluxo para refatoração de código |
134
- | `classificar` | Classifica entregáveis |
135
- | `avaliar_entregavel` | Avalia qualidade com score |
136
-
137
- ---
110
+ Quando instanciado, um esqueleto como este rege a progressão:
111
+ ```
112
+ meu-app/
113
+ ├── .maestro/
114
+ │ ├── validation/ # Reports das validações locais
115
+ │ ├── estado.json # Maquina de estados da IA e fluxo
116
+ │ └── resumo.json # Memoria Cache Limitada
117
+ ├── .agent/
118
+ │ └── skills/ # Especialistas Injetados
119
+ ├── docs/ # Entregáveis de cada sprint/fase
120
+ │ ├── fase-xx/ # Entregáveis iterativos
121
+ ```
138
122
 
139
123
  ## 📚 Resources Disponíveis
140
124
 
@@ -213,31 +197,32 @@ npm publish --access public
213
197
  ## 📋 Exemplo de Fluxo Completo (Modo npx)
214
198
 
215
199
  ```bash
216
- # 1. Iniciar projeto
217
- iniciar_projeto(
218
- nome: "meu-app",
219
- descricao: "Sistema de gestão de tarefas",
200
+ # 1. Iniciar projeto (detectará que o estado não existe)
201
+ maestro({
220
202
  diretorio: "D:\\Projetos\\meu-app"
221
- )
203
+ })
222
204
 
223
- # 2. Confirmar criação (injeta conteúdo automaticamente)
224
- confirmar_projeto(
225
- nome: "meu-app",
205
+ # 2. Configurar (injeta conteúdo e inicializa estrutura)
206
+ maestro({
207
+ acao: "setup_inicial",
226
208
  diretorio: "D:\\Projetos\\meu-app",
227
- tipo_artefato: "product",
228
- nivel_complexidade: "medio"
229
- )
230
-
231
- # 3. Verificar status
232
- status(
209
+ respostas: {
210
+ ide: "windsurf",
211
+ modo: "balanced"
212
+ }
213
+ })
214
+
215
+ # 3. Validar estado do projeto a qualquer momento
216
+ contexto({
233
217
  diretorio: "D:\\Projetos\\meu-app"
234
- )
218
+ })
235
219
 
236
- # 4. Avançar fase
237
- proximo(
220
+ # 4. Avançar iterações/fases do desenvolvimento
221
+ executar({
222
+ acao: "avancar",
238
223
  entregavel: "# PRD - Produto\n\n## Problema\n...",
239
224
  diretorio: "D:\\Projetos\\meu-app"
240
- )
225
+ })
241
226
  ```
242
227
 
243
228
  ---
@@ -309,6 +309,20 @@ Disponíveis sob demanda, fora do fluxo de fases:
309
309
  3. Que TEMPLATE usar?
310
310
  4. Como isso DIFERE de output genérico?
311
311
 
312
+ ### 🔄 Regra de Transição de Fase (Active Rules Auto-Hydration)
313
+
314
+ **Sempre que o servidor MCP confirmar avanço de fase:**
315
+ 1. Leia **imediatamente** o arquivo SKILL.md do especialista indicado no retorno da tool
316
+ 2. O path será fornecido no formato nativo da sua IDE:
317
+ - **Antigravity/Gemini:** `@[.agent/skills/{specialist}/SKILL.md]`
318
+ - **Cursor:** `@.cursor/skills/{specialist}/SKILL.md`
319
+ - **Windsurf:** `#.windsurf/skills/{specialist}/SKILL.md`
320
+ 3. Assuma a persona descrita no SKILL.md **sem aguardar confirmação do usuário**
321
+ 4. Confirme dizendo: "Sou [nome do especialista], meu foco é [entregável desta fase]."
322
+
323
+ > ❌ NUNCA aguarde o usuário pedir para carregar o especialista
324
+ > ✅ SEMPRE assuma a persona imediatamente ao receber a transição de fase
325
+
312
326
  ---
313
327
 
314
328
  ## 🏗️ FLUXO DO PROJETO
@@ -1,16 +1,17 @@
1
- /**
2
- * Metrics Collector (Fase 2 - Melhoria #14)
3
- * Coleta e analisa métricas de qualidade
4
- */
5
- export declare class MetricsCollector {
6
- collect(projectPath: string): Promise<QualityMetrics>;
7
- getTrends(days?: number): Promise<MetricTrend[]>;
8
- }
1
+ import type { EstadoProjeto } from '../../types/index.js';
9
2
  export interface QualityMetrics {
10
- codeQuality: number;
11
- testCoverage: number;
12
- complexity: number;
13
- maintainability: number;
3
+ entregaveisGerados: number;
4
+ totalFases: number;
5
+ progressoPercent: number;
6
+ docsEncontrados: number;
7
+ adrsEncontrados: number;
8
+ templatesUsados: number;
9
+ arquivosCodigo: number;
10
+ arquivosTeste: number;
11
+ ratioTestesCodigo: number;
12
+ scoreDocumentacao: number;
13
+ scoreEntregaveis: number;
14
+ scoreGeral: number;
14
15
  timestamp: string;
15
16
  }
16
17
  export interface MetricTrend {
@@ -18,4 +19,19 @@ export interface MetricTrend {
18
19
  metric: string;
19
20
  value: number;
20
21
  }
22
+ export declare class MetricsCollector {
23
+ /**
24
+ * v6.3 S4.2: Coleta métricas reais do projeto
25
+ */
26
+ collect(projectPath: string, estado?: EstadoProjeto): Promise<QualityMetrics>;
27
+ /**
28
+ * Retorna tendência dos últimos N dias
29
+ */
30
+ getTrends(projectPath: string, days?: number): Promise<MetricTrend[]>;
31
+ private analisarDocs;
32
+ private contarADRs;
33
+ private analisarCodigo;
34
+ private walkDir;
35
+ private persistir;
36
+ }
21
37
  //# sourceMappingURL=MetricsCollector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsCollector.d.ts","sourceRoot":"","sources":["../../../src/core/metrics/MetricsCollector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,gBAAgB;IACnB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYrD,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAG7D;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"MetricsCollector.d.ts","sourceRoot":"","sources":["../../../src/core/metrics/MetricsCollector.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAE3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IAGxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,gBAAgB;IAEzB;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAiDnF;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAqBjE,YAAY;YAgBZ,UAAU;YAUV,cAAc;YA8Bd,OAAO;YAiBP,SAAS;CAc1B"}
@@ -1,20 +1,159 @@
1
1
  /**
2
- * Metrics Collector (Fase 2 - Melhoria #14)
3
- * Coleta e analisa métricas de qualidade
2
+ * Metrics Collector v6.3 S4.2
3
+ * Coleta métricas REAIS baseadas nos arquivos do projeto
4
4
  */
5
+ import { promises as fs } from 'fs';
6
+ import path from 'path';
7
+ const METRICS_FILE = '.maestro/metrics.json';
8
+ const IGNORED_DIRS = new Set(['node_modules', '.git', 'dist', 'build', '.maestro']);
5
9
  export class MetricsCollector {
6
- async collect(projectPath) {
7
- console.log('[MetricsCollector] Coletando métricas:', projectPath);
8
- return {
9
- codeQuality: 85,
10
- testCoverage: 75,
11
- complexity: 8,
12
- maintainability: 80,
13
- timestamp: new Date().toISOString()
10
+ /**
11
+ * v6.3 S4.2: Coleta métricas reais do projeto
12
+ */
13
+ async collect(projectPath, estado) {
14
+ const [docsInfo, codeInfo, adrsCount] = await Promise.all([
15
+ this.analisarDocs(projectPath),
16
+ this.analisarCodigo(projectPath),
17
+ this.contarADRs(projectPath),
18
+ ]);
19
+ const entregaveisGerados = estado ? Object.keys(estado.entregaveis).length : 0;
20
+ const totalFases = estado?.total_fases ?? 1;
21
+ const progressoPercent = Math.round((entregaveisGerados / totalFases) * 100);
22
+ // Score de documentação: docs + ADRs
23
+ const scoreDocumentacao = Math.min(100, Math.round((docsInfo.count / Math.max(1, totalFases)) * 60 +
24
+ Math.min(40, adrsCount * 8)));
25
+ // Score de entregáveis: % de fases com entregável
26
+ const scoreEntregaveis = progressoPercent;
27
+ // Score geral: média ponderada
28
+ const scoreGeral = Math.round(scoreDocumentacao * 0.4 +
29
+ scoreEntregaveis * 0.4 +
30
+ Math.min(20, codeInfo.ratioTestesCodigo * 20) * 0.2);
31
+ const metrics = {
32
+ entregaveisGerados,
33
+ totalFases,
34
+ progressoPercent,
35
+ docsEncontrados: docsInfo.count,
36
+ adrsEncontrados: adrsCount,
37
+ templatesUsados: docsInfo.templates,
38
+ arquivosCodigo: codeInfo.codigo,
39
+ arquivosTeste: codeInfo.testes,
40
+ ratioTestesCodigo: codeInfo.ratioTestesCodigo,
41
+ scoreDocumentacao,
42
+ scoreEntregaveis,
43
+ scoreGeral,
44
+ timestamp: new Date().toISOString(),
14
45
  };
46
+ // Persistir no histórico (best-effort)
47
+ await this.persistir(projectPath, metrics).catch(() => { });
48
+ return metrics;
15
49
  }
16
- async getTrends(days = 30) {
17
- return [];
50
+ /**
51
+ * Retorna tendência dos últimos N dias
52
+ */
53
+ async getTrends(projectPath, days = 30) {
54
+ try {
55
+ const filePath = path.join(projectPath, METRICS_FILE);
56
+ const raw = await fs.readFile(filePath, 'utf-8');
57
+ const history = JSON.parse(raw);
58
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
59
+ return history
60
+ .filter(m => new Date(m.timestamp).getTime() > cutoff)
61
+ .flatMap(m => [
62
+ { date: m.timestamp, metric: 'scoreGeral', value: m.scoreGeral },
63
+ { date: m.timestamp, metric: 'progressoPercent', value: m.progressoPercent },
64
+ { date: m.timestamp, metric: 'scoreDocumentacao', value: m.scoreDocumentacao },
65
+ ]);
66
+ }
67
+ catch {
68
+ return [];
69
+ }
70
+ }
71
+ // ─── Helpers privados ────────────────────────────────────────────────────
72
+ async analisarDocs(projectPath) {
73
+ const docsDir = path.join(projectPath, 'docs');
74
+ let count = 0;
75
+ let templates = 0;
76
+ try {
77
+ const entries = await fs.readdir(docsDir, { withFileTypes: true, recursive: true });
78
+ for (const e of entries) {
79
+ if (e.isFile?.() && (e.name.endsWith('.md') || e.name.endsWith('.mdx'))) {
80
+ count++;
81
+ if (e.name.toLowerCase().includes('template'))
82
+ templates++;
83
+ }
84
+ }
85
+ }
86
+ catch { /* docs/ pode não existir */ }
87
+ return { count, templates };
88
+ }
89
+ async contarADRs(projectPath) {
90
+ const adrsDir = path.join(projectPath, '.maestro', 'adrs');
91
+ try {
92
+ const files = await fs.readdir(adrsDir);
93
+ return files.filter(f => f.endsWith('.md') && f !== 'INDEX.md').length;
94
+ }
95
+ catch {
96
+ return 0;
97
+ }
98
+ }
99
+ async analisarCodigo(projectPath) {
100
+ let codigo = 0;
101
+ let testes = 0;
102
+ const CODE_EXTS = new Set(['.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.java', '.cs']);
103
+ const TEST_PATTERNS = ['.test.', '.spec.', '_test.', '__tests__'];
104
+ try {
105
+ await this.walkDir(projectPath, (filePath) => {
106
+ const ext = path.extname(filePath);
107
+ if (!CODE_EXTS.has(ext))
108
+ return;
109
+ const name = path.basename(filePath);
110
+ const isTeste = TEST_PATTERNS.some(p => name.includes(p)) ||
111
+ filePath.includes(`${path.sep}test${path.sep}`) ||
112
+ filePath.includes(`${path.sep}tests${path.sep}`) ||
113
+ filePath.includes(`${path.sep}__tests__${path.sep}`);
114
+ if (isTeste)
115
+ testes++;
116
+ else
117
+ codigo++;
118
+ });
119
+ }
120
+ catch { /* best-effort */ }
121
+ const ratioTestesCodigo = codigo > 0 ? Math.min(1, testes / codigo) : 0;
122
+ return { codigo, testes, ratioTestesCodigo };
123
+ }
124
+ async walkDir(dir, callback) {
125
+ let entries;
126
+ try {
127
+ entries = await fs.readdir(dir, { withFileTypes: true });
128
+ }
129
+ catch {
130
+ return;
131
+ }
132
+ for (const entry of entries) {
133
+ if (IGNORED_DIRS.has(entry.name))
134
+ continue;
135
+ const full = path.join(dir, entry.name);
136
+ if (entry.isDirectory()) {
137
+ await this.walkDir(full, callback);
138
+ }
139
+ else if (entry.isFile()) {
140
+ callback(full);
141
+ }
142
+ }
143
+ }
144
+ async persistir(projectPath, metrics) {
145
+ const filePath = path.join(projectPath, METRICS_FILE);
146
+ let history = [];
147
+ try {
148
+ const raw = await fs.readFile(filePath, 'utf-8');
149
+ history = JSON.parse(raw);
150
+ }
151
+ catch { /* arquivo não existe ainda */ }
152
+ history.push(metrics);
153
+ // Manter apenas últimas 90 entradas (~3 meses se coletado diariamente)
154
+ if (history.length > 90)
155
+ history = history.slice(-90);
156
+ await fs.writeFile(filePath, JSON.stringify(history, null, 2), 'utf-8');
18
157
  }
19
158
  }
20
159
  //# sourceMappingURL=MetricsCollector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsCollector.js","sourceRoot":"","sources":["../../../src/core/metrics/MetricsCollector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACzB,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC7B,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,WAAW,CAAC,CAAC;QAEnE,OAAO;YACH,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE;QAC7B,OAAO,EAAE,CAAC;IACd,CAAC;CACJ"}
1
+ {"version":3,"file":"MetricsCollector.js","sourceRoot":"","sources":["../../../src/core/metrics/MetricsCollector.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,40 @@ import type { LayerValidationResult, PipelineResult, ValidationContext } from '.
2
2
  /**
3
3
  * Pipeline de Validação Multi-Camadas (Fase 2 - Melhoria #10)
4
4
  *
5
- * Valida código em 5 camadas sequenciais:
5
+ * Dois modos de operação:
6
+ *
7
+ * Modo "code" (padrão): Valida código TypeScript em 5 camadas sequenciais:
6
8
  * 1. Sintática (≥ 80%) - Compilação, sintaxe, imports
7
9
  * 2. Semântica (≥ 70%) - Contexto, APIs, tipos
8
10
  * 3. Qualidade (≥ 70%) - Padrões, code smells, testabilidade
9
11
  * 4. Arquitetura (≥ 80%) - Camadas, dependências, fitness functions
10
12
  * 5. Segurança (≥ 90%) - OWASP, vulnerabilidades
13
+ *
14
+ * Modo "deliverable" (v6.1): Valida documentos Markdown de fases do projeto:
15
+ * - Presença de seções obrigatórias por fase
16
+ * - Completude do gate_checklist
17
+ * - Tamanho mínimo de conteúdo
18
+ * - Qualidade semântica do Markdown
11
19
  */
12
20
  export declare class ValidationPipeline {
13
21
  private layers;
22
+ private deliverableValidator;
14
23
  constructor();
15
24
  /**
16
- * Valida código através do pipeline completo
25
+ * v6.1: Valida entregável de fase (documento Markdown)
26
+ *
27
+ * Use este método para fases do projeto (PRD, Requisitos, UX, Arquitetura, etc.).
28
+ * Ao contrário de validate(), não usa as camadas de código TypeScript.
29
+ *
30
+ * @param content - Conteúdo do entregável (Markdown)
31
+ * @param nomeFase - Nome da fase (ex: "Produto", "Requisitos")
32
+ * @param tier - Tier de rigor da validação
33
+ * @param gateChecklist - Itens do gate checklist da fase
34
+ */
35
+ validateDeliverable(content: string, nomeFase: string, tier?: 'essencial' | 'base' | 'avancado', gateChecklist?: string[]): Promise<PipelineResult>;
36
+ /**
37
+ * Valida código TypeScript através do pipeline completo (5 camadas).
38
+ * Para entregáveis de fase (Markdown), use validateDeliverable() ao invés.
17
39
  */
18
40
  validate(code: string, tier?: 'essencial' | 'base' | 'avancado', context?: ValidationContext): Promise<PipelineResult>;
19
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationPipeline.d.ts","sourceRoot":"","sources":["../../../src/core/validation/ValidationPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAEpB,MAAM,YAAY,CAAC;AASpB;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAoB;;IA0ClC;;OAEG;IACG,QAAQ,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,GAAG,MAAM,GAAG,UAAmB,EAChD,OAAO,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,cAAc,CAAC;IAiD1B;;OAEG;IACG,aAAa,CACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;YACW,UAAU;IAexB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU;;;;;;;;;;;;;;;;;;;CA2BvD"}
1
+ {"version":3,"file":"ValidationPipeline.d.ts","sourceRoot":"","sources":["../../../src/core/validation/ValidationPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAEpB,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,oBAAoB,CAAuB;;IA4CnD;;;;;;;;;;OAUG;IACG,mBAAmB,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAW,GAAG,MAAM,GAAG,UAAmB,EAChD,aAAa,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,cAAc,CAAC;IA0B1B;;;OAGG;IACG,QAAQ,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,GAAG,MAAM,GAAG,UAAmB,EAChD,OAAO,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,cAAc,CAAC;IAiD1B;;OAEG;IACG,aAAa,CACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;OAEG;YACW,UAAU;IAexB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU;;;;;;;;;;;;;;;;;;;CA2BvD"}
@@ -3,21 +3,32 @@ import { SemanticValidator } from './layers/SemanticValidator.js';
3
3
  import { QualityValidator } from './layers/QualityValidator.js';
4
4
  import { ArchitectureValidator } from './layers/ArchitectureValidator.js';
5
5
  import { SecurityValidatorWrapper } from './layers/SecurityValidatorWrapper.js';
6
+ import { DeliverableValidator } from './layers/DeliverableValidator.js';
6
7
  import * as fs from 'fs/promises';
7
8
  import * as path from 'path';
8
9
  /**
9
10
  * Pipeline de Validação Multi-Camadas (Fase 2 - Melhoria #10)
10
11
  *
11
- * Valida código em 5 camadas sequenciais:
12
+ * Dois modos de operação:
13
+ *
14
+ * Modo "code" (padrão): Valida código TypeScript em 5 camadas sequenciais:
12
15
  * 1. Sintática (≥ 80%) - Compilação, sintaxe, imports
13
16
  * 2. Semântica (≥ 70%) - Contexto, APIs, tipos
14
17
  * 3. Qualidade (≥ 70%) - Padrões, code smells, testabilidade
15
18
  * 4. Arquitetura (≥ 80%) - Camadas, dependências, fitness functions
16
19
  * 5. Segurança (≥ 90%) - OWASP, vulnerabilidades
20
+ *
21
+ * Modo "deliverable" (v6.1): Valida documentos Markdown de fases do projeto:
22
+ * - Presença de seções obrigatórias por fase
23
+ * - Completude do gate_checklist
24
+ * - Tamanho mínimo de conteúdo
25
+ * - Qualidade semântica do Markdown
17
26
  */
18
27
  export class ValidationPipeline {
19
28
  layers;
29
+ deliverableValidator;
20
30
  constructor() {
31
+ this.deliverableValidator = new DeliverableValidator();
21
32
  this.layers = [
22
33
  {
23
34
  name: 'Sintática',
@@ -57,7 +68,40 @@ export class ValidationPipeline {
57
68
  ];
58
69
  }
59
70
  /**
60
- * Valida código através do pipeline completo
71
+ * v6.1: Valida entregável de fase (documento Markdown)
72
+ *
73
+ * Use este método para fases do projeto (PRD, Requisitos, UX, Arquitetura, etc.).
74
+ * Ao contrário de validate(), não usa as camadas de código TypeScript.
75
+ *
76
+ * @param content - Conteúdo do entregável (Markdown)
77
+ * @param nomeFase - Nome da fase (ex: "Produto", "Requisitos")
78
+ * @param tier - Tier de rigor da validação
79
+ * @param gateChecklist - Itens do gate checklist da fase
80
+ */
81
+ async validateDeliverable(content, nomeFase, tier = 'base', gateChecklist = []) {
82
+ const startTime = new Date().toISOString();
83
+ console.log(`[ValidationPipeline] Validando entregável (fase: ${nomeFase}, tier: ${tier})`);
84
+ const deliverableContext = {
85
+ projectPath: '',
86
+ nomeFase,
87
+ gateChecklist,
88
+ tier
89
+ };
90
+ const result = await this.deliverableValidator.validate(content, deliverableContext);
91
+ const pipelineResult = {
92
+ overallScore: result.score,
93
+ passed: result.passed,
94
+ results: [result],
95
+ recommendations: result.suggestions,
96
+ tier,
97
+ timestamp: startTime
98
+ };
99
+ await this.saveReport(pipelineResult);
100
+ return pipelineResult;
101
+ }
102
+ /**
103
+ * Valida código TypeScript através do pipeline completo (5 camadas).
104
+ * Para entregáveis de fase (Markdown), use validateDeliverable() ao invés.
61
105
  */
62
106
  async validate(code, tier = 'base', context) {
63
107
  const results = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationPipeline.js","sourceRoot":"","sources":["../../../src/core/validation/ValidationPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidationPipeline.js","sourceRoot":"","sources":["../../../src/core/validation/ValidationPipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { LayerValidationResult, ValidationContext } from '../types.js';
2
+ export interface DeliverableContext extends ValidationContext {
3
+ /** Nome da fase atual (ex: "Produto", "Requisitos") */
4
+ nomeFase: string;
5
+ /** Gate checklist da fase (itens que devem ser evidenciados) */
6
+ gateChecklist?: string[];
7
+ }
8
+ export declare class DeliverableValidator {
9
+ validate(content: string, context?: DeliverableContext): Promise<LayerValidationResult>;
10
+ private checkMarkdownQuality;
11
+ private calculateScore;
12
+ }
13
+ //# sourceMappingURL=DeliverableValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeliverableValidator.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/layers/DeliverableValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAsH7F,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IACzD,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,oBAAoB;IACvB,QAAQ,CACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IA8HjC,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,cAAc;CAsBzB"}