@shiftleftpt/sbd-toe-mcp 0.6.2 → 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.
Files changed (38) hide show
  1. package/assets/agent-guide.md +22 -19
  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 +276 -115
  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/plan-repo-governance.d.ts +25 -38
  30. package/dist/tools/plan-repo-governance.js +71 -498
  31. package/dist/tools/plan-repo-governance.js.map +1 -1
  32. package/dist/tools/resolve-entities.d.ts +26 -0
  33. package/dist/tools/resolve-entities.js +143 -0
  34. package/dist/tools/resolve-entities.js.map +1 -0
  35. package/package.json +4 -1
  36. package/dist/tools/generate-document.d.ts +0 -22
  37. package/dist/tools/generate-document.js +0 -392
  38. package/dist/tools/generate-document.js.map +0 -1
@@ -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;
@@ -0,0 +1,206 @@
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
+ import { readFileSync } from "node:fs";
19
+ import { parse as parseYaml } from "yaml";
20
+ import { resolveAppPath } from "../config.js";
21
+ // ---------------------------------------------------------------------------
22
+ // Cache
23
+ // ---------------------------------------------------------------------------
24
+ let _cache;
25
+ function loadOntologyYaml() {
26
+ const path = resolveAppPath("data/publish/sbdtoe-ontology.yaml");
27
+ return parseYaml(readFileSync(path, "utf-8"));
28
+ }
29
+ function loadEnrichedEntities() {
30
+ const path = resolveAppPath("data/publish/algolia_entities_records_enriched.json");
31
+ const raw = JSON.parse(readFileSync(path, "utf-8"));
32
+ return Array.isArray(raw.items) ? raw.items : [];
33
+ }
34
+ function isRecord(v) {
35
+ return typeof v === "object" && v !== null && !Array.isArray(v);
36
+ }
37
+ function strOf(rec, key) {
38
+ const v = rec[key];
39
+ return typeof v === "string" ? v : "";
40
+ }
41
+ function numOf(rec, key) {
42
+ const v = rec[key];
43
+ return typeof v === "number" ? v : NaN;
44
+ }
45
+ function arrStr(rec, key) {
46
+ const v = rec[key];
47
+ if (!Array.isArray(v))
48
+ return [];
49
+ return v.filter((x) => typeof x === "string");
50
+ }
51
+ export function getOntologyData() {
52
+ if (_cache)
53
+ return _cache;
54
+ // Ontology YAML — domain_mapping is the primary join key
55
+ const ontology = loadOntologyYaml();
56
+ const domainMapping = {};
57
+ for (const [cat, domains] of Object.entries(ontology.domain_mapping ?? {})) {
58
+ if (Array.isArray(domains))
59
+ domainMapping[cat] = domains.map(String);
60
+ }
61
+ // Concerns → categories (static, matches ontology spec §3.3)
62
+ const concernsMap = {
63
+ auth: ["AUT", "ACC", "SES"],
64
+ logging: ["LOG"],
65
+ validation: ["VAL", "ERR"],
66
+ api: ["API"],
67
+ config: ["CFG"],
68
+ integrity: ["INT"],
69
+ distribution: ["DST"],
70
+ ide: ["IDE"],
71
+ requirements: ["REQ"],
72
+ architecture: ["ARC"],
73
+ iac: ["IAC"],
74
+ encryption: ["ENC"],
75
+ };
76
+ // Load all entities from the enriched index (kg v1.4.0+)
77
+ const allItems = loadEnrichedEntities();
78
+ const requirements = [];
79
+ const controls = [];
80
+ const roles = [];
81
+ const threats = [];
82
+ const assignments = [];
83
+ const userStories = [];
84
+ for (const item of allItems) {
85
+ if (!isRecord(item))
86
+ continue;
87
+ const rt = strOf(item, "record_type");
88
+ if (rt === "requirement") {
89
+ const levels = item["applicable_levels"];
90
+ const rSrcFile = strOf(item, "source_file");
91
+ requirements.push({
92
+ requirement_id: strOf(item, "requirement_id"),
93
+ type: strOf(item, "type"),
94
+ category: strOf(item, "category"),
95
+ name: strOf(item, "name"),
96
+ applicable_levels: isRecord(levels)
97
+ ? { L1: levels["L1"] === true, L2: levels["L2"] === true, L3: levels["L3"] === true }
98
+ : { L1: false, L2: false, L3: false },
99
+ source_chapter: numOf(item, "source_chapter"),
100
+ ...(rSrcFile ? { source_file: rSrcFile } : {}),
101
+ domain: typeof item["domain"] === "string" ? item["domain"] : null,
102
+ });
103
+ continue;
104
+ }
105
+ if (rt === "control") {
106
+ const cNameEn = strOf(item, "name_en");
107
+ const cDesc = strOf(item, "description");
108
+ controls.push({
109
+ control_id: strOf(item, "control_id"),
110
+ name: strOf(item, "name"),
111
+ ...(cNameEn ? { name_en: cNameEn } : {}),
112
+ domain: strOf(item, "domain"),
113
+ control_type: strOf(item, "control_type"),
114
+ abstraction_level: strOf(item, "abstraction_level"),
115
+ applicable_lifecycle_phases: arrStr(item, "applicable_lifecycle_phases"),
116
+ source_practice_ids: arrStr(item, "source_practice_ids"),
117
+ chapter_ids: arrStr(item, "chapter_ids"),
118
+ ...(cDesc ? { description: cDesc } : {}),
119
+ aliases: arrStr(item, "aliases"),
120
+ });
121
+ continue;
122
+ }
123
+ if (rt === "role") {
124
+ // entity_id is the canonical role identifier in the enriched index
125
+ const entityId = strOf(item, "entity_id");
126
+ if (!entityId)
127
+ continue;
128
+ roles.push({
129
+ role_id: entityId,
130
+ aliases: arrStr(item, "aliases"),
131
+ canonical: true,
132
+ source: strOf(item, "source_document_id"),
133
+ });
134
+ continue;
135
+ }
136
+ if (rt === "threat") {
137
+ const tMtId = strOf(item, "mitigated_threat_id");
138
+ const tObjId = strOf(item, "object_id");
139
+ const tLabel = strOf(item, "threat_label_raw");
140
+ const tEss = strOf(item, "essence");
141
+ const tChId = strOf(item, "chapter_id");
142
+ const tMitSum = strOf(item, "mitigation_summary");
143
+ threats.push({
144
+ ...(tMtId ? { mitigated_threat_id: tMtId } : {}),
145
+ ...(tObjId ? { object_id: tObjId } : {}),
146
+ ...(tLabel ? { threat_label_raw: tLabel } : {}),
147
+ ...(tEss ? { essence: tEss } : {}),
148
+ ...(tChId ? { chapter_id: tChId } : {}),
149
+ category: typeof item["category"] === "string" ? item["category"] : null,
150
+ cwe: typeof item["cwe"] === "string" ? item["cwe"] : null,
151
+ cvss_score: typeof item["cvss_score"] === "number" ? item["cvss_score"] : null,
152
+ associated_controls: arrStr(item, "associated_controls"),
153
+ ...(tMitSum ? { mitigation_summary: tMitSum } : {}),
154
+ ...(typeof item["confidence"] === "number" ? { confidence: item["confidence"] } : {}),
155
+ });
156
+ continue;
157
+ }
158
+ if (rt === "assignment") {
159
+ assignments.push({
160
+ id: strOf(item, "id"),
161
+ chapter_id: strOf(item, "chapter_id"),
162
+ practice_id: strOf(item, "practice_id"),
163
+ role: strOf(item, "role"),
164
+ phase: strOf(item, "phase"),
165
+ risk_level: strOf(item, "risk_level"),
166
+ action: strOf(item, "action"),
167
+ artifacts: arrStr(item, "artifacts"),
168
+ ...(strOf(item, "user_story_id") ? { user_story_id: strOf(item, "user_story_id") } : {}),
169
+ });
170
+ continue;
171
+ }
172
+ if (rt === "user_story") {
173
+ const usId = strOf(item, "id");
174
+ const usUsId = strOf(item, "us_id");
175
+ const usChId = strOf(item, "chapter_id");
176
+ const usPrId = strOf(item, "practice_id");
177
+ const usAc = strOf(item, "acceptance_criteria");
178
+ const usGoal = strOf(item, "goal");
179
+ const usSumm = strOf(item, "summary");
180
+ userStories.push({
181
+ ...(usId ? { id: usId } : {}),
182
+ ...(usUsId ? { us_id: usUsId } : {}),
183
+ title: strOf(item, "title"),
184
+ ...(usChId ? { chapter_id: usChId } : {}),
185
+ ...(usPrId ? { practice_id: usPrId } : {}),
186
+ roles_normalized: arrStr(item, "roles_normalized"),
187
+ risk_levels: arrStr(item, "risk_levels"),
188
+ ...(usAc ? { acceptance_criteria: usAc } : {}),
189
+ bdd: arrStr(item, "bdd"),
190
+ ...(usGoal ? { goal: usGoal } : {}),
191
+ ...(usSumm ? { summary: usSumm } : {}),
192
+ });
193
+ continue;
194
+ }
195
+ }
196
+ _cache = { domainMapping, concernsMap, requirements, controls, roles, threats, assignments, userStories };
197
+ return _cache;
198
+ }
199
+ /** Resolve a role input string to a canonical role_id, using aliases. */
200
+ export function resolveRoleId(input, roles) {
201
+ const normalized = input.toLowerCase().replace(/[\s/]+/g, "-");
202
+ return roles.find((r) => r.role_id === normalized ||
203
+ r.role_id.replace(/_/g, "-") === normalized ||
204
+ r.aliases.some((a) => a.toLowerCase().replace(/[\s/]+/g, "-") === normalized))?.role_id;
205
+ }
206
+ //# sourceMappingURL=ontology-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology-loader.js","sourceRoot":"","sources":["../../src/tools/ontology-loader.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,28 @@
1
- declare const VALID_RISK_LEVELS: readonly ["L1", "L2", "L3"];
2
- declare const VALID_SCALES: readonly ["startup", "mid-size", "enterprise"];
3
- declare const VALID_ENFORCEMENT_LEVELS: readonly ["advisory", "enforced", "strict"];
4
- type RiskLevel = (typeof VALID_RISK_LEVELS)[number];
5
- type Scale = (typeof VALID_SCALES)[number];
6
- type EnforcementLevel = (typeof VALID_ENFORCEMENT_LEVELS)[number];
7
- type ControlCategory = "access" | "code-quality" | "supply-chain" | "secrets" | "ci-cd" | "audit";
8
- interface Control {
9
- controlId: string;
10
- description: string;
11
- category: ControlCategory;
12
- rationale: string;
1
+ /**
2
+ * plan_sbd_toe_repo_governance
3
+ *
4
+ * Returns the list of artefacts/documents identified in the SbD-ToE manual,
5
+ * grouped by chapter, with their risk level applicability.
6
+ * Optionally filtered by riskLevel (L1/L2/L3).
7
+ *
8
+ * All data comes from the entities index — nothing is invented.
9
+ * Document templates are not provided by the manual; the LLM may generate
10
+ * them if asked, using the artefact list as a guide.
11
+ */
12
+ import type { SnapshotCache } from "../backend/semantic-index-gateway.js";
13
+ export interface ManualArtefact {
14
+ artefactId: string;
15
+ chapterId: string;
16
+ riskLevels: string[];
13
17
  }
14
- interface BaselineCheckpoint {
15
- phase: string;
16
- actions: string[];
17
- tooling?: string[];
18
+ export interface ArtefactsByChapter {
19
+ chapterId: string;
20
+ artefacts: ManualArtefact[];
18
21
  }
19
- interface EvidenceItem {
20
- item: string;
21
- category: string;
22
- requiredFor: RiskLevel[];
22
+ export interface PlanRepoGovernanceResult {
23
+ riskLevel: string | null;
24
+ totalArtefacts: number;
25
+ byChapter: ArtefactsByChapter[];
26
+ note: string;
23
27
  }
24
- interface Gap {
25
- area: string;
26
- risk: string;
27
- mitigation: string;
28
- }
29
- export declare function handlePlanRepoGovernance(args: Record<string, unknown>): {
30
- applicableControls: Control[];
31
- mandatoryControls: string[];
32
- recommendedControls: string[];
33
- baselineCheckpoints: BaselineCheckpoint[];
34
- evidenceChecklist: EvidenceItem[];
35
- gaps: Gap[];
36
- platformSpecific: {
37
- recommendations: string;
38
- };
39
- };
40
- export type { Control, BaselineCheckpoint, EvidenceItem, Gap };
41
- export type { Scale, EnforcementLevel };
28
+ export declare function handlePlanRepoGovernance(args: Record<string, unknown>, cache: SnapshotCache): PlanRepoGovernanceResult;