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.
Files changed (61) hide show
  1. package/README.md +204 -2
  2. package/agents/AGENT_DEVSECOPS.md +32 -0
  3. package/agents/AGENT_INFRA.md +31 -0
  4. package/agents/AGENT_ORCHESTRATOR.md +39 -0
  5. package/agents/AGENT_QA.md +58 -0
  6. package/agents/AGENT_SCRUM.md +23 -0
  7. package/agents/AGENT_SRE.md +22 -0
  8. package/agents/AGENT_UIUX.md +26 -0
  9. package/docs/ARCHITECTURE.md +152 -0
  10. package/docs/CALCULATIONS.md +17 -0
  11. package/docs/CHANGELOG.md +112 -0
  12. package/docs/ENGINEERING_RULES.md +56 -0
  13. package/docs/IDEAS.md +17 -0
  14. package/docs/LOCAL_BACKLOG.md +20 -0
  15. package/docs/STATE.md +111 -0
  16. package/docs/playbooks/PLAYBOOK_CIRCUIT_BREAKER_LLM.md +58 -0
  17. package/docs/playbooks/PLAYBOOK_OPENTELEMETRY_TRACING.md +58 -0
  18. package/package.json +57 -4
  19. package/scripts/auditors/a11y_auditor.js +462 -0
  20. package/scripts/auditors/code_quality_auditor.js +444 -0
  21. package/scripts/auditors/contract_test_validator.js +396 -0
  22. package/scripts/auditors/eval_harness.js +213 -0
  23. package/scripts/auditors/git_hygiene_linter.js +391 -0
  24. package/scripts/auditors/pr_reviewer.js +627 -0
  25. package/scripts/auditors/sast_scanner.js +442 -0
  26. package/scripts/auditors/sca_dependency_auditor.js +673 -0
  27. package/scripts/bin/bootstrap_cli.js +597 -0
  28. package/scripts/bin/domain_idea_miner.js +658 -0
  29. package/scripts/bin/smart_onboarding.js +905 -0
  30. package/scripts/bin/web_inspector.js +578 -0
  31. package/scripts/core/architecture_advisor.js +378 -0
  32. package/scripts/core/ast_skeletonizer.js +413 -0
  33. package/scripts/core/autonomous_remediation_engine.js +305 -0
  34. package/scripts/core/circuit_breaker.js +546 -0
  35. package/scripts/core/context_compressor.js +237 -0
  36. package/scripts/core/fast_feature_scaffold.js +840 -0
  37. package/scripts/core/hot_state_cache.js +238 -0
  38. package/scripts/core/knowledge_gateway.js +888 -0
  39. package/scripts/core/magic_prompt_generator.js +250 -0
  40. package/scripts/core/multi_agent_orchestrator.js +421 -0
  41. package/scripts/core/otel_tracer.js +335 -0
  42. package/scripts/core/perf_benchmark.js +212 -0
  43. package/scripts/core/sarif_engine.js +299 -0
  44. package/scripts/core/sre_remediation_engine.js +236 -0
  45. package/scripts/core/universal_packager.js +357 -0
  46. package/scripts/integrations/atlassian_client.js +600 -0
  47. package/scripts/integrations/atlassian_sync_action.js +576 -0
  48. package/scripts/integrations/confluence_sync.js +684 -0
  49. package/scripts/integrations/credentials_guard.js +500 -0
  50. package/scripts/integrations/jira_manager.js +722 -0
  51. package/scripts/mcp/handlers/atlassian_handlers.js +300 -0
  52. package/scripts/mcp/handlers/core_handlers.js +419 -0
  53. package/scripts/mcp/handlers/qa_handlers.js +502 -0
  54. package/scripts/mcp/handlers/rules_handlers.js +379 -0
  55. package/scripts/mcp/handlers/scaffold_handlers.js +334 -0
  56. package/scripts/mcp/handlers/sre_handlers.js +443 -0
  57. package/scripts/mcp/resources_registry.js +453 -0
  58. package/scripts/mcp/server.js +408 -0
  59. package/scripts/mcp/tool_handlers.js +444 -0
  60. package/scripts/mcp/tools_registry.js +1123 -0
  61. package/scripts/mcp_server.js +236 -0
@@ -0,0 +1,444 @@
1
+ /**
2
+ * scripts/mcp/tool_handlers.js
3
+ *
4
+ * Unified Tool Handlers Dispatcher — Roteador Canônico O(1) de Ferramentas MCP.
5
+ * Suporta execução síncrona e assíncrona não-bloqueante via tabela determinística,
6
+ * fábrica funcional pura para as 5 meta-ferramentas consolidadas (Perfil Lean/Consolidated),
7
+ * blindagem defensiva try/catch e auditoria oficial no padrão OASIS SARIF v2.1.0.
8
+ *
9
+ * Versão: 5.1.0 Enterprise
10
+ */
11
+
12
+ 'use strict';
13
+
14
+ const { createSarifReport } = require('../core/sarif_engine.js');
15
+
16
+ // 1. Handlers de Regras e Governança
17
+ const {
18
+ handleGetRule,
19
+ handleValidateIdea,
20
+ handleValidateRule15
21
+ } = require('./handlers/rules_handlers.js');
22
+
23
+ // 2. Handlers de QA, Segurança e Auditoria
24
+ const {
25
+ handleAuditCode,
26
+ handleReviewPr,
27
+ handleSastScan,
28
+ handleAuditQuality,
29
+ handleAuditA11y,
30
+ handleLintGitHygiene,
31
+ handleAuditDependenciesSca,
32
+ handleValidateApiContract,
33
+ handleEvalHarness,
34
+ handleRemediateCode
35
+ } = require('./handlers/qa_handlers.js');
36
+
37
+ // 3. Handlers da Tríade Atlassian & Pipeline Kanban
38
+ const {
39
+ handleSyncAtlassian,
40
+ handleCheckCredentials,
41
+ handleConfigureCredentials,
42
+ handleStandardizeKanban,
43
+ handleFullDevPipeline
44
+ } = require('./handlers/atlassian_handlers.js');
45
+
46
+ // 4. Handlers de SRE, Observabilidade e Resiliência
47
+ const {
48
+ handleOtelTrace,
49
+ handlePerfBenchmark,
50
+ handleCircuitBreaker,
51
+ handleSreTelemetry,
52
+ handleSreRemediate
53
+ } = require('./handlers/sre_handlers.js');
54
+
55
+ // 5. Handlers de Scaffolding, Contexto e Empacotamento
56
+ const {
57
+ handleGenerateIdePlugins,
58
+ handleCompressContext,
59
+ handleExportUniversalBundle,
60
+ handleBootstrapEnvironment,
61
+ handleGenerateMagicPrompt,
62
+ handleExtractCodeSkeleton,
63
+ handleScaffoldFeature
64
+ } = require('./handlers/scaffold_handlers.js');
65
+
66
+ // 6. Handlers de Core, Orquestração e Inteligência Arquitetural
67
+ const {
68
+ handleFullDevStatus,
69
+ handleOrchestrateEvent,
70
+ handleInspectorInfo,
71
+ handleSmartOnboarding,
72
+ handleVerifyTriadGate,
73
+ handleSetMcpProfile,
74
+ handleMineDomainIdeas,
75
+ handleRecommendArchitecture,
76
+ handleGroundKnowledge
77
+ } = require('./handlers/core_handlers.js');
78
+
79
+ /**
80
+ * Normaliza e mescla argumentos planos ou aninhados dentro de { payload: { ... } } (DRY)
81
+ */
82
+ function extractPayload(args) {
83
+ if (!args || typeof args !== 'object') return {};
84
+ if (args.payload && typeof args.payload === 'object' && !Array.isArray(args.payload)) {
85
+ return { ...args, ...args.payload };
86
+ }
87
+ return { ...args };
88
+ }
89
+
90
+ /**
91
+ * Fábrica funcional pura para criação determinística de meta-ferramentas consolidadas (DRY total)
92
+ */
93
+ function createMetaToolHandler(metaToolName, actionMap, options = {}) {
94
+ const validActions = Object.keys(actionMap);
95
+ const validActionsList = validActions.join(', ');
96
+
97
+ return function metaHandler(id, args) {
98
+ const cleanArgs = extractPayload(args);
99
+ let action = cleanArgs.action;
100
+
101
+ if (!action && options.defaultAction) {
102
+ action = options.defaultAction;
103
+ }
104
+
105
+ if (typeof options.normalizeArgs === 'function') {
106
+ options.normalizeArgs(cleanArgs);
107
+ }
108
+
109
+ const handler = actionMap[action];
110
+ if (typeof handler === 'function') {
111
+ return handler(id, cleanArgs);
112
+ }
113
+
114
+ return {
115
+ jsonrpc: '2.0',
116
+ id: id !== undefined ? id : null,
117
+ error: {
118
+ code: -32602,
119
+ message: `Ação inválida para ${metaToolName}: '${action}'. Ações válidas: ${validActionsList}.`
120
+ }
121
+ };
122
+ };
123
+ }
124
+
125
+ // 1. Meta-Ferramenta: agent_governance
126
+ const handleAgentGovernance = createMetaToolHandler('agent_governance', {
127
+ get_rule: handleGetRule,
128
+ validate_idea: handleValidateIdea,
129
+ validate_rule15: handleValidateRule15,
130
+ smart_onboarding: handleSmartOnboarding,
131
+ verify_triad_gate: handleVerifyTriadGate,
132
+ check_credentials: handleCheckCredentials,
133
+ configure_credentials: handleConfigureCredentials,
134
+ set_profile: handleSetMcpProfile,
135
+ eval_harness: handleEvalHarness,
136
+ mine_domain_ideas: handleMineDomainIdeas,
137
+ recommend_architecture: handleRecommendArchitecture,
138
+ ground_knowledge: handleGroundKnowledge
139
+ });
140
+
141
+ // 2. Meta-Ferramenta: agent_audit
142
+ const handleAgentAudit = createMetaToolHandler('agent_audit', {
143
+ audit_code: handleAuditCode,
144
+ sast_scan: handleSastScan,
145
+ audit_quality: handleAuditQuality,
146
+ audit_dependencies_sca: handleAuditDependenciesSca,
147
+ validate_api_contract: handleValidateApiContract,
148
+ lint_git_hygiene: handleLintGitHygiene,
149
+ audit_a11y: handleAuditA11y,
150
+ remediate_code: handleRemediateCode
151
+ }, {
152
+ normalizeArgs: (args) => {
153
+ if (args.codeContent && !args.code) {
154
+ args.code = args.codeContent;
155
+ }
156
+ }
157
+ });
158
+
159
+ // 3. Meta-Ferramenta: agent_review
160
+ const handleAgentReview = createMetaToolHandler('agent_review', {
161
+ review_pr: handleReviewPr,
162
+ qa_gate: handleAuditCode
163
+ }, {
164
+ defaultAction: 'review_pr',
165
+ normalizeArgs: (args) => {
166
+ if (args.codeDiff && !args.diff) {
167
+ args.diff = args.codeDiff;
168
+ }
169
+ }
170
+ });
171
+
172
+ // 4. Meta-Ferramenta: agent_pipeline
173
+ const handleAgentPipeline = createMetaToolHandler('agent_pipeline', {
174
+ sync_atlassian: handleSyncAtlassian,
175
+ standardize_kanban: handleStandardizeKanban,
176
+ full_dev_pipeline: handleFullDevPipeline,
177
+ full_dev_status: (id) => handleFullDevStatus(id),
178
+ scaffold_feature: handleScaffoldFeature,
179
+ extract_code_skeleton: handleExtractCodeSkeleton,
180
+ export_universal_bundle: handleExportUniversalBundle,
181
+ compress_context: handleCompressContext,
182
+ generate_ide_plugins: handleGenerateIdePlugins,
183
+ bootstrap_environment: handleBootstrapEnvironment,
184
+ generate_magic_prompt: handleGenerateMagicPrompt
185
+ });
186
+
187
+ // 5. Meta-Ferramenta: agent_telemetry
188
+ const handleAgentTelemetry = createMetaToolHandler('agent_telemetry', {
189
+ sre_telemetry: handleSreTelemetry,
190
+ sre_remediate: handleSreRemediate,
191
+ otel_trace: handleOtelTrace,
192
+ perf_benchmark: handlePerfBenchmark,
193
+ circuit_breaker: handleCircuitBreaker,
194
+ orchestrate_event: handleOrchestrateEvent,
195
+ inspector_info: handleInspectorInfo
196
+ });
197
+
198
+ /**
199
+ * Tabela mestre de despacho O(1) de ferramentas MCP (imutável)
200
+ */
201
+ const TOOL_DISPATCH_TABLE = Object.freeze({
202
+ agent_get_rule: handleGetRule,
203
+ agent_recommend_architecture: handleRecommendArchitecture,
204
+ agent_ground_knowledge: handleGroundKnowledge,
205
+ agent_validate_idea: handleValidateIdea,
206
+ agent_validate_rule15: handleValidateRule15,
207
+ agent_audit_code: handleAuditCode,
208
+ agent_review_pr: handleReviewPr,
209
+ agent_sast_scan: handleSastScan,
210
+ agent_audit_quality: handleAuditQuality,
211
+ agent_audit_a11y: handleAuditA11y,
212
+ agent_lint_git_hygiene: handleLintGitHygiene,
213
+ agent_audit_dependencies_sca: handleAuditDependenciesSca,
214
+ agent_validate_api_contract: handleValidateApiContract,
215
+ agent_remediate_code: handleRemediateCode,
216
+ agent_eval_harness: handleEvalHarness,
217
+ agent_sync_atlassian: handleSyncAtlassian,
218
+ agent_check_credentials: handleCheckCredentials,
219
+ agent_configure_credentials: handleConfigureCredentials,
220
+ agent_standardize_kanban: handleStandardizeKanban,
221
+ agent_full_dev_pipeline: handleFullDevPipeline,
222
+ agent_otel_trace: handleOtelTrace,
223
+ agent_perf_benchmark: handlePerfBenchmark,
224
+ agent_circuit_breaker: handleCircuitBreaker,
225
+ agent_sre_telemetry: handleSreTelemetry,
226
+ agent_sre_remediate: handleSreRemediate,
227
+ agent_generate_ide_plugins: handleGenerateIdePlugins,
228
+ agent_compress_context: handleCompressContext,
229
+ agent_export_universal_bundle: handleExportUniversalBundle,
230
+ agent_bootstrap_environment: handleBootstrapEnvironment,
231
+ agent_generate_magic_prompt: handleGenerateMagicPrompt,
232
+ agent_extract_code_skeleton: handleExtractCodeSkeleton,
233
+ agent_scaffold_feature: handleScaffoldFeature,
234
+ agent_full_dev_status: (id) => handleFullDevStatus(id),
235
+ agent_orchestrate_event: handleOrchestrateEvent,
236
+ agent_inspector_info: handleInspectorInfo,
237
+ agent_smart_onboarding: handleSmartOnboarding,
238
+ agent_verify_triad_gate: handleVerifyTriadGate,
239
+ agent_set_mcp_profile: handleSetMcpProfile,
240
+ agent_mine_domain_ideas: handleMineDomainIdeas,
241
+
242
+ // 5 Meta-Ferramentas Consolidadas (Perfil 'consolidated' / 'lean')
243
+ agent_governance: handleAgentGovernance,
244
+ agent_audit: handleAgentAudit,
245
+ agent_review: handleAgentReview,
246
+ agent_pipeline: handleAgentPipeline,
247
+ agent_telemetry: handleAgentTelemetry
248
+ });
249
+
250
+ /**
251
+ * Classe Canônica ToolHandlers — Despachante Central e Gestor de Rotas MCP
252
+ */
253
+ class ToolHandlers {
254
+ constructor(customHandlers = {}) {
255
+ this.table = { ...TOOL_DISPATCH_TABLE, ...customHandlers };
256
+ }
257
+
258
+ static get TOOL_DISPATCH_TABLE() {
259
+ return TOOL_DISPATCH_TABLE;
260
+ }
261
+
262
+ static get META_TOOLS() {
263
+ return ['agent_governance', 'agent_audit', 'agent_review', 'agent_pipeline', 'agent_telemetry'];
264
+ }
265
+
266
+ /**
267
+ * Registra um novo handler customizado ou sobrescreve uma rota em tempo de execução
268
+ */
269
+ registerHandler(toolName, handlerFn) {
270
+ if (!toolName || typeof toolName !== 'string') {
271
+ throw new Error('Nome da tool deve ser uma string válida');
272
+ }
273
+ if (typeof handlerFn !== 'function') {
274
+ throw new Error('Handler da tool deve ser uma função executável');
275
+ }
276
+ this.table[toolName] = handlerFn;
277
+ }
278
+
279
+ /**
280
+ * Despacho síncrono com programação defensiva estrita
281
+ */
282
+ handleToolCall(id, params) {
283
+ try {
284
+ const safeParams = params && typeof params === 'object' ? params : {};
285
+ const { name, arguments: args } = safeParams;
286
+ const handler = this.table[name] || TOOL_DISPATCH_TABLE[name];
287
+
288
+ if (!handler) {
289
+ return {
290
+ jsonrpc: '2.0',
291
+ id: id !== undefined ? id : null,
292
+ error: {
293
+ code: -32601,
294
+ message: `Método de tool desconhecido: ${name}`
295
+ }
296
+ };
297
+ }
298
+
299
+ return handler(id, args);
300
+ } catch (err) {
301
+ return {
302
+ jsonrpc: '2.0',
303
+ id: id !== undefined ? id : null,
304
+ error: {
305
+ code: -32603,
306
+ message: `Falha interna na execução da ferramenta: ${err.message}`
307
+ }
308
+ };
309
+ }
310
+ }
311
+
312
+ /**
313
+ * Despacho assíncrono não-bloqueante com captura defensiva de rejeições
314
+ */
315
+ async handleToolCallAsync(id, params) {
316
+ try {
317
+ const safeParams = params && typeof params === 'object' ? params : {};
318
+ const { name, arguments: args } = safeParams;
319
+ const handler = this.table[name] || TOOL_DISPATCH_TABLE[name];
320
+
321
+ if (!handler) {
322
+ return {
323
+ jsonrpc: '2.0',
324
+ id: id !== undefined ? id : null,
325
+ error: {
326
+ code: -32601,
327
+ message: `Método de tool desconhecido: ${name}`
328
+ }
329
+ };
330
+ }
331
+
332
+ const result = handler(id, args);
333
+ return result instanceof Promise ? await result : result;
334
+ } catch (err) {
335
+ return {
336
+ jsonrpc: '2.0',
337
+ id: id !== undefined ? id : null,
338
+ error: {
339
+ code: -32603,
340
+ message: `Falha interna na execução da ferramenta: ${err.message}`
341
+ }
342
+ };
343
+ }
344
+ }
345
+
346
+ /**
347
+ * Auditoria de completude e integridade das rotas no padrão OASIS SARIF v2.1.0
348
+ */
349
+ auditToSarif() {
350
+ const findings = [];
351
+ const { TOOLS, META_TOOLS } = require('./tools_registry.js');
352
+ const allDeclared = [...(TOOLS || []), ...(META_TOOLS || [])];
353
+
354
+ for (const tool of allDeclared) {
355
+ const toolName = tool && tool.name;
356
+ if (!toolName) continue;
357
+
358
+ const handler = this.table[toolName] || TOOL_DISPATCH_TABLE[toolName];
359
+ if (typeof handler !== 'function') {
360
+ findings.push({
361
+ ruleId: 'RULE-TOOL-001',
362
+ severity: 'CRITICAL',
363
+ filename: 'scripts/mcp/tool_handlers.js',
364
+ line: 1,
365
+ column: 1,
366
+ snippet: `tool: ${toolName}`,
367
+ message: `Ferramenta declarada '${toolName}' não possui função de handler registrada na tabela de despacho.`,
368
+ remediation: `Implementar ou registrar o handler correspondente para '${toolName}' em TOOL_DISPATCH_TABLE.`
369
+ });
370
+ }
371
+ }
372
+
373
+ return createSarifReport({
374
+ toolName: 'agent-master-tool-dispatcher',
375
+ toolVersion: '5.1.0',
376
+ findings,
377
+ properties: {
378
+ totalDeclaredTools: allDeclared.length,
379
+ totalRegisteredHandlers: Object.keys(this.table).length,
380
+ metaToolsCount: ToolHandlers.META_TOOLS.length
381
+ }
382
+ });
383
+ }
384
+
385
+ /**
386
+ * Emite relatório executivo em Markdown com status de cobertura do roteador
387
+ */
388
+ formatReport() {
389
+ const totalHandlers = Object.keys(this.table).length;
390
+ return [
391
+ '# Relatório Executivo: Despachante de Ferramentas MCP',
392
+ '',
393
+ `- **Total de Handlers Registrados:** ${totalHandlers}`,
394
+ `- **Meta-Ferramentas Consolidadas:** ${ToolHandlers.META_TOOLS.length} (${ToolHandlers.META_TOOLS.join(', ')})`,
395
+ `- **Cobertura de Rotas:** 100% Determinística O(1)`,
396
+ `- **Status:** OPERACIONAL`,
397
+ ''
398
+ ].join('\n');
399
+ }
400
+
401
+ static handleToolCall(id, params) {
402
+ return defaultToolHandlersInstance.handleToolCall(id, params);
403
+ }
404
+
405
+ static async handleToolCallAsync(id, params) {
406
+ return await defaultToolHandlersInstance.handleToolCallAsync(id, params);
407
+ }
408
+
409
+ static auditToSarif() {
410
+ return defaultToolHandlersInstance.auditToSarif();
411
+ }
412
+
413
+ static formatReport() {
414
+ return defaultToolHandlersInstance.formatReport();
415
+ }
416
+ }
417
+
418
+ // Instância singleton padrão
419
+ const defaultToolHandlersInstance = new ToolHandlers();
420
+
421
+ function handleToolCall(id, params) {
422
+ return defaultToolHandlersInstance.handleToolCall(id, params);
423
+ }
424
+
425
+ async function handleToolCallAsync(id, params) {
426
+ return await defaultToolHandlersInstance.handleToolCallAsync(id, params);
427
+ }
428
+
429
+ module.exports = {
430
+ ToolHandlers,
431
+ defaultToolHandlersInstance,
432
+ handleToolCall,
433
+ handleToolCallAsync,
434
+ TOOL_DISPATCH_TABLE,
435
+ extractPayload,
436
+ createMetaToolHandler,
437
+ handleAgentGovernance,
438
+ handleAgentAudit,
439
+ handleAgentReview,
440
+ handleAgentPipeline,
441
+ handleAgentTelemetry,
442
+ auditToSarif: () => ToolHandlers.auditToSarif(),
443
+ formatReport: () => ToolHandlers.formatReport()
444
+ };