@maestro-ai/mcp-server 5.4.5 → 5.5.1
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/README.md +68 -83
- package/dist/content/rules/RULES.md +14 -0
- package/dist/core/metrics/MetricsCollector.d.ts +28 -12
- package/dist/core/metrics/MetricsCollector.d.ts.map +1 -1
- package/dist/core/metrics/MetricsCollector.js +151 -12
- package/dist/core/metrics/MetricsCollector.js.map +1 -1
- package/dist/core/validation/ValidationPipeline.d.ts +24 -2
- package/dist/core/validation/ValidationPipeline.d.ts.map +1 -1
- package/dist/core/validation/ValidationPipeline.js +46 -2
- package/dist/core/validation/ValidationPipeline.js.map +1 -1
- package/dist/core/validation/layers/DeliverableValidator.d.ts +13 -0
- package/dist/core/validation/layers/DeliverableValidator.d.ts.map +1 -0
- package/dist/core/validation/layers/DeliverableValidator.js +276 -0
- package/dist/core/validation/layers/DeliverableValidator.js.map +1 -0
- package/dist/flows/onboarding-orchestrator.js +5 -5
- package/dist/flows/onboarding-orchestrator.js.map +1 -1
- package/dist/gates/contextual-recommender.d.ts.map +1 -1
- package/dist/gates/contextual-recommender.js +260 -1
- package/dist/gates/contextual-recommender.js.map +1 -1
- package/dist/gates/validator.d.ts +5 -6
- package/dist/gates/validator.d.ts.map +1 -1
- package/dist/gates/validator.js +9 -6
- package/dist/gates/validator.js.map +1 -1
- package/dist/handlers/shared-prompt-handler.d.ts.map +1 -1
- package/dist/handlers/shared-prompt-handler.js +15 -14
- package/dist/handlers/shared-prompt-handler.js.map +1 -1
- package/dist/middleware/adr-generation.middleware.d.ts +5 -0
- package/dist/middleware/adr-generation.middleware.d.ts.map +1 -0
- package/dist/middleware/adr-generation.middleware.js +214 -0
- package/dist/middleware/adr-generation.middleware.js.map +1 -0
- package/dist/middleware/flow-engine.middleware.d.ts +5 -3
- package/dist/middleware/flow-engine.middleware.d.ts.map +1 -1
- package/dist/middleware/flow-engine.middleware.js +18 -10
- package/dist/middleware/flow-engine.middleware.js.map +1 -1
- package/dist/middleware/index.d.ts +18 -11
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +24 -11
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/orchestration-pipeline.middleware.d.ts +42 -0
- package/dist/middleware/orchestration-pipeline.middleware.d.ts.map +1 -0
- package/dist/middleware/orchestration-pipeline.middleware.js +57 -0
- package/dist/middleware/orchestration-pipeline.middleware.js.map +1 -0
- package/dist/middleware/skill-injection.middleware.d.ts.map +1 -1
- package/dist/middleware/skill-injection.middleware.js +6 -9
- package/dist/middleware/skill-injection.middleware.js.map +1 -1
- package/dist/middleware/validation.middleware.d.ts +11 -0
- package/dist/middleware/validation.middleware.d.ts.map +1 -1
- package/dist/middleware/validation.middleware.js +64 -4
- package/dist/middleware/validation.middleware.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +20 -14
- package/dist/router.js.map +1 -1
- package/dist/services/flow-engine.d.ts +1 -0
- package/dist/services/flow-engine.d.ts.map +1 -1
- package/dist/services/flow-engine.js +22 -10
- package/dist/services/flow-engine.js.map +1 -1
- package/dist/services/watcher.service.d.ts +45 -0
- package/dist/services/watcher.service.d.ts.map +1 -0
- package/dist/services/watcher.service.js +106 -0
- package/dist/services/watcher.service.js.map +1 -0
- package/dist/state/context.d.ts +15 -4
- package/dist/state/context.d.ts.map +1 -1
- package/dist/state/context.js +36 -9
- package/dist/state/context.js.map +1 -1
- package/dist/state/storage.d.ts.map +1 -1
- package/dist/state/storage.js +6 -0
- package/dist/state/storage.js.map +1 -1
- package/dist/tests/aprovar-gate.test.d.ts +2 -0
- package/dist/tests/aprovar-gate.test.d.ts.map +1 -0
- package/dist/tests/aprovar-gate.test.js +113 -0
- package/dist/tests/aprovar-gate.test.js.map +1 -0
- package/dist/tests/deliverable-validator.test.d.ts +12 -0
- package/dist/tests/deliverable-validator.test.d.ts.map +1 -0
- package/dist/tests/deliverable-validator.test.js +214 -0
- package/dist/tests/deliverable-validator.test.js.map +1 -0
- package/dist/tests/flow-engine.test.d.ts +2 -0
- package/dist/tests/flow-engine.test.d.ts.map +1 -0
- package/dist/tests/flow-engine.test.js +85 -0
- package/dist/tests/flow-engine.test.js.map +1 -0
- package/dist/tests/gate-orientation.test.d.ts +2 -0
- package/dist/tests/gate-orientation.test.d.ts.map +1 -0
- package/dist/tests/gate-orientation.test.js +59 -0
- package/dist/tests/gate-orientation.test.js.map +1 -0
- package/dist/tests/middleware.test.js +30 -4
- package/dist/tests/middleware.test.js.map +1 -1
- package/dist/tests/watcher.service.test.d.ts +2 -0
- package/dist/tests/watcher.service.test.d.ts.map +1 -0
- package/dist/tests/watcher.service.test.js +119 -0
- package/dist/tests/watcher.service.test.js.map +1 -0
- package/dist/tools/aprovar-gate.d.ts.map +1 -1
- package/dist/tools/aprovar-gate.js +4 -0
- package/dist/tools/aprovar-gate.js.map +1 -1
- package/dist/tools/contexto.d.ts.map +1 -1
- package/dist/tools/contexto.js +41 -0
- package/dist/tools/contexto.js.map +1 -1
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +6 -40
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/tools/maestro-tool.d.ts.map +1 -1
- package/dist/tools/maestro-tool.js +34 -14
- package/dist/tools/maestro-tool.js.map +1 -1
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +224 -71
- package/dist/tools/proximo.js.map +1 -1
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +27 -0
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/validar-gate.d.ts +8 -1
- package/dist/tools/validar-gate.d.ts.map +1 -1
- package/dist/tools/validar-gate.js +147 -99
- package/dist/tools/validar-gate.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/gate-orientation.d.ts +11 -0
- package/dist/utils/gate-orientation.d.ts.map +1 -0
- package/dist/utils/gate-orientation.js +64 -0
- package/dist/utils/gate-orientation.js.map +1 -0
- package/dist/utils/ide-paths.d.ts +11 -0
- package/dist/utils/ide-paths.d.ts.map +1 -1
- package/dist/utils/ide-paths.js +27 -0
- package/dist/utils/ide-paths.js.map +1 -1
- package/dist/utils/instructions.d.ts +6 -1
- package/dist/utils/instructions.d.ts.map +1 -1
- package/dist/utils/instructions.js +32 -1
- package/dist/utils/instructions.js.map +1 -1
- package/package.json +2 -1
- package/dist/gates/compatibility-wrapper.d.ts +0 -139
- package/dist/gates/compatibility-wrapper.d.ts.map +0 -1
- package/dist/gates/compatibility-wrapper.js +0 -362
- package/dist/gates/compatibility-wrapper.js.map +0 -1
- package/dist/gates/unified-validator.d.ts +0 -67
- package/dist/gates/unified-validator.d.ts.map +0 -1
- package/dist/gates/unified-validator.js +0 -234
- package/dist/gates/unified-validator.js.map +0 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { parsearEstado } from "../state/storage.js";
|
|
4
|
+
import { getFluxoComStitch } from "../flows/types.js";
|
|
5
|
+
import { KnowledgeBase } from "../core/knowledge/KnowledgeBase.js";
|
|
6
|
+
// v6.3 S3.1: Fases que disparam geração automática de ADR (expandido)
|
|
7
|
+
const FASES_ARQUITETURAIS = new Set([
|
|
8
|
+
'Arquitetura',
|
|
9
|
+
'Arquitetura Avançada',
|
|
10
|
+
'Banco de Dados',
|
|
11
|
+
'Segurança',
|
|
12
|
+
'Contrato API',
|
|
13
|
+
'Requisitos',
|
|
14
|
+
'Modelo de Domínio',
|
|
15
|
+
]);
|
|
16
|
+
// Padrões regex para detectar decisões arquiteturais no texto
|
|
17
|
+
const PADROES_DECISAO = [
|
|
18
|
+
/decidimos?\s+(?:usar?|utilizar?|adotar?)\s+([^.\n]+)/gi,
|
|
19
|
+
/escolhemos?\s+([^.\n]+?)(?:\s+por\s+[^.\n]+)?/gi,
|
|
20
|
+
/adotamos?\s+([^.\n]+)/gi,
|
|
21
|
+
/stack[:\s]+([^.\n]+)/gi,
|
|
22
|
+
/adr[-\s]?\d+[:\s]+([^.\n]+)/gi,
|
|
23
|
+
/usaremos?\s+([^.\n]+)/gi,
|
|
24
|
+
/optamos?\s+por\s+([^.\n]+)/gi,
|
|
25
|
+
];
|
|
26
|
+
export function withADRGeneration(handler) {
|
|
27
|
+
return async (args) => {
|
|
28
|
+
const result = await handler(args);
|
|
29
|
+
// Só gerar ADR se a operação foi bem-sucedida
|
|
30
|
+
if (result.isError)
|
|
31
|
+
return result;
|
|
32
|
+
const diretorio = args.diretorio;
|
|
33
|
+
if (!diretorio)
|
|
34
|
+
return result;
|
|
35
|
+
// Ler estado — preferir estado atualizado (pós-persistência)
|
|
36
|
+
const estadoJson = result.estado_atualizado || args.estado_json;
|
|
37
|
+
// Guard: garantir que é string válida antes de parsear
|
|
38
|
+
if (!estadoJson || typeof estadoJson !== 'string')
|
|
39
|
+
return result;
|
|
40
|
+
try {
|
|
41
|
+
const estado = parsearEstado(estadoJson);
|
|
42
|
+
if (!estado)
|
|
43
|
+
return result;
|
|
44
|
+
// Verificar se a fase anterior (que acabou de ser concluída) é arquitetural
|
|
45
|
+
// A fase_atual já avançou, então a fase concluída é a anterior
|
|
46
|
+
const faseConcluidaNum = estado.fase_atual - 1;
|
|
47
|
+
if (faseConcluidaNum < 1)
|
|
48
|
+
return result;
|
|
49
|
+
// v6.2: Usar getFluxoComStitch para obter nome correto da fase
|
|
50
|
+
// (estado.fases não existe — o estado usa nivel + fase_atual)
|
|
51
|
+
const nomeFaseConcluida = args.nomeFaseConcluida ||
|
|
52
|
+
inferirNomeFase(estado, faseConcluidaNum);
|
|
53
|
+
if (!nomeFaseConcluida || !FASES_ARQUITETURAIS.has(nomeFaseConcluida))
|
|
54
|
+
return result;
|
|
55
|
+
// Extrair entregável dos args (guard: deve ser string com conteúdo)
|
|
56
|
+
const entregavel = args.entregavel;
|
|
57
|
+
if (!entregavel || typeof entregavel !== 'string' || entregavel.length < 100)
|
|
58
|
+
return result;
|
|
59
|
+
// Extrair decisões do entregável
|
|
60
|
+
const decisoes = extrairDecisoes(entregavel, nomeFaseConcluida);
|
|
61
|
+
if (decisoes.length === 0)
|
|
62
|
+
return result;
|
|
63
|
+
// Salvar ADRs no diretório do projeto (arquivos .md)
|
|
64
|
+
await salvarADRs(diretorio, decisoes, nomeFaseConcluida);
|
|
65
|
+
// v6.3 S3.2: Persistir ADRs no KnowledgeBase para consulta futura
|
|
66
|
+
await persistirNoKnowledgeBase(diretorio, decisoes, faseConcluidaNum);
|
|
67
|
+
console.log(`[ADRGeneration] ${decisoes.length} ADR(s) gerados para fase: ${nomeFaseConcluida}`);
|
|
68
|
+
// Adicionar nota ao resultado sobre ADRs gerados
|
|
69
|
+
if (result.content?.[0]?.text) {
|
|
70
|
+
result.content[0].text +=
|
|
71
|
+
`\n\n---\n\n📋 **${decisoes.length} ADR(s) gerado(s) automaticamente** em \`.maestro/adrs/\`\n` +
|
|
72
|
+
decisoes.map(d => `- ${d.id}: ${d.titulo}`).join('\n') +
|
|
73
|
+
`\n\n> 💡 Use \`contexto()\` para ver todas as decisões acumuladas do projeto.`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
// ADR generation é best-effort — não bloqueia o fluxo
|
|
78
|
+
console.warn('[ADRGeneration] Falha ao gerar ADRs (non-blocking):', error);
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* v6.2: Infere o nome da fase usando getFluxoComStitch ao invés de estado.fases
|
|
85
|
+
* (que não existe no tipo EstadoProjeto)
|
|
86
|
+
*/
|
|
87
|
+
function inferirNomeFase(estado, faseNum) {
|
|
88
|
+
try {
|
|
89
|
+
const nivel = estado.nivel;
|
|
90
|
+
const usarStitch = estado.usar_stitch;
|
|
91
|
+
if (!nivel)
|
|
92
|
+
return '';
|
|
93
|
+
const fluxo = getFluxoComStitch(nivel, usarStitch ?? false);
|
|
94
|
+
const fase = fluxo.fases.find((f) => f.numero === faseNum);
|
|
95
|
+
return fase?.nome || '';
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function extrairDecisoes(entregavel, nomeFase) {
|
|
102
|
+
const decisoes = [];
|
|
103
|
+
const vistas = new Set();
|
|
104
|
+
for (const padrao of PADROES_DECISAO) {
|
|
105
|
+
padrao.lastIndex = 0; // Reset regex state
|
|
106
|
+
let match;
|
|
107
|
+
while ((match = padrao.exec(entregavel)) !== null) {
|
|
108
|
+
const decisaoTexto = match[1]?.trim();
|
|
109
|
+
if (!decisaoTexto || decisaoTexto.length < 5)
|
|
110
|
+
continue;
|
|
111
|
+
// Evitar duplicatas
|
|
112
|
+
const chave = decisaoTexto.toLowerCase().slice(0, 50);
|
|
113
|
+
if (vistas.has(chave))
|
|
114
|
+
continue;
|
|
115
|
+
vistas.add(chave);
|
|
116
|
+
// Extrair contexto (linha anterior à decisão)
|
|
117
|
+
const posicao = match.index;
|
|
118
|
+
const textoAntes = entregavel.slice(Math.max(0, posicao - 200), posicao);
|
|
119
|
+
const linhasAntes = textoAntes.split('\n');
|
|
120
|
+
const contexto = linhasAntes[linhasAntes.length - 2]?.trim() || '';
|
|
121
|
+
const id = `ADR-${String(decisoes.length + 1).padStart(3, '0')}`;
|
|
122
|
+
decisoes.push({
|
|
123
|
+
id,
|
|
124
|
+
titulo: decisaoTexto.slice(0, 80),
|
|
125
|
+
fase: nomeFase,
|
|
126
|
+
decisao: decisaoTexto,
|
|
127
|
+
contexto,
|
|
128
|
+
timestamp: new Date().toISOString(),
|
|
129
|
+
status: 'aceito'
|
|
130
|
+
});
|
|
131
|
+
// Limitar a 10 ADRs por fase para evitar ruído
|
|
132
|
+
if (decisoes.length >= 10)
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
if (decisoes.length >= 10)
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
return decisoes;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* v6.3 S3.2: Persiste ADRs no KnowledgeBase para consulta via contexto()
|
|
142
|
+
*/
|
|
143
|
+
async function persistirNoKnowledgeBase(diretorio, adrs, faseNum) {
|
|
144
|
+
try {
|
|
145
|
+
const kb = new KnowledgeBase(diretorio);
|
|
146
|
+
for (const adr of adrs) {
|
|
147
|
+
await kb.record({
|
|
148
|
+
id: adr.id,
|
|
149
|
+
type: 'adr',
|
|
150
|
+
content: {
|
|
151
|
+
decision: adr.decisao,
|
|
152
|
+
context: adr.contexto,
|
|
153
|
+
alternatives: [],
|
|
154
|
+
consequences: { positive: [], negative: [] },
|
|
155
|
+
},
|
|
156
|
+
metadata: {
|
|
157
|
+
fase: faseNum,
|
|
158
|
+
timestamp: adr.timestamp,
|
|
159
|
+
tags: [adr.fase.toLowerCase().replace(/\s+/g, '-'), 'auto-generated'],
|
|
160
|
+
relevance: 0.8,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
// KnowledgeBase é best-effort — não bloqueia o fluxo
|
|
167
|
+
console.warn('[ADRGeneration] Falha ao persistir no KnowledgeBase (non-blocking):', err);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function salvarADRs(diretorio, adrs, nomeFase) {
|
|
171
|
+
const adrsDir = path.join(diretorio, '.maestro', 'adrs');
|
|
172
|
+
await fs.mkdir(adrsDir, { recursive: true });
|
|
173
|
+
for (const adr of adrs) {
|
|
174
|
+
const nomeArquivo = `${adr.id}-${nomeFase.toLowerCase().replace(/\s+/g, '-')}.md`;
|
|
175
|
+
const caminhoArquivo = path.join(adrsDir, nomeArquivo);
|
|
176
|
+
const conteudo = `# ${adr.id}: ${adr.titulo}
|
|
177
|
+
|
|
178
|
+
**Status:** ${adr.status}
|
|
179
|
+
**Fase:** ${adr.fase}
|
|
180
|
+
**Data:** ${new Date(adr.timestamp).toLocaleDateString('pt-BR')}
|
|
181
|
+
|
|
182
|
+
## Contexto
|
|
183
|
+
|
|
184
|
+
${adr.contexto || 'Extraído automaticamente do entregável da fase.'}
|
|
185
|
+
|
|
186
|
+
## Decisão
|
|
187
|
+
|
|
188
|
+
${adr.decisao}
|
|
189
|
+
|
|
190
|
+
## Consequências
|
|
191
|
+
|
|
192
|
+
> ⚠️ Este ADR foi gerado automaticamente. Revise e complemente com consequências e alternativas consideradas.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
*Gerado automaticamente pelo MCP Maestro v6.1 — withADRGeneration*
|
|
196
|
+
`;
|
|
197
|
+
await fs.writeFile(caminhoArquivo, conteudo, 'utf-8');
|
|
198
|
+
}
|
|
199
|
+
// Atualizar índice de ADRs
|
|
200
|
+
const indiceArquivo = path.join(adrsDir, 'INDEX.md');
|
|
201
|
+
let indice = '# Índice de ADRs\n\n';
|
|
202
|
+
try {
|
|
203
|
+
indice = await fs.readFile(indiceArquivo, 'utf-8');
|
|
204
|
+
}
|
|
205
|
+
catch { /* arquivo não existe ainda */ }
|
|
206
|
+
for (const adr of adrs) {
|
|
207
|
+
const linha = `- [${adr.id}](${adr.id}-${nomeFase.toLowerCase().replace(/\s+/g, '-')}.md): ${adr.titulo}\n`;
|
|
208
|
+
if (!indice.includes(adr.id)) {
|
|
209
|
+
indice += linha;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
await fs.writeFile(indiceArquivo, indice, 'utf-8');
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=adr-generation.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr-generation.middleware.js","sourceRoot":"","sources":["../../src/middleware/adr-generation.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Middleware: withFlowEngine
|
|
3
3
|
*
|
|
4
|
+
* v6.0 Sprint 4: FlowEngine FORÇADO (não sugestivo)
|
|
5
|
+
*
|
|
4
6
|
* Após execução da tool, calcula next_action via flow engine
|
|
5
|
-
*
|
|
7
|
+
* e SEMPRE sobrescreve, mesmo se a tool definiu um valor diferente.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* Isso garante que o fluxo seja controlado centralmente pelo FlowEngine,
|
|
10
|
+
* impedindo que tools individuais desviem do caminho correto.
|
|
9
11
|
*/
|
|
10
12
|
import type { ToolResult } from "../types/index.js";
|
|
11
13
|
type ToolHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-engine.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/flow-engine.middleware.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"flow-engine.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/flow-engine.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE1E,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAsDhE"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Middleware: withFlowEngine
|
|
3
3
|
*
|
|
4
|
+
* v6.0 Sprint 4: FlowEngine FORÇADO (não sugestivo)
|
|
5
|
+
*
|
|
4
6
|
* Após execução da tool, calcula next_action via flow engine
|
|
5
|
-
*
|
|
7
|
+
* e SEMPRE sobrescreve, mesmo se a tool definiu um valor diferente.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
+
* Isso garante que o fluxo seja controlado centralmente pelo FlowEngine,
|
|
10
|
+
* impedindo que tools individuais desviem do caminho correto.
|
|
9
11
|
*/
|
|
10
12
|
import { parsearEstado } from "../state/storage.js";
|
|
11
13
|
import { getNextStep, getFlowProgress, flowStepToNextAction } from "../services/flow-engine.js";
|
|
@@ -29,13 +31,19 @@ export function withFlowEngine(handler) {
|
|
|
29
31
|
const estado = parsearEstado(estadoJson);
|
|
30
32
|
if (!estado)
|
|
31
33
|
return result;
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
// v6.0: SEMPRE calcular e sobrescrever next_action (forçado)
|
|
35
|
+
const nextStep = getNextStep(estado, diretorio);
|
|
36
|
+
const commandedAction = flowStepToNextAction(nextStep);
|
|
37
|
+
// Logar se a tool tentou definir um next_action diferente
|
|
38
|
+
if (result.next_action && result.next_action.tool !== commandedAction.tool) {
|
|
39
|
+
console.warn(`[FlowEngine] Override detected: ` +
|
|
40
|
+
`tool wanted "${result.next_action.tool}", ` +
|
|
41
|
+
`flow commands "${commandedAction.tool}"`);
|
|
42
|
+
}
|
|
43
|
+
// SEMPRE sobrescrever (não é mais condicional)
|
|
44
|
+
result.next_action = commandedAction;
|
|
45
|
+
if (nextStep.specialist) {
|
|
46
|
+
result.specialist_persona = result.specialist_persona || nextStep.specialist;
|
|
39
47
|
}
|
|
40
48
|
// Sempre atualizar progress (é barato e útil)
|
|
41
49
|
if (!result.progress) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-engine.middleware.js","sourceRoot":"","sources":["../../src/middleware/flow-engine.middleware.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"flow-engine.middleware.js","sourceRoot":"","sources":["../../src/middleware/flow-engine.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAKhG,MAAM,UAAU,cAAc,CAAC,OAAoB;IAC/C,OAAO,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,wCAAwC;QACxC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,6DAA6D;QAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,IAAK,IAAI,CAAC,WAAkC,CAAC;QACxF,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE3B,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAEvD,0DAA0D;YAC1D,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;gBACzE,OAAO,CAAC,IAAI,CACR,kCAAkC;oBAClC,gBAAgB,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK;oBAC5C,kBAAkB,eAAe,CAAC,IAAI,GAAG,CAC5C,CAAC;YACN,CAAC;YAED,+CAA+C;YAC/C,MAAM,CAAC,WAAW,GAAG,eAAe,CAAC;YAErC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC,UAAU,CAAC;YACjF,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Middleware Pipeline do Maestro
|
|
2
|
+
* Middleware Pipeline do Maestro v6
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* v6.0: Pipeline Unificada — TODAS as tools usam applyOrchestrationPipeline
|
|
5
|
+
* Ordem fixa: Error → State → Flow → Persistence → Skill
|
|
6
|
+
*
|
|
7
|
+
* DEPRECATED: applyMiddlewares, applySmartMiddlewares, applyLightMiddlewares, applyPersistenceMiddlewares
|
|
8
|
+
* Serão removidos na v7.0
|
|
6
9
|
*/
|
|
10
|
+
export { applyOrchestrationPipeline, applyLightOrchestrationPipeline } from "./orchestration-pipeline.middleware.js";
|
|
7
11
|
export { withStateLoad } from "./state-loader.middleware.js";
|
|
8
12
|
export { withPersistence } from "./persistence.middleware.js";
|
|
9
13
|
export { withFlowEngine } from "./flow-engine.middleware.js";
|
|
10
14
|
export { withSkillInjection } from "./skill-injection.middleware.js";
|
|
11
|
-
export { withPromptValidation, defaultValidations } from "./validation.middleware.js";
|
|
15
|
+
export { withPromptValidation, withCompulsoryStateGuard, defaultValidations } from "./validation.middleware.js";
|
|
12
16
|
import type { ToolResult } from "../types/index.js";
|
|
13
17
|
type ToolHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
14
18
|
/**
|
|
@@ -23,21 +27,24 @@ type ToolHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
|
23
27
|
*
|
|
24
28
|
* O handler original executa no centro do pipeline.
|
|
25
29
|
*/
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
32
|
+
* Será removido na v7.0
|
|
33
|
+
*/
|
|
26
34
|
export declare function applyMiddlewares(toolName: string, handler: ToolHandler): ToolHandler;
|
|
27
35
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
36
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
37
|
+
* Será removido na v7.0
|
|
30
38
|
*/
|
|
31
39
|
export declare function applyLightMiddlewares(toolName: string, handler: ToolHandler): ToolHandler;
|
|
32
40
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* Substitui applyLightMiddlewares para tools que se beneficiam de skill injection.
|
|
41
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
42
|
+
* Será removido na v7.0
|
|
36
43
|
*/
|
|
37
44
|
export declare function applySmartMiddlewares(toolName: string, handler: ToolHandler): ToolHandler;
|
|
38
45
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
46
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
47
|
+
* Será removido na v7.0
|
|
41
48
|
*/
|
|
42
49
|
export declare function applyPersistenceMiddlewares(toolName: string, handler: ToolHandler): ToolHandler;
|
|
43
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAGrH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOhH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAYpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAMzF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAQzF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAQ/F"}
|
package/dist/middleware/index.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Middleware Pipeline do Maestro
|
|
2
|
+
* Middleware Pipeline do Maestro v6
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* v6.0: Pipeline Unificada — TODAS as tools usam applyOrchestrationPipeline
|
|
5
|
+
* Ordem fixa: Error → State → Flow → Persistence → Skill
|
|
6
|
+
*
|
|
7
|
+
* DEPRECATED: applyMiddlewares, applySmartMiddlewares, applyLightMiddlewares, applyPersistenceMiddlewares
|
|
8
|
+
* Serão removidos na v7.0
|
|
6
9
|
*/
|
|
10
|
+
// v6.0: Pipeline Unificada (RECOMENDADO)
|
|
11
|
+
export { applyOrchestrationPipeline, applyLightOrchestrationPipeline } from "./orchestration-pipeline.middleware.js";
|
|
12
|
+
// Middlewares individuais (para uso avançado)
|
|
7
13
|
export { withStateLoad } from "./state-loader.middleware.js";
|
|
8
14
|
export { withPersistence } from "./persistence.middleware.js";
|
|
9
15
|
export { withFlowEngine } from "./flow-engine.middleware.js";
|
|
10
16
|
export { withSkillInjection } from "./skill-injection.middleware.js";
|
|
11
|
-
export { withPromptValidation, defaultValidations } from "./validation.middleware.js";
|
|
17
|
+
export { withPromptValidation, withCompulsoryStateGuard, defaultValidations } from "./validation.middleware.js";
|
|
12
18
|
import { withStateLoad } from "./state-loader.middleware.js";
|
|
13
19
|
import { withPersistence } from "./persistence.middleware.js";
|
|
14
20
|
import { withFlowEngine } from "./flow-engine.middleware.js";
|
|
@@ -26,29 +32,36 @@ import { withErrorHandling } from "../errors/index.js";
|
|
|
26
32
|
*
|
|
27
33
|
* O handler original executa no centro do pipeline.
|
|
28
34
|
*/
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
37
|
+
* Será removido na v7.0
|
|
38
|
+
*/
|
|
29
39
|
export function applyMiddlewares(toolName, handler) {
|
|
40
|
+
console.warn(`[Middleware] DEPRECATED: applyMiddlewares used for ${toolName}. Use applyOrchestrationPipeline.`);
|
|
30
41
|
return withErrorHandling(toolName, withStateLoad(withFlowEngine(withPersistence(withSkillInjection(handler)))));
|
|
31
42
|
}
|
|
32
43
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
44
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
45
|
+
* Será removido na v7.0
|
|
35
46
|
*/
|
|
36
47
|
export function applyLightMiddlewares(toolName, handler) {
|
|
48
|
+
console.warn(`[Middleware] DEPRECATED: applyLightMiddlewares used for ${toolName}. Use applyOrchestrationPipeline.`);
|
|
37
49
|
return withErrorHandling(toolName, withStateLoad(handler));
|
|
38
50
|
}
|
|
39
51
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* Substitui applyLightMiddlewares para tools que se beneficiam de skill injection.
|
|
52
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
53
|
+
* Será removido na v7.0
|
|
43
54
|
*/
|
|
44
55
|
export function applySmartMiddlewares(toolName, handler) {
|
|
56
|
+
console.warn(`[Middleware] DEPRECATED: applySmartMiddlewares used for ${toolName}. Use applyOrchestrationPipeline.`);
|
|
45
57
|
return withErrorHandling(toolName, withStateLoad(withSkillInjection(handler)));
|
|
46
58
|
}
|
|
47
59
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
60
|
+
* @deprecated v6.0 — Use applyOrchestrationPipeline instead
|
|
61
|
+
* Será removido na v7.0
|
|
50
62
|
*/
|
|
51
63
|
export function applyPersistenceMiddlewares(toolName, handler) {
|
|
64
|
+
console.warn(`[Middleware] DEPRECATED: applyPersistenceMiddlewares used for ${toolName}. Use applyOrchestrationPipeline.`);
|
|
52
65
|
return withErrorHandling(toolName, withStateLoad(withPersistence(handler)));
|
|
53
66
|
}
|
|
54
67
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yCAAyC;AACzC,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAErH,8CAA8C;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKvD;;;;;;;;;;;GAWG;AACH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAoB;IACnE,OAAO,CAAC,IAAI,CAAC,sDAAsD,QAAQ,mCAAmC,CAAC,CAAC;IAChH,OAAO,iBAAiB,CACpB,QAAQ,EACR,aAAa,CACT,cAAc,CACV,eAAe,CACX,kBAAkB,CAAC,OAAO,CAAC,CAC9B,CACJ,CACJ,CACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,OAAoB;IACxE,OAAO,CAAC,IAAI,CAAC,2DAA2D,QAAQ,mCAAmC,CAAC,CAAC;IACrH,OAAO,iBAAiB,CACpB,QAAQ,EACR,aAAa,CAAC,OAAO,CAAC,CACzB,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,OAAoB;IACxE,OAAO,CAAC,IAAI,CAAC,2DAA2D,QAAQ,mCAAmC,CAAC,CAAC;IACrH,OAAO,iBAAiB,CACpB,QAAQ,EACR,aAAa,CACT,kBAAkB,CAAC,OAAO,CAAC,CAC9B,CACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAgB,EAAE,OAAoB;IAC9E,OAAO,CAAC,IAAI,CAAC,iEAAiE,QAAQ,mCAAmC,CAAC,CAAC;IAC3H,OAAO,iBAAiB,CACpB,QAAQ,EACR,aAAa,CACT,eAAe,CAAC,OAAO,CAAC,CAC3B,CACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Unificada de Orquestração v6.3
|
|
3
|
+
*
|
|
4
|
+
* Ordem fixa de execução:
|
|
5
|
+
* 1. Error Handling — captura erros e formata resposta
|
|
6
|
+
* 2. State Load — auto-carrega estado se não fornecido
|
|
7
|
+
* 3. [Handler executa] — tool original
|
|
8
|
+
* 4. Persistence — salva estado ANTES do FlowEngine
|
|
9
|
+
* 5. ADR Generation — extrai decisões de fases arquiteturais (best-effort)
|
|
10
|
+
* 6. Flow Engine — calcula next_action com estado já persistido (FORÇADO)
|
|
11
|
+
* 7. Skill Inject — injeta contexto do especialista (OBRIGATÓRIA)
|
|
12
|
+
* 8. Prompt Validation — valida uso correto das tools na resposta
|
|
13
|
+
*
|
|
14
|
+
* @since v6.0 — Sprint 1 do Roadmap de Orquestração
|
|
15
|
+
* @since v6.1 — Correção 3: Persistence antes de FlowEngine + Sprint 6: ADR Generation
|
|
16
|
+
* @since v6.2 — Sprint 2: withPromptValidation integrado
|
|
17
|
+
* @since v6.3 — S1.1: Corrigido withPromptValidation (era no-op — expectedTool não era passado)
|
|
18
|
+
*/
|
|
19
|
+
import type { ToolResult } from "../types/index.js";
|
|
20
|
+
type ToolHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Aplica pipeline completo e unificado de middlewares a um handler de tool.
|
|
23
|
+
*
|
|
24
|
+
* Esta é a ÚNICA função que deve ser usada para wrappear tools públicas.
|
|
25
|
+
* Garante que todos os middlewares críticos sejam aplicados em ordem consistente.
|
|
26
|
+
*
|
|
27
|
+
* @param toolName - Nome da tool (para logs e error handling)
|
|
28
|
+
* @param handler - Handler original da tool
|
|
29
|
+
* @returns Handler wrapped com todos os middlewares
|
|
30
|
+
*/
|
|
31
|
+
export declare function applyOrchestrationPipeline(toolName: string, handler: ToolHandler): ToolHandler;
|
|
32
|
+
/**
|
|
33
|
+
* Variante leve da pipeline (DEPRECATED — usar applyOrchestrationPipeline)
|
|
34
|
+
*
|
|
35
|
+
* Mantida apenas para compatibilidade temporária com código legado.
|
|
36
|
+
* Será removida na v7.0.
|
|
37
|
+
*
|
|
38
|
+
* @deprecated Use applyOrchestrationPipeline instead
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyLightOrchestrationPipeline(toolName: string, handler: ToolHandler): ToolHandler;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=orchestration-pipeline.middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration-pipeline.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/orchestration-pipeline.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACrB,WAAW,CAsBb;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACrB,WAAW,CAQb"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Unificada de Orquestração v6.3
|
|
3
|
+
*
|
|
4
|
+
* Ordem fixa de execução:
|
|
5
|
+
* 1. Error Handling — captura erros e formata resposta
|
|
6
|
+
* 2. State Load — auto-carrega estado se não fornecido
|
|
7
|
+
* 3. [Handler executa] — tool original
|
|
8
|
+
* 4. Persistence — salva estado ANTES do FlowEngine
|
|
9
|
+
* 5. ADR Generation — extrai decisões de fases arquiteturais (best-effort)
|
|
10
|
+
* 6. Flow Engine — calcula next_action com estado já persistido (FORÇADO)
|
|
11
|
+
* 7. Skill Inject — injeta contexto do especialista (OBRIGATÓRIA)
|
|
12
|
+
* 8. Prompt Validation — valida uso correto das tools na resposta
|
|
13
|
+
*
|
|
14
|
+
* @since v6.0 — Sprint 1 do Roadmap de Orquestração
|
|
15
|
+
* @since v6.1 — Correção 3: Persistence antes de FlowEngine + Sprint 6: ADR Generation
|
|
16
|
+
* @since v6.2 — Sprint 2: withPromptValidation integrado
|
|
17
|
+
* @since v6.3 — S1.1: Corrigido withPromptValidation (era no-op — expectedTool não era passado)
|
|
18
|
+
*/
|
|
19
|
+
import { withErrorHandling } from "../errors/index.js";
|
|
20
|
+
import { withStateLoad } from "./state-loader.middleware.js";
|
|
21
|
+
import { withFlowEngine } from "./flow-engine.middleware.js";
|
|
22
|
+
import { withSkillInjection } from "./skill-injection.middleware.js";
|
|
23
|
+
import { withPersistence } from "./persistence.middleware.js";
|
|
24
|
+
import { withADRGeneration } from "./adr-generation.middleware.js";
|
|
25
|
+
import { withPromptValidation, withCompulsoryStateGuard } from "./validation.middleware.js";
|
|
26
|
+
/**
|
|
27
|
+
* Aplica pipeline completo e unificado de middlewares a um handler de tool.
|
|
28
|
+
*
|
|
29
|
+
* Esta é a ÚNICA função que deve ser usada para wrappear tools públicas.
|
|
30
|
+
* Garante que todos os middlewares críticos sejam aplicados em ordem consistente.
|
|
31
|
+
*
|
|
32
|
+
* @param toolName - Nome da tool (para logs e error handling)
|
|
33
|
+
* @param handler - Handler original da tool
|
|
34
|
+
* @returns Handler wrapped com todos os middlewares
|
|
35
|
+
*/
|
|
36
|
+
export function applyOrchestrationPipeline(toolName, handler) {
|
|
37
|
+
console.log(`[OrchestrationPipeline] Registering tool: ${toolName}`);
|
|
38
|
+
// V6 Sprint 2: withCompulsoryStateGuard é o PRIMEIRO middleware da cadeia.
|
|
39
|
+
// Bloqueia tools não-permitidas quando `em_estado_compulsorio = true`,
|
|
40
|
+
// antes de qualquer outra lógica ser executada.
|
|
41
|
+
return withCompulsoryStateGuard(toolName)(withErrorHandling(toolName, withStateLoad(withPersistence(withADRGeneration(withFlowEngine(withSkillInjection(withPromptValidation(toolName, toolName)(handler))))))));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Variante leve da pipeline (DEPRECATED — usar applyOrchestrationPipeline)
|
|
45
|
+
*
|
|
46
|
+
* Mantida apenas para compatibilidade temporária com código legado.
|
|
47
|
+
* Será removida na v7.0.
|
|
48
|
+
*
|
|
49
|
+
* @deprecated Use applyOrchestrationPipeline instead
|
|
50
|
+
*/
|
|
51
|
+
export function applyLightOrchestrationPipeline(toolName, handler) {
|
|
52
|
+
console.warn(`[OrchestrationPipeline] DEPRECATED: applyLightOrchestrationPipeline used for ${toolName}. ` +
|
|
53
|
+
`Use applyOrchestrationPipeline instead.`);
|
|
54
|
+
// Mesmo comportamento — não há mais "light" vs "full"
|
|
55
|
+
return applyOrchestrationPipeline(toolName, handler);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=orchestration-pipeline.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration-pipeline.middleware.js","sourceRoot":"","sources":["../../src/middleware/orchestration-pipeline.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAK5F;;;;;;;;;GASG;AACH,MAAM,UAAU,0BAA0B,CACtC,QAAgB,EAChB,OAAoB;IAEpB,OAAO,CAAC,GAAG,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC;IAErE,2EAA2E;IAC3E,uEAAuE;IACvE,gDAAgD;IAChD,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CACrC,iBAAiB,CACb,QAAQ,EACR,aAAa,CACT,eAAe,CACX,iBAAiB,CACb,cAAc,CACV,kBAAkB,CACd,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CACpD,CACJ,CACJ,CACJ,CACJ,CACJ,CACJ,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC3C,QAAgB,EAChB,OAAoB;IAEpB,OAAO,CAAC,IAAI,CACR,gFAAgF,QAAQ,IAAI;QAC5F,yCAAyC,CAC5C,CAAC;IAEF,sDAAsD;IACtD,OAAO,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-injection.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/skill-injection.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"skill-injection.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/skill-injection.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE1E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAqDpE"}
|
|
@@ -9,10 +9,9 @@
|
|
|
9
9
|
* injeção diretamente.
|
|
10
10
|
*/
|
|
11
11
|
import { parsearEstado } from "../state/storage.js";
|
|
12
|
-
import { ContentResolverService } from "../services/content-resolver.service.js";
|
|
13
|
-
import { SkillLoaderService } from "../services/skill-loader.service.js";
|
|
14
12
|
import { getSkillParaFase } from "../utils/prompt-mapper.js";
|
|
15
13
|
import { getFaseComStitch } from "../flows/types.js";
|
|
14
|
+
import { formatSkillHydrationCommand, detectIDE } from "../utils/ide-paths.js";
|
|
16
15
|
export function withSkillInjection(handler) {
|
|
17
16
|
return async (args) => {
|
|
18
17
|
const result = await handler(args);
|
|
@@ -44,13 +43,11 @@ export function withSkillInjection(handler) {
|
|
|
44
43
|
if (!actionsThatNeedSkill.includes(result.next_action.tool)) {
|
|
45
44
|
return result;
|
|
46
45
|
}
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Append contexto resumido à resposta
|
|
53
|
-
result.content[0].text += `\n\n---\n\n## 🧠 Contexto do Especialista (${faseInfo.nome})\n\n${skillLoader.formatAsMarkdown(contextPkg)}`;
|
|
46
|
+
// v7.0: Substituído injeção ativa por menção dinâmica da IDE
|
|
47
|
+
const ide = estado.ide || detectIDE(diretorio) || 'windsurf';
|
|
48
|
+
const hydrationCommand = formatSkillHydrationCommand(skillName, ide);
|
|
49
|
+
if (result.content?.[0]) {
|
|
50
|
+
result.content[0].text += `\n\n---\n\n## 🧠 Contexto do Especialista (${faseInfo.nome})\n\n${hydrationCommand}`;
|
|
54
51
|
}
|
|
55
52
|
}
|
|
56
53
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-injection.middleware.js","sourceRoot":"","sources":["../../src/middleware/skill-injection.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skill-injection.middleware.js","sourceRoot":"","sources":["../../src/middleware/skill-injection.middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAK/E,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACnD,OAAO,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,kFAAkF;QAClF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,mEAAmE;QACnE,oDAAoD;QACpD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjD,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAE3B,MAAM,QAAQ,GAAG,gBAAgB,CAC7B,MAAM,CAAC,KAAY,EACnB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACrB,CAAC;gBACF,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAC;gBAE7B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS;oBAAE,OAAO,MAAM,CAAC;gBAE9B,+EAA+E;gBAC/E,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;gBAC/E,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1D,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAED,6DAA6D;gBAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC;gBAC7D,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAErE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,8CAA8C,QAAQ,CAAC,IAAI,QAAQ,gBAAgB,EAAE,CAAC;gBACpH,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -27,5 +27,16 @@ export declare function validateTools(toolMappings: Record<string, string>): Rec
|
|
|
27
27
|
* Configuração padrão de validações
|
|
28
28
|
*/
|
|
29
29
|
export declare const defaultValidations: Record<string, (handler: ToolHandler) => ToolHandler>;
|
|
30
|
+
/**
|
|
31
|
+
* V6 Sprint 2: Middleware de Estado Compulsório
|
|
32
|
+
*
|
|
33
|
+
* Intercepta chamadas de tools ANTES de executar o handler.
|
|
34
|
+
* Quando `em_estado_compulsorio = true`, bloqueia qualquer tool
|
|
35
|
+
* que não esteja na whitelist (`tools_permitidas_no_compulsorio`).
|
|
36
|
+
*
|
|
37
|
+
* Objetivo: Impedir que a IA "divague" chamando `maestro()`, `analisar()` etc
|
|
38
|
+
* enquanto deveria estar corrigindo o entregável reprovado no Gate.
|
|
39
|
+
*/
|
|
40
|
+
export declare function withCompulsoryStateGuard(toolName: string): (handler: ToolHandler) => ToolHandler;
|
|
30
41
|
export {};
|
|
31
42
|
//# sourceMappingURL=validation.middleware.d.ts.map
|