@maestro-ai/mcp-server 5.5.3 → 5.6.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 (150) hide show
  1. package/dist/constants.d.ts +1 -1
  2. package/dist/constants.js +1 -1
  3. package/dist/errors/index.js +2 -2
  4. package/dist/errors/index.js.map +1 -1
  5. package/dist/flows/onboarding-orchestrator.js +1 -1
  6. package/dist/flows/onboarding-orchestrator.js.map +1 -1
  7. package/dist/handlers/field-normalizer.d.ts +31 -0
  8. package/dist/handlers/field-normalizer.d.ts.map +1 -0
  9. package/dist/handlers/field-normalizer.js +70 -0
  10. package/dist/handlers/field-normalizer.js.map +1 -0
  11. package/dist/handlers/prd-scorer.d.ts +60 -0
  12. package/dist/handlers/prd-scorer.d.ts.map +1 -0
  13. package/dist/handlers/prd-scorer.js +157 -0
  14. package/dist/handlers/prd-scorer.js.map +1 -0
  15. package/dist/handlers/prototype-phase-handler.js.map +1 -1
  16. package/dist/handlers/shared-prompt-handler.js.map +1 -1
  17. package/dist/handlers/specialist-formatters.d.ts +42 -0
  18. package/dist/handlers/specialist-formatters.d.ts.map +1 -0
  19. package/dist/handlers/specialist-formatters.js +272 -0
  20. package/dist/handlers/specialist-formatters.js.map +1 -0
  21. package/dist/handlers/specialist-phase-handler.d.ts +1 -10
  22. package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
  23. package/dist/handlers/specialist-phase-handler.js +11 -501
  24. package/dist/handlers/specialist-phase-handler.js.map +1 -1
  25. package/dist/legacy-tools.d.ts +21 -0
  26. package/dist/legacy-tools.d.ts.map +1 -0
  27. package/dist/legacy-tools.js +377 -0
  28. package/dist/legacy-tools.js.map +1 -0
  29. package/dist/router.d.ts +2 -2
  30. package/dist/router.d.ts.map +1 -1
  31. package/dist/router.js +6 -378
  32. package/dist/router.js.map +1 -1
  33. package/dist/server.d.ts +18 -4
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/server.js +70 -1
  36. package/dist/server.js.map +1 -1
  37. package/dist/services/flow-engine.d.ts.map +1 -1
  38. package/dist/services/flow-engine.js +1 -2
  39. package/dist/services/flow-engine.js.map +1 -1
  40. package/dist/services/onboarding.service.js.map +1 -1
  41. package/dist/services/scoring-config.d.ts +47 -0
  42. package/dist/services/scoring-config.d.ts.map +1 -0
  43. package/dist/services/scoring-config.js +88 -0
  44. package/dist/services/scoring-config.js.map +1 -0
  45. package/dist/services/state.service.d.ts.map +1 -1
  46. package/dist/services/state.service.js +3 -9
  47. package/dist/services/state.service.js.map +1 -1
  48. package/dist/services/static-validator.service.d.ts +28 -0
  49. package/dist/services/static-validator.service.d.ts.map +1 -0
  50. package/dist/services/static-validator.service.js +55 -0
  51. package/dist/services/static-validator.service.js.map +1 -0
  52. package/dist/services/task-decomposer.service.d.ts +59 -0
  53. package/dist/services/task-decomposer.service.d.ts.map +1 -0
  54. package/dist/services/task-decomposer.service.js +162 -0
  55. package/dist/services/task-decomposer.service.js.map +1 -0
  56. package/dist/services/test-stub-generator.service.d.ts +32 -0
  57. package/dist/services/test-stub-generator.service.d.ts.map +1 -0
  58. package/dist/services/test-stub-generator.service.js +71 -0
  59. package/dist/services/test-stub-generator.service.js.map +1 -0
  60. package/dist/stdio.js +7 -71
  61. package/dist/stdio.js.map +1 -1
  62. package/dist/tools/brainstorm.js.map +1 -1
  63. package/dist/tools/consolidated/avancar.d.ts.map +1 -1
  64. package/dist/tools/consolidated/avancar.js +27 -19
  65. package/dist/tools/consolidated/avancar.js.map +1 -1
  66. package/dist/tools/discovery.js.map +1 -1
  67. package/dist/tools/iniciar-projeto.js.map +1 -1
  68. package/dist/tools/maestro-tool.d.ts.map +1 -1
  69. package/dist/tools/maestro-tool.js +23 -14
  70. package/dist/tools/maestro-tool.js.map +1 -1
  71. package/dist/tools/next-steps-dashboard.js.map +1 -1
  72. package/dist/tools/prd-writer.js.map +1 -1
  73. package/dist/tools/proximo.d.ts.map +1 -1
  74. package/dist/tools/proximo.js +26 -6
  75. package/dist/tools/proximo.js.map +1 -1
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/package.json +3 -2
  79. package/dist/gates/tiers.test.d.ts +0 -2
  80. package/dist/gates/tiers.test.d.ts.map +0 -1
  81. package/dist/gates/tiers.test.js +0 -86
  82. package/dist/gates/tiers.test.js.map +0 -1
  83. package/dist/index.d.ts +0 -3
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/index.js +0 -343
  86. package/dist/index.js.map +0 -1
  87. package/dist/tests/aprovar-gate.test.d.ts +0 -2
  88. package/dist/tests/aprovar-gate.test.d.ts.map +0 -1
  89. package/dist/tests/aprovar-gate.test.js +0 -113
  90. package/dist/tests/aprovar-gate.test.js.map +0 -1
  91. package/dist/tests/brainstorm-prd.test.d.ts +0 -5
  92. package/dist/tests/brainstorm-prd.test.d.ts.map +0 -1
  93. package/dist/tests/brainstorm-prd.test.js +0 -291
  94. package/dist/tests/brainstorm-prd.test.js.map +0 -1
  95. package/dist/tests/classificacao-progressiva.test.d.ts +0 -5
  96. package/dist/tests/classificacao-progressiva.test.d.ts.map +0 -1
  97. package/dist/tests/classificacao-progressiva.test.js +0 -372
  98. package/dist/tests/classificacao-progressiva.test.js.map +0 -1
  99. package/dist/tests/content-resolver.test.d.ts +0 -5
  100. package/dist/tests/content-resolver.test.d.ts.map +0 -1
  101. package/dist/tests/content-resolver.test.js +0 -157
  102. package/dist/tests/content-resolver.test.js.map +0 -1
  103. package/dist/tests/deliverable-validator.test.d.ts +0 -12
  104. package/dist/tests/deliverable-validator.test.d.ts.map +0 -1
  105. package/dist/tests/deliverable-validator.test.js +0 -214
  106. package/dist/tests/deliverable-validator.test.js.map +0 -1
  107. package/dist/tests/flow-engine.test.d.ts +0 -2
  108. package/dist/tests/flow-engine.test.d.ts.map +0 -1
  109. package/dist/tests/flow-engine.test.js +0 -85
  110. package/dist/tests/flow-engine.test.js.map +0 -1
  111. package/dist/tests/gate-orientation.test.d.ts +0 -2
  112. package/dist/tests/gate-orientation.test.d.ts.map +0 -1
  113. package/dist/tests/gate-orientation.test.js +0 -59
  114. package/dist/tests/gate-orientation.test.js.map +0 -1
  115. package/dist/tests/middleware.test.d.ts +0 -5
  116. package/dist/tests/middleware.test.d.ts.map +0 -1
  117. package/dist/tests/middleware.test.js +0 -254
  118. package/dist/tests/middleware.test.js.map +0 -1
  119. package/dist/tests/migracao-skills.test.d.ts +0 -2
  120. package/dist/tests/migracao-skills.test.d.ts.map +0 -1
  121. package/dist/tests/migracao-skills.test.js +0 -208
  122. package/dist/tests/migracao-skills.test.js.map +0 -1
  123. package/dist/tests/onboarding-flow.test.d.ts +0 -5
  124. package/dist/tests/onboarding-flow.test.d.ts.map +0 -1
  125. package/dist/tests/onboarding-flow.test.js +0 -231
  126. package/dist/tests/onboarding-flow.test.js.map +0 -1
  127. package/dist/tests/prd-validation.test.d.ts +0 -6
  128. package/dist/tests/prd-validation.test.d.ts.map +0 -1
  129. package/dist/tests/prd-validation.test.js +0 -164
  130. package/dist/tests/prd-validation.test.js.map +0 -1
  131. package/dist/tests/readiness-dashboard.test.d.ts +0 -5
  132. package/dist/tests/readiness-dashboard.test.d.ts.map +0 -1
  133. package/dist/tests/readiness-dashboard.test.js +0 -252
  134. package/dist/tests/readiness-dashboard.test.js.map +0 -1
  135. package/dist/tests/skill-loader.test.d.ts +0 -5
  136. package/dist/tests/skill-loader.test.d.ts.map +0 -1
  137. package/dist/tests/skill-loader.test.js +0 -244
  138. package/dist/tests/skill-loader.test.js.map +0 -1
  139. package/dist/tests/v52-integration.test.d.ts +0 -14
  140. package/dist/tests/v52-integration.test.d.ts.map +0 -1
  141. package/dist/tests/v52-integration.test.js +0 -225
  142. package/dist/tests/v52-integration.test.js.map +0 -1
  143. package/dist/tests/watcher.service.test.d.ts +0 -2
  144. package/dist/tests/watcher.service.test.d.ts.map +0 -1
  145. package/dist/tests/watcher.service.test.js +0 -119
  146. package/dist/tests/watcher.service.test.js.map +0 -1
  147. package/dist/utils/__tests__/prompt-mapper.test.d.ts +0 -2
  148. package/dist/utils/__tests__/prompt-mapper.test.d.ts.map +0 -1
  149. package/dist/utils/__tests__/prompt-mapper.test.js +0 -184
  150. package/dist/utils/__tests__/prompt-mapper.test.js.map +0 -1
@@ -1,214 +0,0 @@
1
- /**
2
- * Testes para DeliverableValidator v6.1
3
- *
4
- * Cobre os cenários críticos de validação de entregáveis de fase:
5
- * - PRD vazio → bloqueado
6
- * - PRD completo → aprovado
7
- * - Placeholders → penalizado
8
- * - Gate checklist → score aumenta quando evidenciado
9
- * - Fases de código (Frontend/Backend) → tratamento especial
10
- */
11
- import { describe, it, expect } from 'vitest';
12
- import { DeliverableValidator } from '../core/validation/layers/DeliverableValidator.js';
13
- const validator = new DeliverableValidator();
14
- // ─── Helpers ───────────────────────────────────────────────────────────────
15
- function makeContext(nomeFase, gateChecklist = []) {
16
- return {
17
- projectPath: '/test/project',
18
- nomeFase,
19
- gateChecklist,
20
- tier: 'base',
21
- };
22
- }
23
- const PRD_VAZIO = '';
24
- const PRD_CURTO = '# PRD\n\nAlgum texto.';
25
- const PRD_PLACEHOLDER = `# PRD do Produto
26
-
27
- ## Problema
28
- Lorem ipsum dolor sit amet.
29
-
30
- ## Objetivo
31
- TODO: definir objetivo
32
-
33
- ## Persona
34
- [inserir persona aqui]
35
-
36
- ## MVP
37
- - Feature A
38
- - Feature B
39
-
40
- ## Funcionalidades
41
- FIXME: listar funcionalidades
42
- `;
43
- const PRD_COMPLETO = `# PRD — Sistema de Gestão de Pedidos
44
-
45
- ## Problema
46
- Restaurantes perdem pedidos por falta de sistema centralizado. O processo manual gera erros e atrasos.
47
-
48
- ## Objetivo
49
- Criar um sistema digital que centralize pedidos, reduza erros em 80% e aumente a satisfação dos clientes.
50
-
51
- ## Persona
52
- **João, Gerente de Restaurante** — 35 anos, usa smartphone, precisa de visibilidade em tempo real dos pedidos.
53
-
54
- ## MVP
55
- O MVP inclui: cadastro de produtos, recebimento de pedidos via tablet, notificação para cozinha, e relatório diário.
56
-
57
- ## Funcionalidades Principais
58
- 1. Cadastro de cardápio com categorias e preços
59
- 2. Interface de pedido para garçons (tablet)
60
- 3. Painel da cozinha com fila de pedidos
61
- 4. Relatório de vendas por período
62
- 5. Integração com sistema de pagamento
63
-
64
- ## Critérios de Sucesso
65
- - Redução de 80% nos erros de pedido
66
- - Tempo de atendimento < 2 minutos
67
- - Satisfação do cliente ≥ 4.5/5
68
- `;
69
- const REQUISITOS_COMPLETO = `# Requisitos do Sistema
70
-
71
- ## RF-001 — Cadastro de Produto
72
- O sistema deve permitir cadastrar produtos com nome, preço e categoria.
73
- **Critério de aceite:** Produto salvo aparece no cardápio em < 1s.
74
-
75
- ## RF-002 — Pedido via Tablet
76
- O garçom deve conseguir registrar pedidos pelo tablet.
77
- **Critério de aceite:** Pedido enviado para cozinha em < 3s.
78
-
79
- ## RNF-001 — Performance
80
- O sistema deve responder em < 500ms para 95% das requisições.
81
-
82
- ## RNF-002 — Disponibilidade
83
- O sistema deve ter uptime de 99.9%.
84
-
85
- ## Critérios de Aceite Gerais
86
- Todos os RFs devem ter testes automatizados com cobertura > 80%.
87
- `;
88
- // ─── Testes ────────────────────────────────────────────────────────────────
89
- describe('DeliverableValidator: Fase Produto (PRD)', () => {
90
- it('deve BLOQUEAR entregável vazio', async () => {
91
- const result = await validator.validate(PRD_VAZIO, makeContext('Produto'));
92
- expect(result.passed).toBe(false);
93
- expect(result.score).toBeLessThan(70);
94
- });
95
- it('deve BLOQUEAR entregável muito curto', async () => {
96
- const result = await validator.validate(PRD_CURTO, makeContext('Produto'));
97
- expect(result.passed).toBe(false);
98
- expect(result.issues.some(i => i.type === 'content-too-short')).toBe(true);
99
- });
100
- it('deve PENALIZAR entregável com placeholders', async () => {
101
- const result = await validator.validate(PRD_PLACEHOLDER, makeContext('Produto'));
102
- expect(result.issues.some(i => i.type === 'placeholder-content')).toBe(true);
103
- // Score deve ser menor que um PRD sem placeholders
104
- const resultSemPlaceholder = await validator.validate(PRD_COMPLETO, makeContext('Produto'));
105
- expect(result.score).toBeLessThan(resultSemPlaceholder.score);
106
- });
107
- it('deve APROVAR PRD completo com todas as seções', async () => {
108
- const result = await validator.validate(PRD_COMPLETO, makeContext('Produto'));
109
- expect(result.passed).toBe(true);
110
- expect(result.score).toBeGreaterThanOrEqual(70);
111
- });
112
- it('deve ter score maior quando gate checklist é evidenciado', async () => {
113
- const gate = ['problema', 'persona', 'funcionalidades'];
114
- const resultSemGate = await validator.validate(PRD_COMPLETO, makeContext('Produto', []));
115
- const resultComGate = await validator.validate(PRD_COMPLETO, makeContext('Produto', gate));
116
- // Com gate evidenciado, score deve ser igual ou maior (bônus)
117
- expect(resultComGate.score).toBeGreaterThanOrEqual(resultSemGate.score);
118
- });
119
- it('deve PENALIZAR quando gate checklist não é evidenciado', async () => {
120
- const gate = ['análise competitiva detalhada', 'projeção financeira de 5 anos', 'pesquisa com 1000 usuários'];
121
- const result = await validator.validate(PRD_COMPLETO, makeContext('Produto', gate));
122
- // Gate items muito específicos não estarão no PRD → penalidade
123
- expect(result.issues.some(i => i.type === 'gate-checklist-incomplete')).toBe(true);
124
- });
125
- });
126
- describe('DeliverableValidator: Fase Requisitos', () => {
127
- it('deve APROVAR requisitos completos com RF, RNF e critérios', async () => {
128
- const result = await validator.validate(REQUISITOS_COMPLETO, makeContext('Requisitos'));
129
- expect(result.passed).toBe(true);
130
- expect(result.score).toBeGreaterThanOrEqual(70);
131
- });
132
- it('deve detectar ausência de critérios de aceite', async () => {
133
- const semCriterios = `# Requisitos\n\n## RF-001\nO sistema deve fazer X.\n\n## RNF-001\nPerformance adequada.\n`;
134
- const result = await validator.validate(semCriterios, makeContext('Requisitos'));
135
- // 'aceite' está nos termos obrigatórios — deve detectar ausência
136
- const missingIssue = result.issues.find(i => i.type === 'missing-sections');
137
- expect(missingIssue).toBeDefined();
138
- });
139
- });
140
- describe('DeliverableValidator: Qualidade do Markdown', () => {
141
- it('deve detectar documento sem headings', async () => {
142
- const semHeadings = 'Apenas texto sem nenhum heading markdown. '.repeat(50);
143
- const result = await validator.validate(semHeadings, makeContext('Produto'));
144
- expect(result.issues.some(i => i.type === 'no-headings')).toBe(true);
145
- });
146
- it('deve detectar documento apenas com bullets', async () => {
147
- const apenasBullets = Array(20).fill('- Item de lista sem contexto').join('\n');
148
- const result = await validator.validate(apenasBullets, makeContext('Produto'));
149
- expect(result.issues.some(i => i.type === 'only-bullets')).toBe(true);
150
- });
151
- });
152
- describe('DeliverableValidator: Fases de Código (Frontend/Backend)', () => {
153
- const codigoFrontend = `
154
- import React, { useState } from 'react';
155
- import { useNavigate } from 'react-router-dom';
156
-
157
- // Componente de lista de pedidos
158
- export function OrderList() {
159
- const [orders, setOrders] = useState([]);
160
- const navigate = useNavigate();
161
-
162
- // Estado de carregamento
163
- const [loading, setLoading] = useState(false);
164
-
165
- return (
166
- <div className="order-list">
167
- {orders.map(order => (
168
- <div key={order.id}>{order.name}</div>
169
- ))}
170
- </div>
171
- );
172
- }
173
-
174
- // Rota principal
175
- export default OrderList;
176
- `;
177
- it('deve detectar entregável de código para fase Frontend', async () => {
178
- const result = await validator.validate(codigoFrontend, makeContext('Frontend'));
179
- // Para código, não deve exigir headings Markdown
180
- const noHeadingsIssue = result.issues.find(i => i.type === 'no-headings');
181
- // Código legítimo não deve ser bloqueado por falta de headings Markdown
182
- // (o validator deve detectar que é código e não Markdown)
183
- expect(result.score).toBeGreaterThan(0); // Não deve dar score 0 para código válido
184
- });
185
- it('deve ter tamanho mínimo menor para fases de código', async () => {
186
- // Fases de código têm tamanho mínimo de 300 chars (menor que PRD com 800)
187
- const codigoCurto = `export function hello() { return 'world'; }`;
188
- const result = await validator.validate(codigoCurto, makeContext('Frontend'));
189
- // Código curto pode falhar por tamanho, mas não por ausência de headings
190
- const noHeadingsIssue = result.issues.find(i => i.type === 'no-headings');
191
- // Para código, não deve ter issue de headings
192
- expect(noHeadingsIssue).toBeUndefined();
193
- });
194
- });
195
- describe('DeliverableValidator: Score e Threshold', () => {
196
- it('score deve ser 100 para documento perfeito sem issues', async () => {
197
- // Fase sem seções obrigatórias definidas → sem penalidades de seção
198
- const conteudoPerfeito = `# Documento Perfeito\n\n${'Conteúdo detalhado e completo. '.repeat(30)}`;
199
- const result = await validator.validate(conteudoPerfeito, makeContext('Desconhecida'));
200
- expect(result.score).toBeGreaterThanOrEqual(90); // Sem penalidades → score alto
201
- });
202
- it('threshold de aprovação deve ser 70', async () => {
203
- // Verificar que o threshold é 70 (não 60 nem 80)
204
- const result = await validator.validate(PRD_COMPLETO, makeContext('Produto'));
205
- // PRD completo deve passar com score ≥ 70
206
- if (result.score >= 70) {
207
- expect(result.passed).toBe(true);
208
- }
209
- else {
210
- expect(result.passed).toBe(false);
211
- }
212
- });
213
- });
214
- //# sourceMappingURL=deliverable-validator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deliverable-validator.test.js","sourceRoot":"","sources":["../../src/tests/deliverable-validator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=flow-engine.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-engine.test.d.ts","sourceRoot":"","sources":["../../src/tests/flow-engine.test.ts"],"names":[],"mappings":""}
@@ -1,85 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { getNextStep, getFlowState, isInOnboarding } from '../services/flow-engine.js';
3
- // Mock dependencies
4
- vi.mock('../services/specialist.service.js', () => ({
5
- getSpecialistPersona: vi.fn().mockReturnValue({ role: 'Especialista Mock', context: 'Contexto mock' })
6
- }));
7
- vi.mock('../flows/types.js', () => ({
8
- getFaseComStitch: vi.fn().mockReturnValue({ nome: 'Requisitos', entregavel_esperado: 'requisitos.md' })
9
- }));
10
- describe('Flow Engine', () => {
11
- beforeEach(() => {
12
- vi.clearAllMocks();
13
- });
14
- describe('Smart Auto-Flow (V6 Sprint 6)', () => {
15
- let baseState;
16
- beforeEach(() => {
17
- baseState = {
18
- projeto_id: '123',
19
- fase_atual: 2,
20
- total_fases: 10,
21
- config: { setup: { completed: true }, mode: 'balanced' },
22
- gates_validados: [1],
23
- nivel: 'medio',
24
- usar_stitch: false
25
- // flow_phase_type definido no teste
26
- };
27
- });
28
- it('deve manter requires_user_input=true para fases do tipo input_required', () => {
29
- baseState.flow_phase_type = 'input_required';
30
- const nextStep = getNextStep(baseState, '/test');
31
- // Fases normais de transição de "fase_ativa" para "gerar_entregavel" requerem input humano
32
- expect(nextStep.tool).toBe('executar');
33
- expect(nextStep.requires_user_input).toBe(true);
34
- });
35
- it('deve sobrescrever requires_user_input=false para fases do tipo derived (Auto-Flow)', () => {
36
- baseState.flow_phase_type = 'derived';
37
- const nextStep = getNextStep(baseState, '/test');
38
- // Fases derivadas podem avançar silenciosamente sem input
39
- expect(nextStep.tool).toBe('executar');
40
- expect(nextStep.requires_user_input).toBe(false);
41
- });
42
- it('deve sobrescrever requires_user_input=false para fases do tipo technical (Auto-Flow)', () => {
43
- baseState.flow_phase_type = 'technical';
44
- const nextStep = getNextStep(baseState, '/test');
45
- expect(nextStep.tool).toBe('executar');
46
- expect(nextStep.requires_user_input).toBe(false);
47
- });
48
- it('deve manter requires_user_input=true para fases do tipo correction_loop', () => {
49
- baseState.flow_phase_type = 'correction_loop';
50
- const nextStep = getNextStep(baseState, '/test');
51
- expect(nextStep.tool).toBe('executar');
52
- expect(nextStep.requires_user_input).toBe(true); // transição padrão exige input se for fallback
53
- });
54
- });
55
- describe('Fluxos de Estado (getFlowState & isInOnboarding)', () => {
56
- it('deve reconhecer corretamente se está em onboarding (specialist_active)', () => {
57
- const estadoOnboarding = {
58
- projeto_id: '123',
59
- onboarding: {
60
- phase: 'running',
61
- specialistPhase: { status: 'active' }
62
- }
63
- };
64
- expect(isInOnboarding(estadoOnboarding)).toBe(true);
65
- const fs = getFlowState(estadoOnboarding, '/test');
66
- expect(fs.currentPhase).toBe('specialist_active');
67
- });
68
- it('não deve marcar como onboarding se phase for completed sem specialistPhase', () => {
69
- const estadoDesenvolvimento = {
70
- projeto_id: '123',
71
- fase_atual: 2,
72
- total_fases: 10,
73
- gates_validados: [1],
74
- onboarding: {
75
- phase: 'completed',
76
- specialistPhase: null
77
- }
78
- };
79
- expect(isInOnboarding(estadoDesenvolvimento)).toBe(false);
80
- const fs = getFlowState(estadoDesenvolvimento, '/test');
81
- expect(fs.currentPhase).toBe('fase_ativa');
82
- });
83
- });
84
- });
85
- //# sourceMappingURL=flow-engine.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow-engine.test.js","sourceRoot":"","sources":["../../src/tests/flow-engine.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=gate-orientation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gate-orientation.test.d.ts","sourceRoot":"","sources":["../../src/tests/gate-orientation.test.ts"],"names":[],"mappings":""}
@@ -1,59 +0,0 @@
1
- import { vi, describe, it, expect, beforeEach } from 'vitest';
2
- import { generateGateOrientationDoc } from '../utils/gate-orientation.js';
3
- import * as fsPromises from 'fs/promises';
4
- // Mocks
5
- vi.mock('fs/promises', () => ({
6
- writeFile: vi.fn().mockResolvedValue(undefined),
7
- mkdir: vi.fn().mockResolvedValue(undefined)
8
- }));
9
- vi.mock('../services/skill-loader.service.js', () => ({
10
- SkillLoaderService: class {
11
- async loadChecklist(faseNome) {
12
- if (faseNome === 'Produto')
13
- return '- Critério A\n- Critério B';
14
- return null;
15
- }
16
- }
17
- }));
18
- vi.mock('../utils/prompt-mapper.js', () => ({
19
- getSkillParaFase: vi.fn().mockReturnValue('skill-gestao-produto')
20
- }));
21
- vi.mock('../utils/ide-paths.js', () => ({
22
- getSkillFilePath: vi.fn().mockReturnValue('.agent/skills/skill-gestao-produto/'),
23
- detectIDE: vi.fn().mockReturnValue('cursor')
24
- }));
25
- describe('GateOrientation', () => {
26
- beforeEach(() => {
27
- vi.clearAllMocks();
28
- });
29
- it('deve gerar o documento descritivo de gate e salvar no disco', async () => {
30
- const result = await generateGateOrientationDoc('/test/dir', 'Produto', 1);
31
- expect(result).not.toBeNull();
32
- expect(fsPromises.mkdir).toHaveBeenCalled();
33
- expect(fsPromises.writeFile).toHaveBeenCalled();
34
- // Verificar o path correto gerado
35
- const expectedPathPart = 'fase-01'; // Verifica normalização
36
- expect(result).toContain(expectedPathPart);
37
- expect(result).toContain('.orientacoes-gate.md');
38
- // Checar parte do conteúdo escrito
39
- const writeCallArgs = vi.mocked(fsPromises.writeFile).mock.calls[0];
40
- const contentWritten = writeCallArgs[1];
41
- expect(contentWritten).toContain('Critérios do Gate — Fase 1: Produto');
42
- expect(contentWritten).toContain('skill-gestao-produto');
43
- expect(contentWritten).toContain('- Critério A\n- Critério B');
44
- });
45
- it('deve retornar null se o checklist da fase não for encontrado na skill', async () => {
46
- // Mocka uma fase não registrada
47
- const result = await generateGateOrientationDoc('/test/dir', 'FaseInvalida', 99);
48
- // Se não houver checklist, o orientador aborta e não gera nada
49
- expect(result).toBeNull();
50
- expect(fsPromises.writeFile).not.toHaveBeenCalled();
51
- });
52
- it('deve lidar corretamente com erros do filesystem durante a gravação', async () => {
53
- // Redefinir mock especificamente para este caso causar erro
54
- vi.mocked(fsPromises.mkdir).mockRejectedValueOnce(new Error('Permission denied'));
55
- const result = await generateGateOrientationDoc('/test/dir', 'Produto', 1);
56
- expect(result).toBeNull();
57
- });
58
- });
59
- //# sourceMappingURL=gate-orientation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gate-orientation.test.js","sourceRoot":"","sources":["../../src/tests/gate-orientation.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Testes para Middleware Pipeline v5
3
- */
4
- export {};
5
- //# sourceMappingURL=middleware.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.test.d.ts","sourceRoot":"","sources":["../../src/tests/middleware.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}