@maestro-ai/mcp-server 5.5.2 → 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 (164) hide show
  1. package/dist/constants.d.ts +1 -1
  2. package/dist/constants.js +1 -1
  3. package/dist/content/skills/specialist-prototipagem-stitch/SKILL.md +12 -6
  4. package/dist/content/skills/specialist-ux-design/SKILL.md +9 -30
  5. package/dist/content/skills/specialist-ux-design/resources/checklists/ux-validation.md +1 -4
  6. package/dist/content/skills/specialist-ux-design/resources/reference/ux-guide.md +2 -2
  7. package/dist/errors/index.js +2 -2
  8. package/dist/errors/index.js.map +1 -1
  9. package/dist/flows/onboarding-orchestrator.js +1 -1
  10. package/dist/flows/onboarding-orchestrator.js.map +1 -1
  11. package/dist/handlers/field-normalizer.d.ts +31 -0
  12. package/dist/handlers/field-normalizer.d.ts.map +1 -0
  13. package/dist/handlers/field-normalizer.js +70 -0
  14. package/dist/handlers/field-normalizer.js.map +1 -0
  15. package/dist/handlers/prd-scorer.d.ts +60 -0
  16. package/dist/handlers/prd-scorer.d.ts.map +1 -0
  17. package/dist/handlers/prd-scorer.js +157 -0
  18. package/dist/handlers/prd-scorer.js.map +1 -0
  19. package/dist/handlers/prototype-phase-handler.js.map +1 -1
  20. package/dist/handlers/shared-prompt-handler.js +3 -1
  21. package/dist/handlers/shared-prompt-handler.js.map +1 -1
  22. package/dist/handlers/specialist-formatters.d.ts +42 -0
  23. package/dist/handlers/specialist-formatters.d.ts.map +1 -0
  24. package/dist/handlers/specialist-formatters.js +272 -0
  25. package/dist/handlers/specialist-formatters.js.map +1 -0
  26. package/dist/handlers/specialist-phase-handler.d.ts +1 -10
  27. package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
  28. package/dist/handlers/specialist-phase-handler.js +11 -501
  29. package/dist/handlers/specialist-phase-handler.js.map +1 -1
  30. package/dist/legacy-tools.d.ts +21 -0
  31. package/dist/legacy-tools.d.ts.map +1 -0
  32. package/dist/legacy-tools.js +377 -0
  33. package/dist/legacy-tools.js.map +1 -0
  34. package/dist/router.d.ts +2 -2
  35. package/dist/router.d.ts.map +1 -1
  36. package/dist/router.js +6 -378
  37. package/dist/router.js.map +1 -1
  38. package/dist/server.d.ts +18 -4
  39. package/dist/server.d.ts.map +1 -1
  40. package/dist/server.js +70 -1
  41. package/dist/server.js.map +1 -1
  42. package/dist/services/flow-engine.d.ts.map +1 -1
  43. package/dist/services/flow-engine.js +1 -2
  44. package/dist/services/flow-engine.js.map +1 -1
  45. package/dist/services/onboarding.service.js.map +1 -1
  46. package/dist/services/scoring-config.d.ts +47 -0
  47. package/dist/services/scoring-config.d.ts.map +1 -0
  48. package/dist/services/scoring-config.js +88 -0
  49. package/dist/services/scoring-config.js.map +1 -0
  50. package/dist/services/state.service.d.ts.map +1 -1
  51. package/dist/services/state.service.js +3 -9
  52. package/dist/services/state.service.js.map +1 -1
  53. package/dist/services/static-validator.service.d.ts +28 -0
  54. package/dist/services/static-validator.service.d.ts.map +1 -0
  55. package/dist/services/static-validator.service.js +55 -0
  56. package/dist/services/static-validator.service.js.map +1 -0
  57. package/dist/services/task-decomposer.service.d.ts +59 -0
  58. package/dist/services/task-decomposer.service.d.ts.map +1 -0
  59. package/dist/services/task-decomposer.service.js +162 -0
  60. package/dist/services/task-decomposer.service.js.map +1 -0
  61. package/dist/services/test-stub-generator.service.d.ts +32 -0
  62. package/dist/services/test-stub-generator.service.d.ts.map +1 -0
  63. package/dist/services/test-stub-generator.service.js +71 -0
  64. package/dist/services/test-stub-generator.service.js.map +1 -0
  65. package/dist/stdio.js +7 -71
  66. package/dist/stdio.js.map +1 -1
  67. package/dist/tools/brainstorm.js.map +1 -1
  68. package/dist/tools/consolidated/avancar.d.ts.map +1 -1
  69. package/dist/tools/consolidated/avancar.js +27 -19
  70. package/dist/tools/consolidated/avancar.js.map +1 -1
  71. package/dist/tools/discovery.js.map +1 -1
  72. package/dist/tools/iniciar-projeto.js.map +1 -1
  73. package/dist/tools/maestro-tool.d.ts.map +1 -1
  74. package/dist/tools/maestro-tool.js +23 -14
  75. package/dist/tools/maestro-tool.js.map +1 -1
  76. package/dist/tools/next-steps-dashboard.js.map +1 -1
  77. package/dist/tools/prd-writer.js.map +1 -1
  78. package/dist/tools/proximo.d.ts.map +1 -1
  79. package/dist/tools/proximo.js +34 -6
  80. package/dist/tools/proximo.js.map +1 -1
  81. package/dist/types/index.d.ts +1 -1
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/utils/ide-paths.d.ts +2 -1
  84. package/dist/utils/ide-paths.d.ts.map +1 -1
  85. package/dist/utils/ide-paths.js +48 -9
  86. package/dist/utils/ide-paths.js.map +1 -1
  87. package/dist/utils/instructions.d.ts.map +1 -1
  88. package/dist/utils/instructions.js +4 -3
  89. package/dist/utils/instructions.js.map +1 -1
  90. package/package.json +3 -2
  91. package/dist/content/skills/specialist-ux-design/resources/templates/jornada-usuario.md +0 -126
  92. package/dist/content/skills/specialist-ux-design/resources/templates/wireframes.md +0 -155
  93. package/dist/gates/tiers.test.d.ts +0 -2
  94. package/dist/gates/tiers.test.d.ts.map +0 -1
  95. package/dist/gates/tiers.test.js +0 -86
  96. package/dist/gates/tiers.test.js.map +0 -1
  97. package/dist/index.d.ts +0 -3
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js +0 -343
  100. package/dist/index.js.map +0 -1
  101. package/dist/tests/aprovar-gate.test.d.ts +0 -2
  102. package/dist/tests/aprovar-gate.test.d.ts.map +0 -1
  103. package/dist/tests/aprovar-gate.test.js +0 -113
  104. package/dist/tests/aprovar-gate.test.js.map +0 -1
  105. package/dist/tests/brainstorm-prd.test.d.ts +0 -5
  106. package/dist/tests/brainstorm-prd.test.d.ts.map +0 -1
  107. package/dist/tests/brainstorm-prd.test.js +0 -291
  108. package/dist/tests/brainstorm-prd.test.js.map +0 -1
  109. package/dist/tests/classificacao-progressiva.test.d.ts +0 -5
  110. package/dist/tests/classificacao-progressiva.test.d.ts.map +0 -1
  111. package/dist/tests/classificacao-progressiva.test.js +0 -372
  112. package/dist/tests/classificacao-progressiva.test.js.map +0 -1
  113. package/dist/tests/content-resolver.test.d.ts +0 -5
  114. package/dist/tests/content-resolver.test.d.ts.map +0 -1
  115. package/dist/tests/content-resolver.test.js +0 -157
  116. package/dist/tests/content-resolver.test.js.map +0 -1
  117. package/dist/tests/deliverable-validator.test.d.ts +0 -12
  118. package/dist/tests/deliverable-validator.test.d.ts.map +0 -1
  119. package/dist/tests/deliverable-validator.test.js +0 -214
  120. package/dist/tests/deliverable-validator.test.js.map +0 -1
  121. package/dist/tests/flow-engine.test.d.ts +0 -2
  122. package/dist/tests/flow-engine.test.d.ts.map +0 -1
  123. package/dist/tests/flow-engine.test.js +0 -85
  124. package/dist/tests/flow-engine.test.js.map +0 -1
  125. package/dist/tests/gate-orientation.test.d.ts +0 -2
  126. package/dist/tests/gate-orientation.test.d.ts.map +0 -1
  127. package/dist/tests/gate-orientation.test.js +0 -59
  128. package/dist/tests/gate-orientation.test.js.map +0 -1
  129. package/dist/tests/middleware.test.d.ts +0 -5
  130. package/dist/tests/middleware.test.d.ts.map +0 -1
  131. package/dist/tests/middleware.test.js +0 -254
  132. package/dist/tests/middleware.test.js.map +0 -1
  133. package/dist/tests/migracao-skills.test.d.ts +0 -2
  134. package/dist/tests/migracao-skills.test.d.ts.map +0 -1
  135. package/dist/tests/migracao-skills.test.js +0 -208
  136. package/dist/tests/migracao-skills.test.js.map +0 -1
  137. package/dist/tests/onboarding-flow.test.d.ts +0 -5
  138. package/dist/tests/onboarding-flow.test.d.ts.map +0 -1
  139. package/dist/tests/onboarding-flow.test.js +0 -231
  140. package/dist/tests/onboarding-flow.test.js.map +0 -1
  141. package/dist/tests/prd-validation.test.d.ts +0 -6
  142. package/dist/tests/prd-validation.test.d.ts.map +0 -1
  143. package/dist/tests/prd-validation.test.js +0 -164
  144. package/dist/tests/prd-validation.test.js.map +0 -1
  145. package/dist/tests/readiness-dashboard.test.d.ts +0 -5
  146. package/dist/tests/readiness-dashboard.test.d.ts.map +0 -1
  147. package/dist/tests/readiness-dashboard.test.js +0 -252
  148. package/dist/tests/readiness-dashboard.test.js.map +0 -1
  149. package/dist/tests/skill-loader.test.d.ts +0 -5
  150. package/dist/tests/skill-loader.test.d.ts.map +0 -1
  151. package/dist/tests/skill-loader.test.js +0 -244
  152. package/dist/tests/skill-loader.test.js.map +0 -1
  153. package/dist/tests/v52-integration.test.d.ts +0 -14
  154. package/dist/tests/v52-integration.test.d.ts.map +0 -1
  155. package/dist/tests/v52-integration.test.js +0 -225
  156. package/dist/tests/v52-integration.test.js.map +0 -1
  157. package/dist/tests/watcher.service.test.d.ts +0 -2
  158. package/dist/tests/watcher.service.test.d.ts.map +0 -1
  159. package/dist/tests/watcher.service.test.js +0 -119
  160. package/dist/tests/watcher.service.test.js.map +0 -1
  161. package/dist/utils/__tests__/prompt-mapper.test.d.ts +0 -2
  162. package/dist/utils/__tests__/prompt-mapper.test.d.ts.map +0 -1
  163. package/dist/utils/__tests__/prompt-mapper.test.js +0 -184
  164. package/dist/utils/__tests__/prompt-mapper.test.js.map +0 -1
@@ -1,372 +0,0 @@
1
- /**
2
- * Testes para ClassificacaoProgressivaService v6.0
3
- */
4
- import { describe, it, expect, beforeEach } from 'vitest';
5
- import { ClassificacaoProgressivaService } from '../services/classificacao-progressiva.service.js';
6
- describe('ClassificacaoProgressivaService', () => {
7
- let service;
8
- beforeEach(() => {
9
- service = new ClassificacaoProgressivaService();
10
- });
11
- describe('registrarSinais', () => {
12
- it('deve extrair sinais do PRD (Fase 1)', () => {
13
- const prd = `
14
- # PRD - Sistema E-commerce
15
-
16
- ## Funcionalidades
17
- - Carrinho de compras
18
- - Pagamento com Stripe
19
- - Autenticação OAuth
20
- - Dashboard de vendas
21
- - Integração com API de frete
22
-
23
- ## Requisitos
24
- - LGPD compliance
25
- - Alta disponibilidade
26
- - Multi-tenant
27
- - Cronograma: 6 meses
28
- `;
29
- const fase = {
30
- numero: 1,
31
- nome: 'Produto',
32
- especialista: 'Gestão de Produto',
33
- entregavel_esperado: 'PRD.md',
34
- gate_checklist: [],
35
- template: 'PRD.md'
36
- };
37
- const sinais = service.registrarSinais(prd, fase, []);
38
- expect(sinais.length).toBeGreaterThan(0);
39
- // Deve detectar domínio
40
- const sinalDominio = sinais.find(s => s.categoria === 'dominio');
41
- expect(sinalDominio).toBeDefined();
42
- expect(sinalDominio?.valor).toBe('E-commerce');
43
- // Deve detectar timeline
44
- const sinalTimeline = sinais.find(s => s.categoria === 'timeline');
45
- expect(sinalTimeline).toBeDefined();
46
- expect(sinalTimeline?.valor).toContain('6 meses');
47
- });
48
- it('deve extrair sinais de requisitos (Fase 2)', () => {
49
- const requisitos = `
50
- # Requisitos
51
-
52
- ## Segurança
53
- - LGPD compliance obrigatório
54
- - Autenticação JWT
55
- - 2FA para admin
56
-
57
- ## Performance
58
- - Latência < 200ms
59
- - SLA 99.9%
60
- - Escalabilidade para 100k usuários
61
- `;
62
- const fase = {
63
- numero: 2,
64
- nome: 'Requisitos',
65
- especialista: 'Engenharia de Requisitos',
66
- entregavel_esperado: 'requisitos.md',
67
- gate_checklist: [],
68
- template: 'requisitos.md'
69
- };
70
- const sinais = service.registrarSinais(requisitos, fase, []);
71
- // Deve detectar compliance
72
- const sinalSeguranca = sinais.filter(s => s.categoria === 'seguranca');
73
- expect(sinalSeguranca.length).toBeGreaterThan(0);
74
- expect(sinalSeguranca.some(s => s.valor === 'LGPD/GDPR')).toBe(true);
75
- // Deve detectar volume
76
- const sinalVolume = sinais.find(s => s.categoria === 'volume');
77
- expect(sinalVolume).toBeDefined();
78
- });
79
- it('deve extrair sinais de arquitetura (Fase 4+)', () => {
80
- const arquitetura = `
81
- # Arquitetura
82
-
83
- ## Stack
84
- - Frontend: React/Next.js
85
- - Backend: Node.js/NestJS
86
- - Database: PostgreSQL
87
-
88
- ## Integrações
89
- - Stripe para pagamentos
90
- - SendGrid para emails
91
- - S3 para storage
92
-
93
- ## Padrões
94
- - Microserviços
95
- - Multi-tenant
96
- `;
97
- const fase = {
98
- numero: 4,
99
- nome: 'Arquitetura',
100
- especialista: 'Arquitetura de Software',
101
- entregavel_esperado: 'arquitetura.md',
102
- gate_checklist: [],
103
- template: 'arquitetura.md'
104
- };
105
- const sinais = service.registrarSinais(arquitetura, fase, []);
106
- // Deve detectar stack
107
- const sinaisStack = sinais.filter(s => s.categoria === 'stack');
108
- expect(sinaisStack.length).toBeGreaterThanOrEqual(3); // Frontend, Backend, Database
109
- // Deve detectar integrações
110
- const sinaisIntegracao = sinais.filter(s => s.categoria === 'integracao');
111
- expect(sinaisIntegracao.length).toBeGreaterThanOrEqual(2);
112
- });
113
- it('não deve duplicar sinais', () => {
114
- const prd = 'E-commerce com LGPD';
115
- const fase = {
116
- numero: 1,
117
- nome: 'Produto',
118
- especialista: 'Gestão de Produto',
119
- entregavel_esperado: 'PRD.md',
120
- gate_checklist: [],
121
- template: 'PRD.md'
122
- };
123
- const sinais1 = service.registrarSinais(prd, fase, []);
124
- const sinais2 = service.registrarSinais(prd, fase, sinais1);
125
- // Não deve duplicar
126
- expect(sinais2.length).toBe(sinais1.length);
127
- });
128
- });
129
- describe('recalcular', () => {
130
- it('deve classificar como simples com poucos sinais', () => {
131
- const sinais = [
132
- {
133
- fase: 1,
134
- fonte: 'prd',
135
- categoria: 'dominio',
136
- valor: 'Dashboard',
137
- confianca: 0.8,
138
- timestamp: new Date().toISOString()
139
- },
140
- {
141
- fase: 1,
142
- fonte: 'prd',
143
- categoria: 'escopo',
144
- valor: 'Baixo (<8 funcionalidades)',
145
- confianca: 0.7,
146
- timestamp: new Date().toISOString()
147
- }
148
- ];
149
- const resultado = service.recalcular(sinais);
150
- expect(resultado.nivel).toBe('simples');
151
- expect(resultado.confianca).toBeGreaterThan(0);
152
- expect(resultado.criterios.length).toBeGreaterThan(0);
153
- });
154
- it('deve classificar como médio com sinais moderados', () => {
155
- const sinais = [
156
- {
157
- fase: 1,
158
- fonte: 'prd',
159
- categoria: 'dominio',
160
- valor: 'E-commerce',
161
- confianca: 0.8,
162
- timestamp: new Date().toISOString()
163
- },
164
- {
165
- fase: 1,
166
- fonte: 'prd',
167
- categoria: 'escopo',
168
- valor: 'Médio (8-15 funcionalidades)',
169
- confianca: 0.8,
170
- timestamp: new Date().toISOString()
171
- },
172
- {
173
- fase: 2,
174
- fonte: 'requisitos',
175
- categoria: 'seguranca',
176
- valor: 'LGPD/GDPR',
177
- confianca: 0.9,
178
- timestamp: new Date().toISOString()
179
- },
180
- {
181
- fase: 2,
182
- fonte: 'requisitos',
183
- categoria: 'volume',
184
- valor: 'Médio (10k-100k usuários)',
185
- confianca: 0.8,
186
- timestamp: new Date().toISOString()
187
- },
188
- {
189
- fase: 4,
190
- fonte: 'arquitetura',
191
- categoria: 'integracao',
192
- valor: 'Gateway de pagamento',
193
- confianca: 0.9,
194
- timestamp: new Date().toISOString()
195
- },
196
- {
197
- fase: 4,
198
- fonte: 'arquitetura',
199
- categoria: 'integracao',
200
- valor: 'Email/SMTP',
201
- confianca: 0.85,
202
- timestamp: new Date().toISOString()
203
- },
204
- {
205
- fase: 4,
206
- fonte: 'arquitetura',
207
- categoria: 'stack',
208
- valor: 'Frontend: React',
209
- confianca: 0.95,
210
- timestamp: new Date().toISOString()
211
- },
212
- {
213
- fase: 4,
214
- fonte: 'arquitetura',
215
- categoria: 'stack',
216
- valor: 'Backend: Node.js',
217
- confianca: 0.95,
218
- timestamp: new Date().toISOString()
219
- }
220
- ];
221
- const resultado = service.recalcular(sinais);
222
- expect(resultado.nivel).toBe('medio');
223
- expect(resultado.confianca).toBeGreaterThan(50);
224
- });
225
- it('deve classificar como complexo com muitos sinais', () => {
226
- const sinais = [
227
- {
228
- fase: 1,
229
- fonte: 'prd',
230
- categoria: 'dominio',
231
- valor: 'FinTech',
232
- confianca: 0.8,
233
- timestamp: new Date().toISOString()
234
- },
235
- {
236
- fase: 1,
237
- fonte: 'prd',
238
- categoria: 'escopo',
239
- valor: 'Alto (>15 funcionalidades)',
240
- confianca: 0.85,
241
- timestamp: new Date().toISOString()
242
- },
243
- {
244
- fase: 2,
245
- fonte: 'requisitos',
246
- categoria: 'seguranca',
247
- valor: 'PCI-DSS',
248
- confianca: 0.9,
249
- timestamp: new Date().toISOString()
250
- },
251
- {
252
- fase: 2,
253
- fonte: 'requisitos',
254
- categoria: 'seguranca',
255
- valor: 'LGPD/GDPR',
256
- confianca: 0.9,
257
- timestamp: new Date().toISOString()
258
- },
259
- {
260
- fase: 2,
261
- fonte: 'requisitos',
262
- categoria: 'volume',
263
- valor: 'Alto (>100k usuários)',
264
- confianca: 0.9,
265
- timestamp: new Date().toISOString()
266
- },
267
- {
268
- fase: 4,
269
- fonte: 'arquitetura',
270
- categoria: 'integracao',
271
- valor: 'Gateway de pagamento',
272
- confianca: 0.9,
273
- timestamp: new Date().toISOString()
274
- },
275
- {
276
- fase: 4,
277
- fonte: 'arquitetura',
278
- categoria: 'integracao',
279
- valor: 'Autenticação social',
280
- confianca: 0.85,
281
- timestamp: new Date().toISOString()
282
- },
283
- {
284
- fase: 4,
285
- fonte: 'arquitetura',
286
- categoria: 'integracao',
287
- valor: 'Email/SMTP',
288
- confianca: 0.8,
289
- timestamp: new Date().toISOString()
290
- },
291
- {
292
- fase: 4,
293
- fonte: 'arquitetura',
294
- categoria: 'integracao',
295
- valor: 'Storage/CDN',
296
- confianca: 0.8,
297
- timestamp: new Date().toISOString()
298
- },
299
- {
300
- fase: 4,
301
- fonte: 'arquitetura',
302
- categoria: 'arquitetura',
303
- valor: 'Multi-tenant',
304
- confianca: 0.9,
305
- timestamp: new Date().toISOString()
306
- },
307
- {
308
- fase: 4,
309
- fonte: 'arquitetura',
310
- categoria: 'arquitetura',
311
- valor: 'Microserviços',
312
- confianca: 0.85,
313
- timestamp: new Date().toISOString()
314
- },
315
- {
316
- fase: 4,
317
- fonte: 'arquitetura',
318
- categoria: 'stack',
319
- valor: 'Frontend: React',
320
- confianca: 0.95,
321
- timestamp: new Date().toISOString()
322
- },
323
- {
324
- fase: 4,
325
- fonte: 'arquitetura',
326
- categoria: 'stack',
327
- valor: 'Backend: Node.js',
328
- confianca: 0.95,
329
- timestamp: new Date().toISOString()
330
- },
331
- {
332
- fase: 4,
333
- fonte: 'arquitetura',
334
- categoria: 'stack',
335
- valor: 'Database: PostgreSQL',
336
- confianca: 0.9,
337
- timestamp: new Date().toISOString()
338
- }
339
- ];
340
- const resultado = service.recalcular(sinais);
341
- expect(resultado.nivel).toBe('complexo');
342
- expect(resultado.confianca).toBeGreaterThan(70);
343
- });
344
- });
345
- describe('verificarExpansao', () => {
346
- it('deve detectar expansão de simples para médio', () => {
347
- const resultado = service.verificarExpansao('simples', 'medio', 2);
348
- expect(resultado.expandir).toBe(true);
349
- expect(resultado.de).toBe('simples');
350
- expect(resultado.para).toBe('medio');
351
- expect(resultado.fasesAdicionadas).toBe(6); // 13 - 7 = 6
352
- });
353
- it('deve detectar expansão de médio para complexo', () => {
354
- const resultado = service.verificarExpansao('medio', 'complexo', 5);
355
- expect(resultado.expandir).toBe(true);
356
- expect(resultado.de).toBe('medio');
357
- expect(resultado.para).toBe('complexo');
358
- expect(resultado.fasesAdicionadas).toBe(4); // 17 - 13 = 4
359
- });
360
- it('não deve expandir se nível não mudou', () => {
361
- const resultado = service.verificarExpansao('medio', 'medio', 3);
362
- expect(resultado.expandir).toBe(false);
363
- expect(resultado.fasesAdicionadas).toBe(0);
364
- });
365
- it('não deve expandir se nível diminuiu (proteção)', () => {
366
- const resultado = service.verificarExpansao('complexo', 'simples', 10);
367
- expect(resultado.expandir).toBe(false);
368
- expect(resultado.fasesAdicionadas).toBe(0);
369
- });
370
- });
371
- });
372
- //# sourceMappingURL=classificacao-progressiva.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classificacao-progressiva.test.js","sourceRoot":"","sources":["../../src/tests/classificacao-progressiva.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Testes para ContentResolverService
3
- */
4
- export {};
5
- //# sourceMappingURL=content-resolver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-resolver.test.d.ts","sourceRoot":"","sources":["../../src/tests/content-resolver.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,157 +0,0 @@
1
- /**
2
- * Testes para ContentResolverService
3
- */
4
- import { describe, it, expect, beforeEach, vi } from 'vitest';
5
- import { ContentResolverService } from '../services/content-resolver.service.js';
6
- import { existsSync } from 'fs';
7
- import { readFile, readdir } from 'fs/promises';
8
- // Mock fs modules
9
- vi.mock('fs', async () => {
10
- const actual = await vi.importActual('fs');
11
- return {
12
- ...actual,
13
- existsSync: vi.fn(),
14
- };
15
- });
16
- vi.mock('fs/promises', async () => {
17
- const actual = await vi.importActual('fs/promises');
18
- return {
19
- ...actual,
20
- readFile: vi.fn(),
21
- readdir: vi.fn(),
22
- };
23
- });
24
- const mockExistsSync = vi.mocked(existsSync);
25
- const mockReadFile = vi.mocked(readFile);
26
- const mockReaddir = vi.mocked(readdir);
27
- describe('ContentResolverService', () => {
28
- let service;
29
- const testDir = '/test/project';
30
- beforeEach(() => {
31
- vi.clearAllMocks();
32
- // Default: server content exists, project content does not
33
- mockExistsSync.mockImplementation((path) => {
34
- const pathStr = String(path);
35
- if (pathStr.includes('.maestro/content'))
36
- return false;
37
- if (pathStr.includes('content'))
38
- return true;
39
- return false;
40
- });
41
- service = new ContentResolverService(testDir);
42
- });
43
- describe('hasProjectContent', () => {
44
- it('deve retornar false quando .maestro/content não existe', () => {
45
- mockExistsSync.mockImplementation((path) => {
46
- return !String(path).includes('.maestro');
47
- });
48
- const svc = new ContentResolverService(testDir);
49
- expect(svc.hasProjectContent()).toBe(false);
50
- });
51
- it('deve retornar true quando .maestro/content existe', () => {
52
- mockExistsSync.mockImplementation(() => true);
53
- const svc = new ContentResolverService(testDir);
54
- expect(svc.hasProjectContent()).toBe(true);
55
- });
56
- });
57
- describe('getSkillDir', () => {
58
- it('deve priorizar projeto local quando disponível', () => {
59
- mockExistsSync.mockImplementation((path) => {
60
- const p = String(path);
61
- // .maestro/content deve existir E a skill dentro dele também
62
- if (p.includes('.maestro') && p.includes('content'))
63
- return true;
64
- return false;
65
- });
66
- const svc = new ContentResolverService(testDir);
67
- const dir = svc.getSkillDir('specialist-arquitetura');
68
- expect(dir).not.toBeNull();
69
- expect(dir).toContain('.maestro');
70
- expect(dir).toContain('specialist-arquitetura');
71
- });
72
- it('deve usar servidor como fallback', () => {
73
- mockExistsSync.mockImplementation((path) => {
74
- const p = String(path);
75
- if (p.includes('.maestro'))
76
- return false;
77
- if (p.includes('content/skills/specialist-arquitetura'))
78
- return true;
79
- if (p.includes('content'))
80
- return true;
81
- return false;
82
- });
83
- const svc = new ContentResolverService(testDir);
84
- const dir = svc.getSkillDir('specialist-arquitetura');
85
- expect(dir).not.toBeNull();
86
- expect(dir).not.toContain('.maestro');
87
- });
88
- it('deve retornar null quando skill não existe em nenhum lugar', () => {
89
- mockExistsSync.mockReturnValue(false);
90
- const svc = new ContentResolverService(testDir);
91
- const dir = svc.getSkillDir('skill-inexistente');
92
- expect(dir).toBeNull();
93
- });
94
- });
95
- describe('readSkillFile', () => {
96
- it('deve ler arquivo de skill e cachear resultado', async () => {
97
- const skillContent = '# Test Skill\n\nConteúdo de teste';
98
- mockExistsSync.mockImplementation((path) => {
99
- const p = String(path);
100
- if (p.includes('.maestro'))
101
- return false;
102
- return true;
103
- });
104
- mockReadFile.mockResolvedValue(skillContent);
105
- const svc = new ContentResolverService(testDir);
106
- const result1 = await svc.readSkillFile('specialist-test', 'SKILL.md');
107
- const result2 = await svc.readSkillFile('specialist-test', 'SKILL.md');
108
- expect(result1).toBe(skillContent);
109
- expect(result2).toBe(skillContent);
110
- // Segundo call usa cache — readFile chamado apenas 1x
111
- expect(mockReadFile).toHaveBeenCalledTimes(1);
112
- });
113
- it('deve retornar null quando skill não encontrada', async () => {
114
- mockExistsSync.mockReturnValue(false);
115
- const svc = new ContentResolverService(testDir);
116
- const result = await svc.readSkillFile('inexistente', 'SKILL.md');
117
- expect(result).toBeNull();
118
- });
119
- });
120
- describe('listSkillResources', () => {
121
- it('deve listar apenas arquivos .md', async () => {
122
- mockExistsSync.mockImplementation((path) => {
123
- const p = String(path);
124
- if (p.includes('.maestro'))
125
- return false;
126
- return true;
127
- });
128
- mockReaddir.mockResolvedValue(['template.md', 'README.txt', 'example.md']);
129
- const svc = new ContentResolverService(testDir);
130
- const result = await svc.listSkillResources('specialist-test', 'templates');
131
- expect(result).toEqual(['template.md', 'example.md']);
132
- });
133
- it('deve retornar array vazio quando skill não existe', async () => {
134
- mockExistsSync.mockReturnValue(false);
135
- const svc = new ContentResolverService(testDir);
136
- const result = await svc.listSkillResources('inexistente', 'templates');
137
- expect(result).toEqual([]);
138
- });
139
- });
140
- describe('clearCache', () => {
141
- it('deve limpar cache e forçar re-leitura', async () => {
142
- const content = '# Cached';
143
- mockExistsSync.mockImplementation((path) => {
144
- if (String(path).includes('.maestro'))
145
- return false;
146
- return true;
147
- });
148
- mockReadFile.mockResolvedValue(content);
149
- const svc = new ContentResolverService(testDir);
150
- await svc.readSkillFile('test', 'SKILL.md');
151
- svc.clearCache();
152
- await svc.readSkillFile('test', 'SKILL.md');
153
- expect(mockReadFile).toHaveBeenCalledTimes(2);
154
- });
155
- });
156
- });
157
- //# sourceMappingURL=content-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"content-resolver.test.js","sourceRoot":"","sources":["../../src/tests/content-resolver.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGhD,kBAAkB;AAClB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;IACrB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO;QACH,GAAG,MAAM;QACT,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;KACtB,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACpD,OAAO;QACH,GAAG,MAAM;QACT,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;KACnB,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7C,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEvC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAI,OAA+B,CAAC;IACpC,MAAM,OAAO,GAAG,eAAe,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,2DAA2D;QAC3D,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAC9D,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YACzD,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,6DAA6D;gBAC7D,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACjE,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,CAAC,GAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzC,IAAI,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACrE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACvC,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YAClE,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,YAAY,GAAG,mCAAmC,CAAC;YACzD,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,YAAY,CAAC,iBAAiB,CAAC,YAAmB,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;YAEvE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,sDAAsD;YACtD,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC5D,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAQ,CAAC,CAAC;YAElF,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,OAAO,GAAG,UAAU,CAAC;YAC3B,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACpD,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,YAAY,CAAC,iBAAiB,CAAC,OAAc,CAAC,CAAC;YAE/C,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5C,GAAG,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAE5C,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,12 +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
- export {};
12
- //# sourceMappingURL=deliverable-validator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deliverable-validator.test.d.ts","sourceRoot":"","sources":["../../src/tests/deliverable-validator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}