@shiftleftpt/sbd-toe-mcp 0.1.0 → 0.5.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 (47) hide show
  1. package/.env.example +0 -3
  2. package/README.md +133 -257
  3. package/dist/config.js +0 -3
  4. package/dist/config.js.map +1 -1
  5. package/dist/tools/structured-tools.js +0 -1
  6. package/dist/tools/structured-tools.js.map +1 -1
  7. package/dist/types.d.ts +0 -3
  8. package/dist/validators/ai-disclosure.js +2 -4
  9. package/dist/validators/ai-disclosure.js.map +1 -1
  10. package/package.json +32 -6
  11. package/dist/backend/semantic-index-gateway.test.d.ts +0 -1
  12. package/dist/backend/semantic-index-gateway.test.js +0 -384
  13. package/dist/backend/semantic-index-gateway.test.js.map +0 -1
  14. package/dist/bootstrap/checkout-backend.d.ts +0 -31
  15. package/dist/bootstrap/checkout-backend.js +0 -136
  16. package/dist/bootstrap/checkout-backend.js.map +0 -1
  17. package/dist/bootstrap/checkout-backend.test.d.ts +0 -1
  18. package/dist/bootstrap/checkout-backend.test.js +0 -158
  19. package/dist/bootstrap/checkout-backend.test.js.map +0 -1
  20. package/dist/bootstrap/release-checkout.d.ts +0 -8
  21. package/dist/bootstrap/release-checkout.js +0 -168
  22. package/dist/bootstrap/release-checkout.js.map +0 -1
  23. package/dist/bootstrap/release-checkout.test.d.ts +0 -1
  24. package/dist/bootstrap/release-checkout.test.js +0 -137
  25. package/dist/bootstrap/release-checkout.test.js.map +0 -1
  26. package/dist/resources/sbd-toe-resources.test.d.ts +0 -1
  27. package/dist/resources/sbd-toe-resources.test.js +0 -134
  28. package/dist/resources/sbd-toe-resources.test.js.map +0 -1
  29. package/dist/test-utils.d.ts +0 -153
  30. package/dist/test-utils.js +0 -176
  31. package/dist/test-utils.js.map +0 -1
  32. package/dist/tools/generate-document.test.d.ts +0 -1
  33. package/dist/tools/generate-document.test.js +0 -189
  34. package/dist/tools/generate-document.test.js.map +0 -1
  35. package/dist/tools/map-review-scope.test.d.ts +0 -1
  36. package/dist/tools/map-review-scope.test.js +0 -204
  37. package/dist/tools/map-review-scope.test.js.map +0 -1
  38. package/dist/tools/plan-repo-governance.test.d.ts +0 -1
  39. package/dist/tools/plan-repo-governance.test.js +0 -237
  40. package/dist/tools/plan-repo-governance.test.js.map +0 -1
  41. package/dist/tools/structured-tools.test.d.ts +0 -1
  42. package/dist/tools/structured-tools.test.js +0 -459
  43. package/dist/tools/structured-tools.test.js.map +0 -1
  44. package/dist/validators/ai-disclosure.test.d.ts +0 -1
  45. package/dist/validators/ai-disclosure.test.js +0 -244
  46. package/dist/validators/ai-disclosure.test.js.map +0 -1
  47. package/smithery.yaml +0 -44
@@ -1,244 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { extractDisclosure, validateDisclosure, validateAIDisclosure, ALLOWED_PURPOSES, } from './ai-disclosure.js';
3
- describe('AI Disclosure Validator', () => {
4
- describe('YAML Frontmatter Parsing', () => {
5
- it('should parse valid YAML frontmatter', () => {
6
- const content = `---
7
- ai_assisted: true
8
- model: Claude Haiku 4.5
9
- date: 2026-03-24
10
- purpose: governance-doc
11
- ---
12
- # Content here`;
13
- const disclosure = extractDisclosure(content);
14
- expect(disclosure).not.toBeNull();
15
- expect(disclosure?.ai_assisted).toBe(true);
16
- expect(disclosure?.model).toBe('Claude Haiku 4.5');
17
- expect(disclosure?.date).toBe('2026-03-24');
18
- expect(disclosure?.purpose).toBe('governance-doc');
19
- });
20
- it('should parse YAML with optional fields', () => {
21
- const content = `---
22
- ai_assisted: true
23
- model: Claude 3.5 Sonnet
24
- date: 2026-01-10
25
- purpose: generated-code
26
- reasoning: Auto-generated from template
27
- review_status: pending-human-review
28
- ---
29
- Code...`;
30
- const disclosure = extractDisclosure(content);
31
- expect(disclosure?.reasoning).toBe('Auto-generated from template');
32
- expect(disclosure?.review_status).toBe('pending-human-review');
33
- });
34
- it('should handle YAML with quoted strings', () => {
35
- const content = `---
36
- ai_assisted: true
37
- model: "Claude Haiku 4.5 (pt-BR)"
38
- date: "2026-03-24"
39
- purpose: "governance-doc"
40
- ---
41
- Content`;
42
- const disclosure = extractDisclosure(content);
43
- expect(disclosure?.model).toBe('Claude Haiku 4.5 (pt-BR)');
44
- });
45
- it('should ignore YAML comments', () => {
46
- const content = `---
47
- # This is a comment
48
- ai_assisted: true
49
- model: Claude Haiku 4.5
50
- date: 2026-03-24
51
- purpose: test-plan
52
- # Another comment
53
- ---
54
- Content`;
55
- const disclosure = extractDisclosure(content);
56
- expect(disclosure?.purpose).toBe('test-plan');
57
- });
58
- });
59
- describe('HTML Comment Section Parsing', () => {
60
- it('should parse HTML comment disclosure', () => {
61
- const content = `<!-- AI-ASSISTED: true, MODEL: Claude Haiku 4.5, DATE: 2026-03-24, PURPOSE: governance-doc -->
62
- # Content here`;
63
- const disclosure = extractDisclosure(content);
64
- expect(disclosure?.ai_assisted).toBe(true);
65
- expect(disclosure?.model).toBe('Claude Haiku 4.5');
66
- expect(disclosure?.date).toBe('2026-03-24');
67
- expect(disclosure?.purpose).toBe('governance-doc');
68
- });
69
- it('should handle HTML comment with special characters', () => {
70
- const content = `<!-- AI-ASSISTED: true, MODEL: Claude Haiku 4.5 (pt-BR), DATE: 2026-03-24, PURPOSE: governance-doc + compliance -->
71
- Content`;
72
- const disclosure = extractDisclosure(content);
73
- expect(disclosure?.model).toContain('Claude Haiku');
74
- });
75
- });
76
- describe('Field Validation', () => {
77
- it('should reject disclosure without AI_ASSISTED true', () => {
78
- const raw = {
79
- ai_assisted: false,
80
- model: 'Claude',
81
- date: '2026-03-24',
82
- purpose: 'test-plan',
83
- };
84
- expect(() => validateDisclosure(raw)).toThrow('AI_ASSISTED must be true');
85
- });
86
- it('should reject disclosure without MODEL', () => {
87
- const raw = {
88
- ai_assisted: true,
89
- date: '2026-03-24',
90
- purpose: 'test-plan',
91
- };
92
- expect(() => validateDisclosure(raw)).toThrow('MODEL is required');
93
- });
94
- it('should reject disclosure with empty MODEL', () => {
95
- const raw = {
96
- ai_assisted: true,
97
- model: ' ',
98
- date: '2026-03-24',
99
- purpose: 'test-plan',
100
- };
101
- expect(() => validateDisclosure(raw)).toThrow('MODEL cannot be empty');
102
- });
103
- it('should reject disclosure without DATE', () => {
104
- const raw = {
105
- ai_assisted: true,
106
- model: 'Claude',
107
- purpose: 'test-plan',
108
- };
109
- expect(() => validateDisclosure(raw)).toThrow('DATE is required');
110
- });
111
- it('should reject invalid DATE format', () => {
112
- const raw = {
113
- ai_assisted: true,
114
- model: 'Claude',
115
- date: '2026/03/24',
116
- purpose: 'test-plan',
117
- };
118
- expect(() => validateDisclosure(raw)).toThrow('DATE must be in YYYY-MM-DD format');
119
- });
120
- it('should reject disclosure without PURPOSE', () => {
121
- const raw = {
122
- ai_assisted: true,
123
- model: 'Claude',
124
- date: '2026-03-24',
125
- };
126
- expect(() => validateDisclosure(raw)).toThrow('PURPOSE is required');
127
- });
128
- it('should reject PURPOSE not in allowlist', () => {
129
- const raw = {
130
- ai_assisted: true,
131
- model: 'Claude',
132
- date: '2026-03-24',
133
- purpose: 'invalid-purpose',
134
- };
135
- expect(() => validateDisclosure(raw)).toThrow('PURPOSE must be one of');
136
- });
137
- it('should accept all allowed PURPOSE values', () => {
138
- for (const purpose of ALLOWED_PURPOSES) {
139
- const raw = {
140
- ai_assisted: true,
141
- model: 'Claude',
142
- date: '2026-03-24',
143
- purpose,
144
- };
145
- const result = validateDisclosure(raw);
146
- expect(result.purpose).toBe(purpose);
147
- }
148
- });
149
- });
150
- describe('Full Document Validation', () => {
151
- it('should validate complete document with YAML disclosure', () => {
152
- const content = `---
153
- ai_assisted: true
154
- model: Claude Haiku 4.5
155
- date: 2026-03-24
156
- purpose: governance-doc
157
- ---
158
- # Document Title
159
- This is the content.`;
160
- const disclosure = validateAIDisclosure(content);
161
- expect(disclosure.ai_assisted).toBe(true);
162
- expect(disclosure.model).toBe('Claude Haiku 4.5');
163
- expect(disclosure.date).toBe('2026-03-24');
164
- expect(disclosure.purpose).toBe('governance-doc');
165
- });
166
- it('should validate complete document with HTML comment disclosure', () => {
167
- const content = `<!-- AI-ASSISTED: true, MODEL: Claude Haiku 4.5, DATE: 2026-03-24, PURPOSE: test-plan -->
168
- # Test Plan
169
- This is a test plan.`;
170
- const disclosure = validateAIDisclosure(content);
171
- expect(disclosure.purpose).toBe('test-plan');
172
- });
173
- it('should throw on missing disclosure', () => {
174
- const content = `# Content without disclosure
175
- This document has no AI disclosure.`;
176
- expect(() => validateAIDisclosure(content)).toThrow('No AI disclosure found in document header');
177
- });
178
- it('should throw on malformed disclosure', () => {
179
- const content = `---
180
- ai_assisted: true
181
- model:
182
- date: 2026-03-24
183
- purpose: test-plan
184
- ---
185
- Content`;
186
- expect(() => validateAIDisclosure(content)).toThrow('MODEL is required');
187
- });
188
- });
189
- describe('Edge Cases', () => {
190
- it('should handle YAML with extra whitespace', () => {
191
- const content = `---
192
- ai_assisted: true
193
- model: Claude Haiku 4.5
194
- date: 2026-03-24
195
- purpose: test-plan
196
- ---
197
- Content`;
198
- const disclosure = extractDisclosure(content);
199
- expect(disclosure?.model).toBe('Claude Haiku 4.5');
200
- });
201
- it('should handle non-existent disclosure gracefully', () => {
202
- const content = 'Just plain text without any disclosure markers.';
203
- const disclosure = extractDisclosure(content);
204
- expect(disclosure).toBeNull();
205
- });
206
- it('should reject invalid dates', () => {
207
- const raw = {
208
- ai_assisted: true,
209
- model: 'Claude',
210
- date: '2026-13-45', // Invalid month and day
211
- purpose: 'test-plan',
212
- };
213
- expect(() => validateDisclosure(raw)).toThrow('DATE must be in YYYY-MM-DD format');
214
- });
215
- it('should handle unicode and special characters in MODEL', () => {
216
- const raw = {
217
- ai_assisted: true,
218
- model: 'Claude Haiku 4.5 (pt-BR) — v2.0',
219
- date: '2026-03-24',
220
- purpose: 'documentation',
221
- };
222
- const result = validateDisclosure(raw);
223
- expect(result.model).toContain('pt-BR');
224
- });
225
- });
226
- describe('Return Type Validation', () => {
227
- it('should return properly typed AIDisclosure object', () => {
228
- const raw = {
229
- ai_assisted: true,
230
- model: 'Claude',
231
- date: '2026-03-24',
232
- purpose: 'test-plan',
233
- };
234
- const result = validateDisclosure(raw);
235
- expect(result).toHaveProperty('ai_assisted');
236
- expect(result).toHaveProperty('model');
237
- expect(result).toHaveProperty('date');
238
- expect(result).toHaveProperty('purpose');
239
- expect(typeof result.ai_assisted).toBe('boolean');
240
- expect(typeof result.model).toBe('string');
241
- });
242
- });
243
- });
244
- //# sourceMappingURL=ai-disclosure.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-disclosure.test.js","sourceRoot":"","sources":["../../src/validators/ai-disclosure.test.ts"],"names":[],"mappings":"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"}
package/smithery.yaml DELETED
@@ -1,44 +0,0 @@
1
- # smithery.yaml — Smithery MCP registry configuration
2
- # https://smithery.ai
3
- name: sbd-toe-mcp
4
- description: "MCP server for SbD-ToE security manual — structured tools for Claude, GitHub Copilot and other MCP clients"
5
- license: Apache-2.0
6
- homepage: "https://github.com/Shiftleftpt/sbd-toe-mcp-poc#readme"
7
-
8
- startCommand:
9
- type: stdio
10
- configSchema:
11
- type: object
12
- properties:
13
- DEBUG_MODE:
14
- type: string
15
- default: "false"
16
- description: "Enable debug logging (true/false)"
17
- MAX_CONTEXT_RECORDS:
18
- type: string
19
- default: "8"
20
- description: "Maximum number of records returned per query (integer ≥ 1)"
21
- SITE_BASE_URL:
22
- type: string
23
- default: "https://www.securitybydesign.dev/"
24
- description: "Base URL for the SbD-ToE website (optional override)"
25
- MANUAL_BASE_URL:
26
- type: string
27
- default: "https://www.securitybydesign.dev/sbd-toe/sbd-manual/"
28
- description: "Base URL for the SbD-ToE manual (optional override)"
29
- CROSS_CHECK_BASE_URL:
30
- type: string
31
- default: "https://www.securitybydesign.dev/sbd-toe/cross-check-normativo/"
32
- description: "Base URL for normative cross-check (optional override)"
33
- SBD_TOE_APP_ROOT:
34
- type: string
35
- description: "Override the app root path (advanced — leave empty for auto-detection)"
36
- additionalProperties: false
37
- commandFunction: |-
38
- (config) => ({
39
- command: "npx",
40
- args: ["-y", "@shiftleftpt/sbd-toe-mcp"],
41
- env: Object.fromEntries(
42
- Object.entries(config).filter(([_, v]) => v !== undefined && v !== "")
43
- )
44
- })