@shiftleftpt/sbd-toe-mcp 0.20.0-beta.4 → 0.20.0-beta.6
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 +33 -0
- package/consumed-bundle.json +8 -8
- package/data/entities/proportionality.json +2 -2
- package/data/entities/sdlc_integration.json +2 -2
- package/data/publish/indexes/canonical_chunks.jsonl +4903 -4903
- package/data/publish/indexes/publication_manifest.json +4 -4
- package/data/publish/ontology/sbdtoe-ontology.yaml +1699 -21
- package/data/publish/overlay/framework_overlay_index.json +121 -11
- package/data/publish/overlay/overlay_mappings.jsonl +935 -646
- package/data/publish/runtime/artifact_requirements.json +218 -311
- package/data/publish/runtime/artifacts.json +82 -55
- package/data/publish/runtime/controls.json +870 -311
- package/data/publish/runtime/deterministic_manifest.json +2 -2
- package/data/publish/runtime/evidence_patterns.json +162 -162
- package/data/publish/runtime/requirement_control_links.json +2271 -1708
- package/data/publish/runtime/v1/manual_threat_mitigation.jsonl +233 -233
- package/data/publish/runtime/v1/v1_manifest.json +6 -4
- package/data/reports/run_manifest.json +4 -4
- package/dist/index.js +66 -3
- package/dist/index.js.map +1 -1
- package/dist/serving/affordances.d.ts +1 -0
- package/dist/serving/affordances.js +12 -3
- package/dist/serving/affordances.js.map +1 -1
- package/dist/serving/selection.d.ts +56 -0
- package/dist/serving/selection.js +289 -0
- package/dist/serving/selection.js.map +1 -0
- package/dist/tools/consult-security-requirements.d.ts +7 -0
- package/dist/tools/consult-security-requirements.js +38 -0
- package/dist/tools/consult-security-requirements.js.map +1 -1
- package/dist/tools/generate-sbd-toe-skill.js +7 -2
- package/dist/tools/generate-sbd-toe-skill.js.map +1 -1
- package/dist/tools/get-threat-landscape.js +36 -13
- package/dist/tools/get-threat-landscape.js.map +1 -1
- package/dist/tools/map-review-scope.d.ts +6 -0
- package/dist/tools/map-review-scope.js +19 -0
- package/dist/tools/map-review-scope.js.map +1 -1
- package/dist/tools/ontology-loader.d.ts +8 -0
- package/dist/tools/ontology-loader.js +9 -0
- package/dist/tools/ontology-loader.js.map +1 -1
- package/dist/tools/prepare-codegen-context.d.ts +55 -1
- package/dist/tools/prepare-codegen-context.js +151 -28
- package/dist/tools/prepare-codegen-context.js.map +1 -1
- package/dist/tools/select-requirements.d.ts +53 -0
- package/dist/tools/select-requirements.js +99 -0
- package/dist/tools/select-requirements.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* selection — the MP1 selection operation (G-mp1a, O2; ciclo MP1 P2, 2026-08-31).
|
|
3
|
+
*
|
|
4
|
+
* Implements the reference semantics DECLARED by the published ontology
|
|
5
|
+
* (`requirement_selection_model`, sbdtoe-ontology v2.2, served since contract v1.14):
|
|
6
|
+
*
|
|
7
|
+
* selection = baseline(cap. 02, `type: base`, by risk level)
|
|
8
|
+
* ∪ domain_specific(chapters activated by CONTEXT)
|
|
9
|
+
* ⊕ overlay(extend — the `replace` operator awaits ADR 0014)
|
|
10
|
+
*
|
|
11
|
+
* followed by deterministic, DECLARED narrowing by the task over that eligible set.
|
|
12
|
+
* Two output bands, both listed (never-silent):
|
|
13
|
+
* - `selected[]` — requirement with a declared signal (selection_trace per item)
|
|
14
|
+
* - `narrowed_out[]` — eligible without a signal, grouped by category with reason.
|
|
15
|
+
*
|
|
16
|
+
* The engine consumes the activation machinery of prepare-codegen-context (one
|
|
17
|
+
* audited signal table for the whole serving layer — D4: the concern lexicon is ONE
|
|
18
|
+
* signal among task terms, compound phrases, changed_files, stack, exposure,
|
|
19
|
+
* data_sensitivity and explicit concerns) and the path→chapter knowledge of
|
|
20
|
+
* map_sbd_toe_review_scope. It never invents requirements and never consults a model.
|
|
21
|
+
*/
|
|
22
|
+
import { getOntologyData } from "../tools/ontology-loader.js";
|
|
23
|
+
import { activate, categoriesForConcerns, normalizeInput } from "../tools/prepare-codegen-context.js";
|
|
24
|
+
import { bundlesForChangedFiles } from "../tools/map-review-scope.js";
|
|
25
|
+
/** Concern → the domain chapter(s) whose catalogue it activates (aligned with the
|
|
26
|
+
* ontology's `activation_examples` and the applicability model; audited table). */
|
|
27
|
+
const CONCERN_TO_DOMAIN_CHAPTERS = {
|
|
28
|
+
deployment: ["09-containers-imagens", "11-deploy-seguro"],
|
|
29
|
+
iac: ["08-iac-infraestrutura"],
|
|
30
|
+
build: ["07-cicd-seguro"],
|
|
31
|
+
release: ["11-deploy-seguro"],
|
|
32
|
+
supply_chain: ["05-dependencias-sbom-sca"],
|
|
33
|
+
testing: ["10-testes-seguranca"],
|
|
34
|
+
threat_modeling: ["03-threat-modeling"],
|
|
35
|
+
monitoring: ["12-monitorizacao-operacoes"],
|
|
36
|
+
architecture: ["04-arquitetura-segura"],
|
|
37
|
+
};
|
|
38
|
+
/** Technology vocabulary → chapters (mirrors map_sbd_toe_applicability). */
|
|
39
|
+
const TECHNOLOGY_TO_CHAPTERS = {
|
|
40
|
+
containers: ["08-iac-infraestrutura", "09-containers-imagens"],
|
|
41
|
+
kubernetes: ["08-iac-infraestrutura", "09-containers-imagens"],
|
|
42
|
+
iac: ["08-iac-infraestrutura"],
|
|
43
|
+
"ci-cd": ["07-cicd-seguro"],
|
|
44
|
+
"sca-sbom": ["05-dependencias-sbom-sca"],
|
|
45
|
+
sast: ["10-testes-seguranca"],
|
|
46
|
+
dast: ["10-testes-seguranca"],
|
|
47
|
+
monitoring: ["12-monitorizacao-operacoes"],
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* The agentic-governance wave: `agents` selects the domain-specific requirements
|
|
51
|
+
* whose published name/description carries the agentic vocabulary (mandate,
|
|
52
|
+
* autonomy, kill-switch, tool-call, AI agent). Deterministic lexical rule over
|
|
53
|
+
* published fields — declared per match, never a model call.
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* R1 (decisão pós-P2 do programme lead, 2026-08-31, GC-07): o concern `agents` activa,
|
|
57
|
+
* como regra NOMEADA e declarada no selection_trace, o conjunto "principal não-humano" —
|
|
58
|
+
* o agente é um principal (ARC-015: least privilege para agentes): {ACC-002 menor
|
|
59
|
+
* privilégio, AUT-006 credenciais em claro, ENC-006 segredos expostos} ∪ {DEP-011,
|
|
60
|
+
* DEP-013, DEP-014 — supply chain AI do cap. 05}.
|
|
61
|
+
*/
|
|
62
|
+
const R1_RULE_ID = "R1:principal-nao-humano";
|
|
63
|
+
const R1_PRINCIPAL_SET = ["ACC-002", "AUT-006", "ENC-006", "DEP-011", "DEP-013", "DEP-014"];
|
|
64
|
+
/**
|
|
65
|
+
* R2 (decisão pós-P2 do programme lead, 2026-08-31, GC-02): SES-* resolve-se por
|
|
66
|
+
* narrowing de sinais — sem sinais de sessão/login/token DE UTILIZADOR na tarefa, a
|
|
67
|
+
* categoria SES sai para `narrowed_out` com razão declarada; com eles, fica. O
|
|
68
|
+
* `concernsMap` do loader (`auth → [AUT, ACC, SES]`) NÃO é alterado neste ciclo; a via
|
|
69
|
+
* de dados fica anotada para avaliação futura no loader.
|
|
70
|
+
*/
|
|
71
|
+
const R2_RULE_ID = "R2:narrowing-de-sinais-SES";
|
|
72
|
+
const SESSION_SIGNAL_PATTERN = /sess[ãa]o|session|login|logout|sign.?in|\bjwt\b|cookie|token de utilizador|user token|refresh token|autentica[çc][ãa]o de utilizador|user authentication|utilizador(es)? autenticado/i;
|
|
73
|
+
const AGENTIC_WAVE_PATTERN = /\bagente|\bagent\b|agêntic|agentic|autonom|kill.?switch|mandate|tool.?call/i;
|
|
74
|
+
/** Chapters activated by the CONTEXT (changed files, technologies, stack, concerns). */
|
|
75
|
+
function activateChapters(input, technologies, activation) {
|
|
76
|
+
const out = [];
|
|
77
|
+
const seen = new Set();
|
|
78
|
+
const push = (chapter, source, trigger) => {
|
|
79
|
+
const key = `${chapter}`;
|
|
80
|
+
if (seen.has(key))
|
|
81
|
+
return;
|
|
82
|
+
seen.add(key);
|
|
83
|
+
out.push({ chapter, source, trigger });
|
|
84
|
+
};
|
|
85
|
+
const fileMap = bundlesForChangedFiles(input.changed_files);
|
|
86
|
+
for (const [file, bundles] of fileMap) {
|
|
87
|
+
for (const bundle of bundles)
|
|
88
|
+
push(bundle, "changed_file", file);
|
|
89
|
+
}
|
|
90
|
+
for (const tech of technologies) {
|
|
91
|
+
for (const chapter of TECHNOLOGY_TO_CHAPTERS[tech] ?? [])
|
|
92
|
+
push(chapter, "technology", tech);
|
|
93
|
+
}
|
|
94
|
+
const stackLower = (input.stack ?? "").toLowerCase();
|
|
95
|
+
for (const [token, chapters] of Object.entries(TECHNOLOGY_TO_CHAPTERS)) {
|
|
96
|
+
if (stackLower.includes(token))
|
|
97
|
+
for (const chapter of chapters)
|
|
98
|
+
push(chapter, "stack", token);
|
|
99
|
+
}
|
|
100
|
+
for (const concern of activation.concerns) {
|
|
101
|
+
for (const chapter of CONCERN_TO_DOMAIN_CHAPTERS[concern] ?? [])
|
|
102
|
+
push(chapter, "concern", concern);
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run the MP1 selection. Deterministic; every inclusion carries a trace and every
|
|
108
|
+
* eligible exclusion is listed with a reason.
|
|
109
|
+
*/
|
|
110
|
+
export function runSelection(context) {
|
|
111
|
+
const input = normalizeInput({
|
|
112
|
+
task: context.task ?? "",
|
|
113
|
+
risk_level: context.risk_level,
|
|
114
|
+
...(context.stack ? { stack: context.stack } : {}),
|
|
115
|
+
...(context.exposure ? { exposure: context.exposure } : {}),
|
|
116
|
+
...(context.data_sensitivity ? { data_sensitivity: context.data_sensitivity } : {}),
|
|
117
|
+
...(context.concerns ? { concerns: context.concerns } : {}),
|
|
118
|
+
...(context.changed_files ? { changed_files: context.changed_files } : {}),
|
|
119
|
+
});
|
|
120
|
+
const activation = activate(input);
|
|
121
|
+
return runSelectionWithActivation(input, activation, context.technologies ?? []);
|
|
122
|
+
}
|
|
123
|
+
/** Variant for callers that already ran the activation engine (prepare). */
|
|
124
|
+
export function runSelectionWithActivation(input, activation, technologies = []) {
|
|
125
|
+
const level = (input.risk_level ?? "L2");
|
|
126
|
+
const ontology = getOntologyData();
|
|
127
|
+
const atLevel = (r) => r.applicable_levels?.[level] === true;
|
|
128
|
+
const activatedChapters = activateChapters(input, technologies, activation);
|
|
129
|
+
const chapterSet = new Set(activatedChapters.map((c) => c.chapter));
|
|
130
|
+
const activatedCategories = categoriesForConcerns(activation.concerns);
|
|
131
|
+
const concernByCategory = new Map();
|
|
132
|
+
for (const entry of activation.trace) {
|
|
133
|
+
const produced = entry.produced;
|
|
134
|
+
for (const category of categoriesForConcerns([produced])) {
|
|
135
|
+
const existing = concernByCategory.get(category);
|
|
136
|
+
if (!existing || entry.score > existing.score)
|
|
137
|
+
concernByCategory.set(category, entry);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Layer 1 — eligibility.
|
|
141
|
+
const baselineEligible = ontology.requirements.filter((r) => r.type === "base" && atLevel(r));
|
|
142
|
+
const domainEligible = ontology.requirements.filter((r) => r.type !== "base" && atLevel(r) && r.source_bundle !== undefined && chapterSet.has(r.source_bundle));
|
|
143
|
+
const agentsActive = activation.concerns.includes("agents");
|
|
144
|
+
const agentsWave = agentsActive
|
|
145
|
+
? ontology.requirements.filter((r) => r.type !== "base" &&
|
|
146
|
+
atLevel(r) &&
|
|
147
|
+
!domainEligible.includes(r) &&
|
|
148
|
+
AGENTIC_WAVE_PATTERN.test(`${r.name} ${r.description ?? ""}`))
|
|
149
|
+
: [];
|
|
150
|
+
// Layer 2 — narrowing into the two declared bands.
|
|
151
|
+
const selected = [];
|
|
152
|
+
const narrowedByCategory = new Map();
|
|
153
|
+
const pushSelected = (r, trace) => {
|
|
154
|
+
selected.push({
|
|
155
|
+
requirement_id: r.requirement_id,
|
|
156
|
+
name: r.name,
|
|
157
|
+
category: r.category,
|
|
158
|
+
type: r.type,
|
|
159
|
+
source_chapter: r.source_chapter,
|
|
160
|
+
selection_trace: trace,
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
const sessionSignals = SESSION_SIGNAL_PATTERN.test(input.task ?? "");
|
|
164
|
+
let r2Applied = false;
|
|
165
|
+
for (const r of baselineEligible) {
|
|
166
|
+
const signal = concernByCategory.get(r.category);
|
|
167
|
+
if (r.category === "SES" && !sessionSignals && (signal || activatedCategories.has(r.category))) {
|
|
168
|
+
// R2: SES elegível com sinal de categoria (via auth) mas SEM sinal de sessão na tarefa.
|
|
169
|
+
r2Applied = true;
|
|
170
|
+
const list = narrowedByCategory.get(r.category) ?? [];
|
|
171
|
+
list.push(r.requirement_id);
|
|
172
|
+
narrowedByCategory.set(r.category, list);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (signal || activatedCategories.has(r.category)) {
|
|
176
|
+
const entry = signal ?? {
|
|
177
|
+
source: "explicit_concern",
|
|
178
|
+
produced: r.category,
|
|
179
|
+
trigger: r.category,
|
|
180
|
+
score: 1,
|
|
181
|
+
confidence: "deterministic",
|
|
182
|
+
reason: "categoria activada",
|
|
183
|
+
};
|
|
184
|
+
pushSelected(r, [
|
|
185
|
+
{
|
|
186
|
+
layer: "baseline",
|
|
187
|
+
source: entry.source,
|
|
188
|
+
trigger: entry.trigger,
|
|
189
|
+
score: entry.score,
|
|
190
|
+
reason: `baseline cap. 02 (${level}); categoria ${r.category} com sinal: ${entry.reason}`,
|
|
191
|
+
},
|
|
192
|
+
]);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const list = narrowedByCategory.get(r.category) ?? [];
|
|
196
|
+
list.push(r.requirement_id);
|
|
197
|
+
narrowedByCategory.set(r.category, list);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
for (const r of domainEligible) {
|
|
201
|
+
const via = activatedChapters.find((c) => c.chapter === r.source_bundle);
|
|
202
|
+
pushSelected(r, [
|
|
203
|
+
{
|
|
204
|
+
layer: "domain_specific",
|
|
205
|
+
source: via && via.source === "changed_file" ? "changed_file" : "context_chapter",
|
|
206
|
+
trigger: via?.trigger ?? r.source_bundle ?? "",
|
|
207
|
+
score: 0.9,
|
|
208
|
+
reason: `capítulo ${r.source_bundle} activado pelo contexto (${via?.source ?? "context"}: ${via?.trigger ?? ""})`,
|
|
209
|
+
},
|
|
210
|
+
]);
|
|
211
|
+
}
|
|
212
|
+
for (const r of agentsWave) {
|
|
213
|
+
pushSelected(r, [
|
|
214
|
+
{
|
|
215
|
+
layer: "agents_wave",
|
|
216
|
+
source: "agents_wave",
|
|
217
|
+
trigger: "agents",
|
|
218
|
+
score: 0.85,
|
|
219
|
+
reason: "concern `agents`: requisito domain-specific da onda agêntica (nome/descrição publicados casam o vocabulário mandate/autonomia/kill-switch/tool-call)",
|
|
220
|
+
},
|
|
221
|
+
]);
|
|
222
|
+
}
|
|
223
|
+
// R1 — named rule: the agent is a non-human principal.
|
|
224
|
+
let extraEligible = 0;
|
|
225
|
+
let r1Added = 0;
|
|
226
|
+
if (agentsActive) {
|
|
227
|
+
const already = new Set(selected.map((s) => s.requirement_id));
|
|
228
|
+
for (const rid of R1_PRINCIPAL_SET) {
|
|
229
|
+
if (already.has(rid))
|
|
230
|
+
continue;
|
|
231
|
+
const r = ontology.requirements.find((x) => x.requirement_id === rid);
|
|
232
|
+
if (!r || !atLevel(r))
|
|
233
|
+
continue;
|
|
234
|
+
pushSelected(r, [
|
|
235
|
+
{
|
|
236
|
+
layer: "named_rule",
|
|
237
|
+
source: "named_rule",
|
|
238
|
+
trigger: R1_RULE_ID,
|
|
239
|
+
score: 0.95,
|
|
240
|
+
reason: `regra nomeada ${R1_RULE_ID} (decisão pós-P2 2026-08-31): o agente é um principal não-humano (ARC-015 — least privilege para agentes); conjunto {ACC-002, AUT-006, ENC-006} ∪ {DEP-011, DEP-013, DEP-014}`,
|
|
241
|
+
},
|
|
242
|
+
]);
|
|
243
|
+
r1Added += 1;
|
|
244
|
+
const parked = narrowedByCategory.get(r.category);
|
|
245
|
+
if (parked) {
|
|
246
|
+
const at = parked.indexOf(rid);
|
|
247
|
+
if (at >= 0)
|
|
248
|
+
parked.splice(at, 1);
|
|
249
|
+
if (parked.length === 0)
|
|
250
|
+
narrowedByCategory.delete(r.category);
|
|
251
|
+
}
|
|
252
|
+
if (!baselineEligible.includes(r) && !domainEligible.includes(r))
|
|
253
|
+
extraEligible += 1;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
selected.sort((a, b) => a.requirement_id.localeCompare(b.requirement_id));
|
|
257
|
+
const narrowed_out = [...narrowedByCategory.entries()]
|
|
258
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
259
|
+
.map(([category, ids]) => ({
|
|
260
|
+
category,
|
|
261
|
+
count: ids.length,
|
|
262
|
+
requirement_ids: ids.sort(),
|
|
263
|
+
reason: category === "SES" && r2Applied
|
|
264
|
+
? `${R2_RULE_ID} (decisão pós-P2 2026-08-31): sem sinais de sessão/login/token de utilizador na tarefa, SES-* sai por narrowing declarado (o concernsMap do loader mantém auth → [AUT, ACC, SES]); com esses sinais na tarefa, fica`
|
|
265
|
+
: `elegível na baseline ${level} (cap. 02) sem sinal na tarefa/contexto — excluído pelo narrowing, nunca em silêncio`,
|
|
266
|
+
}));
|
|
267
|
+
const notes = [];
|
|
268
|
+
if (r1Added > 0) {
|
|
269
|
+
notes.push(`${R1_RULE_ID}: ${r1Added} requisitos do principal não-humano seleccionados por regra nomeada (decisão pós-P2 2026-08-31).`);
|
|
270
|
+
}
|
|
271
|
+
if (r2Applied) {
|
|
272
|
+
notes.push(`${R2_RULE_ID}: categoria SES excluída por narrowing de sinais — sem sinais de sessão/login/token de utilizador na tarefa.`);
|
|
273
|
+
}
|
|
274
|
+
if (agentsActive && agentsWave.length > 0) {
|
|
275
|
+
notes.push(`agents_wave: ${agentsWave.length} requisitos domain-specific seleccionados pelo vocabulário agêntico publicado.`);
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
risk_level: level,
|
|
279
|
+
eligible_count: baselineEligible.length + domainEligible.length + agentsWave.length + extraEligible,
|
|
280
|
+
selected,
|
|
281
|
+
narrowed_out,
|
|
282
|
+
activated_chapters: activatedChapters,
|
|
283
|
+
activated_categories: [...new Set([...activatedCategories, ...selected.map((s) => s.category)])].sort(),
|
|
284
|
+
activation,
|
|
285
|
+
input,
|
|
286
|
+
notes,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/serving/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,11 @@ export interface McpProvenance {
|
|
|
85
85
|
source_data: string;
|
|
86
86
|
note: string;
|
|
87
87
|
}
|
|
88
|
+
export interface ConsultRequirementsIndexEntry {
|
|
89
|
+
category: string;
|
|
90
|
+
count: number;
|
|
91
|
+
requirement_ids: string[];
|
|
92
|
+
}
|
|
88
93
|
export interface ConsultSecurityRequirementsOutput {
|
|
89
94
|
provenance: McpProvenance;
|
|
90
95
|
risk_level: string;
|
|
@@ -95,6 +100,8 @@ export interface ConsultSecurityRequirementsOutput {
|
|
|
95
100
|
artifacts: ArtifactSlim[];
|
|
96
101
|
rule_trace: string[];
|
|
97
102
|
coverage_gaps: ConsultCoverageGaps;
|
|
103
|
+
/** mode: "index" (opt-in, additive): per-category index replacing the full requirement bodies. */
|
|
104
|
+
index?: ConsultRequirementsIndexEntry[];
|
|
98
105
|
meta: {
|
|
99
106
|
requirementCount: number;
|
|
100
107
|
controlCount: number;
|
|
@@ -220,6 +220,44 @@ export function _resolveConsultResult(args, ontologyData) {
|
|
|
220
220
|
}
|
|
221
221
|
export function handleConsultSecurityRequirements(args) {
|
|
222
222
|
const full = _resolveConsultResult(args, getOntologyData());
|
|
223
|
+
// mode: "index" (G-mp1a decision 3, option (c)) — additive opt-in: same filters,
|
|
224
|
+
// same totals, but requirements come back as a per-category index (ids + counts)
|
|
225
|
+
// instead of the full bodies. Default behaviour is byte-unchanged (retro-compat);
|
|
226
|
+
// index-by-default stays flagged for a future major.
|
|
227
|
+
const modeArg = args["mode"];
|
|
228
|
+
const indexMode = modeArg === "index";
|
|
229
|
+
if (modeArg !== undefined && modeArg !== "index" && modeArg !== "full") {
|
|
230
|
+
throw Object.assign(new Error(`Invalid mode: "${String(modeArg)}". Allowed: full, index.`), {
|
|
231
|
+
rpcError: { code: -32602, message: `Invalid mode: "${String(modeArg)}"` }
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
if (indexMode) {
|
|
235
|
+
const byCategory = new Map();
|
|
236
|
+
for (const r of full.requirements) {
|
|
237
|
+
const list = byCategory.get(r.category) ?? [];
|
|
238
|
+
list.push(r.requirement_id);
|
|
239
|
+
byCategory.set(r.category, list);
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
provenance: {
|
|
243
|
+
content_type: "derived",
|
|
244
|
+
produced_by: "deterministic_runtime_resolution",
|
|
245
|
+
source_data: "runtime/requirements.json (index projection)",
|
|
246
|
+
note: "mode=index: per-category requirement index (ids + counts) — same filters and totals as the full mode; fetch bodies with mode omitted or resolve_entities."
|
|
247
|
+
},
|
|
248
|
+
risk_level: full.risk_level,
|
|
249
|
+
active_categories: full.active_categories,
|
|
250
|
+
active_domains: full.active_domains,
|
|
251
|
+
requirements: [],
|
|
252
|
+
controls: [],
|
|
253
|
+
artifacts: [],
|
|
254
|
+
rule_trace: [...full.rule_trace, "MODE_INDEX: requirement bodies elided — per-category index returned (declared, not silent)"],
|
|
255
|
+
coverage_gaps: full.coverage_gaps,
|
|
256
|
+
index: [...byCategory.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([category, ids]) => ({ category, count: ids.length, requirement_ids: ids.sort() })),
|
|
257
|
+
meta: { ...full.meta, note: `${full.meta.note} mode=index: controls/artifacts counts in meta; bodies via the default mode.` },
|
|
258
|
+
next: consultAffordances(full.risk_level, full.meta.concernsApplied ?? undefined)
|
|
259
|
+
};
|
|
260
|
+
}
|
|
223
261
|
return {
|
|
224
262
|
provenance: {
|
|
225
263
|
content_type: "derived",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consult-security-requirements.js","sourceRoot":"","sources":["../../src/tools/consult-security-requirements.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consult-security-requirements.js","sourceRoot":"","sources":["../../src/tools/consult-security-requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ const CLIENT_LOCAL_TOOLS = "Read, Write, Edit, Grep, Glob, Bash";
|
|
|
28
28
|
const HARNESSED_MCP_TOOLS = [
|
|
29
29
|
"mcp__sbd-toe__get_guide_by_role",
|
|
30
30
|
"mcp__sbd-toe__consult_security_requirements",
|
|
31
|
+
"mcp__sbd-toe__select_sbd_toe_requirements",
|
|
31
32
|
"mcp__sbd-toe__get_threat_landscape",
|
|
32
33
|
"mcp__sbd-toe__query_sbd_toe_entities",
|
|
33
34
|
"mcp__sbd-toe__resolve_entities",
|
|
@@ -114,10 +115,14 @@ function coverageOf(guide, totalChapters) {
|
|
|
114
115
|
function renderCoverageBlock(canonicalRole, riskLevel, coverage, harnessed) {
|
|
115
116
|
const pathToRest = harnessed
|
|
116
117
|
? `For the full Definition-of-Done call \`get_guide_by_role(risk_level="${riskLevel}", role="${canonicalRole}", include_detail=true)\`; ` +
|
|
117
|
-
`for requirements
|
|
118
|
+
`for *which requirements apply to a concrete task* use \`select_sbd_toe_requirements\` ` +
|
|
119
|
+
`(selected[] is the recommendation; narrowed_out[] lists what left and why — re-call with the missing signal to recover it); ` +
|
|
120
|
+
`for the catalogue at a level use \`consult_security_requirements\` (mode="index" for a compact id map); for threats \`get_threat_landscape\`; ` +
|
|
118
121
|
`for the chapters outside your slice \`list_sbd_toe_chapters\` + \`get_sbd_toe_chapter_brief\`.`
|
|
119
122
|
: `To reach beyond it, re-generate via the SbD-ToE MCP (\`generate_sbd_toe_skill\`) or consult the manual ` +
|
|
120
|
-
`chapters listed by \`list_sbd_toe_chapters\` on a connected client
|
|
123
|
+
`chapters listed by \`list_sbd_toe_chapters\` on a connected client — where ` +
|
|
124
|
+
`\`select_sbd_toe_requirements\` narrows the requirements to a concrete task ` +
|
|
125
|
+
`(selected[] recommendation + narrowed_out[] with reasons, never silent).`;
|
|
121
126
|
return (`## Coverage (declared — nothing hidden)\n` +
|
|
122
127
|
`This is the **${canonicalRole}** slice at **${riskLevel}**: ${coverage.assignments} assignments, ` +
|
|
123
128
|
`${coverage.user_stories} user stories, ${coverage.checklist_items} checklist items across ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-sbd-toe-skill.js","sourceRoot":"","sources":["../../src/tools/generate-sbd-toe-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAsD,MAAM,wBAAwB,CAAC;AAClH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AACrD,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,SAAS,CAAU,CAAC;AAKzD,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AACjE,MAAM,mBAAmB,GAAG;IAC1B,iCAAiC;IACjC,6CAA6C;IAC7C,oCAAoC;IACpC,sCAAsC;IACtC,gCAAgC;IAChC,yCAAyC;IACzC,qCAAqC;IACrC,qCAAqC;CACtC,CAAC;AAgCF,0FAA0F;AAC1F,SAAS,mBAAmB,CAAC,KAAa,EAAE,OAAe;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,SAAS,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA8B,EAAE,MAAmB,EAAE,IAAY;IACzF,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,kBAAkB,IAAI,KAAK,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACzE,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,cAAc,CAAC;IACrD,OAAO,kBAAkB,IAAI,KAAK,CAAC;AACrC,CAAC;AAOD,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,wBAAwB,CAAC,EAAE,CAAiC,CAAC;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,0EAA0E;AAC1E,SAAS,cAAc,CAAC,SAA+B;IACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAClB,KAA2B,EAC3B,QAAkC,EAClC,aAAsB;IAEtB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,IAAI,SAAS,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,MAAM,KAAK,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,KAAK,kBAAkB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAC1G,IAAI,aAAa,EAAE,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAA2B,EAAE,aAAqB;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/E,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,IAAI;QACzB,iBAAiB,EAAE,aAAa;QAChC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe;QACvC,YAAY,EAAE,SAAS,CAAC,MAAM;QAC9B,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,SAAiB,EACjB,QAA+B,EAC/B,SAAkB;IAElB,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,wEAAwE,SAAS,YAAY,aAAa,6BAA6B;YACvI,
|
|
1
|
+
{"version":3,"file":"generate-sbd-toe-skill.js","sourceRoot":"","sources":["../../src/tools/generate-sbd-toe-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ export function _resolveThreatLandscape(args, ontologyData) {
|
|
|
58
58
|
name: control.name,
|
|
59
59
|
domain: control.domain,
|
|
60
60
|
chapter_ids: control.chapter_ids ?? [],
|
|
61
|
+
defining_chapter_ids: control.defining_chapter_ids ?? [],
|
|
61
62
|
}));
|
|
62
63
|
const activeControlIds = new Set(activeControls.map((control) => control.control_id));
|
|
63
64
|
const inputConcerns = Array.isArray(args["concerns"])
|
|
@@ -77,6 +78,10 @@ export function _resolveThreatLandscape(args, ontologyData) {
|
|
|
77
78
|
if (domainChapter !== undefined)
|
|
78
79
|
activeChapterNumbers.add(domainChapter);
|
|
79
80
|
}
|
|
81
|
+
// G-b decision 2 (2026-08-30): the DEFINING chapters of the activated controls count
|
|
82
|
+
// as in-scope — a control that defines its content in a chapter brings that chapter's
|
|
83
|
+
// threats with it (e.g. C1, identity/auth, defines in ch.02).
|
|
84
|
+
const definingBundles = new Set();
|
|
80
85
|
for (const control of activeControls) {
|
|
81
86
|
for (const chapterId of control.chapter_ids) {
|
|
82
87
|
activeBundles.add(chapterId);
|
|
@@ -84,6 +89,13 @@ export function _resolveThreatLandscape(args, ontologyData) {
|
|
|
84
89
|
if (!Number.isNaN(num))
|
|
85
90
|
activeChapterNumbers.add(num);
|
|
86
91
|
}
|
|
92
|
+
for (const chapterId of control.defining_chapter_ids) {
|
|
93
|
+
definingBundles.add(chapterId);
|
|
94
|
+
activeBundles.add(chapterId);
|
|
95
|
+
const num = chapterNumber(chapterId);
|
|
96
|
+
if (!Number.isNaN(num))
|
|
97
|
+
activeChapterNumbers.add(num);
|
|
98
|
+
}
|
|
87
99
|
}
|
|
88
100
|
// With no concern filter the caller wants the full landscape — fall back to every
|
|
89
101
|
// applicable requirement's chapter/bundle (broad, spans all domains, not just ch.02).
|
|
@@ -97,22 +109,27 @@ export function _resolveThreatLandscape(args, ontologyData) {
|
|
|
97
109
|
}
|
|
98
110
|
}
|
|
99
111
|
// Chapter 02 (requisitos-seguranca) holds the requirements-process meta-threats.
|
|
100
|
-
// Surface them
|
|
101
|
-
//
|
|
102
|
-
|
|
112
|
+
// Surface them when the caller explicitly targets requirements OR when an activated
|
|
113
|
+
// control DEFINES in ch.02 (G-b decision 2) — never as a side effect of a control
|
|
114
|
+
// merely catalogued there.
|
|
115
|
+
const wantsRequirements = !hasConcerns ||
|
|
116
|
+
inputConcerns.includes("requirements") ||
|
|
117
|
+
definingBundles.has("02-requisitos-seguranca");
|
|
103
118
|
if (!wantsRequirements) {
|
|
104
119
|
activeChapterNumbers.delete(2);
|
|
105
120
|
activeBundles.delete("02-requisitos-seguranca");
|
|
106
121
|
}
|
|
107
122
|
const controlsByChapter = new Map();
|
|
108
123
|
for (const control of activeControls) {
|
|
109
|
-
for (const chapterId of control.chapter_ids) {
|
|
124
|
+
for (const chapterId of new Set([...control.chapter_ids, ...control.defining_chapter_ids])) {
|
|
110
125
|
const existing = controlsByChapter.get(chapterId) ?? [];
|
|
111
|
-
existing.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
126
|
+
if (!existing.some((c) => c.control_id === control.control_id)) {
|
|
127
|
+
existing.push({
|
|
128
|
+
control_id: control.control_id,
|
|
129
|
+
name: control.name,
|
|
130
|
+
domain: control.domain,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
116
133
|
controlsByChapter.set(chapterId, existing);
|
|
117
134
|
}
|
|
118
135
|
}
|
|
@@ -195,7 +212,7 @@ export function _resolveThreatLandscape(args, ontologyData) {
|
|
|
195
212
|
activeChapters: [...activeChapterNumbers].sort((a, b) => a - b).map(String),
|
|
196
213
|
activeBundles: [...activeBundles].sort(),
|
|
197
214
|
concernsApplied: consult.meta.concernsApplied,
|
|
198
|
-
note: "Threat applicability resolves from consult-mode requirement scope. mitigation_confidence uses direct control references first, then chapter/bundle or antipattern-derived alignment, then heuristic domain fallback.",
|
|
215
|
+
note: "Threat applicability resolves from consult-mode requirement scope; the defining chapters of activated controls count as in-scope (G-b 2026-08-30). mitigation_confidence uses direct control references first, then chapter/bundle or antipattern-derived alignment, then heuristic domain fallback.",
|
|
199
216
|
},
|
|
200
217
|
};
|
|
201
218
|
}
|
|
@@ -215,10 +232,16 @@ export function handleGetThreatLandscape(args) {
|
|
|
215
232
|
mitigation_confidence: threat.mitigation_confidence,
|
|
216
233
|
mitigated_by: threat.mitigated_by,
|
|
217
234
|
related_antipatterns: threat.related_antipatterns,
|
|
218
|
-
// Surface the threat's own
|
|
219
|
-
//
|
|
220
|
-
//
|
|
235
|
+
// Surface the threat's own association fields carried by the substrate.
|
|
236
|
+
// Contract v1.14 §1.21: associated_control_ids are structural CTRL-* ids with a
|
|
237
|
+
// DECLARED derivation; associated_controls_text is the Manual's prose;
|
|
238
|
+
// associated_controls stays as-is for compatibility. Nothing invented.
|
|
221
239
|
associated_controls: threat.associated_controls ?? [],
|
|
240
|
+
associated_control_ids: threat.associated_control_ids ?? [],
|
|
241
|
+
...(threat.associated_controls_text ? { associated_controls_text: threat.associated_controls_text } : {}),
|
|
242
|
+
...(threat.associated_control_ids_derivation
|
|
243
|
+
? { associated_control_ids_derivation: threat.associated_control_ids_derivation }
|
|
244
|
+
: {}),
|
|
222
245
|
...(threat.mitigated_threat_id ? { mitigated_threat_id: threat.mitigated_threat_id } : {}),
|
|
223
246
|
...(threat.chapter_id ? { chapter_id: threat.chapter_id } : {}),
|
|
224
247
|
...(threat.mitigation_summary ? { mitigation_summary: threat.mitigation_summary } : {}),
|