@shiftleftpt/sbd-toe-mcp 0.6.3 → 0.7.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/assets/agent-guide.md +22 -19
- package/data/publish/algolia_entities_records_enriched.json +25370 -2
- package/data/publish/canonical_controls.json +1239 -0
- package/data/publish/canonical_requirements_s7.json +1859 -0
- package/data/publish/canonical_roles_s5.json +138 -0
- package/data/publish/lifecycle_user_stories.json +6558 -0
- package/data/publish/mitigated_threats.json +6945 -0
- package/data/publish/practice_assignments.json +16266 -0
- package/data/publish/sbdtoe-ontology.yaml +696 -0
- package/dist/backend/semantic-index-gateway.js +1 -1
- package/dist/index.js +230 -10
- package/dist/index.js.map +1 -1
- package/dist/resources/sbd-toe-resources.js +6 -1
- package/dist/resources/sbd-toe-resources.js.map +1 -1
- package/dist/tools/consult-security-requirements.d.ts +38 -0
- package/dist/tools/consult-security-requirements.js +115 -0
- package/dist/tools/consult-security-requirements.js.map +1 -0
- package/dist/tools/get-guide-by-role.d.ts +38 -0
- package/dist/tools/get-guide-by-role.js +109 -0
- package/dist/tools/get-guide-by-role.js.map +1 -0
- package/dist/tools/get-threat-landscape.d.ts +44 -0
- package/dist/tools/get-threat-landscape.js +116 -0
- package/dist/tools/get-threat-landscape.js.map +1 -0
- package/dist/tools/map-review-scope.js +5 -0
- package/dist/tools/map-review-scope.js.map +1 -1
- package/dist/tools/ontology-loader.d.ts +104 -0
- package/dist/tools/ontology-loader.js +206 -0
- package/dist/tools/ontology-loader.js.map +1 -0
- package/dist/tools/resolve-entities.d.ts +26 -0
- package/dist/tools/resolve-entities.js +143 -0
- package/dist/tools/resolve-entities.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consult_security_requirements
|
|
3
|
+
*
|
|
4
|
+
* Deterministic resolution of security requirements and controls for a given
|
|
5
|
+
* application context, using the SbD-ToE ontology domain_mapping pipeline.
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (from mcp_ontology_integration.md §4 — consult pipeline):
|
|
8
|
+
* 1. Filter requirements by risk_level (applicable_levels[risk_level] === true)
|
|
9
|
+
* 2. If concerns provided: intersect active categories with concern-mapped categories
|
|
10
|
+
* 3. Collect active category set
|
|
11
|
+
* 4. Map categories → domains via domain_mapping
|
|
12
|
+
* 5. Select controls where control.domain ∈ active_domains
|
|
13
|
+
* 6. Tag each control: "direct" if control.domain matches a requirement.domain (when set),
|
|
14
|
+
* "derived" otherwise (domain_mapping traversal)
|
|
15
|
+
*
|
|
16
|
+
* All data is read from data/publish/ — nothing is invented.
|
|
17
|
+
*/
|
|
18
|
+
import { getOntologyData } from "./ontology-loader.js";
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Types
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
const VALID_RISK_LEVELS = ["L1", "L2", "L3"];
|
|
23
|
+
function isValidRiskLevel(v) {
|
|
24
|
+
return typeof v === "string" && VALID_RISK_LEVELS.includes(v);
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Internal (exported for testability)
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export function _resolveConsultResult(args, ontologyData) {
|
|
30
|
+
const { domainMapping, concernsMap, requirements: allReqs, controls: allControls } = ontologyData;
|
|
31
|
+
// Validate risk_level
|
|
32
|
+
const riskLevelArg = args["risk_level"];
|
|
33
|
+
if (!isValidRiskLevel(riskLevelArg)) {
|
|
34
|
+
throw Object.assign(new Error(`Invalid risk_level: "${String(riskLevelArg)}". Allowed values: L1, L2, L3.`), { rpcError: { code: -32602, message: `Invalid risk_level: "${String(riskLevelArg)}"` } });
|
|
35
|
+
}
|
|
36
|
+
const riskLevel = riskLevelArg;
|
|
37
|
+
// Parse optional concerns
|
|
38
|
+
let concernsApplied = null;
|
|
39
|
+
const concernsArg = args["concerns"];
|
|
40
|
+
if (Array.isArray(concernsArg) && concernsArg.length > 0) {
|
|
41
|
+
concernsApplied = concernsArg.filter((c) => typeof c === "string");
|
|
42
|
+
}
|
|
43
|
+
// Step 1: filter requirements by risk level
|
|
44
|
+
let filteredReqs = allReqs.filter((r) => r.applicable_levels?.[riskLevel] === true);
|
|
45
|
+
// Step 2: if concerns provided, intersect with concern-mapped categories
|
|
46
|
+
if (concernsApplied && concernsApplied.length > 0) {
|
|
47
|
+
const concernCategories = new Set();
|
|
48
|
+
for (const concern of concernsApplied) {
|
|
49
|
+
const cats = concernsMap[concern] ?? [];
|
|
50
|
+
for (const cat of cats)
|
|
51
|
+
concernCategories.add(cat);
|
|
52
|
+
}
|
|
53
|
+
filteredReqs = filteredReqs.filter((r) => concernCategories.has(r.category));
|
|
54
|
+
}
|
|
55
|
+
// Step 3: collect active categories
|
|
56
|
+
const active_categories = [...new Set(filteredReqs.map((r) => r.category))].sort();
|
|
57
|
+
// Step 4: map categories → domains
|
|
58
|
+
const activeDomainsSet = new Set();
|
|
59
|
+
for (const cat of active_categories) {
|
|
60
|
+
const domains = domainMapping[cat] ?? [];
|
|
61
|
+
for (const d of domains)
|
|
62
|
+
activeDomainsSet.add(d);
|
|
63
|
+
}
|
|
64
|
+
const active_domains = [...activeDomainsSet].sort();
|
|
65
|
+
// Collect categories that have a direct requirement→domain link (requirement.domain is set)
|
|
66
|
+
const directDomains = new Set(filteredReqs
|
|
67
|
+
.map((r) => r.domain)
|
|
68
|
+
.filter((d) => typeof d === "string" && d.length > 0));
|
|
69
|
+
// Step 5: select controls by domain
|
|
70
|
+
const controls = allControls
|
|
71
|
+
.filter((c) => activeDomainsSet.has(c.domain))
|
|
72
|
+
.map((c) => ({
|
|
73
|
+
...c,
|
|
74
|
+
_confidence: directDomains.has(c.domain) ? "direct" : "derived"
|
|
75
|
+
}));
|
|
76
|
+
// Build rule_trace — which inference rules fired (§5, mcp_ontology_integration.md)
|
|
77
|
+
const rule_trace = [];
|
|
78
|
+
// Priority 100 — always fires when risk_level is provided
|
|
79
|
+
rule_trace.push(`REQUIREMENT_APPLIES_BY_RISK(risk_level=${riskLevel}): ${filteredReqs.length} requirements active`);
|
|
80
|
+
// Priority 95 — fires when any requirement has a direct domain link
|
|
81
|
+
if (directDomains.size > 0) {
|
|
82
|
+
rule_trace.push(`CONTROL_ACTIVE_DIRECT_LINK: ${directDomains.size} direct domain(s) found → confidence=direct`);
|
|
83
|
+
}
|
|
84
|
+
// Priority 90 — fires when there are active categories to derive domains from
|
|
85
|
+
if (active_categories.length > 0) {
|
|
86
|
+
rule_trace.push(`CONTROL_ACTIVE_BY_DOMAIN: ${active_categories.length} categories → ${activeDomainsSet.size} domains → ${controls.length} controls`);
|
|
87
|
+
}
|
|
88
|
+
// Priority 60, restrictive — fires when concerns narrowing was applied
|
|
89
|
+
if (concernsApplied && concernsApplied.length > 0) {
|
|
90
|
+
rule_trace.push(`CONCERNS_FILTER_REQUIREMENTS(concerns=[${concernsApplied.join(",")}]): intersected with risk-level filter`);
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
risk_level: riskLevel,
|
|
94
|
+
active_categories,
|
|
95
|
+
active_domains,
|
|
96
|
+
requirements: filteredReqs,
|
|
97
|
+
controls,
|
|
98
|
+
rule_trace,
|
|
99
|
+
meta: {
|
|
100
|
+
requirementCount: filteredReqs.length,
|
|
101
|
+
controlCount: controls.length,
|
|
102
|
+
concernsApplied,
|
|
103
|
+
note: "Requirements and controls resolved deterministically from the SbD-ToE ontology. " +
|
|
104
|
+
"domain_mapping is the sole traversal key (§10 constraint). " +
|
|
105
|
+
"Control confidence: 'direct' = requirement.domain match; 'derived' = domain_mapping traversal."
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// Public handler
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
export function handleConsultSecurityRequirements(args) {
|
|
113
|
+
return _resolveConsultResult(args, getOntologyData());
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=consult-security-requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consult-security-requirements.js","sourceRoot":"","sources":["../../src/tools/consult-security-requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_guide_by_role
|
|
3
|
+
*
|
|
4
|
+
* Returns practice assignments and user stories for a given risk level,
|
|
5
|
+
* optionally filtered by role and/or lifecycle phase.
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (from mcp_ontology_integration.md §4 — guide pipeline):
|
|
8
|
+
* 1. Filter assignments by risk_level
|
|
9
|
+
* 2. If role provided: resolve to canonical role_id (via aliases), filter by role
|
|
10
|
+
* 3. If phase provided: filter by phase
|
|
11
|
+
* 4. Group assignments by role and by phase
|
|
12
|
+
* 5. Join user stories via practice_id
|
|
13
|
+
*
|
|
14
|
+
* All data is read from data/publish/ — nothing is invented.
|
|
15
|
+
*/
|
|
16
|
+
import type { PracticeAssignment, UserStory } from "./ontology-loader.js";
|
|
17
|
+
import { getOntologyData } from "./ontology-loader.js";
|
|
18
|
+
export interface AssignmentWithStory extends PracticeAssignment {
|
|
19
|
+
user_story?: UserStory;
|
|
20
|
+
}
|
|
21
|
+
export interface GetGuideByRoleResult {
|
|
22
|
+
risk_level: string;
|
|
23
|
+
roleFilter: string | null;
|
|
24
|
+
canonicalRole: string | null;
|
|
25
|
+
phaseFilter: string | null;
|
|
26
|
+
assignments: AssignmentWithStory[];
|
|
27
|
+
by_role: Record<string, AssignmentWithStory[]>;
|
|
28
|
+
by_phase: Record<string, AssignmentWithStory[]>;
|
|
29
|
+
meta: {
|
|
30
|
+
assignmentCount: number;
|
|
31
|
+
userStoryCount: number;
|
|
32
|
+
knownRoles: string[];
|
|
33
|
+
knownPhases: string[];
|
|
34
|
+
note: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export declare function _resolveGuideByRole(args: Record<string, unknown>, ontologyData: ReturnType<typeof getOntologyData>): GetGuideByRoleResult;
|
|
38
|
+
export declare function handleGetGuideByRole(args: Record<string, unknown>): GetGuideByRoleResult;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_guide_by_role
|
|
3
|
+
*
|
|
4
|
+
* Returns practice assignments and user stories for a given risk level,
|
|
5
|
+
* optionally filtered by role and/or lifecycle phase.
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (from mcp_ontology_integration.md §4 — guide pipeline):
|
|
8
|
+
* 1. Filter assignments by risk_level
|
|
9
|
+
* 2. If role provided: resolve to canonical role_id (via aliases), filter by role
|
|
10
|
+
* 3. If phase provided: filter by phase
|
|
11
|
+
* 4. Group assignments by role and by phase
|
|
12
|
+
* 5. Join user stories via practice_id
|
|
13
|
+
*
|
|
14
|
+
* All data is read from data/publish/ — nothing is invented.
|
|
15
|
+
*/
|
|
16
|
+
import { getOntologyData, resolveRoleId } from "./ontology-loader.js";
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Types
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
const VALID_RISK_LEVELS = ["L1", "L2", "L3"];
|
|
21
|
+
function isValidRiskLevel(v) {
|
|
22
|
+
return typeof v === "string" && VALID_RISK_LEVELS.includes(v);
|
|
23
|
+
}
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Internal (exported for testability)
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
export function _resolveGuideByRole(args, ontologyData) {
|
|
28
|
+
const { roles, assignments: allAssignments, userStories: allStories } = ontologyData;
|
|
29
|
+
// Validate risk_level
|
|
30
|
+
const riskLevelArg = args["risk_level"];
|
|
31
|
+
if (!isValidRiskLevel(riskLevelArg)) {
|
|
32
|
+
throw Object.assign(new Error(`Invalid risk_level: "${String(riskLevelArg)}". Allowed values: L1, L2, L3.`), { rpcError: { code: -32602, message: `Invalid risk_level: "${String(riskLevelArg)}"` } });
|
|
33
|
+
}
|
|
34
|
+
const riskLevel = riskLevelArg;
|
|
35
|
+
// Optional role filter
|
|
36
|
+
const roleArg = typeof args["role"] === "string" ? args["role"].trim() : null;
|
|
37
|
+
let canonicalRole = null;
|
|
38
|
+
if (roleArg) {
|
|
39
|
+
const resolved = resolveRoleId(roleArg, roles);
|
|
40
|
+
// Keep the input as-is if unresolved (still filter by raw string)
|
|
41
|
+
canonicalRole = resolved ?? roleArg.toLowerCase().replace(/[\s/]+/g, "-");
|
|
42
|
+
}
|
|
43
|
+
// Optional phase filter
|
|
44
|
+
const phaseArg = typeof args["phase"] === "string" ? args["phase"].trim().toLowerCase() : null;
|
|
45
|
+
// Step 1: filter assignments by risk_level
|
|
46
|
+
let filtered = allAssignments.filter((a) => a.risk_level === riskLevel);
|
|
47
|
+
// Step 2: filter by role if provided
|
|
48
|
+
if (canonicalRole) {
|
|
49
|
+
filtered = filtered.filter((a) => a.role.toLowerCase().replace(/[\s/]+/g, "-") === canonicalRole);
|
|
50
|
+
}
|
|
51
|
+
// Step 3: filter by phase if provided
|
|
52
|
+
if (phaseArg) {
|
|
53
|
+
filtered = filtered.filter((a) => a.phase.toLowerCase() === phaseArg);
|
|
54
|
+
}
|
|
55
|
+
// Build user story lookup by practice_id
|
|
56
|
+
const storyByPractice = new Map();
|
|
57
|
+
for (const story of allStories) {
|
|
58
|
+
if (story.practice_id) {
|
|
59
|
+
storyByPractice.set(story.practice_id, story);
|
|
60
|
+
}
|
|
61
|
+
// Also index by id for direct lookup
|
|
62
|
+
if (story.id) {
|
|
63
|
+
storyByPractice.set(story.id, story);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Step 5: join user stories
|
|
67
|
+
const assignments = filtered.map((a) => {
|
|
68
|
+
const story = (a.practice_id ? storyByPractice.get(a.practice_id) : undefined) ??
|
|
69
|
+
(a.user_story_id ? storyByPractice.get(a.user_story_id) : undefined);
|
|
70
|
+
return story ? { ...a, user_story: story } : { ...a };
|
|
71
|
+
});
|
|
72
|
+
// Step 6: group by role and by phase
|
|
73
|
+
const by_role = {};
|
|
74
|
+
const by_phase = {};
|
|
75
|
+
for (const a of assignments) {
|
|
76
|
+
(by_role[a.role] ??= []).push(a);
|
|
77
|
+
(by_phase[a.phase] ??= []).push(a);
|
|
78
|
+
}
|
|
79
|
+
// Compute known roles and phases from the full assignment set at this risk level
|
|
80
|
+
const allAtLevel = allAssignments.filter((a) => a.risk_level === riskLevel);
|
|
81
|
+
const knownRoles = [...new Set(allAtLevel.map((a) => a.role))].sort();
|
|
82
|
+
const knownPhases = [...new Set(allAtLevel.map((a) => a.phase))].sort();
|
|
83
|
+
const userStoryCount = assignments.filter((a) => a.user_story !== undefined).length;
|
|
84
|
+
return {
|
|
85
|
+
risk_level: riskLevel,
|
|
86
|
+
roleFilter: roleArg,
|
|
87
|
+
canonicalRole,
|
|
88
|
+
phaseFilter: phaseArg,
|
|
89
|
+
assignments,
|
|
90
|
+
by_role,
|
|
91
|
+
by_phase,
|
|
92
|
+
meta: {
|
|
93
|
+
assignmentCount: assignments.length,
|
|
94
|
+
userStoryCount,
|
|
95
|
+
knownRoles,
|
|
96
|
+
knownPhases,
|
|
97
|
+
note: "Assignments sourced from the SbD-ToE ontology practice_assignments file. " +
|
|
98
|
+
"Roles resolved via canonical_roles aliases. " +
|
|
99
|
+
"User stories joined via practice_id from lifecycle_user_stories."
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
// Public handler
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
export function handleGetGuideByRole(args) {
|
|
107
|
+
return _resolveGuideByRole(args, getOntologyData());
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=get-guide-by-role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-guide-by-role.js","sourceRoot":"","sources":["../../src/tools/get-guide-by-role.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_threat_landscape
|
|
3
|
+
*
|
|
4
|
+
* Deterministic threat resolution for a given application context using the
|
|
5
|
+
* SbD-ToE ontology threats pipeline.
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (from mcp_ontology_integration.md §4 — threats pipeline):
|
|
8
|
+
* 1. Run consult pipeline to get active requirements (risk_level + optional concerns)
|
|
9
|
+
* 2. Collect active source chapters from filtered requirements
|
|
10
|
+
* 3. For each threat: derive relevance by matching threat.chapter_id chapter number
|
|
11
|
+
* against active source chapters → confidence "derived"
|
|
12
|
+
*
|
|
13
|
+
* NOTE (§10, constraint 3): threat.associated_controls are file paths, not IDs.
|
|
14
|
+
* Relevance is derived via chapter_id and active domains — not control ID matching.
|
|
15
|
+
*
|
|
16
|
+
* All data is read from data/publish/ — nothing is invented.
|
|
17
|
+
*/
|
|
18
|
+
import type { Threat } from "./ontology-loader.js";
|
|
19
|
+
import { getOntologyData } from "./ontology-loader.js";
|
|
20
|
+
export interface MitigatingControl {
|
|
21
|
+
control_id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
domain: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ThreatWithConfidence extends Threat {
|
|
26
|
+
/** Spec-aligned ID field: mirrors mitigated_threat_id */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Spec-aligned name field: mirrors threat_label_raw */
|
|
29
|
+
name: string;
|
|
30
|
+
mitigation_confidence: "derived" | "heuristic";
|
|
31
|
+
mitigated_by: MitigatingControl[];
|
|
32
|
+
}
|
|
33
|
+
export interface GetThreatLandscapeResult {
|
|
34
|
+
risk_level: string;
|
|
35
|
+
threats: ThreatWithConfidence[];
|
|
36
|
+
meta: {
|
|
37
|
+
threatCount: number;
|
|
38
|
+
activeChapters: string[];
|
|
39
|
+
concernsApplied: string[] | null;
|
|
40
|
+
note: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export declare function _resolveThreatLandscape(args: Record<string, unknown>, ontologyData: ReturnType<typeof getOntologyData>): GetThreatLandscapeResult;
|
|
44
|
+
export declare function handleGetThreatLandscape(args: Record<string, unknown>): GetThreatLandscapeResult;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_threat_landscape
|
|
3
|
+
*
|
|
4
|
+
* Deterministic threat resolution for a given application context using the
|
|
5
|
+
* SbD-ToE ontology threats pipeline.
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (from mcp_ontology_integration.md §4 — threats pipeline):
|
|
8
|
+
* 1. Run consult pipeline to get active requirements (risk_level + optional concerns)
|
|
9
|
+
* 2. Collect active source chapters from filtered requirements
|
|
10
|
+
* 3. For each threat: derive relevance by matching threat.chapter_id chapter number
|
|
11
|
+
* against active source chapters → confidence "derived"
|
|
12
|
+
*
|
|
13
|
+
* NOTE (§10, constraint 3): threat.associated_controls are file paths, not IDs.
|
|
14
|
+
* Relevance is derived via chapter_id and active domains — not control ID matching.
|
|
15
|
+
*
|
|
16
|
+
* All data is read from data/publish/ — nothing is invented.
|
|
17
|
+
*/
|
|
18
|
+
import { getOntologyData } from "./ontology-loader.js";
|
|
19
|
+
import { _resolveConsultResult } from "./consult-security-requirements.js";
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Helpers
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
/**
|
|
24
|
+
* Extract chapter number prefix from a chapter_id like "02-requisitos-seguranca" → "02" → 2.
|
|
25
|
+
* Returns NaN if the format is not recognized.
|
|
26
|
+
*/
|
|
27
|
+
function chapterNumber(chapterId) {
|
|
28
|
+
const match = /^(\d+)/.exec(chapterId);
|
|
29
|
+
return match?.[1] !== undefined ? parseInt(match[1], 10) : NaN;
|
|
30
|
+
}
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Internal (exported for testability)
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
export function _resolveThreatLandscape(args, ontologyData) {
|
|
35
|
+
const { threats: allThreats, controls: allControls } = ontologyData;
|
|
36
|
+
// Run consult pipeline to get filtered requirements
|
|
37
|
+
const consult = _resolveConsultResult(args, ontologyData);
|
|
38
|
+
// Collect active source chapter numbers from requirements
|
|
39
|
+
const activeChapterNumbers = new Set(consult.requirements.map((r) => r.source_chapter).filter((n) => !isNaN(n)));
|
|
40
|
+
// Collect active domains for heuristic fallback
|
|
41
|
+
const activeDomains = new Set(consult.active_domains);
|
|
42
|
+
// Build control lookup by chapter_id slug for mitigated_by resolution.
|
|
43
|
+
// Uses all controls (not just active ones) — chapter_ids is the authoritative
|
|
44
|
+
// structural mapping from the knowledge-graph pipeline.
|
|
45
|
+
const controlsByChapter = new Map();
|
|
46
|
+
for (const ctrl of allControls) {
|
|
47
|
+
for (const chId of ctrl.chapter_ids ?? []) {
|
|
48
|
+
const list = controlsByChapter.get(chId) ?? [];
|
|
49
|
+
list.push({ control_id: ctrl.control_id, name: ctrl.name, domain: ctrl.domain });
|
|
50
|
+
controlsByChapter.set(chId, list);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Filter threats and resolve mitigated_by
|
|
54
|
+
const threats = [];
|
|
55
|
+
for (const threat of allThreats) {
|
|
56
|
+
const chId = threat.chapter_id ?? "";
|
|
57
|
+
const chNum = chapterNumber(chId);
|
|
58
|
+
const mitigated_by = controlsByChapter.get(chId) ?? [];
|
|
59
|
+
const threatId = threat.mitigated_threat_id ?? threat.object_id ?? "";
|
|
60
|
+
const threatName = threat.threat_label_raw ?? "";
|
|
61
|
+
if (!isNaN(chNum) && activeChapterNumbers.has(chNum)) {
|
|
62
|
+
threats.push({
|
|
63
|
+
...threat,
|
|
64
|
+
id: threatId,
|
|
65
|
+
name: threatName,
|
|
66
|
+
mitigation_confidence: "derived",
|
|
67
|
+
mitigated_by
|
|
68
|
+
});
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
// Heuristic fallback: threat chapter_id contains a domain keyword
|
|
72
|
+
const lowerChId = chId.toLowerCase();
|
|
73
|
+
let heuristicMatch = false;
|
|
74
|
+
for (const domain of activeDomains) {
|
|
75
|
+
if (lowerChId.includes(domain.replace(/_/g, "-"))) {
|
|
76
|
+
heuristicMatch = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (heuristicMatch) {
|
|
81
|
+
threats.push({
|
|
82
|
+
...threat,
|
|
83
|
+
id: threatId,
|
|
84
|
+
name: threatName,
|
|
85
|
+
mitigation_confidence: "heuristic",
|
|
86
|
+
mitigated_by
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Sort: derived first, then heuristic; within group by chapter_id
|
|
91
|
+
threats.sort((a, b) => {
|
|
92
|
+
if (a.mitigation_confidence !== b.mitigation_confidence) {
|
|
93
|
+
return a.mitigation_confidence === "derived" ? -1 : 1;
|
|
94
|
+
}
|
|
95
|
+
return (a.chapter_id ?? "").localeCompare(b.chapter_id ?? "");
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
risk_level: consult.risk_level,
|
|
99
|
+
threats,
|
|
100
|
+
meta: {
|
|
101
|
+
threatCount: threats.length,
|
|
102
|
+
activeChapters: [...activeChapterNumbers].sort((a, b) => a - b).map(String),
|
|
103
|
+
concernsApplied: consult.meta.concernsApplied,
|
|
104
|
+
note: "Threats resolved deterministically from the SbD-ToE ontology via chapter matching. " +
|
|
105
|
+
"associated_controls are file paths — relevance derived via chapter_id (§10 constraint 3). " +
|
|
106
|
+
"confidence: 'derived' = chapter number match; 'heuristic' = domain keyword match."
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Public handler
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
export function handleGetThreatLandscape(args) {
|
|
114
|
+
return _resolveThreatLandscape(args, getOntologyData());
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=get-threat-landscape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-threat-landscape.js","sourceRoot":"","sources":["../../src/tools/get-threat-landscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAgC3E,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,aAAa,CAAC,SAAiB;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACjE,CAAC;AAED,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,MAAM,UAAU,uBAAuB,CACrC,IAA6B,EAC7B,YAAgD;IAEhD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;IAEpE,oDAAoD;IACpD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE1D,0DAA0D;IAC1D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;IAEF,gDAAgD;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEtD,uEAAuE;IACvE,8EAA8E;IAC9E,wDAAwD;IACxD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACjF,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEvD,MAAM,QAAQ,GAAK,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAEjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,MAAM;gBACT,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,qBAAqB,EAAE,SAAS;gBAChC,YAAY;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,kEAAkE;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClD,cAAc,GAAG,IAAI,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,MAAM;gBACT,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,qBAAqB,EAAE,WAAW;gBAClC,YAAY;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;YACxD,OAAO,CAAC,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,cAAc,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3E,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;YAC7C,IAAI,EACF,qFAAqF;gBACrF,4FAA4F;gBAC5F,mFAAmF;SACtF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,wBAAwB,CACtC,IAA6B;IAE7B,OAAO,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -117,6 +117,11 @@ const PATTERN_RULES = [
|
|
|
117
117
|
bundles: ["07-cicd-seguro", "10-testes-seguranca", "11-deploy-seguro"],
|
|
118
118
|
matches: (p) => p.startsWith(".github/workflows/")
|
|
119
119
|
},
|
|
120
|
+
{
|
|
121
|
+
pattern: ".github/**/*.yml / .github/**/*.yaml",
|
|
122
|
+
bundles: ["07-cicd-seguro", "10-testes-seguranca"],
|
|
123
|
+
matches: (p) => p.startsWith(".github/") && (p.endsWith(".yml") || p.endsWith(".yaml"))
|
|
124
|
+
},
|
|
120
125
|
{
|
|
121
126
|
pattern: "package.json / *-lock.json / yarn.lock",
|
|
122
127
|
bundles: ["05-dependencias-sbom-sca"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-review-scope.js","sourceRoot":"","sources":["../../src/tools/map-review-scope.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map-review-scope.js","sourceRoot":"","sources":["../../src/tools/map-review-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ontology-loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and caches the SbD-ToE ontology and entity data from data/publish/.
|
|
5
|
+
* Single source of truth for ontology-driven tools.
|
|
6
|
+
*
|
|
7
|
+
* As of kg v1.4.0, all entity types (including requirement and control) are
|
|
8
|
+
* present in algolia_entities_records_enriched.json with normalised record_type.
|
|
9
|
+
* The individual entity files (canonical_requirements_s7.json, etc.) are no
|
|
10
|
+
* longer required.
|
|
11
|
+
*
|
|
12
|
+
* Files consumed:
|
|
13
|
+
* data/publish/sbdtoe-ontology.yaml — domain_mapping, rules, pipelines
|
|
14
|
+
* data/publish/algolia_entities_records_enriched.json — all entity types by record_type
|
|
15
|
+
*
|
|
16
|
+
* All data is read from the published artefacts — nothing is invented.
|
|
17
|
+
*/
|
|
18
|
+
export interface Requirement {
|
|
19
|
+
requirement_id: string;
|
|
20
|
+
type: string;
|
|
21
|
+
category: string;
|
|
22
|
+
name: string;
|
|
23
|
+
applicable_levels: {
|
|
24
|
+
L1: boolean;
|
|
25
|
+
L2: boolean;
|
|
26
|
+
L3: boolean;
|
|
27
|
+
};
|
|
28
|
+
source_chapter: number;
|
|
29
|
+
source_file?: string;
|
|
30
|
+
domain?: string | null;
|
|
31
|
+
}
|
|
32
|
+
export interface Control {
|
|
33
|
+
control_id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
name_en?: string;
|
|
36
|
+
domain: string;
|
|
37
|
+
control_type: string;
|
|
38
|
+
abstraction_level: string;
|
|
39
|
+
applicable_lifecycle_phases: string[];
|
|
40
|
+
source_practice_ids: string[];
|
|
41
|
+
/** Chapter slugs this control covers (e.g. ["06-desenvolvimento-seguro"]) */
|
|
42
|
+
chapter_ids?: string[];
|
|
43
|
+
description?: string;
|
|
44
|
+
aliases?: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface CanonicalRole {
|
|
47
|
+
role_id: string;
|
|
48
|
+
aliases: string[];
|
|
49
|
+
canonical: boolean;
|
|
50
|
+
source: string;
|
|
51
|
+
}
|
|
52
|
+
export interface Threat {
|
|
53
|
+
mitigated_threat_id?: string;
|
|
54
|
+
object_id?: string;
|
|
55
|
+
threat_label_raw?: string;
|
|
56
|
+
essence?: string;
|
|
57
|
+
chapter_id?: string;
|
|
58
|
+
category?: string | null;
|
|
59
|
+
cwe?: string | null;
|
|
60
|
+
cvss_score?: number | null;
|
|
61
|
+
associated_controls: string[];
|
|
62
|
+
mitigation_summary?: string;
|
|
63
|
+
confidence?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface PracticeAssignment {
|
|
66
|
+
id: string;
|
|
67
|
+
chapter_id: string;
|
|
68
|
+
practice_id: string;
|
|
69
|
+
role: string;
|
|
70
|
+
phase: string;
|
|
71
|
+
risk_level: string;
|
|
72
|
+
action: string;
|
|
73
|
+
artifacts: string[];
|
|
74
|
+
user_story_id?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface UserStory {
|
|
77
|
+
id?: string;
|
|
78
|
+
us_id?: string;
|
|
79
|
+
title: string;
|
|
80
|
+
chapter_id?: string;
|
|
81
|
+
practice_id?: string;
|
|
82
|
+
/** Canonical role IDs (from kg enrichment) */
|
|
83
|
+
roles_normalized?: string[];
|
|
84
|
+
/** Legacy alias kept for compatibility */
|
|
85
|
+
related_roles?: string[];
|
|
86
|
+
risk_levels?: string[];
|
|
87
|
+
acceptance_criteria?: string;
|
|
88
|
+
bdd?: string[];
|
|
89
|
+
goal?: string;
|
|
90
|
+
summary?: string;
|
|
91
|
+
}
|
|
92
|
+
export interface OntologyData {
|
|
93
|
+
domainMapping: Record<string, string[]>;
|
|
94
|
+
concernsMap: Record<string, string[]>;
|
|
95
|
+
requirements: Requirement[];
|
|
96
|
+
controls: Control[];
|
|
97
|
+
roles: CanonicalRole[];
|
|
98
|
+
threats: Threat[];
|
|
99
|
+
assignments: PracticeAssignment[];
|
|
100
|
+
userStories: UserStory[];
|
|
101
|
+
}
|
|
102
|
+
export declare function getOntologyData(): OntologyData;
|
|
103
|
+
/** Resolve a role input string to a canonical role_id, using aliases. */
|
|
104
|
+
export declare function resolveRoleId(input: string, roles: CanonicalRole[]): string | undefined;
|