agent-master-devsecops 3.9.0 → 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 +205 -371
- package/agents/AGENT_DEVSECOPS.md +32 -417
- package/agents/AGENT_INFRA.md +31 -0
- package/agents/AGENT_ORCHESTRATOR.md +39 -264
- package/agents/AGENT_QA.md +58 -186
- package/agents/AGENT_SCRUM.md +23 -190
- package/agents/AGENT_SRE.md +22 -173
- package/agents/AGENT_UIUX.md +26 -162
- package/docs/ARCHITECTURE.md +152 -148
- package/docs/CALCULATIONS.md +17 -17
- package/docs/CHANGELOG.md +112 -49
- package/docs/ENGINEERING_RULES.md +56 -252
- package/docs/IDEAS.md +17 -17
- package/docs/LOCAL_BACKLOG.md +20 -0
- package/docs/STATE.md +111 -43
- package/docs/playbooks/PLAYBOOK_CIRCUIT_BREAKER_LLM.md +58 -58
- package/docs/playbooks/PLAYBOOK_OPENTELEMETRY_TRACING.md +58 -58
- package/package.json +59 -47
- 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/{bootstrap_cli.js → bin/bootstrap_cli.js} +597 -468
- package/scripts/bin/domain_idea_miner.js +658 -0
- package/scripts/bin/smart_onboarding.js +905 -0
- package/scripts/{web_inspector.js → bin/web_inspector.js} +578 -355
- 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/{circuit_breaker.js → core/circuit_breaker.js} +546 -330
- 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/{magic_prompt_generator.js → core/magic_prompt_generator.js} +250 -205
- package/scripts/{multi_agent_orchestrator.js → core/multi_agent_orchestrator.js} +421 -258
- package/scripts/{otel_tracer.js → core/otel_tracer.js} +335 -228
- package/scripts/{perf_benchmark.js → core/perf_benchmark.js} +212 -153
- package/scripts/core/sarif_engine.js +299 -0
- package/scripts/{sre_remediation_engine.js → core/sre_remediation_engine.js} +236 -174
- package/scripts/{universal_packager.js → core/universal_packager.js} +357 -313
- 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 -1884
- package/.cursorignore +0 -23
- package/agents/compact/AGENT_ORCHESTRATOR_COMPACTO.md +0 -53
- package/scripts/a11y_auditor.js +0 -187
- package/scripts/ast_skeletonizer.js +0 -220
- package/scripts/atlassian_client.js +0 -238
- package/scripts/atlassian_sync_action.js +0 -269
- package/scripts/code_quality_auditor.js +0 -142
- package/scripts/confluence_sync.js +0 -337
- package/scripts/context_compressor.js +0 -139
- package/scripts/contract_test_validator.js +0 -166
- package/scripts/credentials_guard.js +0 -216
- package/scripts/domain_idea_miner.js +0 -364
- package/scripts/eval_harness.js +0 -100
- package/scripts/fast_feature_scaffold.js +0 -338
- package/scripts/git_hygiene_linter.js +0 -186
- package/scripts/hot_state_cache.js +0 -95
- package/scripts/jira_manager.js +0 -408
- package/scripts/pr_reviewer.js +0 -373
- package/scripts/sast_scanner.js +0 -180
- package/scripts/sca_dependency_auditor.js +0 -167
- package/scripts/smart_onboarding.js +0 -610
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* scripts/sca_dependency_auditor.js
|
|
3
|
-
* Auditor Offline de Composição de Software (SCA) & Conformidade de Licenças
|
|
4
|
-
*
|
|
5
|
-
* Implementa inspeção estática em manifestos package.json:
|
|
6
|
-
* - Auditoria de vulnerabilidades conhecidas (CVEs clássicas / CWE-1395)
|
|
7
|
-
* - Auditoria de licenças restritivas (GPL, AGPL, SSPL) vs permissivas (MIT, Apache-2.0, BSD, ISC)
|
|
8
|
-
* - Detecção de versões não determinísticas (wildcards: "*", "latest")
|
|
9
|
-
* - Cálculo de índice de risco de dependências de terceiros
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
const fs = require('fs');
|
|
14
|
-
const path = require('path');
|
|
15
|
-
|
|
16
|
-
// Catálogo de licenças com restrições copyleft estritas (risco comercial)
|
|
17
|
-
const RESTRICTIVE_LICENSES = ['GPL-2.0', 'GPL-3.0', 'AGPL-3.0', 'SSPL', 'LGPL-3.0', 'GPL', 'AGPL'];
|
|
18
|
-
|
|
19
|
-
// Base de conhecimento offline de vulnerabilidades críticas conhecidas em dependências comuns
|
|
20
|
-
const KNOWN_VULNERABLE_PACKAGES = [
|
|
21
|
-
{
|
|
22
|
-
name: 'lodash',
|
|
23
|
-
affectedVersionRegex: /^([0-3]\.|4\.(0|1[0-6]\.|17\.[0-9]\b|17\.1[0-9]\b|17\.20\b))/,
|
|
24
|
-
cve: 'CVE-2020-8203 / CWE-1321',
|
|
25
|
-
severity: 'ALTA',
|
|
26
|
-
description: 'Poluição de Protótipo (Prototype Pollution) via zipObjectDeep e defaultsDeep.',
|
|
27
|
-
recommendation: 'Atualize para lodash >= 4.17.21'
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'axios',
|
|
31
|
-
affectedVersionRegex: /^(0\.(1[0-9]\.|2[0-1]\.[0-1]\b))/,
|
|
32
|
-
cve: 'CVE-2020-28168 / CWE-918',
|
|
33
|
-
severity: 'ALTA',
|
|
34
|
-
description: 'Server-Side Request Forgery (SSRF) e vazamento de cabeçalho de autorização em redirects.',
|
|
35
|
-
recommendation: 'Atualize para axios >= 0.21.2 ou >= 1.x'
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'tar',
|
|
39
|
-
affectedVersionRegex: /^([0-5]\.|6\.(0\.|1\.[0-8]\b))/,
|
|
40
|
-
cve: 'CVE-2021-37712 / CWE-22',
|
|
41
|
-
severity: 'ALTA',
|
|
42
|
-
description: 'Path Traversal e sobrescrita arbitrária de arquivos durante extração de tarballs.',
|
|
43
|
-
recommendation: 'Atualize para tar >= 6.1.9'
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'minimist',
|
|
47
|
-
affectedVersionRegex: /^([0-1]\.(0\.|1\.|2\.[0-5]\b))/,
|
|
48
|
-
cve: 'CVE-2020-7598 / CWE-1321',
|
|
49
|
-
severity: 'MÉDIA',
|
|
50
|
-
description: 'Prototype Pollution em argumento de linha de comando.',
|
|
51
|
-
recommendation: 'Atualize para minimist >= 1.2.6'
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: 'shell-quote',
|
|
55
|
-
affectedVersionRegex: /^(1\.[0-6]\.|1\.7\.[0-2]\b)/,
|
|
56
|
-
cve: 'CVE-2021-42740 / CWE-78',
|
|
57
|
-
severity: 'CRÍTICA',
|
|
58
|
-
description: 'Command Injection via caracteres de escape mal formatados.',
|
|
59
|
-
recommendation: 'Atualize para shell-quote >= 1.7.3'
|
|
60
|
-
}
|
|
61
|
-
];
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Normaliza e parseia manifesto package.json.
|
|
65
|
-
* @param {string|object} input
|
|
66
|
-
* @returns {object}
|
|
67
|
-
*/
|
|
68
|
-
function resolveManifest(input) {
|
|
69
|
-
if (typeof input === 'object' && input !== null) {
|
|
70
|
-
return input;
|
|
71
|
-
}
|
|
72
|
-
if (typeof input === 'string') {
|
|
73
|
-
if (fs.existsSync(input)) {
|
|
74
|
-
return JSON.parse(fs.readFileSync(input, 'utf8'));
|
|
75
|
-
}
|
|
76
|
-
return JSON.parse(input);
|
|
77
|
-
}
|
|
78
|
-
throw new Error('Entrada inválida para manifesto package.json.');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Audita um manifesto package.json para SCA e conformidade de licenças.
|
|
83
|
-
* @param {string|object} manifestInput
|
|
84
|
-
* @param {object} [options={}]
|
|
85
|
-
* @returns {object}
|
|
86
|
-
*/
|
|
87
|
-
function auditDependenciesSCA(manifestInput, options = {}) {
|
|
88
|
-
let manifest;
|
|
89
|
-
try {
|
|
90
|
-
manifest = resolveManifest(manifestInput);
|
|
91
|
-
} catch (err) {
|
|
92
|
-
return {
|
|
93
|
-
approved: false,
|
|
94
|
-
error: `Falha ao carregar manifesto: ${err.message}`,
|
|
95
|
-
vulnerabilities: [],
|
|
96
|
-
licenseIssues: []
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const prodDeps = manifest.dependencies || {};
|
|
101
|
-
const devDeps = manifest.devDependencies || {};
|
|
102
|
-
const allDeps = { ...prodDeps, ...devDeps };
|
|
103
|
-
|
|
104
|
-
const vulnerabilities = [];
|
|
105
|
-
const licenseIssues = [];
|
|
106
|
-
const wildcardIssues = [];
|
|
107
|
-
|
|
108
|
-
// 1. Auditoria de Licença do Próprio Pacote
|
|
109
|
-
const projectLicense = manifest.license || 'UNLICENSED';
|
|
110
|
-
if (RESTRICTIVE_LICENSES.some(lic => String(projectLicense).toUpperCase().includes(lic))) {
|
|
111
|
-
licenseIssues.push({
|
|
112
|
-
package: manifest.name || 'root-project',
|
|
113
|
-
license: projectLicense,
|
|
114
|
-
severity: 'ALTA',
|
|
115
|
-
message: `Licença restritiva detectada: ${projectLicense}. Pode exigir abertura compulsória do código-fonte.`
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// 2. Auditoria de Versões e Vulnerabilidades Conhecidas
|
|
120
|
-
for (const [pkgName, versionSpec] of Object.entries(allDeps)) {
|
|
121
|
-
const rawVersion = String(versionSpec).replace(/^[\^~>=<]+/, '').trim();
|
|
122
|
-
|
|
123
|
-
// Checagem de Wildcard (reprodutibilidade)
|
|
124
|
-
if (versionSpec === '*' || versionSpec === 'latest') {
|
|
125
|
-
wildcardIssues.push({
|
|
126
|
-
package: pkgName,
|
|
127
|
-
version: versionSpec,
|
|
128
|
-
severity: 'MÉDIA',
|
|
129
|
-
message: `Uso de versão não determinística ("${versionSpec}"). Fere a Regra 1 de reprodutibilidade.`
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Checagem de CVEs conhecidas
|
|
134
|
-
for (const vuln of KNOWN_VULNERABLE_PACKAGES) {
|
|
135
|
-
if (vuln.name === pkgName && vuln.affectedVersionRegex.test(rawVersion)) {
|
|
136
|
-
vulnerabilities.push({
|
|
137
|
-
package: pkgName,
|
|
138
|
-
installedVersion: versionSpec,
|
|
139
|
-
severity: vuln.severity,
|
|
140
|
-
cve: vuln.cve,
|
|
141
|
-
description: vuln.description,
|
|
142
|
-
recommendation: vuln.recommendation
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const criticalOrHighVulns = vulnerabilities.filter(v => v.severity === 'CRÍTICA' || v.severity === 'ALTA');
|
|
149
|
-
const approved = criticalOrHighVulns.length === 0 && licenseIssues.length === 0;
|
|
150
|
-
|
|
151
|
-
return {
|
|
152
|
-
approved,
|
|
153
|
-
totalDependencies: Object.keys(allDeps).length,
|
|
154
|
-
vulnerabilitiesCount: vulnerabilities.length,
|
|
155
|
-
criticalVulnerabilities: criticalOrHighVulns.length,
|
|
156
|
-
vulnerabilities,
|
|
157
|
-
licenseIssues,
|
|
158
|
-
wildcardIssues,
|
|
159
|
-
verdict: approved ? 'CONFORME' : 'VETADO'
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
module.exports = {
|
|
164
|
-
auditDependenciesSCA,
|
|
165
|
-
RESTRICTIVE_LICENSES,
|
|
166
|
-
KNOWN_VULNERABLE_PACKAGES
|
|
167
|
-
};
|