@shiftleftpt/sbd-toe-mcp 0.6.3 → 0.7.2

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 (32) hide show
  1. package/assets/agent-guide.md +106 -24
  2. package/data/publish/algolia_entities_records_enriched.json +25370 -2
  3. package/data/publish/canonical_controls.json +1239 -0
  4. package/data/publish/canonical_requirements_s7.json +1859 -0
  5. package/data/publish/canonical_roles_s5.json +138 -0
  6. package/data/publish/lifecycle_user_stories.json +6558 -0
  7. package/data/publish/mitigated_threats.json +6945 -0
  8. package/data/publish/practice_assignments.json +16266 -0
  9. package/data/publish/sbdtoe-ontology.yaml +696 -0
  10. package/dist/backend/semantic-index-gateway.js +1 -1
  11. package/dist/index.js +230 -10
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources/sbd-toe-resources.js +6 -1
  14. package/dist/resources/sbd-toe-resources.js.map +1 -1
  15. package/dist/tools/consult-security-requirements.d.ts +38 -0
  16. package/dist/tools/consult-security-requirements.js +115 -0
  17. package/dist/tools/consult-security-requirements.js.map +1 -0
  18. package/dist/tools/get-guide-by-role.d.ts +38 -0
  19. package/dist/tools/get-guide-by-role.js +109 -0
  20. package/dist/tools/get-guide-by-role.js.map +1 -0
  21. package/dist/tools/get-threat-landscape.d.ts +44 -0
  22. package/dist/tools/get-threat-landscape.js +116 -0
  23. package/dist/tools/get-threat-landscape.js.map +1 -0
  24. package/dist/tools/map-review-scope.js +5 -0
  25. package/dist/tools/map-review-scope.js.map +1 -1
  26. package/dist/tools/ontology-loader.d.ts +104 -0
  27. package/dist/tools/ontology-loader.js +206 -0
  28. package/dist/tools/ontology-loader.js.map +1 -0
  29. package/dist/tools/resolve-entities.d.ts +26 -0
  30. package/dist/tools/resolve-entities.js +143 -0
  31. package/dist/tools/resolve-entities.js.map +1 -0
  32. 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":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEtE,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAGtD,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,iBAAuC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAuBD,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CACjC,IAA6B,EAC7B,YAAgD;IAEhD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;IAErF,sBAAsB;IACtB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,YAAY,CAAC,gCAAgC,CAAC,EACvF,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,wBAAwB,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAc,YAAY,CAAC;IAE1C,uBAAuB;IACvB,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/C,kEAAkE;QAClE,aAAa,GAAG,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/F,2CAA2C;IAC3C,IAAI,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IAExE,qCAAqC;IACrC,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,aAAa,CACtE,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,yCAAyC;IACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAqB,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,qCAAqC;QACrC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAA0B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5D,MAAM,KAAK,GACT,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,iFAAiF;IACjF,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAExE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEpF,OAAO;QACL,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,OAAO;QACnB,aAAa;QACb,WAAW,EAAE,QAAQ;QACrB,WAAW;QACX,OAAO;QACP,QAAQ;QACR,IAAI,EAAE;YACJ,eAAe,EAAE,WAAW,CAAC,MAAM;YACnC,cAAc;YACd,UAAU;YACV,WAAW;YACX,IAAI,EACF,2EAA2E;gBAC3E,8CAA8C;gBAC9C,kEAAkE;SACrE;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAClC,IAA6B;IAE7B,OAAO,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACtD,CAAC"}
@@ -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":"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"}
@@ -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;