@maestro-ai/mcp-server 5.0.0 → 5.2.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.
- package/dist/constants.d.ts +16 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -0
- package/dist/handlers/shared-prompt-handler.d.ts +41 -0
- package/dist/handlers/shared-prompt-handler.d.ts.map +1 -0
- package/dist/handlers/shared-prompt-handler.js +289 -0
- package/dist/handlers/shared-prompt-handler.js.map +1 -0
- package/dist/handlers/shared-resource-handler.d.ts +54 -0
- package/dist/handlers/shared-resource-handler.d.ts.map +1 -0
- package/dist/handlers/shared-resource-handler.js +131 -0
- package/dist/handlers/shared-resource-handler.js.map +1 -0
- package/dist/index.js +34 -146
- package/dist/index.js.map +1 -1
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +8 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/resources/index.d.ts +5 -3
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +1 -165
- package/dist/resources/index.js.map +1 -1
- package/dist/router.d.ts +1 -5
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +116 -28
- package/dist/router.js.map +1 -1
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -26
- package/dist/server.js.map +1 -1
- package/dist/services/annotations-fallback.service.d.ts +64 -0
- package/dist/services/annotations-fallback.service.d.ts.map +1 -0
- package/dist/services/annotations-fallback.service.js +64 -0
- package/dist/services/annotations-fallback.service.js.map +1 -0
- package/dist/services/client-capabilities.service.d.ts +46 -0
- package/dist/services/client-capabilities.service.d.ts.map +1 -0
- package/dist/services/client-capabilities.service.js +96 -0
- package/dist/services/client-capabilities.service.js.map +1 -0
- package/dist/services/elicitation-fallback.service.d.ts +37 -0
- package/dist/services/elicitation-fallback.service.d.ts.map +1 -0
- package/dist/services/elicitation-fallback.service.js +90 -0
- package/dist/services/elicitation-fallback.service.js.map +1 -0
- package/dist/services/sampling-fallback.service.d.ts +33 -0
- package/dist/services/sampling-fallback.service.d.ts.map +1 -0
- package/dist/services/sampling-fallback.service.js +71 -0
- package/dist/services/sampling-fallback.service.js.map +1 -0
- package/dist/services/skill-cache.service.d.ts +28 -0
- package/dist/services/skill-cache.service.d.ts.map +1 -0
- package/dist/services/skill-cache.service.js +49 -0
- package/dist/services/skill-cache.service.js.map +1 -0
- package/dist/services/skill-loader.service.d.ts.map +1 -1
- package/dist/services/skill-loader.service.js +16 -1
- package/dist/services/skill-loader.service.js.map +1 -1
- package/dist/services/structured-content.service.d.ts +38 -0
- package/dist/services/structured-content.service.d.ts.map +1 -0
- package/dist/services/structured-content.service.js +44 -0
- package/dist/services/structured-content.service.js.map +1 -0
- package/dist/services/system-prompt.service.d.ts +17 -0
- package/dist/services/system-prompt.service.d.ts.map +1 -0
- package/dist/services/system-prompt.service.js +72 -0
- package/dist/services/system-prompt.service.js.map +1 -0
- package/dist/stdio.js +26 -381
- package/dist/stdio.js.map +1 -1
- package/dist/tests/skill-loader.test.js +2 -0
- package/dist/tests/skill-loader.test.js.map +1 -1
- package/dist/tests/v52-integration.test.d.ts +14 -0
- package/dist/tests/v52-integration.test.d.ts.map +1 -0
- package/dist/tests/v52-integration.test.js +223 -0
- package/dist/tests/v52-integration.test.js.map +1 -0
- package/dist/tools/consolidated/analisar.d.ts.map +1 -1
- package/dist/tools/consolidated/analisar.js +21 -5
- package/dist/tools/consolidated/analisar.js.map +1 -1
- package/dist/tools/consolidated/avancar.d.ts.map +1 -1
- package/dist/tools/consolidated/avancar.js +13 -18
- package/dist/tools/consolidated/avancar.js.map +1 -1
- package/dist/tools/consolidated/checkpoint-tool.d.ts.map +1 -1
- package/dist/tools/consolidated/checkpoint-tool.js +4 -12
- package/dist/tools/consolidated/checkpoint-tool.js.map +1 -1
- package/dist/tools/consolidated/executar.d.ts +119 -0
- package/dist/tools/consolidated/executar.d.ts.map +1 -0
- package/dist/tools/consolidated/executar.js +155 -0
- package/dist/tools/consolidated/executar.js.map +1 -0
- package/dist/tools/consolidated/validar.d.ts.map +1 -1
- package/dist/tools/consolidated/validar.js +2 -4
- package/dist/tools/consolidated/validar.js.map +1 -1
- package/dist/tools/contexto.d.ts.map +1 -1
- package/dist/tools/contexto.js +22 -33
- package/dist/tools/contexto.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +26 -5
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/index.d.ts +4 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -369
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/maestro-tool.d.ts.map +1 -1
- package/dist/tools/maestro-tool.js +95 -77
- package/dist/tools/maestro-tool.js.map +1 -1
- package/dist/tools/salvar.d.ts.map +1 -1
- package/dist/tools/salvar.js +16 -38
- package/dist/tools/salvar.js.map +1 -1
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +27 -32
- package/dist/tools/status.js.map +1 -1
- package/dist/types/index.d.ts +11 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/resource-links.d.ts +44 -0
- package/dist/utils/resource-links.d.ts.map +1 -0
- package/dist/utils/resource-links.js +84 -0
- package/dist/utils/resource-links.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +113 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +185 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback de Elicitation para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* Quando o client MCP não suporta `elicitation`, gera blocos de texto
|
|
5
|
+
* estruturado que pedem input do usuário de forma clara para a IA.
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 3.1 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
export interface ElicitationField {
|
|
10
|
+
name: string;
|
|
11
|
+
label: string;
|
|
12
|
+
type: "text" | "select" | "boolean" | "number";
|
|
13
|
+
options?: string[];
|
|
14
|
+
default?: string;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ElicitationRequest {
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
fields: ElicitationField[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gera bloco de elicitation.
|
|
25
|
+
* Se o client suporta elicitation nativa, retorna formato MCP.
|
|
26
|
+
* Senão, retorna Markdown estruturado para a IA interpretar.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildElicitation(request: ElicitationRequest): {
|
|
29
|
+
useNative: boolean;
|
|
30
|
+
nativePayload?: Record<string, unknown>;
|
|
31
|
+
markdownFallback: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Gera bloco de discovery (perguntas para o usuário) como fallback de elicitation.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildDiscoveryFallback(questions: string[]): string;
|
|
37
|
+
//# sourceMappingURL=elicitation-fallback.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitation-fallback.service.d.ts","sourceRoot":"","sources":["../../src/services/elicitation-fallback.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAiEA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAQlE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback de Elicitation para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* Quando o client MCP não suporta `elicitation`, gera blocos de texto
|
|
5
|
+
* estruturado que pedem input do usuário de forma clara para a IA.
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 3.1 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
import { clientSupports } from "./client-capabilities.service.js";
|
|
10
|
+
/**
|
|
11
|
+
* Gera bloco de elicitation.
|
|
12
|
+
* Se o client suporta elicitation nativa, retorna formato MCP.
|
|
13
|
+
* Senão, retorna Markdown estruturado para a IA interpretar.
|
|
14
|
+
*/
|
|
15
|
+
export function buildElicitation(request) {
|
|
16
|
+
const useNative = clientSupports("hasElicitation");
|
|
17
|
+
if (useNative) {
|
|
18
|
+
return {
|
|
19
|
+
useNative: true,
|
|
20
|
+
nativePayload: {
|
|
21
|
+
message: request.description,
|
|
22
|
+
requestedSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: Object.fromEntries(request.fields.map(f => [f.name, {
|
|
25
|
+
type: f.type === "select" ? "string" : f.type === "boolean" ? "boolean" : f.type === "number" ? "number" : "string",
|
|
26
|
+
description: f.label,
|
|
27
|
+
...(f.options ? { enum: f.options } : {}),
|
|
28
|
+
...(f.default ? { default: f.default } : {}),
|
|
29
|
+
}])),
|
|
30
|
+
required: request.fields.filter(f => f.required).map(f => f.name),
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
markdownFallback: "",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Fallback: Markdown estruturado
|
|
37
|
+
let md = `## ❓ ${request.title}\n\n${request.description}\n\n`;
|
|
38
|
+
md += `**Responda os campos abaixo:**\n\n`;
|
|
39
|
+
for (const field of request.fields) {
|
|
40
|
+
const required = field.required ? " *(obrigatório)*" : " *(opcional)*";
|
|
41
|
+
switch (field.type) {
|
|
42
|
+
case "select":
|
|
43
|
+
md += `### ${field.label}${required}\n`;
|
|
44
|
+
md += `Opções: ${field.options?.map(o => `\`${o}\``).join(" | ") || "N/A"}\n`;
|
|
45
|
+
if (field.default)
|
|
46
|
+
md += `Padrão: \`${field.default}\`\n`;
|
|
47
|
+
md += `\n`;
|
|
48
|
+
break;
|
|
49
|
+
case "boolean":
|
|
50
|
+
md += `### ${field.label}${required}\n`;
|
|
51
|
+
md += `Responda: \`sim\` ou \`não\`\n`;
|
|
52
|
+
if (field.default)
|
|
53
|
+
md += `Padrão: \`${field.default}\`\n`;
|
|
54
|
+
md += `\n`;
|
|
55
|
+
break;
|
|
56
|
+
case "number":
|
|
57
|
+
md += `### ${field.label}${required}\n`;
|
|
58
|
+
md += `Informe um número.\n`;
|
|
59
|
+
if (field.default)
|
|
60
|
+
md += `Padrão: \`${field.default}\`\n`;
|
|
61
|
+
md += `\n`;
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
md += `### ${field.label}${required}\n`;
|
|
65
|
+
if (field.description)
|
|
66
|
+
md += `${field.description}\n`;
|
|
67
|
+
if (field.default)
|
|
68
|
+
md += `Padrão: \`${field.default}\`\n`;
|
|
69
|
+
md += `\n`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
md += `> 👤 **Aguardando resposta do usuário.** A IA deve apresentar estas perguntas ao usuário e coletar as respostas antes de prosseguir.\n`;
|
|
73
|
+
return {
|
|
74
|
+
useNative: false,
|
|
75
|
+
markdownFallback: md,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gera bloco de discovery (perguntas para o usuário) como fallback de elicitation.
|
|
80
|
+
*/
|
|
81
|
+
export function buildDiscoveryFallback(questions) {
|
|
82
|
+
let md = `## 🔍 Discovery — Perguntas para o Usuário\n\n`;
|
|
83
|
+
md += `Antes de prosseguir, responda:\n\n`;
|
|
84
|
+
questions.forEach((q, i) => {
|
|
85
|
+
md += `${i + 1}. ${q}\n`;
|
|
86
|
+
});
|
|
87
|
+
md += `\n> 👤 **Aguardando respostas.** Passe as respostas no campo \`respostas\` da próxima chamada.\n`;
|
|
88
|
+
return md;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=elicitation-fallback.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitation-fallback.service.js","sourceRoot":"","sources":["../../src/services/elicitation-fallback.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback de Sampling para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* Quando o client MCP não suporta `sampling`, gera instruções estruturadas
|
|
5
|
+
* para a IA realizar a análise ela mesma (self-analysis).
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 3.2 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
export interface SamplingRequest {
|
|
10
|
+
/** Descrição do que deve ser analisado */
|
|
11
|
+
task: string;
|
|
12
|
+
/** Contexto para a análise */
|
|
13
|
+
context: string;
|
|
14
|
+
/** Formato esperado da resposta */
|
|
15
|
+
expectedFormat?: string;
|
|
16
|
+
/** Model hint (para sampling nativo) */
|
|
17
|
+
modelHint?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gera bloco de sampling (análise LLM-to-LLM).
|
|
21
|
+
* Se o client suporta sampling nativa, retorna formato MCP.
|
|
22
|
+
* Senão, retorna instruções para self-analysis.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildSamplingRequest(request: SamplingRequest): {
|
|
25
|
+
useNative: boolean;
|
|
26
|
+
nativePayload?: Record<string, unknown>;
|
|
27
|
+
selfAnalysisFallback: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Gera fallback de análise de código quando sampling não está disponível.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildCodeAnalysisFallback(code: string, analysisType: string): string;
|
|
33
|
+
//# sourceMappingURL=sampling-fallback.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampling-fallback.service.d.ts","sourceRoot":"","sources":["../../src/services/sampling-fallback.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;CAChC,CA0CA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAcpF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback de Sampling para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* Quando o client MCP não suporta `sampling`, gera instruções estruturadas
|
|
5
|
+
* para a IA realizar a análise ela mesma (self-analysis).
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 3.2 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
import { clientSupports } from "./client-capabilities.service.js";
|
|
10
|
+
/**
|
|
11
|
+
* Gera bloco de sampling (análise LLM-to-LLM).
|
|
12
|
+
* Se o client suporta sampling nativa, retorna formato MCP.
|
|
13
|
+
* Senão, retorna instruções para self-analysis.
|
|
14
|
+
*/
|
|
15
|
+
export function buildSamplingRequest(request) {
|
|
16
|
+
const useNative = clientSupports("hasSampling");
|
|
17
|
+
if (useNative) {
|
|
18
|
+
return {
|
|
19
|
+
useNative: true,
|
|
20
|
+
nativePayload: {
|
|
21
|
+
messages: [
|
|
22
|
+
{
|
|
23
|
+
role: "user",
|
|
24
|
+
content: {
|
|
25
|
+
type: "text",
|
|
26
|
+
text: `${request.task}\n\nContexto:\n${request.context}`,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
modelPreferences: request.modelHint ? {
|
|
31
|
+
hints: [{ name: request.modelHint }],
|
|
32
|
+
} : undefined,
|
|
33
|
+
maxTokens: 4096,
|
|
34
|
+
},
|
|
35
|
+
selfAnalysisFallback: "",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Fallback: Instruções para self-analysis
|
|
39
|
+
let md = `## 🔍 Análise Requerida\n\n`;
|
|
40
|
+
md += `**Tarefa:** ${request.task}\n\n`;
|
|
41
|
+
md += `### Contexto\n\n${request.context}\n\n`;
|
|
42
|
+
if (request.expectedFormat) {
|
|
43
|
+
md += `### Formato Esperado\n\n${request.expectedFormat}\n\n`;
|
|
44
|
+
}
|
|
45
|
+
md += `> 🤖 **Instruções para a IA:** Realize esta análise diretamente. `;
|
|
46
|
+
md += `Avalie o contexto acima e produza a resposta no formato solicitado. `;
|
|
47
|
+
md += `Não é necessário chamar ferramentas externas para esta análise.\n`;
|
|
48
|
+
return {
|
|
49
|
+
useNative: false,
|
|
50
|
+
selfAnalysisFallback: md,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gera fallback de análise de código quando sampling não está disponível.
|
|
55
|
+
*/
|
|
56
|
+
export function buildCodeAnalysisFallback(code, analysisType) {
|
|
57
|
+
return `## 🔍 Análise de Código — ${analysisType}
|
|
58
|
+
|
|
59
|
+
\`\`\`
|
|
60
|
+
${code.slice(0, 2000)}${code.length > 2000 ? "\n// ... truncado" : ""}
|
|
61
|
+
\`\`\`
|
|
62
|
+
|
|
63
|
+
> 🤖 **Instruções para a IA:** Analise o código acima considerando:
|
|
64
|
+
> - **Segurança:** vulnerabilidades OWASP Top 10
|
|
65
|
+
> - **Qualidade:** code smells, complexidade ciclomática, DRY/SOLID
|
|
66
|
+
> - **Performance:** anti-patterns, N+1, memory leaks
|
|
67
|
+
>
|
|
68
|
+
> Produza um relatório estruturado com severidade (crítico/alto/médio/baixo) para cada achado.
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=sampling-fallback.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampling-fallback.service.js","sourceRoot":"","sources":["../../src/services/sampling-fallback.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAalE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAKzD,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;YACH,SAAS,EAAE,IAAI;YACf,aAAa,EAAE;gBACX,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACL,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,kBAAkB,OAAO,CAAC,OAAO,EAAE;yBAC3D;qBACJ;iBACJ;gBACD,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;oBAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;iBACvC,CAAC,CAAC,CAAC,SAAS;gBACb,SAAS,EAAE,IAAI;aAClB;YACD,oBAAoB,EAAE,EAAE;SAC3B,CAAC;IACN,CAAC;IAED,0CAA0C;IAC1C,IAAI,EAAE,GAAG,6BAA6B,CAAC;IACvC,EAAE,IAAI,eAAe,OAAO,CAAC,IAAI,MAAM,CAAC;IACxC,EAAE,IAAI,mBAAmB,OAAO,CAAC,OAAO,MAAM,CAAC;IAE/C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,EAAE,IAAI,2BAA2B,OAAO,CAAC,cAAc,MAAM,CAAC;IAClE,CAAC;IAED,EAAE,IAAI,mEAAmE,CAAC;IAC1E,EAAE,IAAI,sEAAsE,CAAC;IAC7E,EAAE,IAAI,mEAAmE,CAAC;IAE1E,OAAO;QACH,SAAS,EAAE,KAAK;QAChB,oBAAoB,EAAE,EAAE;KAC3B,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,YAAoB;IACxE,OAAO,6BAA6B,YAAY;;;EAGlD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;CASpE,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache de skills em memória para evitar re-leitura do filesystem.
|
|
3
|
+
*
|
|
4
|
+
* TTL de 1 hora. Invalidação manual disponível.
|
|
5
|
+
*
|
|
6
|
+
* @since v5.1.0 — Task 2.4 do Roadmap de Melhorias MCP
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Busca item no cache. Retorna null se não encontrado ou expirado.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCached(key: string, ttl?: number): string | null;
|
|
12
|
+
/**
|
|
13
|
+
* Armazena item no cache.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setCache(key: string, content: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Invalida entradas do cache que contenham o pattern.
|
|
18
|
+
* Sem pattern = limpa tudo.
|
|
19
|
+
*/
|
|
20
|
+
export declare function invalidateCache(pattern?: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Retorna estatísticas do cache.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getCacheStats(): {
|
|
25
|
+
size: number;
|
|
26
|
+
keys: string[];
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=skill-cache.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-cache.service.d.ts","sourceRoot":"","sources":["../../src/services/skill-cache.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,MAAM,GAAG,IAAI,CAQ/E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAQtD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAEhE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache de skills em memória para evitar re-leitura do filesystem.
|
|
3
|
+
*
|
|
4
|
+
* TTL de 1 hora. Invalidação manual disponível.
|
|
5
|
+
*
|
|
6
|
+
* @since v5.1.0 — Task 2.4 do Roadmap de Melhorias MCP
|
|
7
|
+
*/
|
|
8
|
+
const cache = new Map();
|
|
9
|
+
const DEFAULT_TTL = 60 * 60 * 1000; // 1 hora
|
|
10
|
+
/**
|
|
11
|
+
* Busca item no cache. Retorna null se não encontrado ou expirado.
|
|
12
|
+
*/
|
|
13
|
+
export function getCached(key, ttl = DEFAULT_TTL) {
|
|
14
|
+
const entry = cache.get(key);
|
|
15
|
+
if (!entry)
|
|
16
|
+
return null;
|
|
17
|
+
if (Date.now() - entry.loadedAt > ttl) {
|
|
18
|
+
cache.delete(key);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return entry.content;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Armazena item no cache.
|
|
25
|
+
*/
|
|
26
|
+
export function setCache(key, content) {
|
|
27
|
+
cache.set(key, { content, loadedAt: Date.now() });
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Invalida entradas do cache que contenham o pattern.
|
|
31
|
+
* Sem pattern = limpa tudo.
|
|
32
|
+
*/
|
|
33
|
+
export function invalidateCache(pattern) {
|
|
34
|
+
if (!pattern) {
|
|
35
|
+
cache.clear();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
for (const key of cache.keys()) {
|
|
39
|
+
if (key.includes(pattern))
|
|
40
|
+
cache.delete(key);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Retorna estatísticas do cache.
|
|
45
|
+
*/
|
|
46
|
+
export function getCacheStats() {
|
|
47
|
+
return { size: cache.size, keys: [...cache.keys()] };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=skill-cache.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-cache.service.js","sourceRoot":"","sources":["../../src/services/skill-cache.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC5C,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAE7C;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,MAAc,WAAW;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;QACpC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,OAAe;IACjD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/skill-loader.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/skill-loader.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CACzC;AAsDD,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,eAAe,CAAyB;gBAEpC,eAAe,EAAE,sBAAsB;IAInD;;;OAGG;IACG,YAAY,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,SAAS,GAAG,UAAU,GAAG,SAAsB,GACtD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA6EjC;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM7D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM5D;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;IAgD7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4C7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAYhC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,sBAAsB,GAAG,kBAAkB,CAE7F"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { getSkillParaFase } from "../utils/prompt-mapper.js";
|
|
11
11
|
import { getSpecialistPersona } from "./specialist.service.js";
|
|
12
|
+
import { getCached, setCache } from "./skill-cache.service.js";
|
|
12
13
|
/**
|
|
13
14
|
* Budgets de tokens por modo
|
|
14
15
|
*/
|
|
@@ -59,6 +60,17 @@ export class SkillLoaderService {
|
|
|
59
60
|
const skillName = getSkillParaFase(faseNome);
|
|
60
61
|
if (!skillName)
|
|
61
62
|
return null;
|
|
63
|
+
// v5.2: Verificar cache antes de ler filesystem
|
|
64
|
+
const cacheKey = `skill:${skillName}:${mode}`;
|
|
65
|
+
const cached = getCached(cacheKey);
|
|
66
|
+
if (cached) {
|
|
67
|
+
try {
|
|
68
|
+
return JSON.parse(cached);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Cache corrompido, continuar com leitura normal
|
|
72
|
+
}
|
|
73
|
+
}
|
|
62
74
|
const budget = TOKEN_BUDGETS[mode];
|
|
63
75
|
const specialist = getSpecialistPersona(faseNome);
|
|
64
76
|
// Carregar conteúdos em paralelo
|
|
@@ -93,7 +105,7 @@ export class SkillLoaderService {
|
|
|
93
105
|
this.estimateTokens(templateContent) +
|
|
94
106
|
this.estimateTokens(checklistContent);
|
|
95
107
|
const resultMode = mode === "economy" ? "summary" : mode === "balanced" ? "summary" : "full";
|
|
96
|
-
|
|
108
|
+
const result = {
|
|
97
109
|
skillName,
|
|
98
110
|
specialist,
|
|
99
111
|
skillContent,
|
|
@@ -103,6 +115,9 @@ export class SkillLoaderService {
|
|
|
103
115
|
tokenEstimate: totalTokens,
|
|
104
116
|
mode: resultMode,
|
|
105
117
|
};
|
|
118
|
+
// v5.2: Armazenar no cache para evitar re-leitura do filesystem
|
|
119
|
+
setCache(cacheKey, JSON.stringify(result));
|
|
120
|
+
return result;
|
|
106
121
|
}
|
|
107
122
|
/**
|
|
108
123
|
* Carrega apenas o checklist de gate de uma fase.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-loader.service.js","sourceRoot":"","sources":["../../src/services/skill-loader.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"skill-loader.service.js","sourceRoot":"","sources":["../../src/services/skill-loader.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA4B/D;;GAEG;AACH,MAAM,aAAa,GAAG;IAClB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;IACnE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;IACrE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;CAC/D,CAAC;AAEX;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACvB,QAAQ,EAAE,QAAQ;IAClB,eAAe;IACf,qBAAqB,EAAE,qBAAqB;IAC5C,iBAAiB;IACjB,cAAc;IACd,oBAAoB,EAAE,UAAU;IAChC,sBAAsB,EAAE,sBAAsB;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACtB,cAAc;IACd,qBAAqB,EAAE,qBAAqB;IAC5C,cAAc,EAAE,cAAc;IAC9B,qBAAqB,EAAE,qBAAqB;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACvB,iBAAiB;IACjB,uBAAuB,EAAE,uBAAuB;IAChD,UAAU,EAAE,UAAU;CACzB,CAAC;AAEF,MAAM,OAAO,kBAAkB;IACnB,eAAe,CAAyB;IAEhD,YAAY,eAAuC;QAC/C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CACd,QAAgB,EAChB,OAA2C,UAAU;QAErD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,gDAAgD;QAChD,MAAM,QAAQ,GAAG,SAAS,SAAS,IAAI,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAmB,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACL,iDAAiD;YACrD,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAElD,iCAAiC;QACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,GACtE,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC;SACnE,CAAC,CAAC;QAEP,6BAA6B;QAC7B,MAAM,YAAY,GAAG,QAAQ;YACzB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;YACxD,CAAC,CAAC,EAAE,CAAC;QAET,gCAAgC;QAChC,MAAM,eAAe,GAAG,WAAW;YAC/B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;YACjE,CAAC,CAAC,EAAE,CAAC;QAET,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,YAAY;YACjC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5D,CAAC,CAAC,EAAE,CAAC;QAET,+CAA+C;QAC/C,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,cAAc,CAAC,IAAI,CAAC,oBAAoB,SAAS,cAAc,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,oBAAoB,SAAS,eAAe,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,WAAW,GACb,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAE1C,MAAM,UAAU,GACZ,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9E,MAAM,MAAM,GAAmB;YAC3B,SAAS;YACT,UAAU;YACV,YAAY;YACZ,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,aAAa,EAAE,WAAW;YAC1B,IAAI,EAAE,UAAU;SACnB,CAAC;QAEF,gEAAgE;QAChE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,GAAmB;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,0BAA0B;QAC1B,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;QACnE,CAAC;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,iBAAiB;QACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,aAAa,kBAAkB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAEvF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,mBAAmB,CACvB,UAAkB,EAClB,IAAwC,EACxC,WAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,uCAAuC;QACvC,MAAM,yBAAyB,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAEhF,+CAA+C;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBAC3D,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC;oBACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;gBACxC,CAAC;YACL,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;oBAC1D,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC;wBACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;oBACxC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;oBAC3D,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC;wBACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;oBACxC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,mCAAmC;YACnC,OAAO,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,QAAQ;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC7D,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAC1B,UAAkB,EAClB,IAAwC,EACxC,WAAmB;QAEnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,4BAA4B;YAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,OAAe;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,YAAY,EAAE,CAAC;gBACf,wBAAwB;gBACxB,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpD,QAAQ,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,cAAc;wBACvB,KAAK,EAAE,YAAY;wBACnB,OAAO,EAAE,UAAU;wBACnB,SAAS,EAAE,UAAU,CAAC,MAAM;wBAC5B,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;qBACjD,CAAC,CAAC;gBACP,CAAC;gBACD,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACjC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtC,cAAc,GAAG,EAAE,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,eAAe;QACf,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,UAAU,CAAC,MAAM;gBAC5B,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;aACjD,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe,EAAE,OAAiB;QACrD,MAAM,UAAU,GAAG,OAAO;aACrB,WAAW,EAAE;aACb,SAAS,CAAC,KAAK,CAAC;aAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC/B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,IAAI,EAAE,CAAC;QAEZ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAe;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,IAAY,EAAE,WAAmB;QAC3D,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,sCAAsC;QACtC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,WAAW,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,6EAA6E,CAAC;QAC/H,CAAC;QACD,OAAO,SAAS,GAAG,6EAA6E,CAAC;IACrG,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAuC;IACrE,OAAO,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Content com fallback para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* MCP structuredContent (protocol ≥ 2025-06-18) permite retornar JSON tipado
|
|
5
|
+
* junto com content textual. Para clients mais antigos, embute o JSON como
|
|
6
|
+
* bloco de código dentro do Markdown.
|
|
7
|
+
*
|
|
8
|
+
* @since v5.1.0 — Task 4.1 do Roadmap de Melhorias MCP
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Gera resposta com structured content.
|
|
12
|
+
* Se client suporta, retorna structuredContent separado.
|
|
13
|
+
* Senão, embute JSON formatado dentro do content textual.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withStructuredContent<T extends Record<string, unknown>>(textContent: Array<{
|
|
16
|
+
type: "text";
|
|
17
|
+
text: string;
|
|
18
|
+
}>, structuredData: T, jsonLabel?: string): {
|
|
19
|
+
content: Array<{
|
|
20
|
+
type: "text";
|
|
21
|
+
text: string;
|
|
22
|
+
}>;
|
|
23
|
+
structuredContent?: {
|
|
24
|
+
type: "json";
|
|
25
|
+
json: T;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Extrai dados estruturados de um ToolResult (para uso em pipelines).
|
|
30
|
+
* Útil quando um middleware precisa acessar dados tipados do resultado.
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractStructuredData<T>(result: {
|
|
33
|
+
structuredContent?: {
|
|
34
|
+
type: string;
|
|
35
|
+
json: T;
|
|
36
|
+
};
|
|
37
|
+
}): T | null;
|
|
38
|
+
//# sourceMappingURL=structured-content.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-content.service.d.ts","sourceRoot":"","sources":["../../src/services/structured-content.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,WAAW,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,cAAc,EAAE,CAAC,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB;IACC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CACjD,CAoBA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACnC,MAAM,EAAE;IAAE,iBAAiB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,GAC1D,CAAC,GAAG,IAAI,CAKV"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Content com fallback para clients que não suportam o primitivo nativo.
|
|
3
|
+
*
|
|
4
|
+
* MCP structuredContent (protocol ≥ 2025-06-18) permite retornar JSON tipado
|
|
5
|
+
* junto com content textual. Para clients mais antigos, embute o JSON como
|
|
6
|
+
* bloco de código dentro do Markdown.
|
|
7
|
+
*
|
|
8
|
+
* @since v5.1.0 — Task 4.1 do Roadmap de Melhorias MCP
|
|
9
|
+
*/
|
|
10
|
+
import { clientSupports } from "./client-capabilities.service.js";
|
|
11
|
+
/**
|
|
12
|
+
* Gera resposta com structured content.
|
|
13
|
+
* Se client suporta, retorna structuredContent separado.
|
|
14
|
+
* Senão, embute JSON formatado dentro do content textual.
|
|
15
|
+
*/
|
|
16
|
+
export function withStructuredContent(textContent, structuredData, jsonLabel) {
|
|
17
|
+
const useNative = clientSupports("hasStructuredContent");
|
|
18
|
+
if (useNative) {
|
|
19
|
+
return {
|
|
20
|
+
content: textContent,
|
|
21
|
+
structuredContent: { type: "json", json: structuredData },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Fallback: embute JSON como bloco de código no final
|
|
25
|
+
const label = jsonLabel || "Dados Estruturados";
|
|
26
|
+
const jsonBlock = {
|
|
27
|
+
type: "text",
|
|
28
|
+
text: `## 📦 ${label}\n\n\`\`\`json\n${JSON.stringify(structuredData, null, 2)}\n\`\`\``,
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
content: [...textContent, jsonBlock],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extrai dados estruturados de um ToolResult (para uso em pipelines).
|
|
36
|
+
* Útil quando um middleware precisa acessar dados tipados do resultado.
|
|
37
|
+
*/
|
|
38
|
+
export function extractStructuredData(result) {
|
|
39
|
+
if (result.structuredContent?.type === "json") {
|
|
40
|
+
return result.structuredContent.json;
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=structured-content.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-content.service.js","sourceRoot":"","sources":["../../src/services/structured-content.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACjC,WAAkD,EAClD,cAAiB,EACjB,SAAkB;IAKlB,MAAM,SAAS,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;IAEzD,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO;YACH,OAAO,EAAE,WAAW;YACpB,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;SAC5D,CAAC;IACN,CAAC;IAED,sDAAsD;IACtD,MAAM,KAAK,GAAG,SAAS,IAAI,oBAAoB,CAAC;IAChD,MAAM,SAAS,GAAmC;QAC9C,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS,KAAK,mBAAmB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU;KAC3F,CAAC;IAEF,OAAO;QACH,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,SAAS,CAAC;KACvC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACjC,MAAyD;IAEzD,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Dinâmico para o Maestro MCP.
|
|
3
|
+
*
|
|
4
|
+
* Gera system prompt adaptado ao client, capabilities e contexto do projeto.
|
|
5
|
+
* Substitui o system prompt estático do resources/index.ts.
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 2.5 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Gera system prompt dinâmico baseado no contexto.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildSystemPrompt(opts?: {
|
|
13
|
+
projectName?: string;
|
|
14
|
+
currentPhase?: string;
|
|
15
|
+
specialistName?: string;
|
|
16
|
+
}): string;
|
|
17
|
+
//# sourceMappingURL=system-prompt.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.service.d.ts","sourceRoot":"","sources":["../../src/services/system-prompt.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CA4DT"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Dinâmico para o Maestro MCP.
|
|
3
|
+
*
|
|
4
|
+
* Gera system prompt adaptado ao client, capabilities e contexto do projeto.
|
|
5
|
+
* Substitui o system prompt estático do resources/index.ts.
|
|
6
|
+
*
|
|
7
|
+
* @since v5.1.0 — Task 2.5 do Roadmap de Melhorias MCP
|
|
8
|
+
*/
|
|
9
|
+
import { MAESTRO_VERSION } from "../constants.js";
|
|
10
|
+
import { getClientCapabilities, getClientType } from "./client-capabilities.service.js";
|
|
11
|
+
import { getRegisteredTools } from "../router.js";
|
|
12
|
+
/**
|
|
13
|
+
* Gera system prompt dinâmico baseado no contexto.
|
|
14
|
+
*/
|
|
15
|
+
export function buildSystemPrompt(opts) {
|
|
16
|
+
const caps = getClientCapabilities();
|
|
17
|
+
const clientType = getClientType();
|
|
18
|
+
const tools = getRegisteredTools();
|
|
19
|
+
let prompt = `# Maestro v${MAESTRO_VERSION} — Orquestrador de Desenvolvimento
|
|
20
|
+
|
|
21
|
+
Você é uma IA assistente integrada ao **Maestro MCP**, um orquestrador de desenvolvimento de software.
|
|
22
|
+
|
|
23
|
+
## Regras Obrigatórias
|
|
24
|
+
|
|
25
|
+
1. **Sempre use as tools do Maestro** para interagir com o projeto
|
|
26
|
+
2. **Nunca invente dados** — use \`maestro()\` para detectar contexto
|
|
27
|
+
3. **Siga o fluxo de fases** — não pule etapas
|
|
28
|
+
4. **Salve arquivos** quando a tool retornar instruções de salvamento
|
|
29
|
+
5. **Respeite o especialista** da fase atual
|
|
30
|
+
|
|
31
|
+
## Tools Disponíveis (${tools.length})
|
|
32
|
+
|
|
33
|
+
`;
|
|
34
|
+
for (const tool of tools) {
|
|
35
|
+
prompt += `- **${tool.name}** — ${tool.description}\n`;
|
|
36
|
+
}
|
|
37
|
+
prompt += `\n## Fluxo Recomendado\n\n`;
|
|
38
|
+
prompt += `1. \`maestro(diretorio)\` — Detectar contexto\n`;
|
|
39
|
+
prompt += `2. Seguir instrução do próximo passo\n`;
|
|
40
|
+
prompt += `3. \`avancar(diretorio, entregavel)\` — Avançar fase\n`;
|
|
41
|
+
prompt += `4. \`validar(diretorio)\` — Validar gate\n`;
|
|
42
|
+
prompt += `5. Repetir até conclusão\n`;
|
|
43
|
+
// Adaptar ao client
|
|
44
|
+
if (clientType === "windsurf") {
|
|
45
|
+
prompt += `\n## Notas para Windsurf/Cascade\n\n`;
|
|
46
|
+
prompt += `- Use \`write_to_file\` para salvar arquivos retornados pelas tools\n`;
|
|
47
|
+
prompt += `- Resources estão disponíveis via \`@mcp:maestro:\`\n`;
|
|
48
|
+
prompt += `- Prompts disponíveis via seletor de prompts\n`;
|
|
49
|
+
}
|
|
50
|
+
else if (clientType === "cursor") {
|
|
51
|
+
prompt += `\n## Notas para Cursor\n\n`;
|
|
52
|
+
prompt += `- Tools MCP acessíveis diretamente\n`;
|
|
53
|
+
prompt += `- Use Composer para executar tools em sequência\n`;
|
|
54
|
+
}
|
|
55
|
+
// Contexto do projeto (se fornecido)
|
|
56
|
+
if (opts?.projectName) {
|
|
57
|
+
prompt += `\n## Projeto Atual: ${opts.projectName}\n\n`;
|
|
58
|
+
if (opts.currentPhase)
|
|
59
|
+
prompt += `**Fase:** ${opts.currentPhase}\n`;
|
|
60
|
+
if (opts.specialistName)
|
|
61
|
+
prompt += `**Especialista:** ${opts.specialistName}\n`;
|
|
62
|
+
}
|
|
63
|
+
// Capabilities awareness
|
|
64
|
+
if (!caps.hasElicitation) {
|
|
65
|
+
prompt += `\n> ℹ️ Client sem suporte a elicitation — perguntas serão feitas via texto.\n`;
|
|
66
|
+
}
|
|
67
|
+
if (!caps.hasSampling) {
|
|
68
|
+
prompt += `> ℹ️ Client sem suporte a sampling — análises serão feitas inline.\n`;
|
|
69
|
+
}
|
|
70
|
+
return prompt;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=system-prompt.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.service.js","sourceRoot":"","sources":["../../src/services/system-prompt.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAIjC;IACG,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAEnC,IAAI,MAAM,GAAG,cAAc,eAAe;;;;;;;;;;;;wBAYtB,KAAK,CAAC,MAAM;;CAEnC,CAAC;IAEE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC;IAC3D,CAAC;IAED,MAAM,IAAI,4BAA4B,CAAC;IACvC,MAAM,IAAI,iDAAiD,CAAC;IAC5D,MAAM,IAAI,wCAAwC,CAAC;IACnD,MAAM,IAAI,wDAAwD,CAAC;IACnE,MAAM,IAAI,4CAA4C,CAAC;IACvD,MAAM,IAAI,4BAA4B,CAAC;IAEvC,oBAAoB;IACpB,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,sCAAsC,CAAC;QACjD,MAAM,IAAI,uEAAuE,CAAC;QAClF,MAAM,IAAI,uDAAuD,CAAC;QAClE,MAAM,IAAI,gDAAgD,CAAC;IAC/D,CAAC;SAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,4BAA4B,CAAC;QACvC,MAAM,IAAI,sCAAsC,CAAC;QACjD,MAAM,IAAI,mDAAmD,CAAC;IAClE,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;QACpB,MAAM,IAAI,uBAAuB,IAAI,CAAC,WAAW,MAAM,CAAC;QACxD,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC;QACpE,IAAI,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,qBAAqB,IAAI,CAAC,cAAc,IAAI,CAAC;IACpF,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,IAAI,+EAA+E,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpB,MAAM,IAAI,sEAAsE,CAAC;IACrF,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|