@maestro-ai/mcp-server 2.2.0 → 2.4.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.
@@ -0,0 +1,252 @@
1
+ import { getSecoesObrigatoriasPorTier, gerarRegexSecao } from "./template-parser.js";
2
+ /**
3
+ * Valida um entregável contra um template
4
+ */
5
+ export function validarContraTemplate(entregavel, template, tier = "base") {
6
+ const secoesObrigatorias = getSecoesObrigatoriasPorTier(template, tier);
7
+ const secoesEncontradas = [];
8
+ const secoesFaltando = [];
9
+ const feedback = [];
10
+ const sugestoes = [];
11
+ // 1. Validar estrutura de seções
12
+ for (const secao of secoesObrigatorias) {
13
+ const regex = gerarRegexSecao(secao);
14
+ const encontrada = regex.test(entregavel);
15
+ if (encontrada) {
16
+ secoesEncontradas.push(secao.titulo);
17
+ }
18
+ else {
19
+ secoesFaltando.push(secao.titulo);
20
+ feedback.push(`❌ Seção obrigatória faltando: **${secao.titulo}**`);
21
+ sugestoes.push(`Adicione a seção "${secao.titulo}" seguindo o template`);
22
+ }
23
+ }
24
+ // 2. Validar checkboxes
25
+ const { checkboxesPreenchidos, checkboxesTotal } = validarCheckboxes(entregavel, template, tier, feedback, sugestoes);
26
+ // 3. Validar placeholders
27
+ const placeholdersNaoSubstituidos = detectarPlaceholders(entregavel, template.camposObrigatorios);
28
+ if (placeholdersNaoSubstituidos.length > 0) {
29
+ feedback.push(`⚠️ ${placeholdersNaoSubstituidos.length} placeholder(s) não substituído(s)`);
30
+ placeholdersNaoSubstituidos.slice(0, 3).forEach(p => {
31
+ sugestoes.push(`Substitua o placeholder: [${p}]`);
32
+ });
33
+ }
34
+ // 4. Validar campos obrigatórios
35
+ const camposFaltando = validarCamposObrigatorios(entregavel, template, feedback);
36
+ // 5. Validar checklist de qualidade
37
+ const checklistQualidadeScore = validarChecklistQualidade(entregavel, template.checklistQualidade, feedback);
38
+ // 6. Calcular scores
39
+ const scoreDetalhado = calcularScores(secoesEncontradas.length, secoesObrigatorias.length, checkboxesPreenchidos, checkboxesTotal, placeholdersNaoSubstituidos.length, template.camposObrigatorios.length, checklistQualidadeScore, entregavel.length);
40
+ // 7. Determinar se é válido
41
+ const valido = determinarValidade(secoesFaltando.length, checkboxesPreenchidos, checkboxesTotal, tier, scoreDetalhado.total);
42
+ return {
43
+ valido,
44
+ score: scoreDetalhado.total,
45
+ scoreDetalhado,
46
+ secoesEncontradas,
47
+ secoesFaltando,
48
+ checkboxesPreenchidos,
49
+ checkboxesTotal,
50
+ placeholdersNaoSubstituidos,
51
+ camposFaltando,
52
+ feedback,
53
+ sugestoes,
54
+ };
55
+ }
56
+ /**
57
+ * Valida checkboxes preenchidos no entregável
58
+ */
59
+ function validarCheckboxes(entregavel, template, tier, feedback, sugestoes) {
60
+ const tierOrder = { essencial: 0, base: 1, avancado: 2 };
61
+ const tierAtual = tierOrder[tier];
62
+ const checkboxesRelevantes = template.checkboxes.filter(cb => {
63
+ const tierMinimo = tierOrder[cb.tierMinimo];
64
+ return tierAtual >= tierMinimo;
65
+ });
66
+ let checkboxesPreenchidos = 0;
67
+ const checkboxesNaoPreenchidos = [];
68
+ for (const checkbox of checkboxesRelevantes) {
69
+ const textoLimpo = checkbox.texto
70
+ .toLowerCase()
71
+ .replace(/[^a-z0-9\s]/g, "")
72
+ .slice(0, 30);
73
+ const regexPreenchido = new RegExp(`\\[x\\].*?${textoLimpo}`, "i");
74
+ if (regexPreenchido.test(entregavel)) {
75
+ checkboxesPreenchidos++;
76
+ }
77
+ else {
78
+ checkboxesNaoPreenchidos.push(checkbox);
79
+ }
80
+ }
81
+ const percentualPreenchido = checkboxesRelevantes.length > 0
82
+ ? (checkboxesPreenchidos / checkboxesRelevantes.length) * 100
83
+ : 100;
84
+ if (percentualPreenchido < 50) {
85
+ feedback.push(`⚠️ Apenas ${Math.round(percentualPreenchido)}% dos checkboxes preenchidos`);
86
+ }
87
+ if (checkboxesNaoPreenchidos.length > 0 && checkboxesNaoPreenchidos.length <= 5) {
88
+ feedback.push(`📋 Checkboxes pendentes:`);
89
+ checkboxesNaoPreenchidos.slice(0, 5).forEach(cb => {
90
+ sugestoes.push(`Preencher: ${cb.texto.slice(0, 60)}`);
91
+ });
92
+ }
93
+ return {
94
+ checkboxesPreenchidos,
95
+ checkboxesTotal: checkboxesRelevantes.length,
96
+ };
97
+ }
98
+ /**
99
+ * Detecta placeholders não substituídos
100
+ */
101
+ function detectarPlaceholders(entregavel, camposObrigatorios) {
102
+ const placeholdersEncontrados = [];
103
+ for (const campo of camposObrigatorios) {
104
+ const regex = new RegExp(`\\[${campo}\\]`, "i");
105
+ if (regex.test(entregavel)) {
106
+ placeholdersEncontrados.push(campo);
107
+ }
108
+ }
109
+ return placeholdersEncontrados;
110
+ }
111
+ /**
112
+ * Valida campos obrigatórios preenchidos
113
+ */
114
+ function validarCamposObrigatorios(entregavel, template, feedback) {
115
+ const camposFaltando = [];
116
+ for (const campo of template.camposObrigatorios.slice(0, 10)) {
117
+ const regex = new RegExp(`\\[${campo}\\]`, "i");
118
+ if (regex.test(entregavel)) {
119
+ camposFaltando.push(campo);
120
+ }
121
+ }
122
+ if (camposFaltando.length > 0) {
123
+ feedback.push(`⚠️ ${camposFaltando.length} campo(s) obrigatório(s) não preenchido(s)`);
124
+ }
125
+ return camposFaltando;
126
+ }
127
+ /**
128
+ * Valida checklist de qualidade
129
+ */
130
+ function validarChecklistQualidade(entregavel, checklistQualidade, feedback) {
131
+ if (checklistQualidade.length === 0) {
132
+ return 100;
133
+ }
134
+ let itensEncontrados = 0;
135
+ for (const item of checklistQualidade) {
136
+ const textoLimpo = item
137
+ .toLowerCase()
138
+ .replace(/[^a-z0-9\s]/g, "")
139
+ .slice(0, 30);
140
+ const regexItem = new RegExp(`\\[x\\].*?${textoLimpo}`, "i");
141
+ if (regexItem.test(entregavel)) {
142
+ itensEncontrados++;
143
+ }
144
+ }
145
+ const percentual = (itensEncontrados / checklistQualidade.length) * 100;
146
+ if (percentual < 70) {
147
+ feedback.push(`⚠️ Checklist de qualidade: ${Math.round(percentual)}% completo`);
148
+ }
149
+ return percentual;
150
+ }
151
+ /**
152
+ * Calcula scores detalhados
153
+ */
154
+ function calcularScores(secoesEncontradas, secoesTotal, checkboxesPreenchidos, checkboxesTotal, placeholdersNaoSubstituidos, totalPlaceholders, checklistQualidadeScore, tamanhoEntregavel) {
155
+ // Score de estrutura (30%)
156
+ const scoreEstrutura = secoesTotal > 0
157
+ ? (secoesEncontradas / secoesTotal) * 100
158
+ : 100;
159
+ // Score de conteúdo (40%)
160
+ const placeholdersSubstituidos = totalPlaceholders > 0
161
+ ? ((totalPlaceholders - placeholdersNaoSubstituidos) / totalPlaceholders) * 100
162
+ : 100;
163
+ const densidadeScore = Math.min((tamanhoEntregavel / 1000) * 100, 100);
164
+ const scoreConteudo = (placeholdersSubstituidos * 0.7) + (densidadeScore * 0.3);
165
+ // Score de checkboxes (20%)
166
+ const scoreCheckboxes = checkboxesTotal > 0
167
+ ? (checkboxesPreenchidos / checkboxesTotal) * 100
168
+ : 100;
169
+ // Score de qualidade (10%)
170
+ const scoreQualidade = checklistQualidadeScore;
171
+ // Score total
172
+ const scoreTotal = Math.round((scoreEstrutura * 0.3) +
173
+ (scoreConteudo * 0.4) +
174
+ (scoreCheckboxes * 0.2) +
175
+ (scoreQualidade * 0.1));
176
+ return {
177
+ estrutura: Math.round(scoreEstrutura),
178
+ conteudo: Math.round(scoreConteudo),
179
+ checkboxes: Math.round(scoreCheckboxes),
180
+ qualidade: Math.round(scoreQualidade),
181
+ total: scoreTotal,
182
+ };
183
+ }
184
+ /**
185
+ * Determina se o entregável é válido
186
+ */
187
+ function determinarValidade(secoesFaltando, checkboxesPreenchidos, checkboxesTotal, tier, scoreTotal) {
188
+ // Critérios por tier
189
+ const criterios = {
190
+ essencial: { minScore: 50, minCheckboxes: 0.5 },
191
+ base: { minScore: 70, minCheckboxes: 0.7 },
192
+ avancado: { minScore: 85, minCheckboxes: 0.9 },
193
+ };
194
+ const criterio = criterios[tier];
195
+ const percentualCheckboxes = checkboxesTotal > 0
196
+ ? checkboxesPreenchidos / checkboxesTotal
197
+ : 1;
198
+ return (secoesFaltando === 0 &&
199
+ scoreTotal >= criterio.minScore &&
200
+ percentualCheckboxes >= criterio.minCheckboxes);
201
+ }
202
+ /**
203
+ * Formata resultado de validação para exibição
204
+ */
205
+ export function formatarResultadoValidacao(resultado, tier) {
206
+ const { valido, score, scoreDetalhado, feedback, sugestoes } = resultado;
207
+ let output = "";
208
+ // Status geral
209
+ if (valido) {
210
+ output += `✅ **Validação aprovada!** Score: ${score}/100\n\n`;
211
+ }
212
+ else {
213
+ output += `⚠️ **Validação pendente** Score: ${score}/100\n\n`;
214
+ }
215
+ // Score detalhado
216
+ output += `### 📊 Score Detalhado\n\n`;
217
+ output += `- **Estrutura (30%):** ${scoreDetalhado.estrutura}/100\n`;
218
+ output += `- **Conteúdo (40%):** ${scoreDetalhado.conteudo}/100\n`;
219
+ output += `- **Checkboxes (20%):** ${scoreDetalhado.checkboxes}/100\n`;
220
+ output += `- **Qualidade (10%):** ${scoreDetalhado.qualidade}/100\n\n`;
221
+ // Progresso de checkboxes
222
+ const percentualCheckboxes = resultado.checkboxesTotal > 0
223
+ ? Math.round((resultado.checkboxesPreenchidos / resultado.checkboxesTotal) * 100)
224
+ : 100;
225
+ output += `### ✅ Checkboxes: ${resultado.checkboxesPreenchidos}/${resultado.checkboxesTotal} (${percentualCheckboxes}%)\n\n`;
226
+ // Seções
227
+ if (resultado.secoesFaltando.length > 0) {
228
+ output += `### ❌ Seções Faltando (${resultado.secoesFaltando.length})\n\n`;
229
+ resultado.secoesFaltando.slice(0, 5).forEach(s => {
230
+ output += `- ${s}\n`;
231
+ });
232
+ output += `\n`;
233
+ }
234
+ // Feedback
235
+ if (feedback.length > 0) {
236
+ output += `### 💬 Feedback\n\n`;
237
+ feedback.slice(0, 8).forEach(f => {
238
+ output += `${f}\n`;
239
+ });
240
+ output += `\n`;
241
+ }
242
+ // Sugestões
243
+ if (sugestoes.length > 0 && !valido) {
244
+ output += `### 💡 Sugestões de Melhoria\n\n`;
245
+ sugestoes.slice(0, 5).forEach(s => {
246
+ output += `- ${s}\n`;
247
+ });
248
+ output += `\n`;
249
+ }
250
+ return output;
251
+ }
252
+ //# sourceMappingURL=template-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-validator.js","sourceRoot":"","sources":["../../src/gates/template-validator.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,20 @@ import type { GateResultado, Fase, TierGate } from "../types/index.js";
5
5
  */
6
6
  export declare const GATE_CHECKLISTS: Record<number, string[]>;
7
7
  /**
8
- * Valida gate de uma fase com suporte a tier
8
+ * Valida gate usando template da skill (novo sistema)
9
+ * @param fase - Fase a validar
10
+ * @param entregavel - Conteúdo do entregável
11
+ * @param tier - Tier de validação
12
+ * @param diretorioContent - Diretório base do content (ex: d:/Sistemas/Maestro/content)
13
+ */
14
+ export declare function validarGateComTemplate(fase: Fase, entregavel: string, tier?: TierGate, diretorioContent?: string): {
15
+ sucesso: boolean;
16
+ resultado?: any;
17
+ resultadoLegacy?: GateResultado;
18
+ erro?: string;
19
+ };
20
+ /**
21
+ * Valida gate de uma fase com suporte a tier (legado)
9
22
  * @param fase - Fase a validar
10
23
  * @param entregavel - Conteúdo do entregável
11
24
  * @param tier - Tier de validação (default: usa checklist da fase, que é tier 'base')
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/gates/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA0DpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CACvB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,QAAQ,GAChB,aAAa,CAyBf;AAwDD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CA6BtE"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/gates/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASvE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA0DpD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,QAAiB,EACvB,gBAAgB,CAAC,EAAE,MAAM,GAC1B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,GAAG,CAAC;IAAC,eAAe,CAAC,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAoCvF;AA6BD;;;;;GAKG;AACH,wBAAgB,WAAW,CACvB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,QAAQ,GAChB,aAAa,CAyBf;AAwDD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CA6BtE"}
@@ -1,4 +1,10 @@
1
1
  import { getChecklistPorTier } from "./tiers.js";
2
+ import { parseTemplate } from "./template-parser.js";
3
+ import { validarContraTemplate } from "./template-validator.js";
4
+ import { calcularQualidade } from "./quality-scorer.js";
5
+ import { getSkillParaFase } from "../utils/prompt-mapper.js";
6
+ import { existsSync } from "fs";
7
+ import { join } from "path";
2
8
  /**
3
9
  * Checklists de validação por fase (legado - mantido para compatibilidade)
4
10
  * @deprecated Use getChecklistPorTier() para validação adaptativa
@@ -63,7 +69,66 @@ export const GATE_CHECKLISTS = {
63
69
  ],
64
70
  };
65
71
  /**
66
- * Valida gate de uma fase com suporte a tier
72
+ * Valida gate usando template da skill (novo sistema)
73
+ * @param fase - Fase a validar
74
+ * @param entregavel - Conteúdo do entregável
75
+ * @param tier - Tier de validação
76
+ * @param diretorioContent - Diretório base do content (ex: d:/Sistemas/Maestro/content)
77
+ */
78
+ export function validarGateComTemplate(fase, entregavel, tier = "base", diretorioContent) {
79
+ const skillNome = getSkillParaFase(fase.nome);
80
+ if (!skillNome || !diretorioContent) {
81
+ return { sucesso: false, erro: "Skill não encontrada ou diretório não especificado" };
82
+ }
83
+ // Tentar encontrar template principal da fase
84
+ const templatePath = resolverTemplatePath(skillNome, fase.nome, diretorioContent);
85
+ if (!templatePath || !existsSync(templatePath)) {
86
+ return { sucesso: false, erro: "Template não encontrado" };
87
+ }
88
+ // Parsear template
89
+ const templateStructure = parseTemplate(templatePath);
90
+ if (!templateStructure) {
91
+ return { sucesso: false, erro: "Erro ao parsear template" };
92
+ }
93
+ // Validar contra template
94
+ const resultado = validarContraTemplate(entregavel, templateStructure, tier);
95
+ // Calcular qualidade
96
+ const qualidade = calcularQualidade(entregavel, templateStructure, tier);
97
+ return {
98
+ sucesso: true,
99
+ resultado: {
100
+ ...resultado,
101
+ qualidade,
102
+ templateUsado: templatePath,
103
+ skillNome,
104
+ },
105
+ };
106
+ }
107
+ /**
108
+ * Resolve caminho do template baseado na skill e fase
109
+ */
110
+ function resolverTemplatePath(skillNome, faseNome, diretorioContent) {
111
+ const basePath = join(diretorioContent, "skills", skillNome, "resources", "templates");
112
+ // Mapeamento de fase para arquivo de template
113
+ const templateMap = {
114
+ "Produto": "PRD.md",
115
+ "Requisitos": "requisitos.md",
116
+ "UX Design": "design-doc.md",
117
+ "Modelo de Domínio": "modelo-dominio.md",
118
+ "Banco de Dados": "design-banco.md",
119
+ "Arquitetura": "arquitetura.md",
120
+ "Segurança": "checklist-seguranca.md",
121
+ "Backlog": "backlog.md",
122
+ "Contrato API": "contrato-api.md",
123
+ };
124
+ const templateFile = templateMap[faseNome];
125
+ if (!templateFile) {
126
+ return null;
127
+ }
128
+ return join(basePath, templateFile);
129
+ }
130
+ /**
131
+ * Valida gate de uma fase com suporte a tier (legado)
67
132
  * @param fase - Fase a validar
68
133
  * @param entregavel - Conteúdo do entregável
69
134
  * @param tier - Tier de validação (default: usa checklist da fase, que é tier 'base')
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/gates/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/gates/validator.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ interface ConfirmarProjetoArgs extends IniciarProjetoArgs {
14
14
  }
15
15
  /**
16
16
  * Tool: iniciar_projeto
17
- * Analisa a descrição, infere tipo e tier, e PEDE CONFIRMAÇÃO
17
+ * Faz perguntas interativas sobre tipo, complexidade e modo
18
18
  * NÃO CRIA ARQUIVOS AINDA
19
19
  */
20
20
  export declare function iniciarProjeto(args: IniciarProjetoArgs): Promise<ToolResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"iniciar-projeto.d.ts","sourceRoot":"","sources":["../../src/tools/iniciar-projeto.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAY,MAAM,mBAAmB,CAAC;AAY/F,UAAU,kBAAkB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC5C,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,oBAAqB,SAAQ,kBAAkB;IACrD,aAAa,EAAE,YAAY,CAAC;IAC5B,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,GAAG,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC5C;AA8ED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqHlF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsLtF;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYlC,CAAC"}
1
+ {"version":3,"file":"iniciar-projeto.d.ts","sourceRoot":"","sources":["../../src/tools/iniciar-projeto.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAY,MAAM,mBAAmB,CAAC;AAY/F,UAAU,kBAAkB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC5C,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,oBAAqB,SAAQ,kBAAkB;IACrD,aAAa,EAAE,YAAY,CAAC;IAC5B,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,GAAG,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC5C;AA8ED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4HlF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4KtF;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYlC,CAAC"}
@@ -2,7 +2,7 @@ import { randomUUID } from "crypto";
2
2
  import { criarEstadoInicial, serializarEstado } from "../state/storage.js";
3
3
  import { setCurrentDirectory } from "../state/context.js";
4
4
  import { criarResumoInicial, serializarResumo } from "../state/memory.js";
5
- import { determinarTierGate, descreverTier } from "../gates/tiers.js";
5
+ import { determinarTierGate } from "../gates/tiers.js";
6
6
  import { logEvent, EventTypes } from "../utils/history.js";
7
7
  import { gerarSystemMd } from "../utils/system-md.js";
8
8
  import { detectarStack, gerarSecaoPrompts, gerarSecaoExemplo, getSkillParaFase } from "../utils/prompt-mapper.js";
@@ -75,7 +75,7 @@ function getModoDescription(modo) {
75
75
  }
76
76
  /**
77
77
  * Tool: iniciar_projeto
78
- * Analisa a descrição, infere tipo e tier, e PEDE CONFIRMAÇÃO
78
+ * Faz perguntas interativas sobre tipo, complexidade e modo
79
79
  * NÃO CRIA ARQUIVOS AINDA
80
80
  */
81
81
  export async function iniciarProjeto(args) {
@@ -87,80 +87,88 @@ export async function iniciarProjeto(args) {
87
87
  }
88
88
  // Normalizar e resolver diretório
89
89
  const diretorio = resolveProjectPath(args.diretorio);
90
- // 🚀 INJETAR CONTEÚDO AUTOMATICAMENTE (via npx)
91
- // 🚀 INJETAR CONTEÚDO AUTOMATICAMENTE
90
+ // Verificar IDE
91
+ if (!args.ide) {
92
+ return {
93
+ content: [{ type: "text", text: `# 🎯 Configuração do Projeto: ${args.nome}
94
+
95
+ ## ❓ Pergunta 1/4: Qual IDE você está utilizando?
96
+
97
+ Escolha uma das opções:
98
+
99
+ - **windsurf**: Windsurf IDE
100
+ - **cursor**: Cursor IDE
101
+ - **antigravity**: Antigravity IDE
102
+
103
+ **Responda executando:**
104
+ \`\`\`
105
+ iniciar_projeto(
106
+ nome: "${args.nome}",
107
+ descricao: "${args.descricao || ''}",
108
+ diretorio: "${args.diretorio}",
109
+ ide: "windsurf" // Escolha: windsurf | cursor | antigravity
110
+ )
111
+ \`\`\`` }],
112
+ };
113
+ }
92
114
  // 🚀 INJETAR CONTEÚDO AUTOMATICAMENTE
93
115
  try {
94
- if (args.ide) {
95
- const injResult = await injectContentForIDE(diretorio, args.ide);
96
- console.error(`[INFO] Rules/Skills injetados para ${args.ide} em: ${injResult.targetDir}`);
97
- }
98
- else {
99
- return {
100
- content: [{ type: "text", text: `⚠️ **Ação Necessária**: Por favor, informe qual IDE você está utilizando para configurar o ambiente corretamente.\n\nExecute novamente o comando informando o parâmetro \`ide\`:\n\n- \`windsurf\`\n- \`cursor\`\n- \`antigravity\`\n\nExemplo:\n\`iniciar_projeto(..., ide: "cursor")\`` }],
101
- };
102
- }
116
+ const injResult = await injectContentForIDE(diretorio, args.ide);
117
+ console.error(`[INFO] Rules/Skills injetados para ${args.ide} em: ${injResult.targetDir}`);
103
118
  }
104
119
  catch (error) {
105
120
  console.error('[WARN] Não foi possível injetar conteúdo:', error);
106
121
  }
107
- // Inferir Classificação
122
+ // Inferir sugestões baseadas na descrição
108
123
  const inferenciaTipo = inferirTipoArtefato(args.nome, args.descricao);
109
124
  const inferenciaNivel = inferirComplexidade(inferenciaTipo.tipo, args.descricao);
110
- const tierSugerido = determinarTierGate(inferenciaTipo.tipo, inferenciaNivel.nivel);
111
- // Validação de segurança
112
- if (!tierSugerido) {
113
- return {
114
- content: [{ type: "text", text: "❌ Erro: Não foi possível determinar o tier do projeto." }],
115
- isError: true,
116
- };
117
- }
118
- const descricaoTier = descreverTier(tierSugerido);
119
- // Mapear modo para nível de complexidade se não especificado
120
125
  const modoSugerido = args.modo || mapearModoParaNivel(inferenciaTipo.tipo);
121
- const resposta = `# 🧐 Análise de Novo Projeto: ${args.nome}
126
+ const resposta = `# 🎯 Configuração do Projeto: ${args.nome}
122
127
 
123
- Analisei a descrição e sugiro a seguinte configuração:
124
-
125
- | Configuração | Sugestão | Motivo |
126
- |---|---|---|
127
- | **Tipo de Artefato** | \`${inferenciaTipo.tipo}\` | ${inferenciaTipo.razao} |
128
- | **Complexidade** | \`${inferenciaNivel.nivel}\` | ${inferenciaNivel.razao} |
129
- | **Tier de Gates** | **${tierSugerido?.toUpperCase() || 'N/A'}** | ${descricaoTier} |
130
- | **Modo** | **${modoSugerido.toUpperCase()}** | ${getModoDescription(modoSugerido)} |
128
+ Analisei a descrição do projeto. Agora preciso de algumas informações para configurar corretamente:
131
129
 
132
130
  ---
133
131
 
134
- ## Informações sobre as Configurações
132
+ ## Pergunta 2/4: Qual o tipo de artefato?
133
+
134
+ **Sugestão baseada na análise:** \`${inferenciaTipo.tipo}\` (${inferenciaTipo.razao})
135
+
136
+ ### Opções disponíveis:
135
137
 
136
- ### Tipo de Artefato
137
138
  - **poc**: Prova de conceito, experimentos rápidos
138
139
  - **script**: Automações, CLIs, ferramentas de linha de comando
139
140
  - **internal**: Ferramentas internas, backoffice, dashboards
140
- - **product**: Sistemas voltados ao usuário final (padrão)
141
+ - **product**: Sistemas voltados ao usuário final
142
+
143
+ ---
144
+
145
+ ## ❓ Pergunta 3/4: Qual a complexidade do projeto?
146
+
147
+ **Sugestão baseada na análise:** \`${inferenciaNivel.nivel}\` (${inferenciaNivel.razao})
148
+
149
+ ### Opções disponíveis:
141
150
 
142
- ### Complexidade
143
151
  - **simples**: CRUDs básicos, landing pages, scripts simples
144
- - **medio**: Aplicações web/mobile padrão (padrão)
152
+ - **medio**: Aplicações web/mobile padrão
145
153
  - **complexo**: Microserviços, sistemas distribuídos, alta escala
146
154
 
147
- ### Tier de Gates
148
- - **ESSENCIAL**: 7 fases, validações mínimas (POCs, scripts)
149
- - **BASE**: 13 fases, validações completas (padrão)
150
- - **AVANÇADO**: 17 fases, validações avançadas (sistemas críticos)
155
+ ---
156
+
157
+ ## Pergunta 4/4: Qual modo de execução deseja?
158
+
159
+ **Sugestão baseada no tipo:** \`${modoSugerido}\`
160
+
161
+ ### Opções disponíveis:
151
162
 
152
- ### Modo de Execução
153
163
  - **economy**: Rápido - 7 fases, perguntas mínimas, validação essencial
154
- - **balanced**: Equilibrado - 13 fases, perguntas moderadas, validação completa (padrão)
164
+ - **balanced**: Equilibrado - 13 fases, perguntas moderadas, validação completa
155
165
  - **quality**: Qualidade - 17 fases, perguntas detalhadas, validação avançada
156
166
 
157
167
  ---
158
168
 
159
- ## 🚦 Confirmação Necessária
169
+ ## 🚦 Confirme as Configurações
160
170
 
161
- Para efetivamente criar o projeto, você precisa **confirmar ou ajustar** estes valores.
162
-
163
- **Opção 1: Concordo (Criar como sugerido)**
171
+ **Opção 1: Usar sugestões (Recomendado)**
164
172
  \`\`\`
165
173
  confirmar_projeto(
166
174
  nome: "${args.nome}",
@@ -173,16 +181,16 @@ confirmar_projeto(
173
181
  )
174
182
  \`\`\`
175
183
 
176
- **Opção 2: Ajustar Configurações**
184
+ **Opção 2: Personalizar**
177
185
  \`\`\`
178
186
  confirmar_projeto(
179
187
  nome: "${args.nome}",
180
188
  descricao: "${args.descricao || ''}",
181
189
  diretorio: "${args.diretorio}",
182
190
  tipo_artefato: "product", // poc | script | internal | product
183
- nivel_complexidade: "complexo", // simples | medio | complexo
191
+ nivel_complexidade: "medio", // simples | medio | complexo
184
192
  ide: "${args.ide}",
185
- modo: "quality" // economy | balanced | quality
193
+ modo: "balanced" // economy | balanced | quality
186
194
  )
187
195
  \`\`\`
188
196
  `;
@@ -326,20 +334,9 @@ ${args.modo === 'economy' ?
326
334
  '**Modo Quality:** Vamos coletar informações detalhadas para garantir máxima qualidade.' :
327
335
  '**Modo Balanced:** Vamos coletar informações moderadas para equilibrar velocidade e qualidade.'}
328
336
 
329
- Para reduzir a quantidade de perguntas durante o projeto, execute o **Discovery**:
330
-
331
- \`\`\`typescript
332
- // 1. Ler o estado.json criado
333
- const estadoJson = await readFile('${diretorio}/.maestro/estado.json');
337
+ O processo de **Discovery** será conduzido através da ferramenta MCP \`discovery\` ou pelo especialista skill ativado. Ele irá gerar um questionário agrupado adaptado ao modo selecionado e coletar as informações necessárias para o projeto.
334
338
 
335
- // 2. Executar discovery para gerar questionário
336
- await mcp_maestro_discovery({
337
- estado_json: estadoJson,
338
- diretorio: "${diretorio}"
339
- });
340
- \`\`\`
341
-
342
- Isso irá gerar um questionário agrupado adaptado ao modo selecionado. Após o usuário responder, execute novamente com o parâmetro \`respostas\` preenchido. Os especialistas terão todo o contexto necessário!
339
+ Após a coleta, todos os especialistas terão o contexto completo para trabalhar!
343
340
 
344
341
  ---
345
342
 
@@ -351,10 +348,11 @@ Se desejar, você pode usar o **Google Stitch** para prototipagem de UI após a
351
348
 
352
349
  ---
353
350
 
354
- ## 🎨 Próximos Passos (Alternativo)
351
+ ## Próximos Passos
355
352
 
356
- Se não for usar o Stitch, você pode iniciar a Fase 1 (Produto) direto.
357
353
  O projeto foi inicializado no Tier **${tier?.toUpperCase() || 'N/A'}**.
354
+
355
+ Você pode iniciar a Fase 1 (Produto) diretamente ou usar o Google Stitch para prototipagem rápida.
358
356
  ${gerarSecaoPrompts("Produto")}
359
357
  ${gerarSecaoExemplo(detectarStack(args.nome, args.descricao))}
360
358
  `;