@shiftleftpt/sbd-toe-mcp 0.1.0 → 0.2.16

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 (42) hide show
  1. package/.env.example +0 -3
  2. package/README.md +136 -254
  3. package/dist/config.js +0 -3
  4. package/dist/config.js.map +1 -1
  5. package/dist/types.d.ts +0 -3
  6. package/package.json +18 -2
  7. package/dist/backend/semantic-index-gateway.test.d.ts +0 -1
  8. package/dist/backend/semantic-index-gateway.test.js +0 -384
  9. package/dist/backend/semantic-index-gateway.test.js.map +0 -1
  10. package/dist/bootstrap/checkout-backend.d.ts +0 -31
  11. package/dist/bootstrap/checkout-backend.js +0 -136
  12. package/dist/bootstrap/checkout-backend.js.map +0 -1
  13. package/dist/bootstrap/checkout-backend.test.d.ts +0 -1
  14. package/dist/bootstrap/checkout-backend.test.js +0 -158
  15. package/dist/bootstrap/checkout-backend.test.js.map +0 -1
  16. package/dist/bootstrap/release-checkout.d.ts +0 -8
  17. package/dist/bootstrap/release-checkout.js +0 -168
  18. package/dist/bootstrap/release-checkout.js.map +0 -1
  19. package/dist/bootstrap/release-checkout.test.d.ts +0 -1
  20. package/dist/bootstrap/release-checkout.test.js +0 -137
  21. package/dist/bootstrap/release-checkout.test.js.map +0 -1
  22. package/dist/resources/sbd-toe-resources.test.d.ts +0 -1
  23. package/dist/resources/sbd-toe-resources.test.js +0 -134
  24. package/dist/resources/sbd-toe-resources.test.js.map +0 -1
  25. package/dist/test-utils.d.ts +0 -153
  26. package/dist/test-utils.js +0 -176
  27. package/dist/test-utils.js.map +0 -1
  28. package/dist/tools/generate-document.test.d.ts +0 -1
  29. package/dist/tools/generate-document.test.js +0 -189
  30. package/dist/tools/generate-document.test.js.map +0 -1
  31. package/dist/tools/map-review-scope.test.d.ts +0 -1
  32. package/dist/tools/map-review-scope.test.js +0 -204
  33. package/dist/tools/map-review-scope.test.js.map +0 -1
  34. package/dist/tools/plan-repo-governance.test.d.ts +0 -1
  35. package/dist/tools/plan-repo-governance.test.js +0 -237
  36. package/dist/tools/plan-repo-governance.test.js.map +0 -1
  37. package/dist/tools/structured-tools.test.d.ts +0 -1
  38. package/dist/tools/structured-tools.test.js +0 -459
  39. package/dist/tools/structured-tools.test.js.map +0 -1
  40. package/dist/validators/ai-disclosure.test.d.ts +0 -1
  41. package/dist/validators/ai-disclosure.test.js +0 -244
  42. package/dist/validators/ai-disclosure.test.js.map +0 -1
@@ -1,459 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- vi.mock("../backend/semantic-index-gateway.js", () => ({
3
- retrievePublishedContext: vi.fn()
4
- }));
5
- import { handleListSbdToeChapters, handleQuerySbdToeEntities, handleGetSbdToeChapterBrief, handleMapSbdToeApplicability } from "./structured-tools.js";
6
- import { retrievePublishedContext } from "../backend/semantic-index-gateway.js";
7
- // --- Helpers ---
8
- function makeCache(entityItems = []) {
9
- return {
10
- docs: { items: [] },
11
- entities: { items: entityItems },
12
- docsEnrichedLookup: new Map(),
13
- entitiesEnrichedLookup: new Map()
14
- };
15
- }
16
- function makeChapterBundle(chapterId, title, riskLevels = []) {
17
- return {
18
- objectID: `entity::chapter_bundle::${chapterId}::bundle`,
19
- entity_type: "chapter_bundle",
20
- chapter_id: chapterId,
21
- title,
22
- risk_levels: riskLevels,
23
- summary: `Summary of ${title}`,
24
- related_phases: ["design", "implementation"],
25
- artifact_ids: [`ART-${chapterId}`]
26
- };
27
- }
28
- function makePracticeAssignment(chapterId, riskLevels) {
29
- return {
30
- objectID: `entity::practice_assignment::${chapterId}::p1`,
31
- entity_type: "practice_assignment",
32
- chapter_id: chapterId,
33
- title: `Practice for ${chapterId}`,
34
- risk_levels: riskLevels
35
- };
36
- }
37
- function makeNormalizedRecord(overrides = {}) {
38
- return {
39
- citationId: "E1",
40
- source: "entities",
41
- indexName: "test",
42
- objectID: "test-001",
43
- title: "Test",
44
- excerpt: "Test excerpt",
45
- tags: [],
46
- algoliaRank: 1,
47
- localScore: 0,
48
- raw: {
49
- objectID: "test-001",
50
- entity_type: "practice_assignment",
51
- chapter_id: "01-test",
52
- risk_levels: ["L1"]
53
- },
54
- ...overrides
55
- };
56
- }
57
- function makeBundle(records = []) {
58
- return {
59
- query: "test",
60
- selected: records,
61
- retrieved: records,
62
- promptChapters: [],
63
- consultedIndices: [],
64
- backendSnapshot: {
65
- docsSnapshotFile: "",
66
- entitiesSnapshotFile: "",
67
- docsEnrichedSnapshotFile: "",
68
- entitiesEnrichedSnapshotFile: ""
69
- }
70
- };
71
- }
72
- // --- list_sbd_toe_chapters ---
73
- describe("handleListSbdToeChapters", () => {
74
- it("returns empty chapters when cache is empty", () => {
75
- const cache = makeCache([]);
76
- const result = handleListSbdToeChapters({}, cache);
77
- expect(result.chapters).toEqual([]);
78
- });
79
- it("returns chapter_bundle records as chapters", () => {
80
- const cache = makeCache([
81
- makeChapterBundle("01-cap", "Cap. 01 Title"),
82
- makeChapterBundle("02-cap", "Cap. 02 Title"),
83
- { objectID: "entity::practice_assignment::x", entity_type: "practice_assignment" }
84
- ]);
85
- const result = handleListSbdToeChapters({}, cache);
86
- expect(result.chapters).toHaveLength(2);
87
- expect(result.chapters[0]?.id).toBe("01-cap");
88
- expect(result.chapters[1]?.id).toBe("02-cap");
89
- });
90
- it("deduplicates by chapter_id", () => {
91
- const cache = makeCache([
92
- makeChapterBundle("01-cap", "Cap. 01"),
93
- makeChapterBundle("01-cap", "Cap. 01 duplicate")
94
- ]);
95
- const result = handleListSbdToeChapters({}, cache);
96
- expect(result.chapters).toHaveLength(1);
97
- });
98
- it("filters by riskLevel when provided — returns only matching records", () => {
99
- const cache = makeCache([
100
- makeChapterBundle("01-cap", "Cap. 01", ["L1", "L2"]),
101
- makeChapterBundle("02-cap", "Cap. 02", ["L3"])
102
- ]);
103
- const result = handleListSbdToeChapters({ riskLevel: "L1" }, cache);
104
- expect(result.chapters).toHaveLength(1);
105
- expect(result.chapters[0]?.id).toBe("01-cap");
106
- });
107
- it("returns empty chapters when riskLevel filter matches nothing", () => {
108
- const cache = makeCache([makeChapterBundle("01-cap", "Cap. 01")]);
109
- const result = handleListSbdToeChapters({ riskLevel: "L1" }, cache);
110
- expect(result.chapters).toEqual([]);
111
- });
112
- it("throws on invalid riskLevel", () => {
113
- const cache = makeCache([]);
114
- expect(() => handleListSbdToeChapters({ riskLevel: "L9" }, cache)).toThrow("riskLevel inválido");
115
- });
116
- it("throws on non-string riskLevel", () => {
117
- const cache = makeCache([]);
118
- expect(() => handleListSbdToeChapters({ riskLevel: 42 }, cache)).toThrow("riskLevel inválido");
119
- });
120
- it("matches objectID patterns starting with cap- or ch-", () => {
121
- const cache = makeCache([
122
- {
123
- objectID: "cap-01",
124
- chapter_id: "cap-01",
125
- title: "Cap 01 by objectID prefix"
126
- }
127
- ]);
128
- const result = handleListSbdToeChapters({}, cache);
129
- expect(result.chapters.some((c) => c.id === "cap-01")).toBe(true);
130
- });
131
- });
132
- // --- query_sbd_toe_entities ---
133
- describe("handleQuerySbdToeEntities", () => {
134
- beforeEach(() => {
135
- vi.mocked(retrievePublishedContext).mockResolvedValue(makeBundle([]));
136
- });
137
- it("throws when query is empty string", async () => {
138
- const cache = makeCache([]);
139
- await expect(handleQuerySbdToeEntities({ query: "" }, cache)).rejects.toThrow('"query" é obrigatório');
140
- });
141
- it("throws when query exceeds 200 chars", async () => {
142
- const cache = makeCache([]);
143
- const longQuery = "a".repeat(201);
144
- await expect(handleQuerySbdToeEntities({ query: longQuery }, cache)).rejects.toThrow('"query" é obrigatório');
145
- });
146
- it("throws when query is not a string", async () => {
147
- const cache = makeCache([]);
148
- await expect(handleQuerySbdToeEntities({ query: 42 }, cache)).rejects.toThrow('"query"');
149
- });
150
- it("throws when topK is out of range", async () => {
151
- const cache = makeCache([]);
152
- await expect(handleQuerySbdToeEntities({ query: "test", topK: 0 }, cache)).rejects.toThrow('"topK"');
153
- await expect(handleQuerySbdToeEntities({ query: "test", topK: 16 }, cache)).rejects.toThrow('"topK"');
154
- });
155
- it("throws when topK is not an integer", async () => {
156
- const cache = makeCache([]);
157
- await expect(handleQuerySbdToeEntities({ query: "test", topK: 1.5 }, cache)).rejects.toThrow('"topK"');
158
- });
159
- it("throws on invalid riskLevel", async () => {
160
- const cache = makeCache([]);
161
- await expect(handleQuerySbdToeEntities({ query: "test", riskLevel: "L9" }, cache)).rejects.toThrow("riskLevel inválido");
162
- });
163
- it("returns entities and total from retrieved bundle", async () => {
164
- const record = makeNormalizedRecord();
165
- vi.mocked(retrievePublishedContext).mockResolvedValue(makeBundle([record]));
166
- const cache = makeCache([]);
167
- const result = (await handleQuerySbdToeEntities({ query: "test" }, cache));
168
- expect(result.entities).toHaveLength(1);
169
- expect(result.total).toBe(1);
170
- });
171
- it("filters by entityType when provided", async () => {
172
- const r1 = makeNormalizedRecord({ raw: { entity_type: "practice_assignment" } });
173
- const r2 = makeNormalizedRecord({
174
- objectID: "e-002",
175
- raw: { entity_type: "chapter_bundle" }
176
- });
177
- vi.mocked(retrievePublishedContext).mockResolvedValue(makeBundle([r1, r2]));
178
- const cache = makeCache([]);
179
- const result = (await handleQuerySbdToeEntities({ query: "test", entityType: "practice_assignment" }, cache));
180
- expect(result.total).toBe(1);
181
- });
182
- it("filters by chapterId when provided", async () => {
183
- const r1 = makeNormalizedRecord({
184
- chapter: "Cap. 01",
185
- raw: { chapter_id: "01-cap", entity_type: "practice" }
186
- });
187
- const r2 = makeNormalizedRecord({
188
- objectID: "e-002",
189
- chapter: "Cap. 02",
190
- raw: { chapter_id: "02-cap", entity_type: "practice" }
191
- });
192
- vi.mocked(retrievePublishedContext).mockResolvedValue(makeBundle([r1, r2]));
193
- const cache = makeCache([]);
194
- const result = (await handleQuerySbdToeEntities({ query: "test", chapterId: "01-cap" }, cache));
195
- expect(result.total).toBe(1);
196
- });
197
- it("uses default topK=5 when topK not provided", async () => {
198
- const cache = makeCache([]);
199
- await handleQuerySbdToeEntities({ query: "test" }, cache);
200
- expect(vi.mocked(retrievePublishedContext)).toHaveBeenCalledWith("test", 5);
201
- });
202
- it("passes provided topK to retrievePublishedContext", async () => {
203
- const cache = makeCache([]);
204
- await handleQuerySbdToeEntities({ query: "test", topK: 10 }, cache);
205
- expect(vi.mocked(retrievePublishedContext)).toHaveBeenCalledWith("test", 10);
206
- });
207
- });
208
- // --- get_sbd_toe_chapter_brief ---
209
- describe("handleGetSbdToeChapterBrief", () => {
210
- it("throws when chapterId is empty", () => {
211
- const cache = makeCache([]);
212
- expect(() => handleGetSbdToeChapterBrief({ chapterId: "" }, cache)).toThrow('"chapterId" é obrigatório');
213
- });
214
- it("throws when chapterId is whitespace only", () => {
215
- const cache = makeCache([]);
216
- expect(() => handleGetSbdToeChapterBrief({ chapterId: " " }, cache)).toThrow('"chapterId" é obrigatório');
217
- });
218
- it("throws when chapterId is not provided", () => {
219
- const cache = makeCache([]);
220
- expect(() => handleGetSbdToeChapterBrief({}, cache)).toThrow('"chapterId" é obrigatório');
221
- });
222
- it("returns found:false when chapter does not exist", () => {
223
- const cache = makeCache([]);
224
- const result = handleGetSbdToeChapterBrief({ chapterId: "unknown-id" }, cache);
225
- expect(result.found).toBe(false);
226
- expect(result.id).toBe("unknown-id");
227
- });
228
- it("finds chapter by chapter_id field", () => {
229
- const item = makeChapterBundle("01-classificacao-aplicacoes", "Cap. 01");
230
- const cache = makeCache([item]);
231
- const result = handleGetSbdToeChapterBrief({ chapterId: "01-classificacao-aplicacoes" }, cache);
232
- expect(result.found).toBe(true);
233
- expect(result.id).toBe("01-classificacao-aplicacoes");
234
- expect(result.title).toBe("Cap. 01");
235
- });
236
- it("finds chapter by objectID field", () => {
237
- const item = makeChapterBundle("07-cicd", "Cap. 07");
238
- const cache = makeCache([item]);
239
- const objectID = `entity::chapter_bundle::07-cicd::bundle`;
240
- const result = handleGetSbdToeChapterBrief({ chapterId: objectID }, cache);
241
- expect(result.found).toBe(true);
242
- });
243
- it("includes phases from related_phases field", () => {
244
- const item = makeChapterBundle("01-cap", "Cap. 01");
245
- const cache = makeCache([item]);
246
- const result = handleGetSbdToeChapterBrief({ chapterId: "01-cap" }, cache);
247
- expect(result.phases).toEqual(["design", "implementation"]);
248
- });
249
- it("includes objective from summary when present", () => {
250
- const item = makeChapterBundle("01-cap", "Cap. 01");
251
- const cache = makeCache([item]);
252
- const result = handleGetSbdToeChapterBrief({ chapterId: "01-cap" }, cache);
253
- expect(result.objective).toBe("Summary of Cap. 01");
254
- });
255
- it("uses enriched lookup for intent_topics when available", () => {
256
- const objectID = "entity::chapter_bundle::01-cap::bundle";
257
- const item = {
258
- objectID,
259
- entity_type: "chapter_bundle",
260
- chapter_id: "01-cap",
261
- title: "Cap. 01",
262
- risk_levels: [],
263
- summary: "Test summary",
264
- related_phases: [],
265
- artifact_ids: []
266
- };
267
- const enrichedLookup = new Map([
268
- [objectID, { intent_topics: ["bootstrap", "classification"] }]
269
- ]);
270
- const cache = {
271
- docs: { items: [] },
272
- entities: { items: [item] },
273
- docsEnrichedLookup: new Map(),
274
- entitiesEnrichedLookup: enrichedLookup
275
- };
276
- const result = handleGetSbdToeChapterBrief({ chapterId: "01-cap" }, cache);
277
- expect(result.intent_topics).toEqual(["bootstrap", "classification"]);
278
- });
279
- });
280
- // --- list_sbd_toe_chapters — readableTitle ---
281
- describe("handleListSbdToeChapters — readableTitle", () => {
282
- it("includes readableTitle field distinct from id", () => {
283
- const cache = makeCache([
284
- makeChapterBundle("01-classificacao-aplicacoes", "Cap. 01")
285
- ]);
286
- const result = handleListSbdToeChapters({}, cache);
287
- expect(result.chapters).toHaveLength(1);
288
- const ch = result.chapters[0];
289
- expect(ch?.readableTitle).toBe("Classificação de Aplicações");
290
- expect(ch?.readableTitle).not.toBe(ch?.id);
291
- });
292
- it("covers all 14 known chapter ids with distinct readableTitles", () => {
293
- const knownIds = [
294
- "01-classificacao-aplicacoes", "02-requisitos-seguranca", "03-threat-modeling",
295
- "04-arquitetura-segura", "05-dependencias-sbom-sca", "06-desenvolvimento-seguro",
296
- "07-cicd-seguro", "08-iac-infraestrutura", "09-containers-imagens",
297
- "10-testes-seguranca", "11-deploy-seguro", "12-monitorizacao-operacoes",
298
- "13-formacao-onboarding", "14-governanca-contratacao"
299
- ];
300
- const items = knownIds.map((id) => makeChapterBundle(id, `Title ${id}`));
301
- const cache = makeCache(items);
302
- const result = handleListSbdToeChapters({}, cache);
303
- expect(result.chapters).toHaveLength(14);
304
- for (const ch of result.chapters) {
305
- expect(ch.readableTitle).not.toBe(ch.id);
306
- expect(typeof ch.readableTitle).toBe("string");
307
- expect(ch.readableTitle.length).toBeGreaterThan(0);
308
- }
309
- });
310
- it("falls back to title when chapterId is unknown", () => {
311
- const cache = makeCache([makeChapterBundle("unknown-chapter-xyz", "My Custom Title")]);
312
- const result = handleListSbdToeChapters({}, cache);
313
- expect(result.chapters[0]?.readableTitle).toBe("My Custom Title");
314
- });
315
- it("preserves id and title fields (retro-compatibility)", () => {
316
- const cache = makeCache([makeChapterBundle("07-cicd-seguro", "CI/CD Seguro")]);
317
- const result = handleListSbdToeChapters({}, cache);
318
- const ch = result.chapters[0];
319
- expect(ch?.id).toBe("07-cicd-seguro");
320
- expect(ch?.title).toBe("CI/CD Seguro");
321
- expect(ch?.readableTitle).toBe("CI/CD Seguro");
322
- });
323
- });
324
- // --- map_sbd_toe_applicability ---
325
- describe("handleMapSbdToeApplicability", () => {
326
- it("throws on undefined riskLevel", () => {
327
- const cache = makeCache([]);
328
- expect(() => handleMapSbdToeApplicability({}, cache)).toThrow("riskLevel é obrigatório");
329
- });
330
- it("throws on invalid riskLevel L4", () => {
331
- const cache = makeCache([]);
332
- expect(() => handleMapSbdToeApplicability({ riskLevel: "L4" }, cache)).toThrow("riskLevel é obrigatório");
333
- });
334
- it("throws on non-string riskLevel", () => {
335
- const cache = makeCache([]);
336
- expect(() => handleMapSbdToeApplicability({ riskLevel: 1 }, cache)).toThrow("riskLevel é obrigatório");
337
- });
338
- it("returns empty active/excluded when cache is empty", () => {
339
- const cache = makeCache([]);
340
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
341
- expect(result.riskLevel).toBe("L1");
342
- expect(result.active).toEqual([]);
343
- expect(result.conditional).toEqual([]);
344
- expect(result.excluded).toEqual([]);
345
- });
346
- it("returns correct structure for L1 with chapter_bundle and practice_assignment", () => {
347
- const cache = makeCache([
348
- makeChapterBundle("01-cap", "Cap. 01"),
349
- makeChapterBundle("02-cap", "Cap. 02"),
350
- makePracticeAssignment("01-cap", ["L1", "L2"]),
351
- makePracticeAssignment("02-cap", ["L3"])
352
- ]);
353
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
354
- expect(result.active).toContain("01-cap");
355
- expect(result.active).not.toContain("02-cap");
356
- expect(result.excluded).toContain("02-cap");
357
- expect(result.conditional).toEqual([]);
358
- });
359
- it("activates chapter that has any entity with matching riskLevel", () => {
360
- const cache = makeCache([
361
- makeChapterBundle("01-cap", "Cap. 01"),
362
- makePracticeAssignment("01-cap", ["L1", "L2", "L3"])
363
- ]);
364
- const resultL1 = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
365
- const resultL2 = handleMapSbdToeApplicability({ riskLevel: "L2" }, cache);
366
- const resultL3 = handleMapSbdToeApplicability({ riskLevel: "L3" }, cache);
367
- expect(resultL1.active).toContain("01-cap");
368
- expect(resultL2.active).toContain("01-cap");
369
- expect(resultL3.active).toContain("01-cap");
370
- });
371
- it("excluded contains chapter_bundle chapters not active for the given level", () => {
372
- const cache = makeCache([
373
- makeChapterBundle("01-cap", "Cap. 01"),
374
- makeChapterBundle("02-cap", "Cap. 02"),
375
- makePracticeAssignment("01-cap", ["L1"])
376
- ]);
377
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
378
- expect(result.excluded).toContain("02-cap");
379
- expect(result.excluded).not.toContain("01-cap");
380
- });
381
- });
382
- describe("handleMapSbdToeApplicability — activatedBundles", () => {
383
- it("always includes 3 foundation bundles for any risk level", () => {
384
- const cache = makeCache([]);
385
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
386
- expect(result.activatedBundles.foundationBundles).toHaveLength(3);
387
- const ids = result.activatedBundles.foundationBundles.map((b) => b.chapterId);
388
- expect(ids).toContain("01-classificacao-aplicacoes");
389
- expect(ids).toContain("02-requisitos-seguranca");
390
- expect(ids).toContain("03-threat-modeling");
391
- });
392
- it("activates 09-containers-imagens when technologies includes 'containers'", () => {
393
- const cache = makeCache([]);
394
- const result = handleMapSbdToeApplicability({ riskLevel: "L2", technologies: ["containers", "ci-cd"] }, cache);
395
- const domainIds = result.activatedBundles.domainBundles.map((b) => b.chapterId);
396
- expect(domainIds).toContain("09-containers-imagens");
397
- });
398
- it("activates 07-cicd-seguro when technologies includes 'ci-cd'", () => {
399
- const cache = makeCache([]);
400
- const result = handleMapSbdToeApplicability({ riskLevel: "L1", technologies: ["ci-cd"] }, cache);
401
- const opIds = result.activatedBundles.operationalBundles.map((b) => b.chapterId);
402
- expect(opIds).toContain("07-cicd-seguro");
403
- });
404
- it("does NOT activate 13-formacao-onboarding for L1 even with hasPersonalData", () => {
405
- const cache = makeCache([]);
406
- const result = handleMapSbdToeApplicability({ riskLevel: "L1", hasPersonalData: true }, cache);
407
- const opIds = result.activatedBundles.operationalBundles.map((b) => b.chapterId);
408
- expect(opIds).not.toContain("13-formacao-onboarding");
409
- });
410
- it("activates 13-formacao-onboarding for L3", () => {
411
- const cache = makeCache([]);
412
- const result = handleMapSbdToeApplicability({ riskLevel: "L3" }, cache);
413
- const opIds = result.activatedBundles.operationalBundles.map((b) => b.chapterId);
414
- expect(opIds).toContain("13-formacao-onboarding");
415
- });
416
- it("does not activate domain/operational bundles for L1 without technologies", () => {
417
- const cache = makeCache([]);
418
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
419
- expect(result.activatedBundles.domainBundles).toHaveLength(0);
420
- expect(result.activatedBundles.operationalBundles).toHaveLength(0);
421
- });
422
- it("throws (with rpcError) when technologies contain invalid value", () => {
423
- const cache = makeCache([]);
424
- let caughtError;
425
- try {
426
- handleMapSbdToeApplicability({ riskLevel: "L1", technologies: ["invalid-tech"] }, cache);
427
- }
428
- catch (e) {
429
- caughtError = e;
430
- }
431
- expect(caughtError).toBeInstanceOf(Error);
432
- expect(caughtError.rpcError?.code).toBe(-32602);
433
- expect(caughtError.message).toContain("invalid-tech");
434
- });
435
- it("throws (with rpcError) when projectRole is invalid", () => {
436
- const cache = makeCache([]);
437
- let caughtError;
438
- try {
439
- handleMapSbdToeApplicability({ riskLevel: "L1", projectRole: "invalid-role" }, cache);
440
- }
441
- catch (e) {
442
- caughtError = e;
443
- }
444
- expect(caughtError).toBeInstanceOf(Error);
445
- expect(caughtError.rpcError?.code).toBe(-32602);
446
- });
447
- it("retro-compatible: input {riskLevel: 'L1'} without optional fields still works", () => {
448
- const cache = makeCache([
449
- makeChapterBundle("01-cap", "Cap. 01"),
450
- makePracticeAssignment("01-cap", ["L1"])
451
- ]);
452
- const result = handleMapSbdToeApplicability({ riskLevel: "L1" }, cache);
453
- expect(result.riskLevel).toBe("L1");
454
- expect(result.active).toContain("01-cap");
455
- expect(result.conditional).toEqual([]);
456
- expect(result.activatedBundles.foundationBundles).toHaveLength(3);
457
- });
458
- });
459
- //# sourceMappingURL=structured-tools.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"structured-tools.test.js","sourceRoot":"","sources":["../../src/tools/structured-tools.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};