framework-mcp 1.1.3 → 1.2.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 (34) hide show
  1. package/.do/app.yaml +78 -0
  2. package/DEPLOYMENT_GUIDE.md +335 -0
  3. package/RELEASE_NOTES_v1.2.0.md +396 -0
  4. package/dist/core/capability-analyzer.d.ts +29 -0
  5. package/dist/core/capability-analyzer.d.ts.map +1 -0
  6. package/dist/core/capability-analyzer.js +568 -0
  7. package/dist/core/capability-analyzer.js.map +1 -0
  8. package/dist/core/safeguard-manager.d.ts +15 -0
  9. package/dist/core/safeguard-manager.d.ts.map +1 -0
  10. package/dist/core/safeguard-manager.js +315 -0
  11. package/dist/core/safeguard-manager.js.map +1 -0
  12. package/dist/index.d.ts +4 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +13 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/interfaces/http/http-server.d.ts +17 -0
  17. package/dist/interfaces/http/http-server.d.ts.map +1 -0
  18. package/dist/interfaces/http/http-server.js +285 -0
  19. package/dist/interfaces/http/http-server.js.map +1 -0
  20. package/dist/interfaces/mcp/mcp-server.d.ts +18 -0
  21. package/dist/interfaces/mcp/mcp-server.d.ts.map +1 -0
  22. package/dist/interfaces/mcp/mcp-server.js +299 -0
  23. package/dist/interfaces/mcp/mcp-server.js.map +1 -0
  24. package/dist/shared/types.d.ts +89 -0
  25. package/dist/shared/types.d.ts.map +1 -0
  26. package/dist/shared/types.js +3 -0
  27. package/dist/shared/types.js.map +1 -0
  28. package/package.json +16 -6
  29. package/src/core/capability-analyzer.ts +708 -0
  30. package/src/core/safeguard-manager.ts +339 -0
  31. package/src/index.ts +17 -0
  32. package/src/interfaces/http/http-server.ts +360 -0
  33. package/src/interfaces/mcp/mcp-server.ts +367 -0
  34. package/src/shared/types.ts +104 -0
@@ -0,0 +1,568 @@
1
+ // Domain-specific validation mapping
2
+ const SAFEGUARD_DOMAIN_REQUIREMENTS = {
3
+ "1.1": {
4
+ domain: "Asset Inventory",
5
+ required_tool_types: ["inventory", "asset_management", "cmdb", "discovery"],
6
+ description: "Only asset inventory and discovery tools can provide FULL/PARTIAL implementation capability"
7
+ },
8
+ "1.2": {
9
+ domain: "Asset Management",
10
+ required_tool_types: ["inventory", "asset_management", "network_security", "nac"],
11
+ description: "Asset management or network access control tools required for FULL/PARTIAL implementation capability"
12
+ },
13
+ "5.1": {
14
+ domain: "Account Management",
15
+ required_tool_types: ["identity_management", "iam", "directory", "account_management"],
16
+ description: "Identity and account management tools required for FULL/PARTIAL implementation capability"
17
+ },
18
+ "6.3": {
19
+ domain: "Authentication",
20
+ required_tool_types: ["mfa", "authentication", "identity_management", "iam"],
21
+ description: "Multi-factor authentication and identity tools required for FULL/PARTIAL implementation capability"
22
+ },
23
+ "7.1": {
24
+ domain: "Vulnerability Management",
25
+ required_tool_types: ["vulnerability_management", "vulnerability_scanner", "patch_management"],
26
+ description: "Vulnerability management and scanning tools required for FULL/PARTIAL implementation capability"
27
+ }
28
+ };
29
+ // Tool type detection weights for enhanced accuracy
30
+ const TOOL_TYPE_DETECTION_WEIGHTS = {
31
+ inventory: {
32
+ keywords: ['inventory', 'asset discovery', 'device enumeration', 'cmdb', 'configuration management database'],
33
+ baseWeight: 3,
34
+ contextBonuses: ['asset', 'device', 'hardware', 'software', 'endpoint']
35
+ },
36
+ asset_management: {
37
+ keywords: ['asset management', 'asset tracking', 'asset lifecycle', 'asset monitoring'],
38
+ baseWeight: 3,
39
+ contextBonuses: ['lifecycle', 'tracking', 'monitoring', 'management']
40
+ },
41
+ identity_management: {
42
+ keywords: ['identity', 'iam', 'identity management', 'user management', 'directory'],
43
+ baseWeight: 3,
44
+ contextBonuses: ['user', 'account', 'authentication', 'authorization', 'ldap', 'active directory']
45
+ },
46
+ vulnerability_management: {
47
+ keywords: ['vulnerability', 'vuln', 'security scanning', 'penetration testing', 'patch management'],
48
+ baseWeight: 3,
49
+ contextBonuses: ['scan', 'test', 'patch', 'remediation', 'cve']
50
+ },
51
+ threat_intelligence: {
52
+ keywords: ['threat intelligence', 'threat feeds', 'ioc', 'indicators', 'threat data'],
53
+ baseWeight: 2,
54
+ contextBonuses: ['intelligence', 'feeds', 'indicators', 'malware', 'threat']
55
+ },
56
+ governance: {
57
+ keywords: ['grc', 'governance', 'compliance management', 'policy management', 'risk management'],
58
+ baseWeight: 2,
59
+ contextBonuses: ['policy', 'compliance', 'governance', 'risk', 'audit']
60
+ }
61
+ };
62
+ export class CapabilityAnalyzer {
63
+ constructor() {
64
+ this.cache = new Map();
65
+ this.performanceMetrics = {
66
+ uptime: Date.now(),
67
+ totalRequests: 0,
68
+ errorCount: 0,
69
+ requestCounts: new Map(),
70
+ executionTimes: new Map(),
71
+ lastStatsLog: Date.now()
72
+ };
73
+ // Set up periodic cache cleanup
74
+ setInterval(() => {
75
+ this.cleanupExpiredCache();
76
+ }, 10 * 60 * 1000); // Every 10 minutes
77
+ }
78
+ performCapabilityAnalysis(vendorName, safeguard, responseText) {
79
+ const startTime = Date.now();
80
+ try {
81
+ this.performanceMetrics.totalRequests++;
82
+ const text = responseText.toLowerCase();
83
+ // Step 1: Determine what type of capability this tool is claiming
84
+ const claimedCapability = this.determineClaimedCapability(text, safeguard);
85
+ // Step 2: Assess how well the tool executes that specific capability type
86
+ const qualityAssessment = this.assessCapabilityQuality(text, safeguard, claimedCapability);
87
+ // Step 3: Generate capability-focused analysis
88
+ const result = this.generateCapabilityAnalysis(vendorName, safeguard, responseText, claimedCapability, qualityAssessment);
89
+ // Record performance metrics
90
+ this.recordToolExecution('performCapabilityAnalysis', Date.now() - startTime);
91
+ return result;
92
+ }
93
+ catch (error) {
94
+ this.performanceMetrics.errorCount++;
95
+ this.recordToolExecution('performCapabilityAnalysis_error', Date.now() - startTime);
96
+ throw error;
97
+ }
98
+ }
99
+ validateVendorMapping(vendorName, safeguardId, claimedCapability, supportingText, safeguard) {
100
+ const startTime = Date.now();
101
+ try {
102
+ this.performanceMetrics.totalRequests++;
103
+ const text = supportingText.toLowerCase();
104
+ // Detect tool type and validate domain match
105
+ const detectedToolType = this.detectToolType(supportingText, safeguard.id);
106
+ const domainValidation = this.validateDomainMatch(safeguard.id, claimedCapability, detectedToolType);
107
+ // Adjust capability if domain mismatch detected
108
+ let effectiveCapability = claimedCapability;
109
+ let originalClaim;
110
+ if (domainValidation.should_adjust_capability) {
111
+ originalClaim = claimedCapability;
112
+ effectiveCapability = domainValidation.adjusted_capability;
113
+ }
114
+ // Perform capability-focused analysis of the supporting text
115
+ const actualAnalysis = this.performCapabilityAnalysis(vendorName, safeguard, supportingText);
116
+ // Validate claimed capability against actual capability analysis and domain requirements
117
+ const validation = this.assessCapabilityClaimAlignment(claimedCapability, effectiveCapability, actualAnalysis, domainValidation, text);
118
+ // Add domain validation gaps if capability was adjusted
119
+ if (domainValidation.should_adjust_capability) {
120
+ validation.gaps.unshift(`Domain mismatch: ${domainValidation.reasoning}`);
121
+ validation.recommendations.unshift(`Correct capability mapping should be '${effectiveCapability.toUpperCase()}' for ${detectedToolType} tools`);
122
+ // Reduce confidence for domain mismatches
123
+ validation.confidence = Math.max(validation.confidence - 20, 0);
124
+ }
125
+ const result = {
126
+ vendor: vendorName,
127
+ safeguard_id: safeguard.id,
128
+ safeguard_title: safeguard.title,
129
+ claimed_capability: claimedCapability,
130
+ validation_status: validation.status,
131
+ confidence_score: validation.confidence,
132
+ evidence_analysis: {
133
+ core_requirements_coverage: validation.core_requirements_coverage || 0,
134
+ sub_elements_coverage: validation.sub_elements_coverage || 0,
135
+ governance_alignment: validation.governance_alignment || 0,
136
+ language_consistency: validation.language_consistency || 0
137
+ },
138
+ domain_validation: {
139
+ required_tool_type: domainValidation.required_tool_types.join('/'),
140
+ detected_tool_type: detectedToolType,
141
+ domain_match: domainValidation.domain_match,
142
+ capability_adjusted: domainValidation.should_adjust_capability,
143
+ original_claim: originalClaim
144
+ },
145
+ gaps_identified: validation.gaps,
146
+ strengths_identified: validation.strengths,
147
+ recommendations: validation.recommendations,
148
+ detailed_feedback: validation.feedback
149
+ };
150
+ // Record performance metrics
151
+ this.recordToolExecution('validateVendorMapping', Date.now() - startTime);
152
+ return result;
153
+ }
154
+ catch (error) {
155
+ this.performanceMetrics.errorCount++;
156
+ this.recordToolExecution('validateVendorMapping_error', Date.now() - startTime);
157
+ throw error;
158
+ }
159
+ }
160
+ determineClaimedCapability(text, safeguard) {
161
+ // Capability detection keywords - focused on what the tool DOES, not what elements it covers
162
+ const governanceIndicators = [
163
+ 'policy', 'policies', 'manage', 'process', 'workflow', 'governance', 'grc',
164
+ 'compliance management', 'documented', 'establish', 'maintain', 'procedure',
165
+ 'control', 'controls', 'framework', 'standard', 'enterprise risk management',
166
+ 'centralized management', 'oversight'
167
+ ];
168
+ const facilitatesIndicators = [
169
+ 'improve', 'enhance', 'optimize', 'faster', 'better', 'stronger', 'automate',
170
+ 'streamline', 'efficiency', 'facilitate', 'support', 'enable', 'accelerate',
171
+ 'api', 'integration', 'data', 'export', 'import', 'sync', 'feed',
172
+ 'provides data', 'data source', 'data feeds', 'enrichment', 'data enrichment',
173
+ 'supplemental data', 'additional data', 'contextual data', 'threat data',
174
+ 'intelligence feeds', 'data aggregation', 'data collection', 'data gathering',
175
+ 'feeds data', 'populates', 'informs', 'enriches', 'supplements',
176
+ 'enables compliance', 'facilitates implementation', 'supports compliance',
177
+ 'creates framework', 'enables organizations', 'infrastructure', 'foundation',
178
+ 'template', 'templates', 'workflow automation', 'orchestration'
179
+ ];
180
+ const validatesIndicators = [
181
+ 'audit', 'report', 'evidence', 'verify', 'validate', 'check', 'monitor',
182
+ 'compliance', 'compliance report', 'assessment', 'logging', 'tracking', 'review', 'attest',
183
+ 'dashboard', 'metrics', 'analytics', 'visibility', 'alert', 'attestation',
184
+ 'compliance tracking', 'audit trail', 'reporting capabilities', 'audit capabilities'
185
+ ];
186
+ // Direct implementation indicators (tools that actually perform the safeguard)
187
+ const implementationIndicators = this.getImplementationIndicators(safeguard.id);
188
+ // Calculate keyword presence scores
189
+ const governanceScore = this.calculateKeywordScore(text, governanceIndicators);
190
+ const facilitatesScore = this.calculateKeywordScore(text, facilitatesIndicators);
191
+ const validatesScore = this.calculateKeywordScore(text, validatesIndicators);
192
+ const implementationScore = this.calculateKeywordScore(text, implementationIndicators);
193
+ // Determine claimed capability based on strongest indicators and patterns
194
+ if (implementationScore > 0.2 && implementationScore >= Math.max(facilitatesScore, governanceScore, validatesScore)) {
195
+ // Tool claims to directly implement the safeguard
196
+ return implementationScore > 0.5 ? 'full' : 'partial';
197
+ }
198
+ else if (governanceScore > 0.2 && governanceScore >= Math.max(facilitatesScore, validatesScore)) {
199
+ return 'governance';
200
+ }
201
+ else if (validatesScore > 0.2 && validatesScore >= facilitatesScore) {
202
+ return 'validates';
203
+ }
204
+ else {
205
+ return 'facilitates';
206
+ }
207
+ }
208
+ getImplementationIndicators(safeguardId) {
209
+ // Return specific indicators for what constitutes direct implementation for each safeguard
210
+ const implementationMap = {
211
+ "1.1": ['inventory', 'discovery', 'asset management', 'catalog', 'enumerate', 'scan devices', 'device database'],
212
+ "1.2": ['unauthorized', 'rogue', 'detect', 'identify unauthorized', 'quarantine', 'block unauthorized'],
213
+ "5.1": ['account inventory', 'user management', 'identity management', 'account lifecycle', 'user provisioning'],
214
+ "6.3": ['multi-factor', 'mfa', '2fa', 'authentication', 'two-factor', 'multi-factor authentication'],
215
+ "7.1": ['vulnerability', 'vuln', 'scanning', 'vulnerability management', 'security testing', 'penetration testing']
216
+ };
217
+ return implementationMap[safeguardId] || [];
218
+ }
219
+ assessCapabilityQuality(text, safeguard, claimedCapability) {
220
+ // Assess how well the tool executes the claimed capability type
221
+ const evidence = [];
222
+ const gaps = [];
223
+ // Quality assessment based on capability type
224
+ let qualityScore = 0;
225
+ switch (claimedCapability) {
226
+ case 'full':
227
+ case 'partial':
228
+ qualityScore = this.assessImplementationQuality(text, safeguard, evidence, gaps);
229
+ break;
230
+ case 'facilitates':
231
+ qualityScore = this.assessFacilitationQuality(text, evidence, gaps);
232
+ break;
233
+ case 'governance':
234
+ qualityScore = this.assessGovernanceQuality(text, evidence, gaps);
235
+ break;
236
+ case 'validates':
237
+ qualityScore = this.assessValidationQuality(text, evidence, gaps);
238
+ break;
239
+ }
240
+ const quality = qualityScore >= 0.8 ? 'excellent' :
241
+ qualityScore >= 0.6 ? 'good' :
242
+ qualityScore >= 0.4 ? 'fair' : 'poor';
243
+ return {
244
+ quality,
245
+ confidence: Math.round(qualityScore * 100),
246
+ evidence,
247
+ gaps
248
+ };
249
+ }
250
+ assessImplementationQuality(text, safeguard, evidence, gaps) {
251
+ let score = 0;
252
+ // Check for core implementation elements
253
+ const coreScore = this.calculateElementCoverage(text, safeguard.coreRequirements);
254
+ const subElementScore = this.calculateElementCoverage(text, safeguard.subTaxonomicalElements);
255
+ const governanceScore = this.calculateElementCoverage(text, safeguard.governanceElements);
256
+ if (coreScore > 0.5) {
257
+ evidence.push('Strong coverage of core requirements');
258
+ score += 0.4;
259
+ }
260
+ else if (coreScore > 0.2) {
261
+ evidence.push('Partial coverage of core requirements');
262
+ score += 0.2;
263
+ }
264
+ else {
265
+ gaps.push('Limited coverage of core requirements');
266
+ }
267
+ if (subElementScore > 0.3) {
268
+ evidence.push('Good coverage of sub-taxonomical elements');
269
+ score += 0.3;
270
+ }
271
+ else {
272
+ gaps.push('Limited sub-element coverage');
273
+ }
274
+ if (governanceScore > 0.3) {
275
+ evidence.push('Addresses governance requirements');
276
+ score += 0.3;
277
+ }
278
+ else {
279
+ gaps.push('Limited governance element coverage');
280
+ }
281
+ return Math.min(score, 1.0);
282
+ }
283
+ assessFacilitationQuality(text, evidence, gaps) {
284
+ let score = 0;
285
+ const facilitationKeywords = ['enhance', 'improve', 'optimize', 'enable', 'support', 'facilitate', 'streamline'];
286
+ const integrationKeywords = ['api', 'integration', 'data feed', 'export', 'import', 'sync'];
287
+ const automationKeywords = ['automate', 'automated', 'orchestration', 'workflow'];
288
+ if (this.calculateKeywordScore(text, facilitationKeywords) > 0.1) {
289
+ evidence.push('Clear facilitation capabilities');
290
+ score += 0.4;
291
+ }
292
+ if (this.calculateKeywordScore(text, integrationKeywords) > 0.1) {
293
+ evidence.push('Integration and data sharing capabilities');
294
+ score += 0.3;
295
+ }
296
+ if (this.calculateKeywordScore(text, automationKeywords) > 0.1) {
297
+ evidence.push('Automation and workflow capabilities');
298
+ score += 0.3;
299
+ }
300
+ if (score < 0.4) {
301
+ gaps.push('Limited evidence of facilitation capabilities');
302
+ }
303
+ return Math.min(score, 1.0);
304
+ }
305
+ assessGovernanceQuality(text, evidence, gaps) {
306
+ let score = 0;
307
+ const policyKeywords = ['policy', 'policies', 'procedure', 'standard', 'framework'];
308
+ const processKeywords = ['process', 'workflow', 'governance', 'management', 'oversight'];
309
+ const complianceKeywords = ['compliance', 'grc', 'audit', 'risk management'];
310
+ if (this.calculateKeywordScore(text, policyKeywords) > 0.1) {
311
+ evidence.push('Policy and procedure management');
312
+ score += 0.4;
313
+ }
314
+ if (this.calculateKeywordScore(text, processKeywords) > 0.1) {
315
+ evidence.push('Process and workflow capabilities');
316
+ score += 0.3;
317
+ }
318
+ if (this.calculateKeywordScore(text, complianceKeywords) > 0.1) {
319
+ evidence.push('Compliance and risk management features');
320
+ score += 0.3;
321
+ }
322
+ if (score < 0.4) {
323
+ gaps.push('Limited governance capabilities evident');
324
+ }
325
+ return Math.min(score, 1.0);
326
+ }
327
+ assessValidationQuality(text, evidence, gaps) {
328
+ let score = 0;
329
+ const auditKeywords = ['audit', 'audit trail', 'evidence', 'verification', 'validation'];
330
+ const reportingKeywords = ['report', 'reporting', 'dashboard', 'metrics', 'analytics'];
331
+ const monitoringKeywords = ['monitor', 'monitoring', 'tracking', 'logging', 'alerting'];
332
+ if (this.calculateKeywordScore(text, auditKeywords) > 0.1) {
333
+ evidence.push('Audit and evidence collection capabilities');
334
+ score += 0.4;
335
+ }
336
+ if (this.calculateKeywordScore(text, reportingKeywords) > 0.1) {
337
+ evidence.push('Reporting and analytics features');
338
+ score += 0.3;
339
+ }
340
+ if (this.calculateKeywordScore(text, monitoringKeywords) > 0.1) {
341
+ evidence.push('Monitoring and tracking capabilities');
342
+ score += 0.3;
343
+ }
344
+ if (score < 0.4) {
345
+ gaps.push('Limited validation and evidence capabilities');
346
+ }
347
+ return Math.min(score, 1.0);
348
+ }
349
+ generateCapabilityAnalysis(vendorName, safeguard, responseText, claimedCapability, qualityAssessment) {
350
+ const capabilities = {
351
+ full: claimedCapability === 'full',
352
+ partial: claimedCapability === 'partial',
353
+ facilitates: claimedCapability === 'facilitates',
354
+ governance: claimedCapability === 'governance',
355
+ validates: claimedCapability === 'validates'
356
+ };
357
+ const toolCapabilityDescription = this.generateToolCapabilityDescription(claimedCapability, qualityAssessment);
358
+ const recommendedUse = this.generateRecommendedUse(claimedCapability, safeguard);
359
+ return {
360
+ vendor: vendorName,
361
+ safeguardId: safeguard.id,
362
+ safeguardTitle: safeguard.title,
363
+ capability: claimedCapability,
364
+ capabilities,
365
+ confidence: qualityAssessment.confidence,
366
+ reasoning: `Primary capability: ${claimedCapability.toUpperCase()} (${qualityAssessment.quality} quality)`,
367
+ evidence: qualityAssessment.evidence,
368
+ toolCapabilityDescription,
369
+ recommendedUse
370
+ };
371
+ }
372
+ generateToolCapabilityDescription(capability, quality) {
373
+ const qualityDescriptions = {
374
+ excellent: 'comprehensive and well-implemented',
375
+ good: 'solid and effective',
376
+ fair: 'basic but functional',
377
+ poor: 'limited or unclear'
378
+ };
379
+ const capabilityDescriptions = {
380
+ full: 'directly implements the complete safeguard functionality',
381
+ partial: 'implements specific aspects of the safeguard with defined scope',
382
+ facilitates: 'enhances and enables safeguard implementation by other tools or processes',
383
+ governance: 'provides policy, process management, and oversight capabilities',
384
+ validates: 'provides evidence collection, audit, and compliance validation capabilities'
385
+ };
386
+ return `This tool ${capabilityDescriptions[capability]} with ${qualityDescriptions[quality.quality]} capabilities.`;
387
+ }
388
+ generateRecommendedUse(capability, safeguard) {
389
+ const recommendations = {
390
+ full: `Use as the primary implementation tool for ${safeguard.title}. Ensure comprehensive deployment and configuration.`,
391
+ partial: `Use as a component within a broader safeguard implementation strategy. Supplement with additional tools or processes.`,
392
+ facilitates: `Use to enhance and optimize existing safeguard implementation. Integrate with primary implementation tools.`,
393
+ governance: `Use for policy management, process oversight, and compliance framework establishment for ${safeguard.title}.`,
394
+ validates: `Use for evidence collection, audit preparation, and compliance validation of ${safeguard.title} implementation.`
395
+ };
396
+ return recommendations[capability];
397
+ }
398
+ detectToolType(text, safeguardId) {
399
+ const lowerText = text.toLowerCase();
400
+ let bestMatch = 'unknown';
401
+ let highestScore = 0;
402
+ for (const [toolType, config] of Object.entries(TOOL_TYPE_DETECTION_WEIGHTS)) {
403
+ let score = 0;
404
+ // Base keyword matching
405
+ for (const keyword of config.keywords) {
406
+ if (lowerText.includes(keyword.toLowerCase())) {
407
+ score += config.baseWeight;
408
+ }
409
+ }
410
+ // Context bonus keywords
411
+ for (const bonus of config.contextBonuses) {
412
+ if (lowerText.includes(bonus.toLowerCase())) {
413
+ score += 1;
414
+ }
415
+ }
416
+ if (score > highestScore) {
417
+ highestScore = score;
418
+ bestMatch = toolType;
419
+ }
420
+ }
421
+ return bestMatch;
422
+ }
423
+ validateDomainMatch(safeguardId, claimedCapability, detectedToolType) {
424
+ const domainReq = SAFEGUARD_DOMAIN_REQUIREMENTS[safeguardId];
425
+ if (!domainReq) {
426
+ return {
427
+ domain_match: true,
428
+ should_adjust_capability: false,
429
+ required_tool_types: ['any'],
430
+ reasoning: 'No specific domain requirements for this safeguard'
431
+ };
432
+ }
433
+ const needsDomainValidation = ['full', 'partial'].includes(claimedCapability.toLowerCase());
434
+ if (!needsDomainValidation) {
435
+ return {
436
+ domain_match: true,
437
+ should_adjust_capability: false,
438
+ required_tool_types: domainReq.required_tool_types,
439
+ reasoning: 'Domain validation not required for this capability type'
440
+ };
441
+ }
442
+ const domainMatch = domainReq.required_tool_types.includes(detectedToolType);
443
+ return {
444
+ domain_match: domainMatch,
445
+ should_adjust_capability: !domainMatch,
446
+ adjusted_capability: !domainMatch ? 'facilitates' : undefined,
447
+ required_tool_types: domainReq.required_tool_types,
448
+ reasoning: !domainMatch ?
449
+ `Tool type '${detectedToolType}' cannot provide ${claimedCapability.toUpperCase()} coverage for ${domainReq.domain} safeguards` :
450
+ 'Tool type matches domain requirements'
451
+ };
452
+ }
453
+ assessCapabilityClaimAlignment(claimedCapability, effectiveCapability, actualAnalysis, domainValidation, text) {
454
+ const gaps = [];
455
+ const strengths = [];
456
+ const recommendations = [];
457
+ let confidence = actualAnalysis.confidence;
458
+ let status = 'SUPPORTED';
459
+ // Assess alignment between claimed and detected capabilities
460
+ if (actualAnalysis.capability !== effectiveCapability.toLowerCase()) {
461
+ gaps.push(`Claimed capability '${claimedCapability}' differs from detected capability '${actualAnalysis.capability}'`);
462
+ confidence = Math.max(confidence - 15, 0);
463
+ }
464
+ // Add evidence from actual analysis
465
+ if (actualAnalysis.evidence.length > 0) {
466
+ strengths.push(...actualAnalysis.evidence);
467
+ }
468
+ // Determine final validation status
469
+ if (confidence < 40) {
470
+ status = 'UNSUPPORTED';
471
+ }
472
+ else if (confidence < 70 || !domainValidation.domain_match) {
473
+ status = 'QUESTIONABLE';
474
+ }
475
+ return {
476
+ status,
477
+ confidence,
478
+ gaps,
479
+ strengths,
480
+ recommendations,
481
+ feedback: this.generateValidationFeedback(claimedCapability, actualAnalysis, domainValidation, confidence, status),
482
+ core_requirements_coverage: 85, // Placeholder - would calculate from actual analysis
483
+ sub_elements_coverage: 75,
484
+ governance_alignment: 80,
485
+ language_consistency: 90
486
+ };
487
+ }
488
+ generateValidationFeedback(claimedCapability, actualAnalysis, domainValidation, confidence, status) {
489
+ let feedback = `Validation of ${claimedCapability.toUpperCase()} capability claim: ${status} (${confidence}% alignment)\n\n`;
490
+ if (domainValidation.should_adjust_capability) {
491
+ feedback += `DOMAIN VALIDATION: Tool type '${domainValidation.detected_tool_type}' cannot provide ${claimedCapability.toUpperCase()} coverage for this safeguard. Capability automatically adjusted to FACILITATES.\n\n`;
492
+ }
493
+ if (actualAnalysis.evidence.length > 0) {
494
+ feedback += 'STRENGTHS:\n';
495
+ actualAnalysis.evidence.forEach(evidence => {
496
+ feedback += `• ${evidence}\n`;
497
+ });
498
+ feedback += '\n';
499
+ }
500
+ feedback += `ASSESSMENT: ${actualAnalysis.toolCapabilityDescription}\n\n`;
501
+ feedback += `RECOMMENDED USE: ${actualAnalysis.recommendedUse}`;
502
+ return feedback;
503
+ }
504
+ calculateKeywordScore(text, keywords) {
505
+ let matches = 0;
506
+ for (const keyword of keywords) {
507
+ if (text.includes(keyword.toLowerCase())) {
508
+ matches++;
509
+ }
510
+ }
511
+ return keywords.length > 0 ? matches / keywords.length : 0;
512
+ }
513
+ calculateElementCoverage(text, elements) {
514
+ let matches = 0;
515
+ for (const element of elements) {
516
+ if (text.includes(element.toLowerCase())) {
517
+ matches++;
518
+ }
519
+ }
520
+ return elements.length > 0 ? matches / elements.length : 0;
521
+ }
522
+ recordToolExecution(toolName, executionTime) {
523
+ // Update request count
524
+ const currentCount = this.performanceMetrics.requestCounts.get(toolName) || 0;
525
+ this.performanceMetrics.requestCounts.set(toolName, currentCount + 1);
526
+ // Update execution times (keep last 100 measurements for rolling average)
527
+ const times = this.performanceMetrics.executionTimes.get(toolName) || [];
528
+ times.push(executionTime);
529
+ if (times.length > 100) {
530
+ times.shift(); // Remove oldest measurement
531
+ }
532
+ this.performanceMetrics.executionTimes.set(toolName, times);
533
+ // Log performance stats every 5 minutes in production
534
+ if (process.env.NODE_ENV === 'production' &&
535
+ Date.now() - this.performanceMetrics.lastStatsLog > 5 * 60 * 1000) {
536
+ this.logPerformanceStats();
537
+ }
538
+ }
539
+ logPerformanceStats() {
540
+ const uptime = Math.round((Date.now() - this.performanceMetrics.uptime) / 1000);
541
+ const errorRate = (this.performanceMetrics.errorCount / this.performanceMetrics.totalRequests * 100).toFixed(1);
542
+ console.log(`[Framework MCP Performance] Uptime: ${uptime}s, Requests: ${this.performanceMetrics.totalRequests}, Error Rate: ${errorRate}%`);
543
+ // Log per-tool average execution times
544
+ for (const [toolName, times] of this.performanceMetrics.executionTimes.entries()) {
545
+ const avgTime = times.reduce((a, b) => a + b, 0) / times.length;
546
+ console.log(`[Framework MCP Performance] ${toolName}: ${Math.round(avgTime)}ms avg`);
547
+ }
548
+ this.performanceMetrics.lastStatsLog = Date.now();
549
+ }
550
+ cleanupExpiredCache() {
551
+ const now = Date.now();
552
+ const expiredKeys = [];
553
+ for (const [key, entry] of this.cache.entries()) {
554
+ // Cache TTL: 5 minutes for most entries
555
+ if (now - entry.timestamp > 5 * 60 * 1000) {
556
+ expiredKeys.push(key);
557
+ }
558
+ }
559
+ expiredKeys.forEach(key => this.cache.delete(key));
560
+ if (expiredKeys.length > 0) {
561
+ console.log(`[Framework MCP Cache] Cleaned up ${expiredKeys.length} expired entries`);
562
+ }
563
+ }
564
+ getPerformanceMetrics() {
565
+ return { ...this.performanceMetrics };
566
+ }
567
+ }
568
+ //# sourceMappingURL=capability-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-analyzer.js","sourceRoot":"","sources":["../../src/core/capability-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SafeguardElement } from '../shared/types.js';
2
+ export declare class SafeguardManager {
3
+ private cache;
4
+ private safeguards;
5
+ constructor();
6
+ getSafeguardDetails(safeguardId: string, includeExamples?: boolean): SafeguardElement | null;
7
+ listAvailableSafeguards(): string[];
8
+ getAllSafeguards(): Record<string, SafeguardElement>;
9
+ validateSafeguardId(safeguardId: string): void;
10
+ private getCachedSafeguardDetails;
11
+ private addImplementationExamples;
12
+ private getImplementationExamples;
13
+ private initializeSafeguards;
14
+ }
15
+ //# sourceMappingURL=safeguard-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeguard-manager.d.ts","sourceRoot":"","sources":["../../src/core/safeguard-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAc,MAAM,oBAAoB,CAAC;AAElE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAwC;;IAOnD,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,GAAE,OAAe,GAAG,gBAAgB,GAAG,IAAI;IA4BnG,uBAAuB,IAAI,MAAM,EAAE;IAsBnC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAIpD,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAerD,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,yBAAyB;IA2BjC,OAAO,CAAC,oBAAoB;CAgN7B"}