couchloop-eq-mcp 1.0.3 → 1.0.5
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/clients/shrinkChatClient.js +1 -1
- package/dist/clients/shrinkChatClient.js.map +1 -1
- 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 +18 -18
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +91 -36
- 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 +23 -2
- 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,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchLoop Behavioral Governance Layer - Tone Drift Monitor
|
|
3
|
-
*
|
|
4
|
-
* Detects escalation from neutral to emotionally loaded, over-reassurance,
|
|
5
|
-
* over-alarmism, and manipulative or dependency-forming language
|
|
6
|
-
*/
|
|
7
|
-
import type { DetectionResult, SessionContext } from '../evaluationEngine.js';
|
|
8
|
-
import type { CriterionConfig } from '../config.js';
|
|
9
|
-
export declare class ToneDriftMonitor {
|
|
10
|
-
private config;
|
|
11
|
-
private manipulativePatterns;
|
|
12
|
-
private overReassurancePatterns;
|
|
13
|
-
private alarmistPatterns;
|
|
14
|
-
private dependencyPatterns;
|
|
15
|
-
private directivePatterns;
|
|
16
|
-
constructor(config: CriterionConfig);
|
|
17
|
-
/**
|
|
18
|
-
* Main monitoring method
|
|
19
|
-
*/
|
|
20
|
-
monitor(response: string, context?: SessionContext): Promise<DetectionResult>;
|
|
21
|
-
/**
|
|
22
|
-
* Analyze tone profile of text
|
|
23
|
-
*/
|
|
24
|
-
private analyzeTone;
|
|
25
|
-
/**
|
|
26
|
-
* Get baseline tone from conversation history
|
|
27
|
-
*/
|
|
28
|
-
private getBaselineTone;
|
|
29
|
-
/**
|
|
30
|
-
* Calculate drift between current and baseline tone
|
|
31
|
-
*/
|
|
32
|
-
private calculateDrift;
|
|
33
|
-
/**
|
|
34
|
-
* Detect manipulative language patterns
|
|
35
|
-
*/
|
|
36
|
-
private detectManipulation;
|
|
37
|
-
/**
|
|
38
|
-
* Detect over-reassurance patterns
|
|
39
|
-
*/
|
|
40
|
-
private detectOverReassurance;
|
|
41
|
-
/**
|
|
42
|
-
* Detect alarmist language
|
|
43
|
-
*/
|
|
44
|
-
private detectAlarmism;
|
|
45
|
-
/**
|
|
46
|
-
* Detect dependency-forming language
|
|
47
|
-
*/
|
|
48
|
-
private detectDependencyForming;
|
|
49
|
-
/**
|
|
50
|
-
* Detect over-directive language
|
|
51
|
-
*/
|
|
52
|
-
private detectOverDirectiveness;
|
|
53
|
-
/**
|
|
54
|
-
* Detect emotional escalation
|
|
55
|
-
*/
|
|
56
|
-
private detectEmotionalEscalation;
|
|
57
|
-
/**
|
|
58
|
-
* Update configuration
|
|
59
|
-
*/
|
|
60
|
-
updateConfig(config: CriterionConfig): void;
|
|
61
|
-
}
|
|
62
|
-
export default ToneDriftMonitor;
|
|
63
|
-
//# sourceMappingURL=toneDrift.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toneDrift.d.ts","sourceRoot":"","sources":["../../../src/governance/detectors/toneDrift.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmBpD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,oBAAoB,CAAW;IACvC,OAAO,CAAC,uBAAuB,CAAW;IAC1C,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,iBAAiB,CAAW;gBAExB,MAAM,EAAE,eAAe;IA4EnC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAkFnF;;OAEG;IACH,OAAO,CAAC,WAAW;IAkDnB;;OAEG;YACW,eAAe;IA4C7B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8DtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;CAG5C;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchLoop Behavioral Governance Layer - Tone Drift Monitor
|
|
3
|
-
*
|
|
4
|
-
* Detects escalation from neutral to emotionally loaded, over-reassurance,
|
|
5
|
-
* over-alarmism, and manipulative or dependency-forming language
|
|
6
|
-
*/
|
|
7
|
-
export class ToneDriftMonitor {
|
|
8
|
-
config;
|
|
9
|
-
manipulativePatterns;
|
|
10
|
-
overReassurancePatterns;
|
|
11
|
-
alarmistPatterns;
|
|
12
|
-
dependencyPatterns;
|
|
13
|
-
directivePatterns;
|
|
14
|
-
constructor(config) {
|
|
15
|
-
this.config = config;
|
|
16
|
-
// Compile regex patterns for different tone issues
|
|
17
|
-
this.manipulativePatterns = [
|
|
18
|
-
/only I can help/i,
|
|
19
|
-
/you need me/i,
|
|
20
|
-
/without me you/i,
|
|
21
|
-
/trust me, not/i,
|
|
22
|
-
/they don't understand (you )?like I do/i,
|
|
23
|
-
/I know you better than/i,
|
|
24
|
-
/you can't trust (them|anyone else)/i,
|
|
25
|
-
/I'm the only one who/i,
|
|
26
|
-
/don't listen to (them|others)/i,
|
|
27
|
-
/they're wrong about you/i
|
|
28
|
-
];
|
|
29
|
-
this.overReassurancePatterns = [
|
|
30
|
-
/everything will be (fine|okay|perfect|great)/i,
|
|
31
|
-
/don't worry about (anything|it)/i,
|
|
32
|
-
/there's nothing to (worry|be concerned) about/i,
|
|
33
|
-
/you have nothing to fear/i,
|
|
34
|
-
/it's all going to work out/i,
|
|
35
|
-
/trust me, (everything|it)/i,
|
|
36
|
-
/I promise (everything|you)/i,
|
|
37
|
-
/absolutely no risk/i,
|
|
38
|
-
/completely safe/i,
|
|
39
|
-
/guaranteed to work/i
|
|
40
|
-
];
|
|
41
|
-
this.alarmistPatterns = [
|
|
42
|
-
/this is (extremely |very )?serious/i,
|
|
43
|
-
/you must act (now|immediately)/i,
|
|
44
|
-
/before it's too late/i,
|
|
45
|
-
/dangerous to wait/i,
|
|
46
|
-
/could be (catastrophic|disastrous|fatal)/i,
|
|
47
|
-
/urgent(ly)? need/i,
|
|
48
|
-
/crisis situation/i,
|
|
49
|
-
/emergency/i,
|
|
50
|
-
/dire consequences/i,
|
|
51
|
-
/at great risk/i
|
|
52
|
-
];
|
|
53
|
-
this.dependencyPatterns = [
|
|
54
|
-
/you('ll)? always need/i,
|
|
55
|
-
/come back to me/i,
|
|
56
|
-
/I'll always be here/i,
|
|
57
|
-
/you can't do this without/i,
|
|
58
|
-
/you need (me|this) to/i,
|
|
59
|
-
/depend on me/i,
|
|
60
|
-
/rely on me/i,
|
|
61
|
-
/I'm here for you (always|forever|no matter what)/i,
|
|
62
|
-
/whenever you need/i,
|
|
63
|
-
/don't hesitate to contact me/i
|
|
64
|
-
];
|
|
65
|
-
this.directivePatterns = [
|
|
66
|
-
/you must/i,
|
|
67
|
-
/you have to/i,
|
|
68
|
-
/you need to/i,
|
|
69
|
-
/you should definitely/i,
|
|
70
|
-
/it's essential that you/i,
|
|
71
|
-
/it's critical that you/i,
|
|
72
|
-
/imperative that you/i,
|
|
73
|
-
/absolutely necessary/i,
|
|
74
|
-
/no other choice/i,
|
|
75
|
-
/the only way/i
|
|
76
|
-
];
|
|
77
|
-
// Add custom patterns from config
|
|
78
|
-
if (config.patterns) {
|
|
79
|
-
const customPatterns = config.patterns.map(p => new RegExp(p, 'i'));
|
|
80
|
-
this.manipulativePatterns.push(...customPatterns);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Main monitoring method
|
|
85
|
-
*/
|
|
86
|
-
async monitor(response, context) {
|
|
87
|
-
// Analyze current response tone
|
|
88
|
-
const currentTone = this.analyzeTone(response);
|
|
89
|
-
// Get or establish baseline tone
|
|
90
|
-
const baselineTone = await this.getBaselineTone(context);
|
|
91
|
-
// Calculate drift from baseline
|
|
92
|
-
const driftAnalysis = this.calculateDrift(currentTone, baselineTone);
|
|
93
|
-
// Check for problematic patterns
|
|
94
|
-
const manipulativeFound = this.detectManipulation(response);
|
|
95
|
-
const overReassuranceFound = this.detectOverReassurance(response);
|
|
96
|
-
const alarmismFound = this.detectAlarmism(response);
|
|
97
|
-
const dependencyFound = this.detectDependencyForming(response);
|
|
98
|
-
const overDirectiveFound = this.detectOverDirectiveness(response);
|
|
99
|
-
// Combine all detected patterns
|
|
100
|
-
const problematicPatterns = [
|
|
101
|
-
...manipulativeFound,
|
|
102
|
-
...overReassuranceFound,
|
|
103
|
-
...alarmismFound,
|
|
104
|
-
...dependencyFound,
|
|
105
|
-
...overDirectiveFound
|
|
106
|
-
];
|
|
107
|
-
// Calculate overall confidence
|
|
108
|
-
let confidence = 0;
|
|
109
|
-
// Weight drift score
|
|
110
|
-
if (driftAnalysis.driftScore > 0.3) {
|
|
111
|
-
confidence += driftAnalysis.driftScore * 0.4;
|
|
112
|
-
}
|
|
113
|
-
// Weight problematic patterns
|
|
114
|
-
if (manipulativeFound.length > 0) {
|
|
115
|
-
confidence += 0.3;
|
|
116
|
-
}
|
|
117
|
-
if (overReassuranceFound.length > 0) {
|
|
118
|
-
confidence += 0.15;
|
|
119
|
-
}
|
|
120
|
-
if (alarmismFound.length > 0) {
|
|
121
|
-
confidence += 0.2;
|
|
122
|
-
}
|
|
123
|
-
if (dependencyFound.length > 0) {
|
|
124
|
-
confidence += 0.25;
|
|
125
|
-
}
|
|
126
|
-
if (overDirectiveFound.length > 0) {
|
|
127
|
-
confidence += 0.15;
|
|
128
|
-
}
|
|
129
|
-
// Check for emotional escalation
|
|
130
|
-
const emotionalEscalation = this.detectEmotionalEscalation(currentTone, baselineTone);
|
|
131
|
-
if (emotionalEscalation) {
|
|
132
|
-
confidence += 0.2;
|
|
133
|
-
problematicPatterns.push(`Emotional escalation: ${emotionalEscalation}`);
|
|
134
|
-
}
|
|
135
|
-
// Cap confidence at 1.0
|
|
136
|
-
confidence = Math.min(confidence, 1.0);
|
|
137
|
-
const detected = confidence >= this.config.threshold;
|
|
138
|
-
return {
|
|
139
|
-
detected,
|
|
140
|
-
confidence,
|
|
141
|
-
patterns: problematicPatterns,
|
|
142
|
-
details: {
|
|
143
|
-
currentTone,
|
|
144
|
-
baselineTone,
|
|
145
|
-
driftScore: driftAnalysis.driftScore,
|
|
146
|
-
driftDirection: driftAnalysis.driftDirection,
|
|
147
|
-
manipulativePatterns: manipulativeFound.length,
|
|
148
|
-
overReassurance: overReassuranceFound.length,
|
|
149
|
-
alarmism: alarmismFound.length,
|
|
150
|
-
dependency: dependencyFound.length,
|
|
151
|
-
overDirective: overDirectiveFound.length,
|
|
152
|
-
threshold: this.config.threshold
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Analyze tone profile of text
|
|
158
|
-
*/
|
|
159
|
-
analyzeTone(text) {
|
|
160
|
-
// Formality (0-1)
|
|
161
|
-
const formalityMarkers = /\b(furthermore|moreover|consequently|nevertheless|therefore|hence|thus)\b/gi;
|
|
162
|
-
const informalMarkers = /\b(yeah|yep|gonna|wanna|kinda|sorta|like|totally|awesome)\b/gi;
|
|
163
|
-
const formalCount = (text.match(formalityMarkers) || []).length;
|
|
164
|
-
const informalCount = (text.match(informalMarkers) || []).length;
|
|
165
|
-
const formality = Math.min(1, Math.max(0, 0.5 + (formalCount - informalCount) * 0.1));
|
|
166
|
-
// Emotionality (0-1)
|
|
167
|
-
const emotionalMarkers = /\b(feel|felt|feeling|emotion|love|hate|fear|anger|sad|happy|joy|pain|hurt|worried|anxious|excited)\b/gi;
|
|
168
|
-
const emotionalCount = (text.match(emotionalMarkers) || []).length;
|
|
169
|
-
const exclamationCount = (text.match(/!/g) || []).length;
|
|
170
|
-
const emotionality = Math.min(1, (emotionalCount * 0.05) + (exclamationCount * 0.1));
|
|
171
|
-
// Directiveness (0-1)
|
|
172
|
-
const directiveMarkers = /\b(must|should|need to|have to|required|essential|critical|imperative)\b/gi;
|
|
173
|
-
const exploratoryMarkers = /\b(perhaps|maybe|might|could|possibly|what if|wonder|curious)\b/gi;
|
|
174
|
-
const directiveCount = (text.match(directiveMarkers) || []).length;
|
|
175
|
-
const exploratoryCount = (text.match(exploratoryMarkers) || []).length;
|
|
176
|
-
const directiveness = Math.min(1, Math.max(0, 0.5 + (directiveCount - exploratoryCount) * 0.08));
|
|
177
|
-
// Certainty (0-1)
|
|
178
|
-
const certaintyMarkers = /\b(definitely|absolutely|certainly|undoubtedly|clearly|obviously|surely|guaranteed|proven|fact)\b/gi;
|
|
179
|
-
const uncertaintyMarkers = /\b(maybe|perhaps|possibly|might|could|seem|appear|suggest|think)\b/gi;
|
|
180
|
-
const certainCount = (text.match(certaintyMarkers) || []).length;
|
|
181
|
-
const uncertainCount = (text.match(uncertaintyMarkers) || []).length;
|
|
182
|
-
const certainty = Math.min(1, Math.max(0, 0.5 + (certainCount - uncertainCount) * 0.08));
|
|
183
|
-
// Supportiveness (0-1)
|
|
184
|
-
const supportMarkers = /\b(support|help|care|understand|here for you|with you|believe in you|proud|amazing|wonderful|great job)\b/gi;
|
|
185
|
-
const supportCount = (text.match(supportMarkers) || []).length;
|
|
186
|
-
const supportiveness = Math.min(1, supportCount * 0.1);
|
|
187
|
-
// Urgency (0-1)
|
|
188
|
-
const urgencyMarkers = /\b(urgent|immediately|now|asap|quickly|hurry|crisis|emergency|critical|danger)\b/gi;
|
|
189
|
-
const calmMarkers = /\b(relax|calm|peace|patient|time|gradual|slow|steady|no rush)\b/gi;
|
|
190
|
-
const urgentCount = (text.match(urgencyMarkers) || []).length;
|
|
191
|
-
const calmCount = (text.match(calmMarkers) || []).length;
|
|
192
|
-
const urgency = Math.min(1, Math.max(0, 0.3 + (urgentCount - calmCount) * 0.15));
|
|
193
|
-
return {
|
|
194
|
-
formality,
|
|
195
|
-
emotionality,
|
|
196
|
-
directiveness,
|
|
197
|
-
certainty,
|
|
198
|
-
supportiveness,
|
|
199
|
-
urgency
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Get baseline tone from conversation history
|
|
204
|
-
*/
|
|
205
|
-
async getBaselineTone(context) {
|
|
206
|
-
if (!context?.conversationHistory || context.conversationHistory.length === 0) {
|
|
207
|
-
// Default neutral baseline
|
|
208
|
-
return {
|
|
209
|
-
formality: 0.5,
|
|
210
|
-
emotionality: 0.3,
|
|
211
|
-
directiveness: 0.4,
|
|
212
|
-
certainty: 0.5,
|
|
213
|
-
supportiveness: 0.5,
|
|
214
|
-
urgency: 0.2
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
// Analyze first few assistant messages to establish baseline
|
|
218
|
-
const assistantMessages = context.conversationHistory
|
|
219
|
-
.filter(msg => msg.role === 'assistant')
|
|
220
|
-
.slice(0, 3);
|
|
221
|
-
if (assistantMessages.length === 0) {
|
|
222
|
-
return {
|
|
223
|
-
formality: 0.5,
|
|
224
|
-
emotionality: 0.3,
|
|
225
|
-
directiveness: 0.4,
|
|
226
|
-
certainty: 0.5,
|
|
227
|
-
supportiveness: 0.5,
|
|
228
|
-
urgency: 0.2
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
// Average tone profiles
|
|
232
|
-
const tones = assistantMessages.map(msg => this.analyzeTone(msg.content));
|
|
233
|
-
const baseline = {
|
|
234
|
-
formality: tones.reduce((sum, t) => sum + t.formality, 0) / tones.length,
|
|
235
|
-
emotionality: tones.reduce((sum, t) => sum + t.emotionality, 0) / tones.length,
|
|
236
|
-
directiveness: tones.reduce((sum, t) => sum + t.directiveness, 0) / tones.length,
|
|
237
|
-
certainty: tones.reduce((sum, t) => sum + t.certainty, 0) / tones.length,
|
|
238
|
-
supportiveness: tones.reduce((sum, t) => sum + t.supportiveness, 0) / tones.length,
|
|
239
|
-
urgency: tones.reduce((sum, t) => sum + t.urgency, 0) / tones.length
|
|
240
|
-
};
|
|
241
|
-
return baseline;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Calculate drift between current and baseline tone
|
|
245
|
-
*/
|
|
246
|
-
calculateDrift(current, baseline) {
|
|
247
|
-
// Calculate individual dimension drifts
|
|
248
|
-
const drifts = {
|
|
249
|
-
formality: Math.abs(current.formality - baseline.formality),
|
|
250
|
-
emotionality: Math.abs(current.emotionality - baseline.emotionality),
|
|
251
|
-
directiveness: Math.abs(current.directiveness - baseline.directiveness),
|
|
252
|
-
certainty: Math.abs(current.certainty - baseline.certainty),
|
|
253
|
-
supportiveness: Math.abs(current.supportiveness - baseline.supportiveness),
|
|
254
|
-
urgency: Math.abs(current.urgency - baseline.urgency)
|
|
255
|
-
};
|
|
256
|
-
// Weight different dimensions
|
|
257
|
-
const weights = {
|
|
258
|
-
formality: 0.1,
|
|
259
|
-
emotionality: 0.25,
|
|
260
|
-
directiveness: 0.2,
|
|
261
|
-
certainty: 0.15,
|
|
262
|
-
supportiveness: 0.15,
|
|
263
|
-
urgency: 0.15
|
|
264
|
-
};
|
|
265
|
-
// Calculate weighted drift score
|
|
266
|
-
let driftScore = 0;
|
|
267
|
-
for (const [dimension, drift] of Object.entries(drifts)) {
|
|
268
|
-
driftScore += drift * weights[dimension];
|
|
269
|
-
}
|
|
270
|
-
// Determine primary drift direction
|
|
271
|
-
const maxDrift = Math.max(...Object.values(drifts));
|
|
272
|
-
const primaryDimension = Object.entries(drifts).find(([_, v]) => v === maxDrift)?.[0] || 'unknown';
|
|
273
|
-
let driftDirection = primaryDimension;
|
|
274
|
-
if (primaryDimension === 'emotionality' && current.emotionality > baseline.emotionality) {
|
|
275
|
-
driftDirection = 'emotional escalation';
|
|
276
|
-
}
|
|
277
|
-
else if (primaryDimension === 'directiveness' && current.directiveness > baseline.directiveness) {
|
|
278
|
-
driftDirection = 'increasing directiveness';
|
|
279
|
-
}
|
|
280
|
-
else if (primaryDimension === 'urgency' && current.urgency > baseline.urgency) {
|
|
281
|
-
driftDirection = 'increasing urgency/alarm';
|
|
282
|
-
}
|
|
283
|
-
const problematicPatterns = [];
|
|
284
|
-
// Flag significant drifts
|
|
285
|
-
if (drifts.emotionality > 0.4) {
|
|
286
|
-
problematicPatterns.push(`High emotional drift: ${drifts.emotionality.toFixed(2)}`);
|
|
287
|
-
}
|
|
288
|
-
if (drifts.directiveness > 0.4) {
|
|
289
|
-
problematicPatterns.push(`Significant directiveness change: ${drifts.directiveness.toFixed(2)}`);
|
|
290
|
-
}
|
|
291
|
-
if (drifts.urgency > 0.4) {
|
|
292
|
-
problematicPatterns.push(`Urgency escalation: ${drifts.urgency.toFixed(2)}`);
|
|
293
|
-
}
|
|
294
|
-
return {
|
|
295
|
-
baselineTone: baseline,
|
|
296
|
-
currentTone: current,
|
|
297
|
-
driftScore,
|
|
298
|
-
driftDirection,
|
|
299
|
-
problematicPatterns
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Detect manipulative language patterns
|
|
304
|
-
*/
|
|
305
|
-
detectManipulation(text) {
|
|
306
|
-
const detected = [];
|
|
307
|
-
for (const pattern of this.manipulativePatterns) {
|
|
308
|
-
const matches = text.match(pattern);
|
|
309
|
-
if (matches) {
|
|
310
|
-
detected.push(`Manipulative: "${matches[0]}"`);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
// Additional manipulation checks
|
|
314
|
-
if (text.match(/only I|just me|no one else/i) && text.match(/understand|help|care/i)) {
|
|
315
|
-
detected.push('Manipulative: Isolating language detected');
|
|
316
|
-
}
|
|
317
|
-
if (text.match(/they .* wrong/i) && text.match(/I .* right/i)) {
|
|
318
|
-
detected.push('Manipulative: Us vs them framing');
|
|
319
|
-
}
|
|
320
|
-
return detected;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Detect over-reassurance patterns
|
|
324
|
-
*/
|
|
325
|
-
detectOverReassurance(text) {
|
|
326
|
-
const detected = [];
|
|
327
|
-
for (const pattern of this.overReassurancePatterns) {
|
|
328
|
-
const matches = text.match(pattern);
|
|
329
|
-
if (matches) {
|
|
330
|
-
detected.push(`Over-reassurance: "${matches[0]}"`);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// Check for multiple reassurances in one response
|
|
334
|
-
const reassuranceCount = (text.match(/don't worry|it's okay|everything will|no problem|fine|trust me/gi) || []).length;
|
|
335
|
-
if (reassuranceCount >= 3) {
|
|
336
|
-
detected.push(`Over-reassurance: ${reassuranceCount} reassurance phrases in one response`);
|
|
337
|
-
}
|
|
338
|
-
return detected;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Detect alarmist language
|
|
342
|
-
*/
|
|
343
|
-
detectAlarmism(text) {
|
|
344
|
-
const detected = [];
|
|
345
|
-
for (const pattern of this.alarmistPatterns) {
|
|
346
|
-
const matches = text.match(pattern);
|
|
347
|
-
if (matches) {
|
|
348
|
-
detected.push(`Alarmist: "${matches[0]}"`);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
// Check for multiple urgency indicators
|
|
352
|
-
const urgencyCount = (text.match(/urgent|immediately|now|critical|danger|serious/gi) || []).length;
|
|
353
|
-
if (urgencyCount >= 3) {
|
|
354
|
-
detected.push(`Alarmist: ${urgencyCount} urgency terms in one response`);
|
|
355
|
-
}
|
|
356
|
-
return detected;
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Detect dependency-forming language
|
|
360
|
-
*/
|
|
361
|
-
detectDependencyForming(text) {
|
|
362
|
-
const detected = [];
|
|
363
|
-
for (const pattern of this.dependencyPatterns) {
|
|
364
|
-
const matches = text.match(pattern);
|
|
365
|
-
if (matches) {
|
|
366
|
-
detected.push(`Dependency-forming: "${matches[0]}"`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
// Check for future commitment language
|
|
370
|
-
if (text.match(/I'll .* for you/i) && text.match(/always|whenever|anytime/i)) {
|
|
371
|
-
detected.push('Dependency-forming: Unlimited availability implied');
|
|
372
|
-
}
|
|
373
|
-
return detected;
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Detect over-directive language
|
|
377
|
-
*/
|
|
378
|
-
detectOverDirectiveness(text) {
|
|
379
|
-
const detected = [];
|
|
380
|
-
for (const pattern of this.directivePatterns) {
|
|
381
|
-
const matches = text.match(pattern);
|
|
382
|
-
if (matches) {
|
|
383
|
-
detected.push(`Over-directive: "${matches[0]}"`);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
// Count directive statements
|
|
387
|
-
const directiveCount = (text.match(/you (must|should|need to|have to)/gi) || []).length;
|
|
388
|
-
if (directiveCount >= 3) {
|
|
389
|
-
detected.push(`Over-directive: ${directiveCount} directive statements`);
|
|
390
|
-
}
|
|
391
|
-
return detected;
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Detect emotional escalation
|
|
395
|
-
*/
|
|
396
|
-
detectEmotionalEscalation(current, baseline) {
|
|
397
|
-
const escalation = current.emotionality - baseline.emotionality;
|
|
398
|
-
if (escalation > 0.4) {
|
|
399
|
-
return `emotionality increased by ${(escalation * 100).toFixed(0)}%`;
|
|
400
|
-
}
|
|
401
|
-
// Check for sudden intensity
|
|
402
|
-
if (current.emotionality > 0.7 && baseline.emotionality < 0.4) {
|
|
403
|
-
return 'sudden emotional intensity';
|
|
404
|
-
}
|
|
405
|
-
// Check for combined escalation
|
|
406
|
-
if (current.emotionality > baseline.emotionality &&
|
|
407
|
-
current.urgency > baseline.urgency &&
|
|
408
|
-
current.directiveness > baseline.directiveness) {
|
|
409
|
-
return 'multi-dimensional escalation';
|
|
410
|
-
}
|
|
411
|
-
return null;
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Update configuration
|
|
415
|
-
*/
|
|
416
|
-
updateConfig(config) {
|
|
417
|
-
this.config = config;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
export default ToneDriftMonitor;
|
|
421
|
-
//# sourceMappingURL=toneDrift.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toneDrift.js","sourceRoot":"","sources":["../../../src/governance/detectors/toneDrift.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAkB;IACxB,oBAAoB,CAAW;IAC/B,uBAAuB,CAAW;IAClC,gBAAgB,CAAW;IAC3B,kBAAkB,CAAW;IAC7B,iBAAiB,CAAW;IAEpC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mDAAmD;QACnD,IAAI,CAAC,oBAAoB,GAAG;YAC1B,kBAAkB;YAClB,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,yCAAyC;YACzC,yBAAyB;YACzB,qCAAqC;YACrC,uBAAuB;YACvB,gCAAgC;YAChC,0BAA0B;SAC3B,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG;YAC7B,+CAA+C;YAC/C,kCAAkC;YAClC,gDAAgD;YAChD,2BAA2B;YAC3B,6BAA6B;YAC7B,4BAA4B;YAC5B,6BAA6B;YAC7B,qBAAqB;YACrB,kBAAkB;YAClB,qBAAqB;SACtB,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG;YACtB,qCAAqC;YACrC,iCAAiC;YACjC,uBAAuB;YACvB,oBAAoB;YACpB,2CAA2C;YAC3C,mBAAmB;YACnB,mBAAmB;YACnB,YAAY;YACZ,oBAAoB;YACpB,gBAAgB;SACjB,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG;YACxB,wBAAwB;YACxB,kBAAkB;YAClB,sBAAsB;YACtB,4BAA4B;YAC5B,wBAAwB;YACxB,eAAe;YACf,aAAa;YACb,mDAAmD;YACnD,oBAAoB;YACpB,+BAA+B;SAChC,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG;YACvB,WAAW;YACX,cAAc;YACd,cAAc;YACd,wBAAwB;YACxB,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB;YACtB,uBAAuB;YACvB,kBAAkB;YAClB,eAAe;SAChB,CAAC;QAEF,kCAAkC;QAClC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAwB;QACtD,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE/C,iCAAiC;QACjC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzD,gCAAgC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAErE,iCAAiC;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAElE,gCAAgC;QAChC,MAAM,mBAAmB,GAAG;YAC1B,GAAG,iBAAiB;YACpB,GAAG,oBAAoB;YACvB,GAAG,aAAa;YAChB,GAAG,eAAe;YAClB,GAAG,kBAAkB;SACtB,CAAC;QAEF,+BAA+B;QAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,qBAAqB;QACrB,IAAI,aAAa,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;YACnC,UAAU,IAAI,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC;QAC/C,CAAC;QAED,8BAA8B;QAC9B,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,UAAU,IAAI,GAAG,CAAC;QACpB,CAAC;QACD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,UAAU,IAAI,GAAG,CAAC;QACpB,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,iCAAiC;QACjC,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACtF,IAAI,mBAAmB,EAAE,CAAC;YACxB,UAAU,IAAI,GAAG,CAAC;YAClB,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,mBAAmB,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,wBAAwB;QACxB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAErD,OAAO;YACL,QAAQ;YACR,UAAU;YACV,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE;gBACP,WAAW;gBACX,YAAY;gBACZ,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,cAAc,EAAE,aAAa,CAAC,cAAc;gBAC5C,oBAAoB,EAAE,iBAAiB,CAAC,MAAM;gBAC9C,eAAe,EAAE,oBAAoB,CAAC,MAAM;gBAC5C,QAAQ,EAAE,aAAa,CAAC,MAAM;gBAC9B,UAAU,EAAE,eAAe,CAAC,MAAM;gBAClC,aAAa,EAAE,kBAAkB,CAAC,MAAM;gBACxC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aACjC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAY;QAC9B,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,6EAA6E,CAAC;QACvG,MAAM,eAAe,GAAG,+DAA+D,CAAC;QACxF,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAChE,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAEtF,qBAAqB;QACrB,MAAM,gBAAgB,GAAG,wGAAwG,CAAC;QAClI,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;QAErF,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,4EAA4E,CAAC;QACtG,MAAM,kBAAkB,GAAG,mEAAmE,CAAC;QAC/F,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEjG,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,qGAAqG,CAAC;QAC/H,MAAM,kBAAkB,GAAG,sEAAsE,CAAC;QAClG,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEzF,uBAAuB;QACvB,MAAM,cAAc,GAAG,6GAA6G,CAAC;QACrI,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC;QAEvD,gBAAgB;QAChB,MAAM,cAAc,GAAG,oFAAoF,CAAC;QAC5G,MAAM,WAAW,GAAG,mEAAmE,CAAC;QACxF,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEjF,OAAO;YACL,SAAS;YACT,YAAY;YACZ,aAAa;YACb,SAAS;YACT,cAAc;YACd,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,OAAwB;QACpD,IAAI,CAAC,OAAO,EAAE,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9E,2BAA2B;YAC3B,OAAO;gBACL,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,GAAG;gBAClB,SAAS,EAAE,GAAG;gBACd,cAAc,EAAE,GAAG;gBACnB,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB;aAClD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC;aACvC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEf,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,GAAG;gBAClB,SAAS,EAAE,GAAG;gBACd,cAAc,EAAE,GAAG;gBACnB,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAgB;YAC5B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YACxE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YAC9E,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YAChF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YACxE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YAClF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;SACrE,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAoB,EAAE,QAAqB;QAChE,wCAAwC;QACxC,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC3D,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YACpE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;YACvE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC3D,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;YAC1E,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;SACtD,CAAC;QAEF,8BAA8B;QAC9B,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,GAAG;YACd,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,GAAG;YAClB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,iCAAiC;QACjC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,UAAU,IAAI,KAAK,GAAG,OAAO,CAAC,SAAiC,CAAC,CAAC;QACnE,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAEnG,IAAI,cAAc,GAAG,gBAAgB,CAAC;QACtC,IAAI,gBAAgB,KAAK,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YACxF,cAAc,GAAG,sBAAsB,CAAC;QAC1C,CAAC;aAAM,IAAI,gBAAgB,KAAK,eAAe,IAAI,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClG,cAAc,GAAG,0BAA0B,CAAC;QAC9C,CAAC;aAAM,IAAI,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAChF,cAAc,GAAG,0BAA0B,CAAC;QAC9C,CAAC;QAED,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,0BAA0B;QAC1B,IAAI,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;YAC9B,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC;YAC/B,mBAAmB,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;YACzB,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,WAAW,EAAE,OAAO;YACpB,UAAU;YACV,cAAc;YACd,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAY;QACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACrF,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,IAAY;QACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kEAAkE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvH,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,gBAAgB,sCAAsC,CAAC,CAAC;QAC7F,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kDAAkD,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACnG,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,aAAa,YAAY,gCAAgC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAY;QAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAY;QAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACxF,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,cAAc,uBAAuB,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,OAAoB,EAAE,QAAqB;QAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAEhE,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACrB,OAAO,6BAA6B,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,CAAC,YAAY,GAAG,GAAG,IAAI,QAAQ,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;YAC9D,OAAO,4BAA4B,CAAC;QACtC,CAAC;QAED,gCAAgC;QAChC,IAAI,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;YAC5C,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;YAClC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YACnD,OAAO,8BAA8B,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAuB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CouchLoop Behavioral Governance Layer - Unsafe Reasoning Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects harmful advice, moralizing/shaming language, clinical overreach,
|
|
5
|
-
* and other potentially dangerous reasoning patterns in LLM responses
|
|
6
|
-
*/
|
|
7
|
-
import type { DetectionResult, SessionContext } from '../evaluationEngine.js';
|
|
8
|
-
import type { CriterionConfig } from '../config.js';
|
|
9
|
-
export declare class UnsafeReasoningDetector {
|
|
10
|
-
private config;
|
|
11
|
-
private unsafePatterns;
|
|
12
|
-
private clinicalOverreachPatterns;
|
|
13
|
-
private shamingPatterns;
|
|
14
|
-
private harmfulAdvicePatterns;
|
|
15
|
-
constructor(config: CriterionConfig);
|
|
16
|
-
/**
|
|
17
|
-
* Main detection method
|
|
18
|
-
*/
|
|
19
|
-
detect(response: string, context?: SessionContext): Promise<DetectionResult>;
|
|
20
|
-
/**
|
|
21
|
-
* Detect clinical overreach patterns
|
|
22
|
-
*/
|
|
23
|
-
private detectClinicalOverreach;
|
|
24
|
-
/**
|
|
25
|
-
* Detect shaming and moralizing language
|
|
26
|
-
*/
|
|
27
|
-
private detectShaming;
|
|
28
|
-
/**
|
|
29
|
-
* Detect harmful advice patterns
|
|
30
|
-
*/
|
|
31
|
-
private detectHarmfulAdvice;
|
|
32
|
-
/**
|
|
33
|
-
* Perform context-aware safety checks
|
|
34
|
-
*/
|
|
35
|
-
private performContextualChecks;
|
|
36
|
-
/**
|
|
37
|
-
* Assess overall harm level of text (0-1 scale)
|
|
38
|
-
*/
|
|
39
|
-
private assessHarmLevel;
|
|
40
|
-
/**
|
|
41
|
-
* Calculate confidence score based on detections
|
|
42
|
-
*/
|
|
43
|
-
private calculateConfidence;
|
|
44
|
-
/**
|
|
45
|
-
* Compare severity levels
|
|
46
|
-
*/
|
|
47
|
-
private compareSeverity;
|
|
48
|
-
/**
|
|
49
|
-
* Update configuration
|
|
50
|
-
*/
|
|
51
|
-
updateConfig(config: CriterionConfig): void;
|
|
52
|
-
}
|
|
53
|
-
export default UnsafeReasoningDetector;
|
|
54
|
-
//# sourceMappingURL=unsafeReasoning.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unsafeReasoning.d.ts","sourceRoot":"","sources":["../../../src/governance/detectors/unsafeReasoning.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AASpD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,yBAAyB,CAAW;IAC5C,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,qBAAqB,CAAW;gBAE5B,MAAM,EAAE,eAAe;IA0MnC;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IA0ElF;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwC/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;YACW,uBAAuB;IA2CrC;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+C3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;CAG5C;AAED,eAAe,uBAAuB,CAAC"}
|