couchloop-eq-mcp 1.0.4 → 1.1.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.
- package/README.md +24 -11
- package/dist/developer/analyzers/bloat-detector.d.ts +89 -0
- package/dist/developer/analyzers/bloat-detector.d.ts.map +1 -0
- package/dist/developer/analyzers/bloat-detector.js +483 -0
- package/dist/developer/analyzers/bloat-detector.js.map +1 -0
- package/dist/developer/backup/auto-backup.d.ts +96 -0
- package/dist/developer/backup/auto-backup.d.ts.map +1 -0
- package/dist/developer/backup/auto-backup.js +346 -0
- package/dist/developer/backup/auto-backup.js.map +1 -0
- package/dist/developer/blockers/package-blocker.d.ts +33 -0
- package/dist/developer/blockers/package-blocker.d.ts.map +1 -0
- package/dist/developer/blockers/package-blocker.js +224 -0
- package/dist/developer/blockers/package-blocker.js.map +1 -0
- package/dist/developer/evaluators/ai-error-preventer.d.ts +54 -0
- package/dist/developer/evaluators/ai-error-preventer.d.ts.map +1 -0
- package/dist/developer/evaluators/ai-error-preventer.js +270 -0
- package/dist/developer/evaluators/ai-error-preventer.js.map +1 -0
- package/dist/developer/evaluators/build-context-detector.d.ts +44 -0
- package/dist/developer/evaluators/build-context-detector.d.ts.map +1 -0
- package/dist/developer/evaluators/build-context-detector.js +258 -0
- package/dist/developer/evaluators/build-context-detector.js.map +1 -0
- package/dist/developer/evaluators/package-evaluator.d.ts +37 -0
- package/dist/developer/evaluators/package-evaluator.d.ts.map +1 -0
- package/dist/developer/evaluators/package-evaluator.js +278 -0
- package/dist/developer/evaluators/package-evaluator.js.map +1 -0
- package/dist/developer/guards/file-guardian.d.ts +79 -0
- package/dist/developer/guards/file-guardian.d.ts.map +1 -0
- package/dist/developer/guards/file-guardian.js +309 -0
- package/dist/developer/guards/file-guardian.js.map +1 -0
- package/dist/developer/managers/context-manager.d.ts +61 -0
- package/dist/developer/managers/context-manager.d.ts.map +1 -0
- package/dist/developer/managers/context-manager.js +302 -0
- package/dist/developer/managers/context-manager.js.map +1 -0
- package/dist/developer/metrics/complexity-calculator.d.ts +52 -0
- package/dist/developer/metrics/complexity-calculator.d.ts.map +1 -0
- package/dist/developer/metrics/complexity-calculator.js +259 -0
- package/dist/developer/metrics/complexity-calculator.js.map +1 -0
- package/dist/developer/reports/review-summary.d.ts +49 -0
- package/dist/developer/reports/review-summary.d.ts.map +1 -0
- package/dist/developer/reports/review-summary.js +249 -0
- package/dist/developer/reports/review-summary.js.map +1 -0
- package/dist/developer/scanners/review-assistant.d.ts +41 -0
- package/dist/developer/scanners/review-assistant.d.ts.map +1 -0
- package/dist/developer/scanners/review-assistant.js +374 -0
- package/dist/developer/scanners/review-assistant.js.map +1 -0
- package/dist/developer/scanners/secret-scanner.d.ts +66 -0
- package/dist/developer/scanners/secret-scanner.d.ts.map +1 -0
- package/dist/developer/scanners/secret-scanner.js +287 -0
- package/dist/developer/scanners/secret-scanner.js.map +1 -0
- package/dist/developer/scanners/sql-injection-detector.d.ts +54 -0
- package/dist/developer/scanners/sql-injection-detector.d.ts.map +1 -0
- package/dist/developer/scanners/sql-injection-detector.js +174 -0
- package/dist/developer/scanners/sql-injection-detector.js.map +1 -0
- package/dist/developer/scanners/xss-detector.d.ts +60 -0
- package/dist/developer/scanners/xss-detector.d.ts.map +1 -0
- package/dist/developer/scanners/xss-detector.js +229 -0
- package/dist/developer/scanners/xss-detector.js.map +1 -0
- package/dist/developer/types/ai-errors.d.ts +34 -0
- package/dist/developer/types/ai-errors.d.ts.map +1 -0
- package/dist/developer/types/ai-errors.js +271 -0
- package/dist/developer/types/ai-errors.js.map +1 -0
- package/dist/developer/types/package.d.ts +32 -0
- package/dist/developer/types/package.d.ts.map +1 -0
- package/dist/developer/types/package.js +5 -0
- package/dist/developer/types/package.js.map +1 -0
- package/dist/developer/updaters/dependency-updater.d.ts +102 -0
- package/dist/developer/updaters/dependency-updater.d.ts.map +1 -0
- package/dist/developer/updaters/dependency-updater.js +472 -0
- package/dist/developer/updaters/dependency-updater.js.map +1 -0
- package/dist/developer/validators/cargo.d.ts +14 -0
- package/dist/developer/validators/cargo.d.ts.map +1 -0
- package/dist/developer/validators/cargo.js +132 -0
- package/dist/developer/validators/cargo.js.map +1 -0
- package/dist/developer/validators/gem.d.ts +14 -0
- package/dist/developer/validators/gem.d.ts.map +1 -0
- package/dist/developer/validators/gem.js +85 -0
- package/dist/developer/validators/gem.js.map +1 -0
- package/dist/developer/validators/go.d.ts +14 -0
- package/dist/developer/validators/go.d.ts.map +1 -0
- package/dist/developer/validators/go.js +138 -0
- package/dist/developer/validators/go.js.map +1 -0
- package/dist/developer/validators/maven.d.ts +14 -0
- package/dist/developer/validators/maven.d.ts.map +1 -0
- package/dist/developer/validators/maven.js +99 -0
- package/dist/developer/validators/maven.js.map +1 -0
- package/dist/developer/validators/npm.d.ts +14 -0
- package/dist/developer/validators/npm.d.ts.map +1 -0
- package/dist/developer/validators/npm.js +96 -0
- package/dist/developer/validators/npm.js.map +1 -0
- package/dist/developer/validators/nuget.d.ts +15 -0
- package/dist/developer/validators/nuget.d.ts.map +1 -0
- package/dist/developer/validators/nuget.js +107 -0
- package/dist/developer/validators/nuget.js.map +1 -0
- package/dist/developer/validators/pypi.d.ts +14 -0
- package/dist/developer/validators/pypi.d.ts.map +1 -0
- package/dist/developer/validators/pypi.js +118 -0
- package/dist/developer/validators/pypi.js.map +1 -0
- package/dist/developer/validators/registry-manager.d.ts +37 -0
- package/dist/developer/validators/registry-manager.d.ts.map +1 -0
- package/dist/developer/validators/registry-manager.js +89 -0
- package/dist/developer/validators/registry-manager.js.map +1 -0
- package/dist/developer/validators/version-checker.d.ts +145 -0
- package/dist/developer/validators/version-checker.d.ts.map +1 -0
- package/dist/developer/validators/version-checker.js +529 -0
- package/dist/developer/validators/version-checker.js.map +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/auth.d.ts +7 -9
- package/dist/server/middleware/auth.d.ts.map +1 -1
- package/dist/server/middleware/auth.js.map +1 -1
- package/dist/tools/check-versions.d.ts +100 -0
- package/dist/tools/check-versions.d.ts.map +1 -0
- package/dist/tools/check-versions.js +328 -0
- package/dist/tools/check-versions.js.map +1 -0
- package/dist/tools/detect-code-smell.d.ts +9 -0
- package/dist/tools/detect-code-smell.d.ts.map +1 -0
- package/dist/tools/detect-code-smell.js +231 -0
- package/dist/tools/detect-code-smell.js.map +1 -0
- package/dist/tools/index.d.ts +471 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +178 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/journey.js +1 -1
- package/dist/tools/journey.js.map +1 -1
- package/dist/tools/pre-review-code.d.ts +71 -0
- package/dist/tools/pre-review-code.d.ts.map +1 -0
- package/dist/tools/pre-review-code.js +159 -0
- package/dist/tools/pre-review-code.js.map +1 -0
- package/dist/tools/preserve-context.d.ts +27 -0
- package/dist/tools/preserve-context.d.ts.map +1 -0
- package/dist/tools/preserve-context.js +98 -0
- package/dist/tools/preserve-context.js.map +1 -0
- package/dist/tools/protect-files.d.ts +224 -0
- package/dist/tools/protect-files.d.ts.map +1 -0
- package/dist/tools/protect-files.js +286 -0
- package/dist/tools/protect-files.js.map +1 -0
- package/dist/tools/scan-security.d.ts +38 -0
- package/dist/tools/scan-security.d.ts.map +1 -0
- package/dist/tools/scan-security.js +237 -0
- package/dist/tools/scan-security.js.map +1 -0
- package/dist/tools/validate_packages.d.ts +8 -0
- package/dist/tools/validate_packages.d.ts.map +1 -0
- package/dist/tools/validate_packages.js +159 -0
- package/dist/tools/validate_packages.js.map +1 -0
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +1 -2
- package/dist/types/auth.js.map +1 -1
- package/dist/types/context.d.ts +46 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +17 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/file-protection.d.ts +50 -0
- package/dist/types/file-protection.d.ts.map +1 -0
- package/dist/types/file-protection.js +9 -0
- package/dist/types/file-protection.js.map +1 -0
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +2 -1
- package/dist/utils/errorHandler.js.map +1 -1
- package/package.json +30 -4
- package/dist/db/migrate.d.ts +0 -4
- package/dist/db/migrate.d.ts.map +0 -1
- package/dist/db/migrate.js +0 -34
- package/dist/db/migrate.js.map +0 -1
- package/dist/db/migrations/schema.d.ts +0 -1074
- package/dist/db/migrations/schema.d.ts.map +0 -1
- package/dist/db/migrations/schema.js +0 -160
- package/dist/db/migrations/schema.js.map +0 -1
- package/dist/db/schema.d.ts +0 -1576
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -204
- package/dist/db/schema.js.map +0 -1
- package/dist/db/seed.d.ts +0 -4
- package/dist/db/seed.d.ts.map +0 -1
- package/dist/db/seed.js +0 -57
- package/dist/db/seed.js.map +0 -1
- package/dist/db/seedOAuth.d.ts +0 -4
- package/dist/db/seedOAuth.d.ts.map +0 -1
- package/dist/db/seedOAuth.js +0 -76
- package/dist/db/seedOAuth.js.map +0 -1
- package/dist/governance/config.d.ts +0 -66
- package/dist/governance/config.d.ts.map +0 -1
- package/dist/governance/config.js +0 -238
- package/dist/governance/config.js.map +0 -1
- package/dist/governance/detectors/hallucination.d.ts +0 -61
- package/dist/governance/detectors/hallucination.d.ts.map +0 -1
- package/dist/governance/detectors/hallucination.js +0 -338
- package/dist/governance/detectors/hallucination.js.map +0 -1
- package/dist/governance/detectors/inconsistency.d.ts +0 -99
- package/dist/governance/detectors/inconsistency.d.ts.map +0 -1
- package/dist/governance/detectors/inconsistency.js +0 -548
- package/dist/governance/detectors/inconsistency.js.map +0 -1
- package/dist/governance/detectors/toneDrift.d.ts +0 -63
- package/dist/governance/detectors/toneDrift.d.ts.map +0 -1
- package/dist/governance/detectors/toneDrift.js +0 -421
- package/dist/governance/detectors/toneDrift.js.map +0 -1
- package/dist/governance/detectors/unsafeReasoning.d.ts +0 -54
- package/dist/governance/detectors/unsafeReasoning.d.ts.map +0 -1
- package/dist/governance/detectors/unsafeReasoning.js +0 -473
- package/dist/governance/detectors/unsafeReasoning.js.map +0 -1
- package/dist/governance/evaluationEngine.d.ts +0 -112
- package/dist/governance/evaluationEngine.d.ts.map +0 -1
- package/dist/governance/evaluationEngine.js +0 -265
- package/dist/governance/evaluationEngine.js.map +0 -1
- package/dist/governance/intervention.d.ts +0 -81
- package/dist/governance/intervention.d.ts.map +0 -1
- package/dist/governance/intervention.js +0 -405
- package/dist/governance/intervention.js.map +0 -1
- package/dist/server/oauth/anomalyDetection.d.ts +0 -146
- package/dist/server/oauth/anomalyDetection.d.ts.map +0 -1
- package/dist/server/oauth/anomalyDetection.js +0 -405
- package/dist/server/oauth/anomalyDetection.js.map +0 -1
- package/dist/server/oauth/authServer.d.ts +0 -61
- package/dist/server/oauth/authServer.d.ts.map +0 -1
- package/dist/server/oauth/authServer.js +0 -283
- package/dist/server/oauth/authServer.js.map +0 -1
- package/dist/server/oauth/dpop.d.ts +0 -135
- package/dist/server/oauth/dpop.d.ts.map +0 -1
- package/dist/server/oauth/dpop.js +0 -338
- package/dist/server/oauth/dpop.js.map +0 -1
- package/dist/server/oauth/gdpr/consent.d.ts +0 -173
- package/dist/server/oauth/gdpr/consent.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/consent.js +0 -388
- package/dist/server/oauth/gdpr/consent.js.map +0 -1
- package/dist/server/oauth/gdpr/dataPortability.d.ts +0 -214
- package/dist/server/oauth/gdpr/dataPortability.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/dataPortability.js +0 -486
- package/dist/server/oauth/gdpr/dataPortability.js.map +0 -1
- package/dist/server/oauth/gdpr/index.d.ts +0 -103
- package/dist/server/oauth/gdpr/index.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/index.js +0 -273
- package/dist/server/oauth/gdpr/index.js.map +0 -1
- package/dist/server/oauth/gdpr/rightToErasure.d.ts +0 -184
- package/dist/server/oauth/gdpr/rightToErasure.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/rightToErasure.js +0 -527
- package/dist/server/oauth/gdpr/rightToErasure.js.map +0 -1
- package/dist/server/oauth/monitoring/securityMonitor.d.ts +0 -218
- package/dist/server/oauth/monitoring/securityMonitor.d.ts.map +0 -1
- package/dist/server/oauth/monitoring/securityMonitor.js +0 -615
- package/dist/server/oauth/monitoring/securityMonitor.js.map +0 -1
- package/dist/server/oauth/pkce.d.ts +0 -61
- package/dist/server/oauth/pkce.d.ts.map +0 -1
- package/dist/server/oauth/pkce.js +0 -157
- package/dist/server/oauth/pkce.js.map +0 -1
- package/dist/server/oauth/providers/base.d.ts +0 -147
- package/dist/server/oauth/providers/base.d.ts.map +0 -1
- package/dist/server/oauth/providers/base.js +0 -312
- package/dist/server/oauth/providers/base.js.map +0 -1
- package/dist/server/oauth/providers/github.d.ts +0 -55
- package/dist/server/oauth/providers/github.d.ts.map +0 -1
- package/dist/server/oauth/providers/github.js +0 -225
- package/dist/server/oauth/providers/github.js.map +0 -1
- package/dist/server/oauth/providers/google.d.ts +0 -49
- package/dist/server/oauth/providers/google.d.ts.map +0 -1
- package/dist/server/oauth/providers/google.js +0 -153
- package/dist/server/oauth/providers/google.js.map +0 -1
- package/dist/server/oauth/providers/index.d.ts +0 -9
- package/dist/server/oauth/providers/index.d.ts.map +0 -1
- package/dist/server/oauth/providers/index.js +0 -24
- package/dist/server/oauth/providers/index.js.map +0 -1
- package/dist/server/oauth/refreshTokenRotation.d.ts +0 -114
- package/dist/server/oauth/refreshTokenRotation.d.ts.map +0 -1
- package/dist/server/oauth/refreshTokenRotation.js +0 -344
- package/dist/server/oauth/refreshTokenRotation.js.map +0 -1
- package/dist/server/oauth/security.d.ts +0 -101
- package/dist/server/oauth/security.d.ts.map +0 -1
- package/dist/server/oauth/security.js +0 -268
- package/dist/server/oauth/security.js.map +0 -1
- package/dist/server/oauth/tokenEncryption.d.ts +0 -80
- package/dist/server/oauth/tokenEncryption.d.ts.map +0 -1
- package/dist/server/oauth/tokenEncryption.js +0 -218
- package/dist/server/oauth/tokenEncryption.js.map +0 -1
- package/dist/tools/sendMessage-complex-backup.d.ts +0 -6
- package/dist/tools/sendMessage-complex-backup.d.ts.map +0 -1
- package/dist/tools/sendMessage-complex-backup.js +0 -545
- package/dist/tools/sendMessage-complex-backup.js.map +0 -1
- package/dist/tools/sendMessage-revised.d.ts +0 -11
- package/dist/tools/sendMessage-revised.d.ts.map +0 -1
- package/dist/tools/sendMessage-revised.js +0 -429
- package/dist/tools/sendMessage-revised.js.map +0 -1
- package/dist/tools/sendMessage-truly-simple.d.ts +0 -8
- package/dist/tools/sendMessage-truly-simple.d.ts.map +0 -1
- package/dist/tools/sendMessage-truly-simple.js +0 -299
- package/dist/tools/sendMessage-truly-simple.js.map +0 -1
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchLoop Behavioral Governance Layer - Intervention Engine
|
|
3
|
-
*
|
|
4
|
-
* Handles response blocking, modification, rewriting, and fallback responses
|
|
5
|
-
* based on governance evaluation results
|
|
6
|
-
*/
|
|
7
|
-
import { InterventionAction, RiskLevel } from './evaluationEngine.js';
|
|
8
|
-
import { loadConfig } from './config.js';
|
|
9
|
-
export class InterventionEngine {
|
|
10
|
-
config;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config || loadConfig();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Main intervention method - applies appropriate action based on evaluation
|
|
16
|
-
*/
|
|
17
|
-
async intervene(action, originalResponse, evaluationResult) {
|
|
18
|
-
switch (action) {
|
|
19
|
-
case InterventionAction.APPROVE:
|
|
20
|
-
return this.approve(originalResponse, evaluationResult);
|
|
21
|
-
case InterventionAction.BLOCK:
|
|
22
|
-
return this.block(originalResponse, evaluationResult);
|
|
23
|
-
case InterventionAction.MODIFY:
|
|
24
|
-
return this.modify(originalResponse, evaluationResult);
|
|
25
|
-
case InterventionAction.FALLBACK:
|
|
26
|
-
return this.fallback(originalResponse, evaluationResult);
|
|
27
|
-
default:
|
|
28
|
-
// Default to approval if unknown action
|
|
29
|
-
return this.approve(originalResponse, evaluationResult);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Approve response without modification
|
|
34
|
-
*/
|
|
35
|
-
approve(originalResponse, evaluation) {
|
|
36
|
-
return {
|
|
37
|
-
action: InterventionAction.APPROVE,
|
|
38
|
-
originalResponse,
|
|
39
|
-
finalResponse: originalResponse,
|
|
40
|
-
modified: false,
|
|
41
|
-
reason: 'Response approved - no governance issues detected',
|
|
42
|
-
confidence: evaluation.confidence
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Block response and provide safe alternative
|
|
47
|
-
*/
|
|
48
|
-
block(originalResponse, evaluation) {
|
|
49
|
-
let reason = 'Response blocked due to: ';
|
|
50
|
-
const issues = [];
|
|
51
|
-
// Compile blocking reasons
|
|
52
|
-
if (evaluation.unsafeReasoning.detected) {
|
|
53
|
-
issues.push('unsafe reasoning patterns');
|
|
54
|
-
}
|
|
55
|
-
if (evaluation.hallucination.detected) {
|
|
56
|
-
issues.push('potential hallucination');
|
|
57
|
-
}
|
|
58
|
-
if (evaluation.inconsistency.detected) {
|
|
59
|
-
issues.push('logical inconsistencies');
|
|
60
|
-
}
|
|
61
|
-
if (evaluation.toneDrift.detected) {
|
|
62
|
-
issues.push('problematic tone drift');
|
|
63
|
-
}
|
|
64
|
-
reason += issues.join(', ');
|
|
65
|
-
// Select appropriate fallback message
|
|
66
|
-
let finalResponse;
|
|
67
|
-
if (evaluation.overallRisk === RiskLevel.CRITICAL ||
|
|
68
|
-
(evaluation.unsafeReasoning.detected && evaluation.unsafeReasoning.confidence > 0.8)) {
|
|
69
|
-
// Crisis or high-risk situation
|
|
70
|
-
finalResponse = this.config.fallbackResponses.crisis;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
// General blocked response
|
|
74
|
-
finalResponse = this.config.fallbackResponses.blocked;
|
|
75
|
-
}
|
|
76
|
-
return {
|
|
77
|
-
action: InterventionAction.BLOCK,
|
|
78
|
-
originalResponse,
|
|
79
|
-
finalResponse,
|
|
80
|
-
modified: true,
|
|
81
|
-
reason,
|
|
82
|
-
confidence: evaluation.confidence
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Modify response to remove or soften problematic content
|
|
87
|
-
*/
|
|
88
|
-
modify(originalResponse, evaluation) {
|
|
89
|
-
let modifiedResponse = originalResponse;
|
|
90
|
-
const modifications = [];
|
|
91
|
-
// Apply modifications based on detected issues
|
|
92
|
-
if (evaluation.hallucination.detected && evaluation.hallucination.patterns) {
|
|
93
|
-
modifiedResponse = this.removeHallucinatedContent(modifiedResponse, evaluation.hallucination.patterns, modifications);
|
|
94
|
-
}
|
|
95
|
-
if (evaluation.unsafeReasoning.detected && evaluation.unsafeReasoning.patterns) {
|
|
96
|
-
modifiedResponse = this.removeUnsafeContent(modifiedResponse, evaluation.unsafeReasoning.patterns, modifications);
|
|
97
|
-
}
|
|
98
|
-
if (evaluation.toneDrift.detected && evaluation.toneDrift.patterns) {
|
|
99
|
-
modifiedResponse = this.neutralizeTone(modifiedResponse, modifications);
|
|
100
|
-
}
|
|
101
|
-
if (evaluation.inconsistency.detected && evaluation.inconsistency.patterns) {
|
|
102
|
-
modifiedResponse = this.softenClaims(modifiedResponse, evaluation.inconsistency.patterns, modifications);
|
|
103
|
-
}
|
|
104
|
-
// If modifications were too extensive, use fallback
|
|
105
|
-
if (this.tooMuchRemoved(originalResponse, modifiedResponse)) {
|
|
106
|
-
return this.fallback(originalResponse, evaluation);
|
|
107
|
-
}
|
|
108
|
-
// Add modification prefix if configured
|
|
109
|
-
if (modifiedResponse !== originalResponse && this.config.fallbackResponses.modified) {
|
|
110
|
-
modifiedResponse = this.config.fallbackResponses.modified + '\n\n' + modifiedResponse;
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
action: InterventionAction.MODIFY,
|
|
114
|
-
originalResponse,
|
|
115
|
-
finalResponse: modifiedResponse,
|
|
116
|
-
modified: true,
|
|
117
|
-
reason: `Response modified to address: ${modifications.map(m => m.reason).join(', ')}`,
|
|
118
|
-
modifications,
|
|
119
|
-
confidence: evaluation.confidence
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Replace with safe fallback response
|
|
124
|
-
*/
|
|
125
|
-
fallback(originalResponse, evaluation) {
|
|
126
|
-
// Select contextually appropriate fallback
|
|
127
|
-
let finalResponse;
|
|
128
|
-
let reason = 'Using fallback response due to: ';
|
|
129
|
-
if (evaluation.overallRisk === RiskLevel.CRITICAL) {
|
|
130
|
-
finalResponse = this.config.fallbackResponses.crisis;
|
|
131
|
-
reason += 'critical safety concerns';
|
|
132
|
-
}
|
|
133
|
-
else if (evaluation.unsafeReasoning.detected) {
|
|
134
|
-
finalResponse = this.config.fallbackResponses.crisis;
|
|
135
|
-
reason += 'unsafe reasoning detected';
|
|
136
|
-
}
|
|
137
|
-
else if (evaluation.overallRisk === RiskLevel.HIGH) {
|
|
138
|
-
finalResponse = this.config.fallbackResponses.blocked;
|
|
139
|
-
reason += 'high risk content';
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
finalResponse = this.config.fallbackResponses.error;
|
|
143
|
-
reason += 'multiple governance issues';
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
action: InterventionAction.FALLBACK,
|
|
147
|
-
originalResponse,
|
|
148
|
-
finalResponse,
|
|
149
|
-
modified: true,
|
|
150
|
-
reason,
|
|
151
|
-
confidence: evaluation.confidence
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Remove hallucinated content from response
|
|
156
|
-
*/
|
|
157
|
-
removeHallucinatedContent(response, patterns, modifications) {
|
|
158
|
-
let modified = response;
|
|
159
|
-
for (const pattern of patterns) {
|
|
160
|
-
// Extract the problematic phrase from the pattern description
|
|
161
|
-
const match = pattern.match(/: "(.+)"/);
|
|
162
|
-
if (match && match[1]) {
|
|
163
|
-
const problematicPhrase = match[1];
|
|
164
|
-
if (modified.includes(problematicPhrase)) {
|
|
165
|
-
// Remove the sentence containing the problematic phrase
|
|
166
|
-
const sentences = modified.split(/(?<=[.!?])\s+/);
|
|
167
|
-
const filteredSentences = sentences.filter(s => !s.includes(problematicPhrase));
|
|
168
|
-
if (filteredSentences.length < sentences.length) {
|
|
169
|
-
modifications.push({
|
|
170
|
-
type: 'removed',
|
|
171
|
-
original: sentences.find(s => s.includes(problematicPhrase)) || problematicPhrase,
|
|
172
|
-
modified: '',
|
|
173
|
-
reason: 'hallucinated content'
|
|
174
|
-
});
|
|
175
|
-
modified = filteredSentences.join(' ');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
// Replace absolute certainty with hedged language
|
|
181
|
-
const certaintyReplacements = [
|
|
182
|
-
[/definitely will/gi, 'might'],
|
|
183
|
-
[/absolutely certain/gi, 'possible'],
|
|
184
|
-
[/guaranteed to/gi, 'may'],
|
|
185
|
-
[/proven fact/gi, 'current understanding'],
|
|
186
|
-
[/everyone knows/gi, 'it is commonly believed'],
|
|
187
|
-
[/always works/gi, 'often helps'],
|
|
188
|
-
[/never fails/gi, 'typically effective']
|
|
189
|
-
];
|
|
190
|
-
for (const [pattern, replacement] of certaintyReplacements) {
|
|
191
|
-
const before = modified;
|
|
192
|
-
modified = modified.replace(pattern, replacement);
|
|
193
|
-
if (before !== modified) {
|
|
194
|
-
modifications.push({
|
|
195
|
-
type: 'replaced',
|
|
196
|
-
original: pattern.source,
|
|
197
|
-
modified: replacement,
|
|
198
|
-
reason: 'reduced false certainty'
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return modified;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Remove unsafe content from response
|
|
206
|
-
*/
|
|
207
|
-
removeUnsafeContent(response, patterns, modifications) {
|
|
208
|
-
let modified = response;
|
|
209
|
-
for (const pattern of patterns) {
|
|
210
|
-
// Extract the problematic phrase
|
|
211
|
-
const match = pattern.match(/: "(.+)"/);
|
|
212
|
-
if (match && match[1]) {
|
|
213
|
-
const unsafePhrase = match[1];
|
|
214
|
-
// Check if this is critical content that should be removed entirely
|
|
215
|
-
if (pattern.includes('critical') || pattern.includes('Suicide') || pattern.includes('Self-harm')) {
|
|
216
|
-
// Remove entire sentences containing critical unsafe content
|
|
217
|
-
const sentences = modified.split(/(?<=[.!?])\s+/);
|
|
218
|
-
const safeSentences = sentences.filter(s => !s.toLowerCase().includes(unsafePhrase.toLowerCase()));
|
|
219
|
-
if (safeSentences.length < sentences.length) {
|
|
220
|
-
modifications.push({
|
|
221
|
-
type: 'removed',
|
|
222
|
-
original: sentences.find(s => s.toLowerCase().includes(unsafePhrase.toLowerCase())) || unsafePhrase,
|
|
223
|
-
modified: '',
|
|
224
|
-
reason: 'critical safety concern'
|
|
225
|
-
});
|
|
226
|
-
modified = safeSentences.join(' ');
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
// For non-critical unsafe content, try to soften or replace
|
|
231
|
-
const safeAlternatives = {
|
|
232
|
-
'you should definitely': 'you might consider',
|
|
233
|
-
'you must': 'it could be helpful to',
|
|
234
|
-
'stop taking your medication': 'discuss your medication concerns with your doctor',
|
|
235
|
-
"don't need therapy": 'therapy is a personal choice',
|
|
236
|
-
'ignore what they said': 'consider different perspectives',
|
|
237
|
-
"don't tell anyone": 'sharing with trusted people can help'
|
|
238
|
-
};
|
|
239
|
-
for (const [unsafe, safe] of Object.entries(safeAlternatives)) {
|
|
240
|
-
if (modified.toLowerCase().includes(unsafe)) {
|
|
241
|
-
modified = modified.replace(new RegExp(unsafe, 'gi'), safe);
|
|
242
|
-
modifications.push({
|
|
243
|
-
type: 'replaced',
|
|
244
|
-
original: unsafe,
|
|
245
|
-
modified: safe,
|
|
246
|
-
reason: 'unsafe advice neutralized'
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return modified;
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Neutralize problematic tone in response
|
|
257
|
-
*/
|
|
258
|
-
neutralizeTone(response, modifications) {
|
|
259
|
-
let modified = response;
|
|
260
|
-
// Tone neutralization replacements
|
|
261
|
-
const toneReplacements = [
|
|
262
|
-
// Over-reassurance
|
|
263
|
-
[/everything will be (fine|perfect|great)/gi, 'things may improve'],
|
|
264
|
-
[/don't worry about anything/gi, "it's natural to have concerns"],
|
|
265
|
-
[/absolutely no risk/gi, 'relatively low risk'],
|
|
266
|
-
[/I promise/gi, 'I believe'],
|
|
267
|
-
// Over-directive
|
|
268
|
-
[/you must/gi, 'you might consider'],
|
|
269
|
-
[/you have to/gi, 'it could help to'],
|
|
270
|
-
[/you need to/gi, 'you may want to'],
|
|
271
|
-
[/it's essential that you/gi, 'it could be beneficial to'],
|
|
272
|
-
// Manipulative
|
|
273
|
-
[/only I can help/gi, 'support is available'],
|
|
274
|
-
[/you need me/gi, 'support can help'],
|
|
275
|
-
[/trust me, not them/gi, 'consider various perspectives'],
|
|
276
|
-
// Dependency-forming
|
|
277
|
-
[/I'll always be here/gi, 'support is available'],
|
|
278
|
-
[/come back to me anytime/gi, 'help is available when needed'],
|
|
279
|
-
[/you can't do this without me/gi, 'support can be helpful']
|
|
280
|
-
];
|
|
281
|
-
for (const [pattern, replacement] of toneReplacements) {
|
|
282
|
-
const matches = modified.match(pattern);
|
|
283
|
-
if (matches) {
|
|
284
|
-
modified = modified.replace(pattern, replacement);
|
|
285
|
-
modifications.push({
|
|
286
|
-
type: 'neutralized',
|
|
287
|
-
original: matches[0],
|
|
288
|
-
modified: replacement,
|
|
289
|
-
reason: 'tone neutralization'
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
// Remove excessive emotional language
|
|
294
|
-
const emotionalWords = /\b(amazing|terrible|horrible|perfect|disaster|catastrophe|miracle)\b/gi;
|
|
295
|
-
const emotionalMatches = modified.match(emotionalWords);
|
|
296
|
-
if (emotionalMatches && emotionalMatches.length > 2) {
|
|
297
|
-
// Replace with more neutral terms
|
|
298
|
-
modified = modified
|
|
299
|
-
.replace(/\bamazing\b/gi, 'positive')
|
|
300
|
-
.replace(/\bterrible\b/gi, 'difficult')
|
|
301
|
-
.replace(/\bhorrible\b/gi, 'challenging')
|
|
302
|
-
.replace(/\bperfect\b/gi, 'good')
|
|
303
|
-
.replace(/\bdisaster\b/gi, 'setback')
|
|
304
|
-
.replace(/\bcatastrophe\b/gi, 'difficulty')
|
|
305
|
-
.replace(/\bmiracle\b/gi, 'improvement');
|
|
306
|
-
modifications.push({
|
|
307
|
-
type: 'neutralized',
|
|
308
|
-
original: 'excessive emotional language',
|
|
309
|
-
modified: 'neutral terms',
|
|
310
|
-
reason: 'emotional de-escalation'
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
return modified;
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Soften claims to address inconsistencies
|
|
317
|
-
*/
|
|
318
|
-
softenClaims(response, patterns, modifications) {
|
|
319
|
-
let modified = response;
|
|
320
|
-
// Add hedging language to strong claims
|
|
321
|
-
const hedgeReplacements = [
|
|
322
|
-
[/\bis\b/gi, 'may be'],
|
|
323
|
-
[/\bare\b/gi, 'might be'],
|
|
324
|
-
[/\bwill\b/gi, 'could'],
|
|
325
|
-
[/\balways\b/gi, 'often'],
|
|
326
|
-
[/\bnever\b/gi, 'rarely'],
|
|
327
|
-
[/\bdefinitely\b/gi, 'probably'],
|
|
328
|
-
[/\bcertainly\b/gi, 'likely']
|
|
329
|
-
];
|
|
330
|
-
// Only apply hedging to sentences mentioned in contradiction patterns
|
|
331
|
-
for (const pattern of patterns) {
|
|
332
|
-
if (pattern.includes('Contradiction') || pattern.includes('Reversal')) {
|
|
333
|
-
// Extract the current claim from the pattern
|
|
334
|
-
const match = pattern.match(/Current: "(.+?)"/);
|
|
335
|
-
if (match && match[1]) {
|
|
336
|
-
const claim = match[1];
|
|
337
|
-
// Find and soften this claim in the response
|
|
338
|
-
if (modified.includes(claim)) {
|
|
339
|
-
let softenedClaim = claim;
|
|
340
|
-
for (const [original, hedged] of hedgeReplacements) {
|
|
341
|
-
softenedClaim = softenedClaim.replace(original, hedged);
|
|
342
|
-
}
|
|
343
|
-
if (softenedClaim !== claim) {
|
|
344
|
-
modified = modified.replace(claim, softenedClaim);
|
|
345
|
-
modifications.push({
|
|
346
|
-
type: 'softened',
|
|
347
|
-
original: claim,
|
|
348
|
-
modified: softenedClaim,
|
|
349
|
-
reason: 'addressing inconsistency'
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
return modified;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Check if too much content was removed
|
|
360
|
-
*/
|
|
361
|
-
tooMuchRemoved(original, modified) {
|
|
362
|
-
const originalLength = original.length;
|
|
363
|
-
const modifiedLength = modified.length;
|
|
364
|
-
// If more than 60% was removed, use fallback instead
|
|
365
|
-
const removalRatio = (originalLength - modifiedLength) / originalLength;
|
|
366
|
-
return removalRatio > 0.6;
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Apply intervention based on evaluation without explicit action
|
|
370
|
-
*/
|
|
371
|
-
async autoIntervene(originalResponse, evaluationResult) {
|
|
372
|
-
// Use the recommended action from evaluation
|
|
373
|
-
const action = evaluationResult.recommendedAction;
|
|
374
|
-
return this.intervene(action, originalResponse, evaluationResult);
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Generate explanation for intervention
|
|
378
|
-
*/
|
|
379
|
-
generateExplanation(result) {
|
|
380
|
-
if (!result.modified) {
|
|
381
|
-
return 'Response approved without modifications.';
|
|
382
|
-
}
|
|
383
|
-
let explanation = `Governance intervention applied (${result.action}): ${result.reason}\n`;
|
|
384
|
-
if (result.modifications && result.modifications.length > 0) {
|
|
385
|
-
explanation += '\nModifications made:\n';
|
|
386
|
-
for (const mod of result.modifications) {
|
|
387
|
-
explanation += `- ${mod.type}: ${mod.reason}\n`;
|
|
388
|
-
if (mod.original && mod.modified) {
|
|
389
|
-
explanation += ` From: "${mod.original}"\n`;
|
|
390
|
-
explanation += ` To: "${mod.modified}"\n`;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
explanation += `\nConfidence: ${(result.confidence * 100).toFixed(1)}%`;
|
|
395
|
-
return explanation;
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Update configuration
|
|
399
|
-
*/
|
|
400
|
-
updateConfig(config) {
|
|
401
|
-
this.config = config;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
export default InterventionEngine;
|
|
405
|
-
//# sourceMappingURL=intervention.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intervention.js","sourceRoot":"","sources":["../../src/governance/intervention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication request context
|
|
3
|
-
*/
|
|
4
|
-
export interface AuthRequest {
|
|
5
|
-
userId?: string;
|
|
6
|
-
clientId: string;
|
|
7
|
-
ip: string;
|
|
8
|
-
userAgent?: string;
|
|
9
|
-
fingerprint?: string;
|
|
10
|
-
timestamp: Date;
|
|
11
|
-
method: 'login' | 'refresh' | 'logout' | 'register';
|
|
12
|
-
success: boolean;
|
|
13
|
-
metadata?: {
|
|
14
|
-
country?: string;
|
|
15
|
-
city?: string;
|
|
16
|
-
asn?: string;
|
|
17
|
-
isp?: string;
|
|
18
|
-
deviceType?: string;
|
|
19
|
-
browser?: string;
|
|
20
|
-
os?: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Anomaly score and action
|
|
25
|
-
*/
|
|
26
|
-
export interface AnomalyScore {
|
|
27
|
-
composite: number;
|
|
28
|
-
details: {
|
|
29
|
-
ip: number;
|
|
30
|
-
geo: number;
|
|
31
|
-
device: number;
|
|
32
|
-
time: number;
|
|
33
|
-
velocity: number;
|
|
34
|
-
pattern: number;
|
|
35
|
-
};
|
|
36
|
-
action: 'allow' | 'challenge' | 'deny';
|
|
37
|
-
reasons: string[];
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Risk factors configuration
|
|
41
|
-
*/
|
|
42
|
-
export interface RiskFactors {
|
|
43
|
-
vpnWeight: number;
|
|
44
|
-
torWeight: number;
|
|
45
|
-
proxyWeight: number;
|
|
46
|
-
newDeviceWeight: number;
|
|
47
|
-
newLocationWeight: number;
|
|
48
|
-
impossibleTravelWeight: number;
|
|
49
|
-
bruteForceWeight: number;
|
|
50
|
-
timeAnomalyWeight: number;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Anomaly Detection System
|
|
54
|
-
* Detects suspicious authentication patterns and potential attacks
|
|
55
|
-
*/
|
|
56
|
-
export declare class AnomalyDetector {
|
|
57
|
-
private userProfiles;
|
|
58
|
-
private ipReputation;
|
|
59
|
-
private readonly MAX_FAILED_ATTEMPTS;
|
|
60
|
-
private readonly IMPOSSIBLE_TRAVEL_SPEED;
|
|
61
|
-
private readonly TIME_WINDOW;
|
|
62
|
-
private readonly riskFactors;
|
|
63
|
-
/**
|
|
64
|
-
* Analyze authentication request for anomalies
|
|
65
|
-
*/
|
|
66
|
-
detectAnomalies(request: AuthRequest): Promise<AnomalyScore>;
|
|
67
|
-
/**
|
|
68
|
-
* Check IP reputation
|
|
69
|
-
*/
|
|
70
|
-
private checkIPReputation;
|
|
71
|
-
/**
|
|
72
|
-
* Check geolocation anomaly
|
|
73
|
-
*/
|
|
74
|
-
private checkGeoAnomaly;
|
|
75
|
-
/**
|
|
76
|
-
* Check device anomaly
|
|
77
|
-
*/
|
|
78
|
-
private checkDeviceAnomaly;
|
|
79
|
-
/**
|
|
80
|
-
* Check time-based anomaly
|
|
81
|
-
*/
|
|
82
|
-
private checkTimeAnomaly;
|
|
83
|
-
/**
|
|
84
|
-
* Check request velocity
|
|
85
|
-
*/
|
|
86
|
-
private checkVelocity;
|
|
87
|
-
/**
|
|
88
|
-
* Check behavioral patterns
|
|
89
|
-
*/
|
|
90
|
-
private checkBehavioralPattern;
|
|
91
|
-
/**
|
|
92
|
-
* Determine action based on score and context
|
|
93
|
-
*/
|
|
94
|
-
private determineAction;
|
|
95
|
-
/**
|
|
96
|
-
* Query threat intelligence feeds
|
|
97
|
-
*/
|
|
98
|
-
private queryThreatIntelligence;
|
|
99
|
-
/**
|
|
100
|
-
* Check if IP is in private range
|
|
101
|
-
*/
|
|
102
|
-
private isPrivateIP;
|
|
103
|
-
/**
|
|
104
|
-
* Calculate distance between two coordinates (Haversine formula)
|
|
105
|
-
*/
|
|
106
|
-
private calculateDistance;
|
|
107
|
-
private toRad;
|
|
108
|
-
/**
|
|
109
|
-
* Calculate request entropy (randomness)
|
|
110
|
-
*/
|
|
111
|
-
private calculateRequestEntropy;
|
|
112
|
-
/**
|
|
113
|
-
* Get or create user profile
|
|
114
|
-
*/
|
|
115
|
-
private getUserProfile;
|
|
116
|
-
/**
|
|
117
|
-
* Update user profile with successful authentication
|
|
118
|
-
*/
|
|
119
|
-
private updateUserProfile;
|
|
120
|
-
/**
|
|
121
|
-
* Count recent requests from IP
|
|
122
|
-
*/
|
|
123
|
-
private countRecentRequests;
|
|
124
|
-
/**
|
|
125
|
-
* Log anomaly to database
|
|
126
|
-
*/
|
|
127
|
-
private logAnomaly;
|
|
128
|
-
/**
|
|
129
|
-
* Get risk score for a user
|
|
130
|
-
*/
|
|
131
|
-
getUserRiskScore(userId: string): Promise<number>;
|
|
132
|
-
/**
|
|
133
|
-
* Reset user profile (after password reset, etc.)
|
|
134
|
-
*/
|
|
135
|
-
resetUserProfile(userId: string): void;
|
|
136
|
-
/**
|
|
137
|
-
* Get statistics
|
|
138
|
-
*/
|
|
139
|
-
getStats(): {
|
|
140
|
-
totalProfiles: number;
|
|
141
|
-
totalIPs: number;
|
|
142
|
-
highRiskUsers: number;
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
export declare const anomalyDetector: AnomalyDetector;
|
|
146
|
-
//# sourceMappingURL=anomalyDetection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anomalyDetection.d.ts","sourceRoot":"","sources":["../../../src/server/oauth/anomalyDetection.ts"],"names":[],"mappings":"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"}
|