agent-master-devsecops 0.0.0-stage → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -2
- package/agents/AGENT_DEVSECOPS.md +32 -0
- package/agents/AGENT_INFRA.md +31 -0
- package/agents/AGENT_ORCHESTRATOR.md +39 -0
- package/agents/AGENT_QA.md +58 -0
- package/agents/AGENT_SCRUM.md +23 -0
- package/agents/AGENT_SRE.md +22 -0
- package/agents/AGENT_UIUX.md +26 -0
- package/docs/ARCHITECTURE.md +152 -0
- package/docs/CALCULATIONS.md +17 -0
- package/docs/CHANGELOG.md +112 -0
- package/docs/ENGINEERING_RULES.md +56 -0
- package/docs/IDEAS.md +17 -0
- package/docs/LOCAL_BACKLOG.md +20 -0
- package/docs/STATE.md +111 -0
- package/docs/playbooks/PLAYBOOK_CIRCUIT_BREAKER_LLM.md +58 -0
- package/docs/playbooks/PLAYBOOK_OPENTELEMETRY_TRACING.md +58 -0
- package/package.json +57 -4
- package/scripts/auditors/a11y_auditor.js +462 -0
- package/scripts/auditors/code_quality_auditor.js +444 -0
- package/scripts/auditors/contract_test_validator.js +396 -0
- package/scripts/auditors/eval_harness.js +213 -0
- package/scripts/auditors/git_hygiene_linter.js +391 -0
- package/scripts/auditors/pr_reviewer.js +627 -0
- package/scripts/auditors/sast_scanner.js +442 -0
- package/scripts/auditors/sca_dependency_auditor.js +673 -0
- package/scripts/bin/bootstrap_cli.js +597 -0
- package/scripts/bin/domain_idea_miner.js +658 -0
- package/scripts/bin/smart_onboarding.js +905 -0
- package/scripts/bin/web_inspector.js +578 -0
- package/scripts/core/architecture_advisor.js +378 -0
- package/scripts/core/ast_skeletonizer.js +413 -0
- package/scripts/core/autonomous_remediation_engine.js +305 -0
- package/scripts/core/circuit_breaker.js +546 -0
- package/scripts/core/context_compressor.js +237 -0
- package/scripts/core/fast_feature_scaffold.js +840 -0
- package/scripts/core/hot_state_cache.js +238 -0
- package/scripts/core/knowledge_gateway.js +888 -0
- package/scripts/core/magic_prompt_generator.js +250 -0
- package/scripts/core/multi_agent_orchestrator.js +421 -0
- package/scripts/core/otel_tracer.js +335 -0
- package/scripts/core/perf_benchmark.js +212 -0
- package/scripts/core/sarif_engine.js +299 -0
- package/scripts/core/sre_remediation_engine.js +236 -0
- package/scripts/core/universal_packager.js +357 -0
- package/scripts/integrations/atlassian_client.js +600 -0
- package/scripts/integrations/atlassian_sync_action.js +576 -0
- package/scripts/integrations/confluence_sync.js +684 -0
- package/scripts/integrations/credentials_guard.js +500 -0
- package/scripts/integrations/jira_manager.js +722 -0
- package/scripts/mcp/handlers/atlassian_handlers.js +300 -0
- package/scripts/mcp/handlers/core_handlers.js +419 -0
- package/scripts/mcp/handlers/qa_handlers.js +502 -0
- package/scripts/mcp/handlers/rules_handlers.js +379 -0
- package/scripts/mcp/handlers/scaffold_handlers.js +334 -0
- package/scripts/mcp/handlers/sre_handlers.js +443 -0
- package/scripts/mcp/resources_registry.js +453 -0
- package/scripts/mcp/server.js +408 -0
- package/scripts/mcp/tool_handlers.js +444 -0
- package/scripts/mcp/tools_registry.js +1123 -0
- package/scripts/mcp_server.js +236 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* scripts/mcp_server.js
|
|
4
|
+
*
|
|
5
|
+
* Servidor MCP Nativo (Model Context Protocol) — Ponto de Entrada Canônico & CLI
|
|
6
|
+
* Compatível com a especificação JSON-RPC 2.0 / MCP 2024-11-05.
|
|
7
|
+
*
|
|
8
|
+
* Atua como Fachada Canônica e Interface CLI de Alta Performance para o ecossistema
|
|
9
|
+
* agent-master-devsecops, delegando a execução ao dispatcher modular em ./mcp/server.js.
|
|
10
|
+
*
|
|
11
|
+
* Suporta inicialização interativa stdio, seleção dinâmica de perfis (--profile),
|
|
12
|
+
* relatórios executivos (--report), auditoria de conformidade OASIS SARIF v2.1.0 (--sarif),
|
|
13
|
+
* consulta de versões (--version) e graceful shutdown.
|
|
14
|
+
*
|
|
15
|
+
* Versão: 5.1.0 Enterprise
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
'use strict';
|
|
19
|
+
|
|
20
|
+
const { version: PKG_VERSION } = require('../package.json');
|
|
21
|
+
const {
|
|
22
|
+
McpServer,
|
|
23
|
+
defaultServerInstance,
|
|
24
|
+
processMessage,
|
|
25
|
+
processMessageAsync,
|
|
26
|
+
startServer,
|
|
27
|
+
stopServer,
|
|
28
|
+
handleInitialize,
|
|
29
|
+
handleToolsList,
|
|
30
|
+
handleResourcesList,
|
|
31
|
+
handleResourceRead,
|
|
32
|
+
TOOLS,
|
|
33
|
+
RESOURCES,
|
|
34
|
+
TOOL_PROFILES,
|
|
35
|
+
getActiveTools,
|
|
36
|
+
setMcpProfile,
|
|
37
|
+
getActiveProfile,
|
|
38
|
+
auditToSarif,
|
|
39
|
+
formatReport,
|
|
40
|
+
PROTOCOL_VERSION,
|
|
41
|
+
JSONRPC_VERSION
|
|
42
|
+
} = require('./mcp/server.js');
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Analisador funcional puro de argumentos de linha de comando.
|
|
46
|
+
* @param {string[]} argv
|
|
47
|
+
* @returns {Record<string, any>}
|
|
48
|
+
*/
|
|
49
|
+
function parseArgs(argv = []) {
|
|
50
|
+
const args = Array.isArray(argv) ? argv : [];
|
|
51
|
+
const options = {
|
|
52
|
+
help: false,
|
|
53
|
+
version: false,
|
|
54
|
+
sarif: false,
|
|
55
|
+
report: false,
|
|
56
|
+
listTools: false,
|
|
57
|
+
listProfiles: false,
|
|
58
|
+
profile: null
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
for (let i = 0; i < args.length; i++) {
|
|
62
|
+
const arg = String(args[i]);
|
|
63
|
+
if (arg === '--help' || arg === '-h') {
|
|
64
|
+
options.help = true;
|
|
65
|
+
} else if (arg === '--version' || arg === '-v') {
|
|
66
|
+
options.version = true;
|
|
67
|
+
} else if (arg === '--sarif') {
|
|
68
|
+
options.sarif = true;
|
|
69
|
+
} else if (arg === '--report') {
|
|
70
|
+
options.report = true;
|
|
71
|
+
} else if (arg === '--list-tools') {
|
|
72
|
+
options.listTools = true;
|
|
73
|
+
} else if (arg === '--list-profiles') {
|
|
74
|
+
options.listProfiles = true;
|
|
75
|
+
} else if (arg === '--profile' || arg === '-p') {
|
|
76
|
+
if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
|
|
77
|
+
options.profile = String(args[i + 1]);
|
|
78
|
+
i++;
|
|
79
|
+
}
|
|
80
|
+
} else if (arg.startsWith('--profile=')) {
|
|
81
|
+
options.profile = arg.slice('--profile='.length);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return Object.freeze(options);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Formata o texto de ajuda do CLI.
|
|
90
|
+
* @returns {string}
|
|
91
|
+
*/
|
|
92
|
+
function formatHelpText() {
|
|
93
|
+
const profiles = Object.keys(TOOL_PROFILES).join(', ');
|
|
94
|
+
return [
|
|
95
|
+
`Servidor MCP Nativo — Agent Master DevSecOps v${PKG_VERSION}`,
|
|
96
|
+
`Protocolo MCP: ${PROTOCOL_VERSION} | JSON-RPC: ${JSONRPC_VERSION}`,
|
|
97
|
+
'',
|
|
98
|
+
'Uso:',
|
|
99
|
+
' agent-master-mcp [opções]',
|
|
100
|
+
' node scripts/mcp_server.js [opções]',
|
|
101
|
+
'',
|
|
102
|
+
'Opções:',
|
|
103
|
+
' -p, --profile <nome> Inicia o servidor com o perfil especificado',
|
|
104
|
+
` Perfis disponíveis: ${profiles}`,
|
|
105
|
+
' --sarif Executa auditoria e emite relatório OASIS SARIF v2.1.0',
|
|
106
|
+
' --report Emite relatório executivo em Markdown e finaliza',
|
|
107
|
+
' --list-tools Lista ferramentas ativas do perfil atual e finaliza',
|
|
108
|
+
' --list-profiles Lista todos os perfis disponíveis e finaliza',
|
|
109
|
+
' -v, --version Exibe a versão do servidor e do protocolo MCP',
|
|
110
|
+
' -h, --help Exibe esta ajuda operacional',
|
|
111
|
+
'',
|
|
112
|
+
'Exemplo de Configuração para IDEs (Claude Desktop / Cursor):',
|
|
113
|
+
' {',
|
|
114
|
+
' "mcpServers": {',
|
|
115
|
+
' "agent-master": {',
|
|
116
|
+
' "command": "node",',
|
|
117
|
+
' "args": ["scripts/mcp_server.js", "--profile", "consolidated"]',
|
|
118
|
+
' }',
|
|
119
|
+
' }',
|
|
120
|
+
' }'
|
|
121
|
+
].join('\n');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Executor do ponto de entrada CLI com suporte a injeção de I/O.
|
|
126
|
+
* @param {string[]} argv
|
|
127
|
+
* @param {object} io
|
|
128
|
+
* @returns {number} Código de saída (0 para sucesso, > 0 para erro)
|
|
129
|
+
*/
|
|
130
|
+
function runCli(argv = process.argv.slice(2), io = {}) {
|
|
131
|
+
const stdout = io.stdout || process.stdout;
|
|
132
|
+
const stderr = io.stderr || process.stderr;
|
|
133
|
+
|
|
134
|
+
const options = parseArgs(argv);
|
|
135
|
+
|
|
136
|
+
if (options.help) {
|
|
137
|
+
stdout.write(formatHelpText() + '\n');
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (options.version) {
|
|
142
|
+
stdout.write(`agent-master-devsecops v${PKG_VERSION} (MCP Protocol ${PROTOCOL_VERSION})\n`);
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (options.sarif) {
|
|
147
|
+
const sarif = auditToSarif();
|
|
148
|
+
stdout.write(JSON.stringify(sarif, null, 2) + '\n');
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (options.report) {
|
|
153
|
+
stdout.write(formatReport() + '\n');
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (options.listProfiles) {
|
|
158
|
+
const list = Object.entries(TOOL_PROFILES)
|
|
159
|
+
.map(([name, tools]) => ` - ${name.padEnd(16)}: ${tools.length} ferramentas`)
|
|
160
|
+
.join('\n');
|
|
161
|
+
stdout.write(`Perfis de Ferramentas Disponíveis:\n${list}\n`);
|
|
162
|
+
return 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (options.profile) {
|
|
166
|
+
const result = setMcpProfile(options.profile);
|
|
167
|
+
if (!result || !result.success) {
|
|
168
|
+
stderr.write(`[AVISO] Perfil desconhecido: "${options.profile}". Mantido perfil "${getActiveProfile()}".\n`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (options.listTools) {
|
|
173
|
+
const active = getActiveTools();
|
|
174
|
+
const list = active.map(t => ` - ${t.name.padEnd(30)}: ${t.description.slice(0, 60)}...`).join('\n');
|
|
175
|
+
stdout.write(`Ferramentas Ativas (Perfil: ${getActiveProfile()}, Total: ${active.length}):\n${list}\n`);
|
|
176
|
+
return 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Em modo teste, não inicia listener bloqueante
|
|
180
|
+
if (io.testMode) {
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Configura graceful shutdown no processo real
|
|
185
|
+
const cleanup = () => {
|
|
186
|
+
stopServer();
|
|
187
|
+
process.exit(0);
|
|
188
|
+
};
|
|
189
|
+
process.once('SIGINT', cleanup);
|
|
190
|
+
process.once('SIGTERM', cleanup);
|
|
191
|
+
|
|
192
|
+
startServer();
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (require.main === module) {
|
|
197
|
+
runCli();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
module.exports = {
|
|
201
|
+
// Fachada Canônica da Classe e Instância
|
|
202
|
+
McpServer,
|
|
203
|
+
defaultServerInstance,
|
|
204
|
+
|
|
205
|
+
// Funções de Despacho e Ciclo de Vida
|
|
206
|
+
processMessage,
|
|
207
|
+
processMessageAsync,
|
|
208
|
+
startServer,
|
|
209
|
+
stopServer,
|
|
210
|
+
handleInitialize,
|
|
211
|
+
handleToolsList,
|
|
212
|
+
handleResourcesList,
|
|
213
|
+
handleResourceRead,
|
|
214
|
+
|
|
215
|
+
// Catálogos e Perfis
|
|
216
|
+
TOOLS,
|
|
217
|
+
RESOURCES,
|
|
218
|
+
TOOL_PROFILES,
|
|
219
|
+
getActiveTools,
|
|
220
|
+
setMcpProfile,
|
|
221
|
+
getActiveProfile,
|
|
222
|
+
|
|
223
|
+
// Auditoria e Relatórios
|
|
224
|
+
auditToSarif,
|
|
225
|
+
formatReport,
|
|
226
|
+
|
|
227
|
+
// Utilitários CLI
|
|
228
|
+
parseArgs,
|
|
229
|
+
formatHelpText,
|
|
230
|
+
runCli,
|
|
231
|
+
|
|
232
|
+
// Constantes de Protocolo
|
|
233
|
+
PROTOCOL_VERSION,
|
|
234
|
+
JSONRPC_VERSION,
|
|
235
|
+
PKG_VERSION
|
|
236
|
+
};
|