@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.
Files changed (139) hide show
  1. package/README.md +68 -83
  2. package/dist/content/rules/RULES.md +14 -0
  3. package/dist/core/metrics/MetricsCollector.d.ts +28 -12
  4. package/dist/core/metrics/MetricsCollector.d.ts.map +1 -1
  5. package/dist/core/metrics/MetricsCollector.js +151 -12
  6. package/dist/core/metrics/MetricsCollector.js.map +1 -1
  7. package/dist/core/validation/ValidationPipeline.d.ts +24 -2
  8. package/dist/core/validation/ValidationPipeline.d.ts.map +1 -1
  9. package/dist/core/validation/ValidationPipeline.js +46 -2
  10. package/dist/core/validation/ValidationPipeline.js.map +1 -1
  11. package/dist/core/validation/layers/DeliverableValidator.d.ts +13 -0
  12. package/dist/core/validation/layers/DeliverableValidator.d.ts.map +1 -0
  13. package/dist/core/validation/layers/DeliverableValidator.js +276 -0
  14. package/dist/core/validation/layers/DeliverableValidator.js.map +1 -0
  15. package/dist/flows/onboarding-orchestrator.js +5 -5
  16. package/dist/flows/onboarding-orchestrator.js.map +1 -1
  17. package/dist/gates/contextual-recommender.d.ts.map +1 -1
  18. package/dist/gates/contextual-recommender.js +260 -1
  19. package/dist/gates/contextual-recommender.js.map +1 -1
  20. package/dist/gates/validator.d.ts +5 -6
  21. package/dist/gates/validator.d.ts.map +1 -1
  22. package/dist/gates/validator.js +9 -6
  23. package/dist/gates/validator.js.map +1 -1
  24. package/dist/handlers/shared-prompt-handler.d.ts.map +1 -1
  25. package/dist/handlers/shared-prompt-handler.js +15 -14
  26. package/dist/handlers/shared-prompt-handler.js.map +1 -1
  27. package/dist/middleware/adr-generation.middleware.d.ts +5 -0
  28. package/dist/middleware/adr-generation.middleware.d.ts.map +1 -0
  29. package/dist/middleware/adr-generation.middleware.js +214 -0
  30. package/dist/middleware/adr-generation.middleware.js.map +1 -0
  31. package/dist/middleware/flow-engine.middleware.d.ts +5 -3
  32. package/dist/middleware/flow-engine.middleware.d.ts.map +1 -1
  33. package/dist/middleware/flow-engine.middleware.js +18 -10
  34. package/dist/middleware/flow-engine.middleware.js.map +1 -1
  35. package/dist/middleware/index.d.ts +18 -11
  36. package/dist/middleware/index.d.ts.map +1 -1
  37. package/dist/middleware/index.js +24 -11
  38. package/dist/middleware/index.js.map +1 -1
  39. package/dist/middleware/orchestration-pipeline.middleware.d.ts +42 -0
  40. package/dist/middleware/orchestration-pipeline.middleware.d.ts.map +1 -0
  41. package/dist/middleware/orchestration-pipeline.middleware.js +57 -0
  42. package/dist/middleware/orchestration-pipeline.middleware.js.map +1 -0
  43. package/dist/middleware/skill-injection.middleware.d.ts.map +1 -1
  44. package/dist/middleware/skill-injection.middleware.js +6 -9
  45. package/dist/middleware/skill-injection.middleware.js.map +1 -1
  46. package/dist/middleware/validation.middleware.d.ts +11 -0
  47. package/dist/middleware/validation.middleware.d.ts.map +1 -1
  48. package/dist/middleware/validation.middleware.js +64 -4
  49. package/dist/middleware/validation.middleware.js.map +1 -1
  50. package/dist/router.d.ts.map +1 -1
  51. package/dist/router.js +20 -14
  52. package/dist/router.js.map +1 -1
  53. package/dist/services/flow-engine.d.ts +1 -0
  54. package/dist/services/flow-engine.d.ts.map +1 -1
  55. package/dist/services/flow-engine.js +22 -10
  56. package/dist/services/flow-engine.js.map +1 -1
  57. package/dist/services/watcher.service.d.ts +45 -0
  58. package/dist/services/watcher.service.d.ts.map +1 -0
  59. package/dist/services/watcher.service.js +106 -0
  60. package/dist/services/watcher.service.js.map +1 -0
  61. package/dist/state/context.d.ts +15 -4
  62. package/dist/state/context.d.ts.map +1 -1
  63. package/dist/state/context.js +36 -9
  64. package/dist/state/context.js.map +1 -1
  65. package/dist/state/storage.d.ts.map +1 -1
  66. package/dist/state/storage.js +6 -0
  67. package/dist/state/storage.js.map +1 -1
  68. package/dist/tests/aprovar-gate.test.d.ts +2 -0
  69. package/dist/tests/aprovar-gate.test.d.ts.map +1 -0
  70. package/dist/tests/aprovar-gate.test.js +113 -0
  71. package/dist/tests/aprovar-gate.test.js.map +1 -0
  72. package/dist/tests/deliverable-validator.test.d.ts +12 -0
  73. package/dist/tests/deliverable-validator.test.d.ts.map +1 -0
  74. package/dist/tests/deliverable-validator.test.js +214 -0
  75. package/dist/tests/deliverable-validator.test.js.map +1 -0
  76. package/dist/tests/flow-engine.test.d.ts +2 -0
  77. package/dist/tests/flow-engine.test.d.ts.map +1 -0
  78. package/dist/tests/flow-engine.test.js +85 -0
  79. package/dist/tests/flow-engine.test.js.map +1 -0
  80. package/dist/tests/gate-orientation.test.d.ts +2 -0
  81. package/dist/tests/gate-orientation.test.d.ts.map +1 -0
  82. package/dist/tests/gate-orientation.test.js +59 -0
  83. package/dist/tests/gate-orientation.test.js.map +1 -0
  84. package/dist/tests/middleware.test.js +30 -4
  85. package/dist/tests/middleware.test.js.map +1 -1
  86. package/dist/tests/watcher.service.test.d.ts +2 -0
  87. package/dist/tests/watcher.service.test.d.ts.map +1 -0
  88. package/dist/tests/watcher.service.test.js +119 -0
  89. package/dist/tests/watcher.service.test.js.map +1 -0
  90. package/dist/tools/aprovar-gate.d.ts.map +1 -1
  91. package/dist/tools/aprovar-gate.js +4 -0
  92. package/dist/tools/aprovar-gate.js.map +1 -1
  93. package/dist/tools/contexto.d.ts.map +1 -1
  94. package/dist/tools/contexto.js +41 -0
  95. package/dist/tools/contexto.js.map +1 -1
  96. package/dist/tools/iniciar-projeto.d.ts.map +1 -1
  97. package/dist/tools/iniciar-projeto.js +6 -40
  98. package/dist/tools/iniciar-projeto.js.map +1 -1
  99. package/dist/tools/maestro-tool.d.ts.map +1 -1
  100. package/dist/tools/maestro-tool.js +34 -14
  101. package/dist/tools/maestro-tool.js.map +1 -1
  102. package/dist/tools/proximo.d.ts.map +1 -1
  103. package/dist/tools/proximo.js +224 -71
  104. package/dist/tools/proximo.js.map +1 -1
  105. package/dist/tools/status.d.ts.map +1 -1
  106. package/dist/tools/status.js +27 -0
  107. package/dist/tools/status.js.map +1 -1
  108. package/dist/tools/validar-gate.d.ts +8 -1
  109. package/dist/tools/validar-gate.d.ts.map +1 -1
  110. package/dist/tools/validar-gate.js +147 -99
  111. package/dist/tools/validar-gate.js.map +1 -1
  112. package/dist/types/config.d.ts +2 -0
  113. package/dist/types/config.d.ts.map +1 -1
  114. package/dist/types/config.js +2 -0
  115. package/dist/types/config.js.map +1 -1
  116. package/dist/types/index.d.ts +6 -0
  117. package/dist/types/index.d.ts.map +1 -1
  118. package/dist/types/index.js.map +1 -1
  119. package/dist/utils/gate-orientation.d.ts +11 -0
  120. package/dist/utils/gate-orientation.d.ts.map +1 -0
  121. package/dist/utils/gate-orientation.js +64 -0
  122. package/dist/utils/gate-orientation.js.map +1 -0
  123. package/dist/utils/ide-paths.d.ts +11 -0
  124. package/dist/utils/ide-paths.d.ts.map +1 -1
  125. package/dist/utils/ide-paths.js +27 -0
  126. package/dist/utils/ide-paths.js.map +1 -1
  127. package/dist/utils/instructions.d.ts +6 -1
  128. package/dist/utils/instructions.d.ts.map +1 -1
  129. package/dist/utils/instructions.js +32 -1
  130. package/dist/utils/instructions.js.map +1 -1
  131. package/package.json +2 -1
  132. package/dist/gates/compatibility-wrapper.d.ts +0 -139
  133. package/dist/gates/compatibility-wrapper.d.ts.map +0 -1
  134. package/dist/gates/compatibility-wrapper.js +0 -362
  135. package/dist/gates/compatibility-wrapper.js.map +0 -1
  136. package/dist/gates/unified-validator.d.ts +0 -67
  137. package/dist/gates/unified-validator.d.ts.map +0 -1
  138. package/dist/gates/unified-validator.js +0 -234
  139. 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
- * de forma consistente, substituindo lógica local duplicada nas tools.
7
+ * e SEMPRE sobrescreve, mesmo se a tool definiu um valor diferente.
6
8
  *
7
- * Se a tool retornou next_action, o middleware NÃO sobrescreve
8
- * (permite que tools específicas tenham controle granular).
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;;;;;;;;GAQG;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,CA4ChE"}
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
- * de forma consistente, substituindo lógica local duplicada nas tools.
7
+ * e SEMPRE sobrescreve, mesmo se a tool definiu um valor diferente.
6
8
  *
7
- * Se a tool retornou next_action, o middleware NÃO sobrescreve
8
- * (permite que tools específicas tenham controle granular).
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
- // Calcular next_action via flow engine (se a tool não definiu um)
33
- if (!result.next_action) {
34
- const nextStep = getNextStep(estado, diretorio);
35
- result.next_action = flowStepToNextAction(nextStep);
36
- if (nextStep.specialist) {
37
- result.specialist_persona = result.specialist_persona || nextStep.specialist;
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;;;;;;;;GAQG;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,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAChD,MAAM,CAAC,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAEpD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACtB,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACjF,CAAC;YACL,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
+ {"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 v5
2
+ * Middleware Pipeline do Maestro v6
3
3
  *
4
- * Composição de middlewares para tools:
5
- * withErrorHandlingwithStateLoadwithFlowEnginewithPersistencewithSkillInjection
4
+ * v6.0: Pipeline Unificada TODAS as tools usam applyOrchestrationPipeline
5
+ * Ordem fixa: Error StateFlowPersistenceSkill
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
- * Aplica apenas middlewares leves (sem skill injection e sem persistence).
29
- * Útil para tools que já fazem injeção ativa internamente (proximo, maestro).
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
- * Aplica middlewares inteligentes: estado + skill injection condicional.
34
- * v5.1: Injeta skill apenas quando o projeto está em fase de desenvolvimento (não onboarding).
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
- * Aplica middlewares de persistência e estado (sem skill injection).
40
- * Útil para tools que não precisam de injeção de skills mas precisam de persistência.
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;;;;;GAKG;AAEH,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,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOtF,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,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAWpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAKzF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAOzF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,CAO/F"}
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"}
@@ -1,14 +1,20 @@
1
1
  /**
2
- * Middleware Pipeline do Maestro v5
2
+ * Middleware Pipeline do Maestro v6
3
3
  *
4
- * Composição de middlewares para tools:
5
- * withErrorHandlingwithStateLoadwithFlowEnginewithPersistencewithSkillInjection
4
+ * v6.0: Pipeline Unificada TODAS as tools usam applyOrchestrationPipeline
5
+ * Ordem fixa: Error StateFlowPersistenceSkill
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"; // v6.0
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
- * Aplica apenas middlewares leves (sem skill injection e sem persistence).
34
- * Útil para tools que já fazem injeção ativa internamente (proximo, maestro).
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
- * Aplica middlewares inteligentes: estado + skill injection condicional.
41
- * v5.1: Injeta skill apenas quando o projeto está em fase de desenvolvimento (não onboarding).
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
- * Aplica middlewares de persistência e estado (sem skill injection).
49
- * Útil para tools que não precisam de injeção de skills mas precisam de persistência.
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;;;;;GAKG;AAEH,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,kBAAkB,EAAE,MAAM,4BAA4B,CAAC,CAAC,OAAO;AAE9F,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,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAoB;IACnE,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,iBAAiB,CACpB,QAAQ,EACR,aAAa,CAAC,OAAO,CAAC,CACzB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,OAAoB;IACxE,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,iBAAiB,CACpB,QAAQ,EACR,aAAa,CACT,eAAe,CAAC,OAAO,CAAC,CAC3B,CACJ,CAAC;AACN,CAAC"}
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;AAOH,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,CAuDpE"}
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
- const mode = (estado.config?.mode || "balanced");
48
- const contentResolver = new ContentResolverService(diretorio);
49
- const skillLoader = new SkillLoaderService(contentResolver);
50
- const contextPkg = await skillLoader.loadForPhase(faseInfo.nome, "economy");
51
- if (contextPkg && result.content?.[0]) {
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,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKrD,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,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,UAAU,CAAuC,CAAC;gBACvF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC9D,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBAC5D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAE5E,IAAI,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,sCAAsC;oBACtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,8CAA8C,QAAQ,CAAC,IAAI,QAAQ,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5I,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"}
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