@shiftleftpt/sbd-toe-mcp 0.20.0-beta.24 → 0.20.0-beta.25
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
CHANGED
|
@@ -48,8 +48,11 @@ SbD-ToE is a **security guidance framework only**. It guides *what security prac
|
|
|
48
48
|
be applied* at each phase of the development lifecycle. It does **not** impose development
|
|
49
49
|
standards, testing requirements, coding conventions, or any non-security practice.
|
|
50
50
|
|
|
51
|
-
**Project rules always take precedence.** An L1 risk level reduces the
|
|
52
|
-
security controls —
|
|
51
|
+
**Project rules always take precedence.** An L1 risk level reduces the **DEMAND** on the
|
|
52
|
+
security controls — never the scope: graduated applicability (0.14.0) keeps every chapter
|
|
53
|
+
present at every level, and `map_sbd_toe_applicability` states it outright («nothing is
|
|
54
|
+
excluded by level»). And it does not reduce code quality, test coverage, or engineering
|
|
55
|
+
expectations.
|
|
53
56
|
|
|
54
57
|
---
|
|
55
58
|
|
|
@@ -68,7 +71,9 @@ or — on clients without resource support — call `read_sbd_toe_resource(uri="
|
|
|
68
71
|
It returns the server name/version plus the served knowledge identity from the verified pin:
|
|
69
72
|
`manual {tag, commit}`, `kg {release_tag, sha256, source, consumer_contract_version}`,
|
|
70
73
|
`ontology {tag, commit}`. Every tool response also carries the compact stamp
|
|
71
|
-
`provenance.kg` (the served kg release_tag)
|
|
74
|
+
`provenance.kg` (the served kg release_tag) **and `provenance.server`** (the package version
|
|
75
|
+
that produced the answer — since 0.20.0-beta.23: `kg` is the knowledge served, `server` is
|
|
76
|
+
who served it). The same tool mirrors ANY resource of the
|
|
72
77
|
list below — including the templated ones (e.g. `sbd://toe/codegen-instructions/codegen`,
|
|
73
78
|
the target of `codegen_instructions_ref` in dieted payloads).
|
|
74
79
|
|
|
@@ -83,8 +88,9 @@ This returns the list of active chapters and risk-level specific rules for the p
|
|
|
83
88
|
> **Verdade do canal:** `setup_sbd_toe_agent` é um **prompt MCP**, não uma tool — clientes
|
|
84
89
|
> sem suporte de prompts (p.ex. Claude Desktop) não o expõem. Alternativa equivalente: já
|
|
85
90
|
> leste este guia (via `read_sbd_toe_resource`); passa `risk_level` e os **activadores
|
|
86
|
-
>
|
|
87
|
-
> ao `select_sbd_toe_requirements`.
|
|
91
|
+
> DECLARADOS** (`concerns`, `exposure`, `data_sensitivity`, `technologies`, `changed_files`)
|
|
92
|
+
> directamente ao `select_sbd_toe_requirements`. O `stack` é texto livre e só conta quando
|
|
93
|
+
> traz um valor de `technologies` como token exacto — prefere `technologies`.
|
|
88
94
|
|
|
89
95
|
If you do not know the project's risk level, use `map_sbd_toe_applicability` or
|
|
90
96
|
`list_sbd_toe_chapters` to help the user determine it.
|
|
@@ -98,28 +104,40 @@ Use when the user asks *what the manual says*, what applies, how to classify a p
|
|
|
98
104
|
what controls or artefacts are required, or whether something is aligned with the manual.
|
|
99
105
|
|
|
100
106
|
```
|
|
101
|
-
search_sbd_toe_manual ←
|
|
107
|
+
search_sbd_toe_manual ← NÃO-NORMATIVO: ler e localizar passagens, NUNCA caminho
|
|
108
|
+
para um conjunto de requisitos (o que sai daqui não
|
|
109
|
+
selecciona nada e não se cita como selecção)
|
|
102
110
|
map_sbd_toe_applicability ← which chapters/controls apply to this project
|
|
103
111
|
get_sbd_toe_chapter_brief ← what a specific chapter covers (phases, artefacts, topics)
|
|
104
112
|
list_sbd_toe_chapters ← chapter discovery and navigation
|
|
105
113
|
query_sbd_toe_entities ← specific controls (CTRL-*), artefacts (ART-*), practices
|
|
106
114
|
|
|
107
115
|
select_sbd_toe_requirements ← MP1 selection: which requirements apply to THIS task in THIS
|
|
108
|
-
context — baseline (ch. 02, by level) ∪
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
context — baseline (ch. 02, by level) ∪ chapters activated by
|
|
117
|
+
the DECLARED activators ∪ the categories the vocabulary
|
|
118
|
+
promises ⊕ overlay(extend), narrowed by those same
|
|
119
|
+
declarations. The task text is NEVER an activator here;
|
|
120
|
+
params: risk_level (required), concerns?, exposure?,
|
|
121
|
+
data_sensitivity?, technologies?, changed_files?,
|
|
122
|
+
task_context? (recorded, inert), mode? (declarative|baseline|
|
|
123
|
+
discover)
|
|
124
|
+
returns FOUR bands, all always listed:
|
|
125
|
+
selected[] — the answer to what you declared (each
|
|
126
|
+
item carries its selection_trace:
|
|
127
|
+
layer/source/trigger/score, incl.
|
|
128
|
+
named rules like R1:principal-nao-humano
|
|
129
|
+
and declared_category)
|
|
130
|
+
narrowed_out[] — what was ELIGIBLE and why it left
|
|
131
|
+
(grouped by category, with reason)
|
|
132
|
+
excluded_by_level[] — what exists at ANOTHER level (0.15.0)
|
|
133
|
+
out_of_scope_chapters — what NO declaration activated, per
|
|
134
|
+
chapter, with a copyable activate_with
|
|
135
|
+
(0.20.0-beta.24)
|
|
136
|
+
Nothing is dropped silently, and the SCOPE of that promise is
|
|
137
|
+
the universe, not just the baseline: if you need something from
|
|
138
|
+
a band, call again DECLARING what brings it (e.g. the SES group
|
|
139
|
+
returns with technologies=["jwt"], not by mentioning tokens in
|
|
140
|
+
the task text)
|
|
123
141
|
consult_security_requirements ← deterministic: requirements + controls for a risk level
|
|
124
142
|
(mode: "index" opt-in returns a per-category id index)
|
|
125
143
|
params: risk_level (L1|L2|L3), concerns? (string[])
|
|
@@ -132,9 +150,9 @@ resolve_entities ← low-level ontology filter engine
|
|
|
132
150
|
listing requirements by category, exploring the ontology
|
|
133
151
|
```
|
|
134
152
|
|
|
135
|
-
**Choosing between the three requirement surfaces:** *(
|
|
153
|
+
**Choosing between the three requirement surfaces:** *(DECLARA os activadores do vocabulário fechado — `concerns` + `exposure` + `data_sensitivity` + `technologies` (+ `changed_files`): lês o pedido, o código e a conversa e mapeias para valores publicados. O `task_context` NÃO refina nada no modo declarativo — fica registado para auditoria. Porquê: a mesma feature escrita de cinco maneiras dava de 0 a 58 requisitos quando a prosa decidia; declarada, dá um conjunto, sempre o mesmo.)*
|
|
136
154
|
- `select_sbd_toe_requirements` — *"which requirements apply to THIS task / this change?"*
|
|
137
|
-
Task-scoped recommendation with declared narrowing (
|
|
155
|
+
Task-scoped recommendation with declared narrowing (the four bands, above). Start here for
|
|
138
156
|
any concrete piece of work.
|
|
139
157
|
- `consult_security_requirements` — *"what does the catalogue hold at this level?"*
|
|
140
158
|
Level-wide, deterministic. `mode: "index"` (opt-in) returns a compact per-category id
|
|
@@ -145,10 +163,14 @@ resolve_entities ← low-level ontology filter engine
|
|
|
145
163
|
|
|
146
164
|
**Prefer `consult_security_requirements` over `search_sbd_toe_manual`** when the question
|
|
147
165
|
is structured ("what requirements apply at L2?", "which controls are active for auth?").
|
|
148
|
-
Use `search_sbd_toe_manual` for narrative/conceptual questions
|
|
166
|
+
Use `search_sbd_toe_manual` for narrative/conceptual questions — **e nunca para decidir
|
|
167
|
+
âmbito**: é NÃO-NORMATIVO por declaração da própria tool. O conjunto de requisitos vem
|
|
168
|
+
sempre de `select_sbd_toe_requirements` com activadores DECLARADOS.
|
|
149
169
|
|
|
150
|
-
**Output size
|
|
151
|
-
|
|
170
|
+
**Output size — medido, não recordado:**
|
|
171
|
+
|
|
172
|
+
<!-- BEGIN GENERATED: output-sizes -->
|
|
173
|
+
<!-- END GENERATED: output-sizes -->
|
|
152
174
|
|
|
153
175
|
#### `concerns` — o vocabulário FECHADO desta linha (derivado do bundle)
|
|
154
176
|
|
|
@@ -207,7 +229,7 @@ get_threat_landscape ← deterministic: threats relevant to a risk level
|
|
|
207
229
|
| `selection.selected[]` (select) | The recommendation for the task — cite each item's `selection_trace` when asked *why* |
|
|
208
230
|
| `selection.out_of_scope_chapters` (select) | O que **nenhuma declaração activou**, por capítulo e por contagem, com `activate_with` copiável. **Não é «não aplicável»** — é não-perguntado: se o capítulo é relevante para a tarefa, re-chama com a declaração indicada. `SEM ACTIVADOR PUBLICADO` significa que o vocabulário não tem forma de o activar — diz-se, não se inventa |
|
|
209
231
|
| `selection.narrowed_out[]` (select) | Eligible-but-narrowed, grouped with reason — never treat as "not applicable"; re-call with the missing signal to recover a group |
|
|
210
|
-
| `completeness_report.selection` (prepare) | The same
|
|
232
|
+
| `completeness_report.selection` (prepare) | The same band summary behind the codegen context — `narrowed_out_ref` names the tool to inspect it |
|
|
211
233
|
|
|
212
234
|
#### Pattern for complex answers (threat model / security plan / checklist)
|
|
213
235
|
|
|
@@ -305,13 +327,13 @@ Always distinguish between:
|
|
|
305
327
|
|
|
306
328
|
| Question | Approach |
|
|
307
329
|
|---|---|
|
|
308
|
-
| "What is X?" / "How does Y work?" | `search_sbd_toe_manual` |
|
|
330
|
+
| "What is X?" / "How does Y work?" | `search_sbd_toe_manual` (NÃO-NORMATIVO — leitura, não selecção) |
|
|
309
331
|
| "What applies to my project?" | `map_sbd_toe_applicability` → `get_sbd_toe_chapter_brief` |
|
|
310
332
|
| "What does chapter N cover?" | `get_sbd_toe_chapter_brief` |
|
|
311
333
|
| "List all chapters" | `list_sbd_toe_chapters` |
|
|
312
334
|
| "Find control / artefact / practice" | `query_sbd_toe_entities` |
|
|
313
335
|
| "What requirements apply at L1/L2/L3?" | `consult_security_requirements(risk_level)` |
|
|
314
|
-
| "Which requirements apply to THIS task / this change?" | `select_sbd_toe_requirements(risk_level, concerns=[…], exposure?, data_sensitivity?, technologies?, changed_files?)` — **declara** o que a tua leitura justifica (vocabulário: `sbd://toe/activation-vocabulary`); `selected[]` é a resposta ao declarado, `narrowed_out[]` diz o que ficou de fora e porquê. Sem declarações → `needs_input` (com candidatos a confirmar). O `
|
|
336
|
+
| "Which requirements apply to THIS task / this change?" | `select_sbd_toe_requirements(risk_level, concerns=[…], exposure?, data_sensitivity?, technologies?, changed_files?)` — **declara** o que a tua leitura justifica (vocabulário: `sbd://toe/activation-vocabulary`); `selected[]` é a resposta ao declarado, `narrowed_out[]` diz o que ficou de fora e porquê. Sem declarações → `needs_input` (com candidatos a confirmar). O `task_context` (antes `task`, alias mantido) é contexto registado, não motor. |
|
|
315
337
|
| "How do I PROVE these requirements?" | `get_sbd_toe_verification_matrix(risk_level, requirement_ids=[…os selected…])` — o fecho requisito → prova; ids sem EvidencePattern vêm declarados |
|
|
316
338
|
| "Where is the SOURCE of this requirement?" | `trace_sbd_toe_requirement_sources(requirement_ids)` — directas (autoria) vs cadeia compensada (cobertura, NÃO autoria; rótulo coverage_compensated); sem-fonte declarados |
|
|
317
339
|
| "Give me a compact id map of the catalogue by category" | `consult_security_requirements(risk_level, mode="index")` |
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.20.0-beta.25 — a teoria do minLevel morre EXPLICITAMENTE.
|
|
3
|
+
*
|
|
4
|
+
* A aplicabilidade graduada (0.14.0) retirou o modelo binário «este capítulo só começa a
|
|
5
|
+
* aplicar-se em L2». `list_sbd_toe_chapters` di-lo («the binary minLevel theory is
|
|
6
|
+
* retired») e `map_sbd_toe_applicability` também («nothing is excluded by level») — mas o
|
|
7
|
+
* guia continuava a publicar a teoria, primeiro numa coluna «Min level» escrita à mão
|
|
8
|
+
* (06→L2, 11→L2, 13→L3) e no «L2 unlocks + chapters 06, 11», e depois — já gerado — numa
|
|
9
|
+
* coluna «Presente desde» que a reintroduzia pela forma. Nenhuma coluna deste guia volta
|
|
10
|
+
* a dizer quando um capítulo «começa»: TODOS estão presentes em TODOS os níveis.
|
|
11
|
+
*/
|
|
12
|
+
export declare const MINLEVEL_RETIRED: string;
|
|
1
13
|
/** Tabela de concerns: o VOCABULÁRIO REAL (24), com o que cada valor activa. */
|
|
2
14
|
export declare function generateConcernsBlock(): string;
|
|
3
15
|
/** Os outros activadores declaráveis, com a mesma proveniência. */
|
|
@@ -7,6 +19,12 @@ export declare function generateResourcesBlock(): string;
|
|
|
7
19
|
export declare function generatePromptsBlock(): string;
|
|
8
20
|
export declare function generateChaptersBlock(): string;
|
|
9
21
|
export declare function generateRiskLevelsBlock(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Tamanhos de resposta MEDIDOS, não recordados. O guia anunciava «L1 ≈ 22k, L2 ≈ 36k,
|
|
24
|
+
* L3 ≈ 36k chars»; a medição dá 32k / 47k / 51k — 30 a 45% de erro numa afirmação que o
|
|
25
|
+
* agente usa para decidir se cabe no contexto. Medir custa ~23 ms uma vez por processo.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateOutputSizesBlock(): string;
|
|
10
28
|
export declare const GENERATED_BLOCK_IDS: string[];
|
|
11
29
|
/** Os marcadores presentes no asset — a suite exige que sejam exactamente os gerados. */
|
|
12
30
|
export declare function markersInTemplate(template: string): string[];
|
|
@@ -21,12 +21,28 @@ import { buildActivationVocabulary } from "./activation-vocabulary.js";
|
|
|
21
21
|
import { RESOURCE_CATALOG, PROMPT_CATALOG } from "./server-surface.js";
|
|
22
22
|
import { getOntologyData } from "../tools/ontology-loader.js";
|
|
23
23
|
import { handleListSbdToeChapters } from "../tools/structured-tools.js";
|
|
24
|
+
import { handleConsultSecurityRequirements } from "../tools/consult-security-requirements.js";
|
|
24
25
|
function guideChapters() {
|
|
25
26
|
const listed = handleListSbdToeChapters({});
|
|
26
27
|
return listed.chapters ?? [];
|
|
27
28
|
}
|
|
28
29
|
const BEGIN = (id) => `<!-- BEGIN GENERATED: ${id} -->`;
|
|
29
30
|
const END = (id) => `<!-- END GENERATED: ${id} -->`;
|
|
31
|
+
/**
|
|
32
|
+
* 0.20.0-beta.25 — a teoria do minLevel morre EXPLICITAMENTE.
|
|
33
|
+
*
|
|
34
|
+
* A aplicabilidade graduada (0.14.0) retirou o modelo binário «este capítulo só começa a
|
|
35
|
+
* aplicar-se em L2». `list_sbd_toe_chapters` di-lo («the binary minLevel theory is
|
|
36
|
+
* retired») e `map_sbd_toe_applicability` também («nothing is excluded by level») — mas o
|
|
37
|
+
* guia continuava a publicar a teoria, primeiro numa coluna «Min level» escrita à mão
|
|
38
|
+
* (06→L2, 11→L2, 13→L3) e no «L2 unlocks + chapters 06, 11», e depois — já gerado — numa
|
|
39
|
+
* coluna «Presente desde» que a reintroduzia pela forma. Nenhuma coluna deste guia volta
|
|
40
|
+
* a dizer quando um capítulo «começa»: TODOS estão presentes em TODOS os níveis.
|
|
41
|
+
*/
|
|
42
|
+
export const MINLEVEL_RETIRED = "**Aplicabilidade GRADUADA (0.14.0): nenhum capítulo se exclui por nível.** Todos os 15 estão " +
|
|
43
|
+
"presentes em L1, L2 e L3 — o que escala é a EXIGÊNCIA, não a presença. A teoria binária do " +
|
|
44
|
+
"`minLevel` («o capítulo N só se aplica a partir de LX») está RETIRADA: não existe «unlock» de " +
|
|
45
|
+
"capítulos por nível, e nenhuma coluna aqui diz quando um capítulo começa, porque nenhum começa.";
|
|
30
46
|
/** Nota que acompanha cada bloco: quem lê o guia tem de saber o que é derivado. */
|
|
31
47
|
const DERIVED_NOTE = "*(gerado — não editar à mão; a suite guarda a igualdade com a fonte)*";
|
|
32
48
|
function domainsOf(category) {
|
|
@@ -115,16 +131,14 @@ export function generatePromptsBlock() {
|
|
|
115
131
|
export function generateChaptersBlock() {
|
|
116
132
|
const chapters = guideChapters();
|
|
117
133
|
const rows = chapters.map((c) => {
|
|
118
|
-
const app = c.applicability ?? {};
|
|
119
|
-
const min = ["L1", "L2", "L3"].find((l) => app[l] === true) ?? "—";
|
|
120
134
|
const demand = c.demand_by_level ?? {};
|
|
121
|
-
return `| \`${c.id}\` | ${c.title} | ${
|
|
135
|
+
return `| \`${c.id}\` | ${c.title} | ${demand.L1 ?? "—"} / ${demand.L2 ?? "—"} / ${demand.L3 ?? "—"} |`;
|
|
122
136
|
});
|
|
123
137
|
return [
|
|
124
|
-
`**${rows.length} capítulos.**
|
|
138
|
+
`**${rows.length} capítulos.** ${MINLEVEL_RETIRED} ${DERIVED_NOTE}`,
|
|
125
139
|
"",
|
|
126
|
-
"| chapterId | Title |
|
|
127
|
-
"
|
|
140
|
+
"| chapterId | Title | Exigência L1 / L2 / L3 |",
|
|
141
|
+
"|---|---|---|",
|
|
128
142
|
...rows
|
|
129
143
|
].join("\n");
|
|
130
144
|
}
|
|
@@ -136,14 +150,36 @@ export function generateRiskLevelsBlock() {
|
|
|
136
150
|
return `| \`${level}\` | ${present} de ${chapters.length} | ${mandatory} obrigatórios |`;
|
|
137
151
|
});
|
|
138
152
|
return [
|
|
139
|
-
|
|
153
|
+
`${MINLEVEL_RETIRED} ${DERIVED_NOTE}`,
|
|
140
154
|
"",
|
|
141
155
|
"| Level | Capítulos presentes | Exigência |",
|
|
142
156
|
"|---|---|---|",
|
|
143
157
|
...rows
|
|
144
158
|
].join("\n");
|
|
145
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Tamanhos de resposta MEDIDOS, não recordados. O guia anunciava «L1 ≈ 22k, L2 ≈ 36k,
|
|
162
|
+
* L3 ≈ 36k chars»; a medição dá 32k / 47k / 51k — 30 a 45% de erro numa afirmação que o
|
|
163
|
+
* agente usa para decidir se cabe no contexto. Medir custa ~23 ms uma vez por processo.
|
|
164
|
+
*/
|
|
165
|
+
export function generateOutputSizesBlock() {
|
|
166
|
+
const rows = ["L1", "L2", "L3"].map((level) => {
|
|
167
|
+
const full = JSON.stringify(handleConsultSecurityRequirements({ risk_level: level })).length;
|
|
168
|
+
const scoped = JSON.stringify(handleConsultSecurityRequirements({ risk_level: level, concerns: ["auth"] })).length;
|
|
169
|
+
return `| \`${level}\` | ≈ ${(full / 1000).toFixed(0)}k chars | ≈ ${(scoped / 1000).toFixed(0)}k chars |`;
|
|
170
|
+
});
|
|
171
|
+
return [
|
|
172
|
+
`Medido nesta build sobre \`consult_security_requirements\` (o \`concerns\` de exemplo é \`["auth"]\`). ${DERIVED_NOTE}`,
|
|
173
|
+
"",
|
|
174
|
+
"| Nível | Resposta completa | Com `concerns` declarados |",
|
|
175
|
+
"|---|---|---|",
|
|
176
|
+
...rows,
|
|
177
|
+
"",
|
|
178
|
+
"**Declara sempre `concerns` para delimitar L2/L3** — a resposta completa pode exceder o contexto."
|
|
179
|
+
].join("\n");
|
|
180
|
+
}
|
|
146
181
|
const GENERATORS = {
|
|
182
|
+
"output-sizes": generateOutputSizesBlock,
|
|
147
183
|
concerns: generateConcernsBlock,
|
|
148
184
|
activators: generateActivatorsBlock,
|
|
149
185
|
roles: generateRolesBlock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../../src/serving/agent-guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../../src/serving/agent-guide.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shiftleftpt/sbd-toe-mcp",
|
|
3
|
-
"version": "0.20.0-beta.
|
|
3
|
+
"version": "0.20.0-beta.25",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "MCP server for the SbD-ToE (Security by Design — Theory of Everything) security manual — structured tools for Claude, GitHub Copilot and other MCP clients",
|
|
6
6
|
"keywords": [
|