@maestro-ai/mcp-server 5.3.8 → 5.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,94 @@
1
+ import { existsSync } from "fs";
2
+ import { join } from "path";
3
+ /**
4
+ * Constrói path dinâmico: docs/fase-XX-nome/entregavel
5
+ * Exemplo: docs/fase-01-produto/PRD.md
6
+ */
7
+ function construirPathDinamico(diretorio, fase, faseInfo) {
8
+ const faseDirName = `fase-${fase.toString().padStart(2, "0")}-${faseInfo.nome.toLowerCase().replace(/\s/g, "-")}`;
9
+ return join(diretorio, "docs", faseDirName, faseInfo.entregavel_esperado);
10
+ }
11
+ /**
12
+ * Constrói path convencional: docs/XX-nome/entregavel
13
+ * Exemplo: docs/01-produto/PRD.md
14
+ */
15
+ function construirPathConvencional(diretorio, fase, faseInfo) {
16
+ const faseDirName = `${fase.toString().padStart(2, "0")}-${faseInfo.nome.toLowerCase().replace(/\s/g, "-")}`;
17
+ return join(diretorio, "docs", faseDirName, faseInfo.entregavel_esperado);
18
+ }
19
+ /**
20
+ * Constrói path legado: .maestro/entregaveis/entregavel
21
+ * Exemplo: .maestro/entregaveis/PRD.md
22
+ */
23
+ function construirPathLegado(diretorio, faseInfo) {
24
+ return join(diretorio, ".maestro", "entregaveis", faseInfo.entregavel_esperado);
25
+ }
26
+ /**
27
+ * Resolve o caminho do entregável tentando múltiplas convenções.
28
+ *
29
+ * Ordem de prioridade:
30
+ * 1. estado.entregaveis[fase_X] — caminho salvo previamente pelo proximo()
31
+ * 2. docs/fase-XX-nome/entregavel — path dinâmico (padrão atual do avancar.ts)
32
+ * 3. docs/XX-nome/entregavel — path convencional (documentado no GEMINI.md)
33
+ * 4. .maestro/entregaveis/entregavel — formato legado
34
+ *
35
+ * @param diretorio - Diretório raiz do projeto
36
+ * @param fase - Número da fase atual
37
+ * @param faseInfo - Informações da fase (nome, entregavel_esperado, etc)
38
+ * @param estado - Estado do projeto (para acessar estado.entregaveis)
39
+ * @returns Caminho absoluto do arquivo se encontrado, null caso contrário
40
+ */
41
+ export function resolverPathEntregavel(diretorio, fase, faseInfo, estado) {
42
+ // 1. Tentar caminho salvo no estado (prioridade máxima)
43
+ const chaveNova = `fase_${fase}`;
44
+ const chaveLegacy = fase.toString();
45
+ const caminhoSalvo = estado.entregaveis?.[chaveNova] || estado.entregaveis?.[chaveLegacy];
46
+ if (caminhoSalvo) {
47
+ // Verificar se é caminho absoluto ou relativo
48
+ let caminhoCompleto;
49
+ if (caminhoSalvo.includes('/') || caminhoSalvo.includes('\\')) {
50
+ // Caminho completo ou relativo
51
+ if (caminhoSalvo.startsWith(diretorio)) {
52
+ caminhoCompleto = caminhoSalvo;
53
+ }
54
+ else {
55
+ caminhoCompleto = join(diretorio, caminhoSalvo);
56
+ }
57
+ }
58
+ else {
59
+ // Apenas nome do arquivo (formato legado)
60
+ caminhoCompleto = join(diretorio, ".maestro", "entregaveis", caminhoSalvo);
61
+ }
62
+ if (existsSync(caminhoCompleto)) {
63
+ return caminhoCompleto;
64
+ }
65
+ }
66
+ // 2. Tentar path dinâmico (docs/fase-XX-nome/)
67
+ const pathDinamico = construirPathDinamico(diretorio, fase, faseInfo);
68
+ if (existsSync(pathDinamico)) {
69
+ return pathDinamico;
70
+ }
71
+ // 3. Tentar path convencional (docs/XX-nome/)
72
+ const pathConvencional = construirPathConvencional(diretorio, fase, faseInfo);
73
+ if (existsSync(pathConvencional)) {
74
+ return pathConvencional;
75
+ }
76
+ // 4. Tentar path legado (.maestro/entregaveis/)
77
+ const pathLegado = construirPathLegado(diretorio, faseInfo);
78
+ if (existsSync(pathLegado)) {
79
+ return pathLegado;
80
+ }
81
+ // Nenhum arquivo encontrado
82
+ return null;
83
+ }
84
+ /**
85
+ * Gera lista de paths esperados para mensagem de erro
86
+ */
87
+ export function listarPathsEsperados(diretorio, fase, faseInfo) {
88
+ return [
89
+ construirPathDinamico(diretorio, fase, faseInfo),
90
+ construirPathConvencional(diretorio, fase, faseInfo),
91
+ construirPathLegado(diretorio, faseInfo)
92
+ ];
93
+ }
94
+ //# sourceMappingURL=entregavel-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entregavel-path.js","sourceRoot":"","sources":["../../src/utils/entregavel-path.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maestro-ai/mcp-server",
3
- "version": "5.3.8",
3
+ "version": "5.4.0",
4
4
  "description": "MCP Server do Maestro v2.0 com otimizações, frontend-first e gerenciamento de tarefas",
5
5
  "type": "module",
6
6
  "main": "dist/stdio.js",