@maestro-ai/mcp-server 5.4.5 → 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 (127) 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/validator.d.ts +5 -6
  19. package/dist/gates/validator.d.ts.map +1 -1
  20. package/dist/gates/validator.js +9 -6
  21. package/dist/gates/validator.js.map +1 -1
  22. package/dist/middleware/adr-generation.middleware.d.ts +5 -0
  23. package/dist/middleware/adr-generation.middleware.d.ts.map +1 -0
  24. package/dist/middleware/adr-generation.middleware.js +214 -0
  25. package/dist/middleware/adr-generation.middleware.js.map +1 -0
  26. package/dist/middleware/flow-engine.middleware.d.ts +5 -3
  27. package/dist/middleware/flow-engine.middleware.d.ts.map +1 -1
  28. package/dist/middleware/flow-engine.middleware.js +18 -10
  29. package/dist/middleware/flow-engine.middleware.js.map +1 -1
  30. package/dist/middleware/index.d.ts +18 -11
  31. package/dist/middleware/index.d.ts.map +1 -1
  32. package/dist/middleware/index.js +24 -11
  33. package/dist/middleware/index.js.map +1 -1
  34. package/dist/middleware/orchestration-pipeline.middleware.d.ts +42 -0
  35. package/dist/middleware/orchestration-pipeline.middleware.d.ts.map +1 -0
  36. package/dist/middleware/orchestration-pipeline.middleware.js +57 -0
  37. package/dist/middleware/orchestration-pipeline.middleware.js.map +1 -0
  38. package/dist/middleware/skill-injection.middleware.js +1 -1
  39. package/dist/middleware/skill-injection.middleware.js.map +1 -1
  40. package/dist/middleware/validation.middleware.d.ts +11 -0
  41. package/dist/middleware/validation.middleware.d.ts.map +1 -1
  42. package/dist/middleware/validation.middleware.js +54 -0
  43. package/dist/middleware/validation.middleware.js.map +1 -1
  44. package/dist/router.d.ts.map +1 -1
  45. package/dist/router.js +20 -14
  46. package/dist/router.js.map +1 -1
  47. package/dist/services/flow-engine.d.ts +1 -0
  48. package/dist/services/flow-engine.d.ts.map +1 -1
  49. package/dist/services/flow-engine.js +14 -2
  50. package/dist/services/flow-engine.js.map +1 -1
  51. package/dist/services/watcher.service.d.ts +45 -0
  52. package/dist/services/watcher.service.d.ts.map +1 -0
  53. package/dist/services/watcher.service.js +106 -0
  54. package/dist/services/watcher.service.js.map +1 -0
  55. package/dist/state/context.d.ts +15 -4
  56. package/dist/state/context.d.ts.map +1 -1
  57. package/dist/state/context.js +36 -9
  58. package/dist/state/context.js.map +1 -1
  59. package/dist/state/storage.d.ts.map +1 -1
  60. package/dist/state/storage.js +6 -0
  61. package/dist/state/storage.js.map +1 -1
  62. package/dist/tests/aprovar-gate.test.d.ts +2 -0
  63. package/dist/tests/aprovar-gate.test.d.ts.map +1 -0
  64. package/dist/tests/aprovar-gate.test.js +113 -0
  65. package/dist/tests/aprovar-gate.test.js.map +1 -0
  66. package/dist/tests/deliverable-validator.test.d.ts +12 -0
  67. package/dist/tests/deliverable-validator.test.d.ts.map +1 -0
  68. package/dist/tests/deliverable-validator.test.js +214 -0
  69. package/dist/tests/deliverable-validator.test.js.map +1 -0
  70. package/dist/tests/flow-engine.test.d.ts +2 -0
  71. package/dist/tests/flow-engine.test.d.ts.map +1 -0
  72. package/dist/tests/flow-engine.test.js +85 -0
  73. package/dist/tests/flow-engine.test.js.map +1 -0
  74. package/dist/tests/gate-orientation.test.d.ts +2 -0
  75. package/dist/tests/gate-orientation.test.d.ts.map +1 -0
  76. package/dist/tests/gate-orientation.test.js +59 -0
  77. package/dist/tests/gate-orientation.test.js.map +1 -0
  78. package/dist/tests/middleware.test.js +30 -4
  79. package/dist/tests/middleware.test.js.map +1 -1
  80. package/dist/tests/watcher.service.test.d.ts +2 -0
  81. package/dist/tests/watcher.service.test.d.ts.map +1 -0
  82. package/dist/tests/watcher.service.test.js +119 -0
  83. package/dist/tests/watcher.service.test.js.map +1 -0
  84. package/dist/tools/aprovar-gate.d.ts.map +1 -1
  85. package/dist/tools/aprovar-gate.js +4 -0
  86. package/dist/tools/aprovar-gate.js.map +1 -1
  87. package/dist/tools/contexto.d.ts.map +1 -1
  88. package/dist/tools/contexto.js +41 -0
  89. package/dist/tools/contexto.js.map +1 -1
  90. package/dist/tools/proximo.d.ts.map +1 -1
  91. package/dist/tools/proximo.js +224 -54
  92. package/dist/tools/proximo.js.map +1 -1
  93. package/dist/tools/status.d.ts.map +1 -1
  94. package/dist/tools/status.js +27 -0
  95. package/dist/tools/status.js.map +1 -1
  96. package/dist/tools/validar-gate.d.ts +8 -1
  97. package/dist/tools/validar-gate.d.ts.map +1 -1
  98. package/dist/tools/validar-gate.js +147 -99
  99. package/dist/tools/validar-gate.js.map +1 -1
  100. package/dist/types/config.d.ts +2 -0
  101. package/dist/types/config.d.ts.map +1 -1
  102. package/dist/types/config.js +2 -0
  103. package/dist/types/config.js.map +1 -1
  104. package/dist/types/index.d.ts +6 -0
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/types/index.js.map +1 -1
  107. package/dist/utils/gate-orientation.d.ts +11 -0
  108. package/dist/utils/gate-orientation.d.ts.map +1 -0
  109. package/dist/utils/gate-orientation.js +64 -0
  110. package/dist/utils/gate-orientation.js.map +1 -0
  111. package/dist/utils/ide-paths.d.ts +11 -0
  112. package/dist/utils/ide-paths.d.ts.map +1 -1
  113. package/dist/utils/ide-paths.js +27 -0
  114. package/dist/utils/ide-paths.js.map +1 -1
  115. package/dist/utils/instructions.d.ts +6 -1
  116. package/dist/utils/instructions.d.ts.map +1 -1
  117. package/dist/utils/instructions.js +32 -1
  118. package/dist/utils/instructions.js.map +1 -1
  119. package/package.json +2 -1
  120. package/dist/gates/compatibility-wrapper.d.ts +0 -139
  121. package/dist/gates/compatibility-wrapper.d.ts.map +0 -1
  122. package/dist/gates/compatibility-wrapper.js +0 -362
  123. package/dist/gates/compatibility-wrapper.js.map +0 -1
  124. package/dist/gates/unified-validator.d.ts +0 -67
  125. package/dist/gates/unified-validator.d.ts.map +0 -1
  126. package/dist/gates/unified-validator.js +0 -234
  127. package/dist/gates/unified-validator.js.map +0 -1
@@ -1,234 +0,0 @@
1
- /**
2
- * Unified Validation Service (v6.1)
3
- *
4
- * Consolidates 4 parallel validation systems into a single pipeline:
5
- * - template-validator.ts (template-based validation)
6
- * - intelligent-validator.ts (semantic validation)
7
- * - quality-scorer.ts (quality metrics)
8
- * - specialist-phase-handler.ts inline (section-check validation)
9
- *
10
- * This service provides a single entry point for validating any deliverable,
11
- * regardless of the phase or type.
12
- *
13
- * @since v6.1.0 — Opportunity #1 from Analysis
14
- */
15
- import { validarContraTemplate } from "./template-validator.js";
16
- import { parseTemplate } from "./template-parser.js";
17
- import { calcularQualidade } from "./quality-scorer.js";
18
- import { existsSync } from "fs";
19
- import { join } from "path";
20
- // === MAIN VALIDATION FUNCTION ===
21
- /**
22
- * Validates deliverable content using the best available method.
23
- *
24
- * Resolution order:
25
- * 1. If template is provided or can be resolved → template-based validation
26
- * 2. Fallback → section-check validation (PRD-specific)
27
- * 3. Always → quality scoring overlay
28
- */
29
- export function validateDeliverable(opts) {
30
- const { content, tier = 'base' } = opts;
31
- // Normalize content first
32
- const normalizedContent = normalizeContent(content);
33
- // Try template-based validation first
34
- let templateResult = null;
35
- let template = opts.template || null;
36
- if (!template && opts.contentDir && opts.skillName) {
37
- template = tryResolveTemplate(opts.contentDir, opts.skillName);
38
- }
39
- if (template) {
40
- templateResult = validarContraTemplate(normalizedContent, template, tier);
41
- }
42
- // Calculate quality metrics
43
- let qualityMetrics = null;
44
- if (template) {
45
- try {
46
- qualityMetrics = calcularQualidade(normalizedContent, template, tier);
47
- }
48
- catch { /* ignore quality scoring errors */ }
49
- }
50
- // Build unified result
51
- if (templateResult) {
52
- return buildFromTemplateResult(templateResult, qualityMetrics);
53
- }
54
- // Fallback: section-check (for PRD and similar)
55
- return buildFromSectionCheck(normalizedContent, tier, qualityMetrics);
56
- }
57
- // === HELPERS ===
58
- function normalizeContent(content) {
59
- let normalized = content;
60
- // Fix JSON-escaped newlines
61
- const realNewlines = (normalized.match(/\n/g) || []).length;
62
- const literalNewlines = (normalized.match(/\\n/g) || []).length;
63
- if (literalNewlines > realNewlines * 2) {
64
- normalized = normalized.replace(/\\n/g, '\n');
65
- }
66
- normalized = normalized.replace(/\r\n/g, '\n');
67
- normalized = normalized.replace(/\\"/g, '"');
68
- normalized = normalized.replace(/\\\\n/g, '\n');
69
- return normalized.trim();
70
- }
71
- function tryResolveTemplate(contentDir, skillName) {
72
- const possiblePaths = [
73
- join(contentDir, 'skills', skillName, 'resources', 'templates'),
74
- join(contentDir, 'skills', skillName, 'templates'),
75
- ];
76
- for (const basePath of possiblePaths) {
77
- if (!existsSync(basePath))
78
- continue;
79
- // Look for template files
80
- const templateFiles = ['PRD.md', 'template.md', 'entregavel.md'];
81
- for (const file of templateFiles) {
82
- const fullPath = join(basePath, file);
83
- if (existsSync(fullPath)) {
84
- const parsed = parseTemplate(fullPath);
85
- if (parsed)
86
- return parsed;
87
- }
88
- }
89
- }
90
- return null;
91
- }
92
- function buildFromTemplateResult(result, quality) {
93
- const qualityScore = quality?.overall ?? 50;
94
- // Combine template score with quality score (70/30 weight)
95
- const combinedScore = Math.round(result.score * 0.7 + qualityScore * 0.3);
96
- return {
97
- valid: result.valido,
98
- score: combinedScore,
99
- maturityLevel: scoreToMaturity(combinedScore),
100
- canAdvance: result.valido || combinedScore >= 70,
101
- breakdown: {
102
- structure: result.scoreDetalhado?.estrutura ?? 0,
103
- content: result.scoreDetalhado?.conteudo ?? 0,
104
- quality: qualityScore,
105
- completeness: result.scoreDetalhado?.checkboxes ?? 0,
106
- },
107
- passed: result.secoesEncontradas?.map(s => `✅ ${s}`) ?? [],
108
- failed: result.secoesFaltando?.map(s => `❌ ${s}`) ?? [],
109
- warnings: result.placeholdersNaoSubstituidos?.map(p => `⚠️ Placeholder: ${p}`) ?? [],
110
- suggestions: result.sugestoes ?? [],
111
- method: 'template',
112
- };
113
- }
114
- /**
115
- * Section-check validation (fallback for PRD and similar documents).
116
- * Uses the same logic as specialist-phase-handler.ts but exposed as a reusable function.
117
- */
118
- function buildFromSectionCheck(content, tier, quality) {
119
- const sections = splitBySections(content);
120
- const checks = getSectionChecks();
121
- const passed = [];
122
- const failed = [];
123
- const warnings = [];
124
- let structureScore = 0;
125
- let maxStructure = 0;
126
- for (const check of checks) {
127
- maxStructure += check.weight;
128
- const section = sections.find(s => check.heading.test(s.heading));
129
- const found = !!section;
130
- const contentLength = section ? section.content.length : 0;
131
- const hasContent = found && contentLength >= check.minContentLength;
132
- if (found && hasContent) {
133
- structureScore += check.weight;
134
- passed.push(`✅ ${check.label}: Completo (${contentLength} chars)`);
135
- }
136
- else if (found) {
137
- structureScore += Math.floor(check.weight * 0.5);
138
- warnings.push(`⚠️ ${check.label}: Conteúdo insuficiente (${contentLength}/${check.minContentLength} chars)`);
139
- }
140
- else {
141
- failed.push(`❌ ${check.label}: Seção não encontrada`);
142
- }
143
- }
144
- // Bonus for word count
145
- const wordCount = content.split(/\s+/).length;
146
- let bonus = 0;
147
- if (wordCount > 500)
148
- bonus += 10;
149
- if (wordCount > 1000)
150
- bonus += 5;
151
- const rawScore = Math.min(Math.round((structureScore / maxStructure) * 85) + bonus, 100);
152
- const qualityScore = quality?.overall ?? 50;
153
- const finalScore = Math.round(rawScore * 0.7 + qualityScore * 0.3);
154
- return {
155
- valid: finalScore >= 70,
156
- score: finalScore,
157
- maturityLevel: scoreToMaturity(finalScore),
158
- canAdvance: finalScore >= 70,
159
- breakdown: {
160
- structure: Math.round((structureScore / maxStructure) * 100),
161
- content: Math.round(Math.min(wordCount / 5, 100)),
162
- quality: qualityScore,
163
- completeness: Math.round((passed.length / checks.length) * 100),
164
- },
165
- passed,
166
- failed,
167
- warnings,
168
- suggestions: generateSuggestions(failed, warnings, wordCount),
169
- method: 'section-check',
170
- };
171
- }
172
- function scoreToMaturity(score) {
173
- if (score >= 90)
174
- return 5;
175
- if (score >= 75)
176
- return 4;
177
- if (score >= 60)
178
- return 3;
179
- if (score >= 40)
180
- return 2;
181
- return 1;
182
- }
183
- function getSectionChecks() {
184
- return [
185
- { heading: /^[\d.\s]*(sum[aá]rio|summary|executiv)/i, minContentLength: 100, weight: 10, label: 'Sumário Executivo' },
186
- { heading: /^[\d.\s]*(problema|problem|oportunidade|dor|pain)/i, minContentLength: 150, weight: 15, label: 'Problema e Oportunidade' },
187
- { heading: /^[\d.\s]*(persona|jobs?\s*to\s*be|p[uú]blico|usu[aá]rios?|user)/i, minContentLength: 100, weight: 15, label: 'Personas e Público-alvo' },
188
- { heading: /^[\d.\s]*(mvp|funcionalidade|feature|solu[cç][aã]o|escopo)/i, minContentLength: 100, weight: 15, label: 'MVP e Funcionalidades' },
189
- { heading: /^[\d.\s]*(m[eé]trica|kpi|north\s*star|sucesso|indicador)/i, minContentLength: 50, weight: 10, label: 'Métricas de Sucesso' },
190
- { heading: /^[\d.\s]*(risco|mitiga[cç])/i, minContentLength: 80, weight: 10, label: 'Riscos e Mitigações' },
191
- { heading: /^[\d.\s]*(timeline|cronograma|marco|prazo|roadmap)/i, minContentLength: 50, weight: 5, label: 'Timeline e Marcos' },
192
- { heading: /^[\d.\s]*(vis[aã]o|estrat[eé]gia|go.to.market|escopo)/i, minContentLength: 50, weight: 5, label: 'Visão e Estratégia' },
193
- ];
194
- }
195
- function splitBySections(content) {
196
- const lines = content.split('\n');
197
- const sections = [];
198
- let currentHeading = '';
199
- let currentContent = [];
200
- for (const line of lines) {
201
- const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
202
- if (headingMatch) {
203
- if (currentHeading) {
204
- sections.push({ heading: currentHeading, content: currentContent.join('\n').trim() });
205
- }
206
- currentHeading = headingMatch[2].trim();
207
- currentContent = [];
208
- }
209
- else {
210
- currentContent.push(line);
211
- }
212
- }
213
- if (currentHeading) {
214
- sections.push({ heading: currentHeading, content: currentContent.join('\n').trim() });
215
- }
216
- return sections;
217
- }
218
- function generateSuggestions(failed, warnings, wordCount) {
219
- const suggestions = [];
220
- if (failed.length > 0) {
221
- suggestions.push(`Adicione as ${failed.length} seção(ões) faltante(s) ao documento`);
222
- }
223
- if (warnings.length > 0) {
224
- suggestions.push(`Expanda o conteúdo de ${warnings.length} seção(ões) com conteúdo insuficiente`);
225
- }
226
- if (wordCount < 200) {
227
- suggestions.push(`Documento muito curto (${wordCount} palavras). Mínimo recomendado: 500`);
228
- }
229
- if (wordCount < 500) {
230
- suggestions.push('Adicione mais detalhes para atingir bônus de completude (+10 pontos)');
231
- }
232
- return suggestions;
233
- }
234
- //# sourceMappingURL=unified-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unified-validator.js","sourceRoot":"","sources":["../../src/gates/unified-validator.ts"],"names":[],"mappings":"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"}