contradiction-mcp 0.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/LICENSE +21 -0
- package/README.md +536 -0
- package/bin/cli.js +182 -0
- package/dist/analysis/claimMatcher.d.ts +48 -0
- package/dist/analysis/claimMatcher.js +131 -0
- package/dist/analysis/claimMatcher.js.map +1 -0
- package/dist/analysis/claimRelationship.d.ts +15 -0
- package/dist/analysis/claimRelationship.js +12 -0
- package/dist/analysis/claimRelationship.js.map +1 -0
- package/dist/analysis/confidenceScorer.d.ts +40 -0
- package/dist/analysis/confidenceScorer.js +59 -0
- package/dist/analysis/confidenceScorer.js.map +1 -0
- package/dist/analysis/contextAnalyzer.d.ts +13 -0
- package/dist/analysis/contextAnalyzer.js +187 -0
- package/dist/analysis/contextAnalyzer.js.map +1 -0
- package/dist/analysis/contradictionClassifier.d.ts +16 -0
- package/dist/analysis/contradictionClassifier.js +141 -0
- package/dist/analysis/contradictionClassifier.js.map +1 -0
- package/dist/analysis/contradictionEngine.d.ts +29 -0
- package/dist/analysis/contradictionEngine.js +284 -0
- package/dist/analysis/contradictionEngine.js.map +1 -0
- package/dist/analysis/explanationBuilder.d.ts +36 -0
- package/dist/analysis/explanationBuilder.js +77 -0
- package/dist/analysis/explanationBuilder.js.map +1 -0
- package/dist/analysis/valueComparator.d.ts +38 -0
- package/dist/analysis/valueComparator.js +418 -0
- package/dist/analysis/valueComparator.js.map +1 -0
- package/dist/config/env.d.ts +46 -0
- package/dist/config/env.js +34 -0
- package/dist/config/env.js.map +1 -0
- package/dist/connectors/base/connectorUtils.d.ts +26 -0
- package/dist/connectors/base/connectorUtils.js +63 -0
- package/dist/connectors/base/connectorUtils.js.map +1 -0
- package/dist/connectors/base/security.d.ts +11 -0
- package/dist/connectors/base/security.js +9 -0
- package/dist/connectors/base/security.js.map +1 -0
- package/dist/connectors/connectorRegistry.d.ts +43 -0
- package/dist/connectors/connectorRegistry.js +91 -0
- package/dist/connectors/connectorRegistry.js.map +1 -0
- package/dist/connectors/document/documentConnector.d.ts +45 -0
- package/dist/connectors/document/documentConnector.js +410 -0
- package/dist/connectors/document/documentConnector.js.map +1 -0
- package/dist/connectors/github/githubClient.d.ts +52 -0
- package/dist/connectors/github/githubClient.js +207 -0
- package/dist/connectors/github/githubClient.js.map +1 -0
- package/dist/connectors/github/githubConnector.d.ts +26 -0
- package/dist/connectors/github/githubConnector.js +169 -0
- package/dist/connectors/github/githubConnector.js.map +1 -0
- package/dist/connectors/github/githubExtractor.d.ts +26 -0
- package/dist/connectors/github/githubExtractor.js +469 -0
- package/dist/connectors/github/githubExtractor.js.map +1 -0
- package/dist/connectors/github/githubNormalizer.d.ts +11 -0
- package/dist/connectors/github/githubNormalizer.js +24 -0
- package/dist/connectors/github/githubNormalizer.js.map +1 -0
- package/dist/connectors/github/githubTypes.d.ts +55 -0
- package/dist/connectors/github/githubTypes.js +2 -0
- package/dist/connectors/github/githubTypes.js.map +1 -0
- package/dist/connectors/syncService.d.ts +60 -0
- package/dist/connectors/syncService.js +176 -0
- package/dist/connectors/syncService.js.map +1 -0
- package/dist/connectors/types/connector.d.ts +34 -0
- package/dist/connectors/types/connector.js +2 -0
- package/dist/connectors/types/connector.js.map +1 -0
- package/dist/connectors/types/fetchResult.d.ts +39 -0
- package/dist/connectors/types/fetchResult.js +2 -0
- package/dist/connectors/types/fetchResult.js.map +1 -0
- package/dist/connectors/website/ssrfGuard.d.ts +11 -0
- package/dist/connectors/website/ssrfGuard.js +122 -0
- package/dist/connectors/website/ssrfGuard.js.map +1 -0
- package/dist/connectors/website/websiteConnector.d.ts +30 -0
- package/dist/connectors/website/websiteConnector.js +231 -0
- package/dist/connectors/website/websiteConnector.js.map +1 -0
- package/dist/discovery/candidateGenerator.d.ts +12 -0
- package/dist/discovery/candidateGenerator.js +110 -0
- package/dist/discovery/candidateGenerator.js.map +1 -0
- package/dist/discovery/contradictionScanner.d.ts +30 -0
- package/dist/discovery/contradictionScanner.js +47 -0
- package/dist/discovery/contradictionScanner.js.map +1 -0
- package/dist/discovery/discoveryService.d.ts +37 -0
- package/dist/discovery/discoveryService.js +131 -0
- package/dist/discovery/discoveryService.js.map +1 -0
- package/dist/discovery/rankingService.d.ts +34 -0
- package/dist/discovery/rankingService.js +52 -0
- package/dist/discovery/rankingService.js.map +1 -0
- package/dist/discovery/similarityIndex.d.ts +20 -0
- package/dist/discovery/similarityIndex.js +89 -0
- package/dist/discovery/similarityIndex.js.map +1 -0
- package/dist/domain/entities/claim.d.ts +99 -0
- package/dist/domain/entities/claim.js +92 -0
- package/dist/domain/entities/claim.js.map +1 -0
- package/dist/domain/entities/contradiction.d.ts +110 -0
- package/dist/domain/entities/contradiction.js +74 -0
- package/dist/domain/entities/contradiction.js.map +1 -0
- package/dist/domain/entities/source.d.ts +43 -0
- package/dist/domain/entities/source.js +35 -0
- package/dist/domain/entities/source.js.map +1 -0
- package/dist/domain/types/common.d.ts +46 -0
- package/dist/domain/types/common.js +74 -0
- package/dist/domain/types/common.js.map +1 -0
- package/dist/httpServer.d.ts +25 -0
- package/dist/httpServer.js +164 -0
- package/dist/httpServer.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligence/authorityScorer.d.ts +20 -0
- package/dist/intelligence/authorityScorer.js +103 -0
- package/dist/intelligence/authorityScorer.js.map +1 -0
- package/dist/intelligence/entityResolver.d.ts +33 -0
- package/dist/intelligence/entityResolver.js +152 -0
- package/dist/intelligence/entityResolver.js.map +1 -0
- package/dist/intelligence/evidenceEvaluator.d.ts +15 -0
- package/dist/intelligence/evidenceEvaluator.js +63 -0
- package/dist/intelligence/evidenceEvaluator.js.map +1 -0
- package/dist/intelligence/freshnessScorer.d.ts +25 -0
- package/dist/intelligence/freshnessScorer.js +90 -0
- package/dist/intelligence/freshnessScorer.js.map +1 -0
- package/dist/intelligence/provenanceAnalyzer.d.ts +19 -0
- package/dist/intelligence/provenanceAnalyzer.js +33 -0
- package/dist/intelligence/provenanceAnalyzer.js.map +1 -0
- package/dist/intelligence/resolutionAdvisor.d.ts +40 -0
- package/dist/intelligence/resolutionAdvisor.js +118 -0
- package/dist/intelligence/resolutionAdvisor.js.map +1 -0
- package/dist/intelligence/semanticMatcher.d.ts +21 -0
- package/dist/intelligence/semanticMatcher.js +71 -0
- package/dist/intelligence/semanticMatcher.js.map +1 -0
- package/dist/scripts/comprehensiveVerification.d.ts +5 -0
- package/dist/scripts/comprehensiveVerification.js +961 -0
- package/dist/scripts/comprehensiveVerification.js.map +1 -0
- package/dist/scripts/finalLiveDemo.d.ts +5 -0
- package/dist/scripts/finalLiveDemo.js +226 -0
- package/dist/scripts/finalLiveDemo.js.map +1 -0
- package/dist/scripts/liveMcpSmoke.d.ts +1 -0
- package/dist/scripts/liveMcpSmoke.js +89 -0
- package/dist/scripts/liveMcpSmoke.js.map +1 -0
- package/dist/scripts/seedDemoData.d.ts +6 -0
- package/dist/scripts/seedDemoData.js +179 -0
- package/dist/scripts/seedDemoData.js.map +1 -0
- package/dist/server.d.ts +28 -0
- package/dist/server.js +1264 -0
- package/dist/server.js.map +1 -0
- package/dist/services/analysisService.d.ts +40 -0
- package/dist/services/analysisService.js +65 -0
- package/dist/services/analysisService.js.map +1 -0
- package/dist/services/healthService.d.ts +42 -0
- package/dist/services/healthService.js +50 -0
- package/dist/services/healthService.js.map +1 -0
- package/dist/services/metricsService.d.ts +35 -0
- package/dist/services/metricsService.js +57 -0
- package/dist/services/metricsService.js.map +1 -0
- package/dist/services/rateLimiter.d.ts +23 -0
- package/dist/services/rateLimiter.js +45 -0
- package/dist/services/rateLimiter.js.map +1 -0
- package/dist/services/reviewService.d.ts +32 -0
- package/dist/services/reviewService.js +94 -0
- package/dist/services/reviewService.js.map +1 -0
- package/dist/services/schedulerService.d.ts +30 -0
- package/dist/services/schedulerService.js +89 -0
- package/dist/services/schedulerService.js.map +1 -0
- package/dist/storage/backupService.d.ts +14 -0
- package/dist/storage/backupService.js +90 -0
- package/dist/storage/backupService.js.map +1 -0
- package/dist/storage/database.d.ts +119 -0
- package/dist/storage/database.js +935 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/migrations/001_initial.sql +63 -0
- package/dist/storage/migrations/002_discovery_uniqueness.sql +8 -0
- package/dist/storage/migrations/003_connector_identity.sql +7 -0
- package/dist/storage/migrations/004_claim_context.sql +15 -0
- package/dist/storage/migrations/005_claim_history.sql +26 -0
- package/dist/storage/migrations/006_contradiction_resolution.sql +27 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.js +48 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ContradictionSeverity, ContradictionType } from '../domain/entities/contradiction.js';
|
|
2
|
+
import { Claim } from '../domain/entities/claim.js';
|
|
3
|
+
import { Source } from '../domain/entities/source.js';
|
|
4
|
+
export interface RankableContradiction {
|
|
5
|
+
contradictionId?: string;
|
|
6
|
+
claimA: Claim;
|
|
7
|
+
claimB: Claim;
|
|
8
|
+
sourceA?: Source | null;
|
|
9
|
+
sourceB?: Source | null;
|
|
10
|
+
contradictionType: ContradictionType;
|
|
11
|
+
severity: ContradictionSeverity;
|
|
12
|
+
confidence: number;
|
|
13
|
+
explanation: string;
|
|
14
|
+
detectedAt?: Date;
|
|
15
|
+
priorityScore?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Deterministic Heuristic Ranking Service
|
|
19
|
+
*
|
|
20
|
+
* Computes a priority score (0.0 to 1.0) using:
|
|
21
|
+
* - Severity weight (35%)
|
|
22
|
+
* - Contradiction confidence (35%)
|
|
23
|
+
* - Source trust score (15%)
|
|
24
|
+
* - Claim confidence (10%)
|
|
25
|
+
* - Recency score (5%)
|
|
26
|
+
*
|
|
27
|
+
* NOTE: This is a deterministic heuristic score for triage ranking,
|
|
28
|
+
* not a statistical probability distribution.
|
|
29
|
+
*/
|
|
30
|
+
export declare class RankingService {
|
|
31
|
+
computePriorityScore(item: RankableContradiction): number;
|
|
32
|
+
rank<T extends RankableContradiction>(items: T[]): T[];
|
|
33
|
+
}
|
|
34
|
+
export declare const rankingService: RankingService;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const SEVERITY_WEIGHTS = {
|
|
2
|
+
CRITICAL: 1.0,
|
|
3
|
+
HIGH: 0.8,
|
|
4
|
+
MEDIUM: 0.5,
|
|
5
|
+
LOW: 0.2,
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Deterministic Heuristic Ranking Service
|
|
9
|
+
*
|
|
10
|
+
* Computes a priority score (0.0 to 1.0) using:
|
|
11
|
+
* - Severity weight (35%)
|
|
12
|
+
* - Contradiction confidence (35%)
|
|
13
|
+
* - Source trust score (15%)
|
|
14
|
+
* - Claim confidence (10%)
|
|
15
|
+
* - Recency score (5%)
|
|
16
|
+
*
|
|
17
|
+
* NOTE: This is a deterministic heuristic score for triage ranking,
|
|
18
|
+
* not a statistical probability distribution.
|
|
19
|
+
*/
|
|
20
|
+
export class RankingService {
|
|
21
|
+
computePriorityScore(item) {
|
|
22
|
+
const sevWeight = SEVERITY_WEIGHTS[item.severity] ?? 0.5;
|
|
23
|
+
const conf = Math.max(0, Math.min(1, item.confidence));
|
|
24
|
+
const trustA = item.sourceA?.trustScore ?? 1.0;
|
|
25
|
+
const trustB = item.sourceB?.trustScore ?? 1.0;
|
|
26
|
+
const avgSourceTrust = (trustA + trustB) / 2;
|
|
27
|
+
const claimConfA = item.claimA.confidence ?? 1.0;
|
|
28
|
+
const claimConfB = item.claimB.confidence ?? 1.0;
|
|
29
|
+
const avgClaimConfidence = (claimConfA + claimConfB) / 2;
|
|
30
|
+
// Recency boost: 1.0 if within last 7 days, fading to 0.0 after 90 days
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
const detected = item.detectedAt ? item.detectedAt.getTime() : now;
|
|
33
|
+
const ageDays = Math.max(0, (now - detected) / (1000 * 60 * 60 * 24));
|
|
34
|
+
const recency = Math.max(0, 1 - ageDays / 90);
|
|
35
|
+
const rawScore = sevWeight * 0.35 +
|
|
36
|
+
conf * 0.35 +
|
|
37
|
+
avgSourceTrust * 0.15 +
|
|
38
|
+
avgClaimConfidence * 0.1 +
|
|
39
|
+
recency * 0.05;
|
|
40
|
+
const clamped = Math.max(0.0, Math.min(1.0, rawScore));
|
|
41
|
+
return Number(clamped.toFixed(3));
|
|
42
|
+
}
|
|
43
|
+
rank(items) {
|
|
44
|
+
const scored = items.map((item) => ({
|
|
45
|
+
...item,
|
|
46
|
+
priorityScore: this.computePriorityScore(item),
|
|
47
|
+
}));
|
|
48
|
+
return scored.sort((a, b) => (b.priorityScore ?? 0) - (a.priorityScore ?? 0));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export const rankingService = new RankingService();
|
|
52
|
+
//# sourceMappingURL=rankingService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rankingService.js","sourceRoot":"","sources":["../../src/discovery/rankingService.ts"],"names":[],"mappings":"AAkBA,MAAM,gBAAgB,GAA0C;IAC9D,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACT,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,cAAc;IAClB,oBAAoB,CAAC,IAA2B;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC;QAC/C,MAAM,cAAc,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QACjD,MAAM,kBAAkB,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEzD,wEAAwE;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;QAE9C,MAAM,QAAQ,GACZ,SAAS,GAAG,IAAI;YAChB,IAAI,GAAG,IAAI;YACX,cAAc,GAAG,IAAI;YACrB,kBAAkB,GAAG,GAAG;YACxB,OAAO,GAAG,IAAI,CAAC;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAEM,IAAI,CAAkC,KAAU;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,GAAG,IAAI;YACP,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;SAC/C,CAAC,CAAC,CAAC;QAEJ,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Claim } from '../domain/entities/claim.js';
|
|
2
|
+
export interface ClaimIndex {
|
|
3
|
+
add(claim: Claim): void;
|
|
4
|
+
addMany(claims: Claim[]): void;
|
|
5
|
+
findCandidates(claim: Claim): Claim[];
|
|
6
|
+
clear(): void;
|
|
7
|
+
size(): number;
|
|
8
|
+
}
|
|
9
|
+
export declare class InMemoryClaimIndex implements ClaimIndex {
|
|
10
|
+
private readonly claims;
|
|
11
|
+
private readonly exactBucket;
|
|
12
|
+
private readonly subjectBucket;
|
|
13
|
+
add(claim: Claim): void;
|
|
14
|
+
addMany(claims: Claim[]): void;
|
|
15
|
+
findCandidates(claim: Claim): Claim[];
|
|
16
|
+
clear(): void;
|
|
17
|
+
size(): number;
|
|
18
|
+
getAllClaims(): Claim[];
|
|
19
|
+
}
|
|
20
|
+
export declare const claimIndex: InMemoryClaimIndex;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { normalizeText, calculateCompositeSimilarity } from '../analysis/claimMatcher.js';
|
|
2
|
+
export class InMemoryClaimIndex {
|
|
3
|
+
claims = new Map();
|
|
4
|
+
// Bucket by normalizedSubject::normalizedPredicate for fast O(1) group lookup
|
|
5
|
+
exactBucket = new Map();
|
|
6
|
+
// Bucket by normalizedSubject for fuzzy predicate matching
|
|
7
|
+
subjectBucket = new Map();
|
|
8
|
+
add(claim) {
|
|
9
|
+
if (!claim.id)
|
|
10
|
+
return;
|
|
11
|
+
this.claims.set(claim.id, claim);
|
|
12
|
+
const normSub = normalizeText(claim.subject);
|
|
13
|
+
const normPred = normalizeText(claim.predicate);
|
|
14
|
+
const exactKey = `${normSub}::${normPred}`;
|
|
15
|
+
// Add to exact bucket
|
|
16
|
+
let exactSet = this.exactBucket.get(exactKey);
|
|
17
|
+
if (!exactSet) {
|
|
18
|
+
exactSet = new Set();
|
|
19
|
+
this.exactBucket.set(exactKey, exactSet);
|
|
20
|
+
}
|
|
21
|
+
exactSet.add(claim.id);
|
|
22
|
+
// Add to subject bucket
|
|
23
|
+
let subjectSet = this.subjectBucket.get(normSub);
|
|
24
|
+
if (!subjectSet) {
|
|
25
|
+
subjectSet = new Set();
|
|
26
|
+
this.subjectBucket.set(normSub, subjectSet);
|
|
27
|
+
}
|
|
28
|
+
subjectSet.add(claim.id);
|
|
29
|
+
}
|
|
30
|
+
addMany(claims) {
|
|
31
|
+
for (const claim of claims) {
|
|
32
|
+
this.add(claim);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
findCandidates(claim) {
|
|
36
|
+
if (!claim.id && !claim.subject)
|
|
37
|
+
return [];
|
|
38
|
+
const normSub = normalizeText(claim.subject);
|
|
39
|
+
const normPred = normalizeText(claim.predicate);
|
|
40
|
+
const exactKey = `${normSub}::${normPred}`;
|
|
41
|
+
const candidateIds = new Set();
|
|
42
|
+
// 1. Direct exact bucket matches
|
|
43
|
+
const exactMatches = this.exactBucket.get(exactKey);
|
|
44
|
+
if (exactMatches) {
|
|
45
|
+
for (const id of exactMatches) {
|
|
46
|
+
if (id !== claim.id) {
|
|
47
|
+
candidateIds.add(id);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// 2. Near-predicate matches within same subject (e.g. "node-version" vs "nodejs version")
|
|
52
|
+
const subjectMatches = this.subjectBucket.get(normSub);
|
|
53
|
+
if (subjectMatches) {
|
|
54
|
+
for (const id of subjectMatches) {
|
|
55
|
+
if (id === claim.id || candidateIds.has(id))
|
|
56
|
+
continue;
|
|
57
|
+
const candidate = this.claims.get(id);
|
|
58
|
+
if (candidate) {
|
|
59
|
+
const sim = calculateCompositeSimilarity(claim.predicate, candidate.predicate);
|
|
60
|
+
if (sim >= 0.75) {
|
|
61
|
+
candidateIds.add(id);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Convert candidate IDs to Claim objects
|
|
67
|
+
const results = [];
|
|
68
|
+
for (const id of candidateIds) {
|
|
69
|
+
const c = this.claims.get(id);
|
|
70
|
+
if (c) {
|
|
71
|
+
results.push(c);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
clear() {
|
|
77
|
+
this.claims.clear();
|
|
78
|
+
this.exactBucket.clear();
|
|
79
|
+
this.subjectBucket.clear();
|
|
80
|
+
}
|
|
81
|
+
size() {
|
|
82
|
+
return this.claims.size;
|
|
83
|
+
}
|
|
84
|
+
getAllClaims() {
|
|
85
|
+
return Array.from(this.claims.values());
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export const claimIndex = new InMemoryClaimIndex();
|
|
89
|
+
//# sourceMappingURL=similarityIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"similarityIndex.js","sourceRoot":"","sources":["../../src/discovery/similarityIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Metadata } from '../types/common.js';
|
|
3
|
+
export declare const StandardClaimValueTypes: readonly ["date", "price", "version", "name", "quantity", "status", "address", "policy", "configuration", "requirement"];
|
|
4
|
+
export type StandardClaimValueType = (typeof StandardClaimValueTypes)[number];
|
|
5
|
+
export type ClaimValueType = StandardClaimValueType | (string & {});
|
|
6
|
+
export declare const StandardClaimEnvironments: readonly ["development", "testing", "staging", "production", "ci", "documentation", "deployment", "unknown"];
|
|
7
|
+
export type ClaimEnvironment = (typeof StandardClaimEnvironments)[number] | (string & {});
|
|
8
|
+
export declare const StandardClaimScopes: readonly ["repository", "file", "workflow", "environment", "package", "service", "deployment", "unknown"];
|
|
9
|
+
export type ClaimScope = (typeof StandardClaimScopes)[number] | (string & {});
|
|
10
|
+
export declare const StandardClaimSourceRoles: readonly ["authoritative", "configuration", "documentation", "example", "historical", "generated", "unknown"];
|
|
11
|
+
export type ClaimSourceRole = (typeof StandardClaimSourceRoles)[number] | (string & {});
|
|
12
|
+
export interface Claim {
|
|
13
|
+
id: string;
|
|
14
|
+
externalId?: string | null;
|
|
15
|
+
sourceId: string;
|
|
16
|
+
subject: string;
|
|
17
|
+
predicate: string;
|
|
18
|
+
value: string;
|
|
19
|
+
valueType: ClaimValueType;
|
|
20
|
+
normalizedValue?: string | null;
|
|
21
|
+
confidence: number;
|
|
22
|
+
environment?: ClaimEnvironment | null;
|
|
23
|
+
scope?: ClaimScope | null;
|
|
24
|
+
sourceRole?: ClaimSourceRole | null;
|
|
25
|
+
isHistorical: boolean;
|
|
26
|
+
validFrom?: Date | null;
|
|
27
|
+
validUntil?: Date | null;
|
|
28
|
+
valueConstraint?: string | null;
|
|
29
|
+
multiValueContext?: string | null;
|
|
30
|
+
observedAt: Date;
|
|
31
|
+
firstSeenAt?: Date | null;
|
|
32
|
+
lastSeenAt?: Date | null;
|
|
33
|
+
supersededBy?: string | null;
|
|
34
|
+
createdAt: Date;
|
|
35
|
+
metadata: Metadata;
|
|
36
|
+
}
|
|
37
|
+
export interface ClaimHistoryEntry {
|
|
38
|
+
id: string;
|
|
39
|
+
claimId: string;
|
|
40
|
+
sourceId: string;
|
|
41
|
+
value: string;
|
|
42
|
+
normalizedValue?: string | null;
|
|
43
|
+
observedAt: Date;
|
|
44
|
+
firstSeenAt: Date;
|
|
45
|
+
lastSeenAt: Date;
|
|
46
|
+
supersededAt?: Date | null;
|
|
47
|
+
supersededBy?: string | null;
|
|
48
|
+
metadata: Metadata;
|
|
49
|
+
}
|
|
50
|
+
export declare const ClaimSchema: z.ZodObject<{
|
|
51
|
+
id: z.ZodString;
|
|
52
|
+
externalId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
53
|
+
sourceId: z.ZodString;
|
|
54
|
+
subject: z.ZodString;
|
|
55
|
+
predicate: z.ZodString;
|
|
56
|
+
value: z.ZodString;
|
|
57
|
+
valueType: z.ZodString;
|
|
58
|
+
normalizedValue: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
59
|
+
confidence: z.ZodDefault<z.ZodNumber>;
|
|
60
|
+
environment: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
61
|
+
scope: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
62
|
+
sourceRole: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
63
|
+
isHistorical: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
+
validFrom: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
65
|
+
validUntil: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
66
|
+
valueConstraint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
67
|
+
multiValueContext: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
68
|
+
observedAt: z.ZodCoercedDate<unknown>;
|
|
69
|
+
firstSeenAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
70
|
+
lastSeenAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
71
|
+
supersededBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
72
|
+
createdAt: z.ZodCoercedDate<unknown>;
|
|
73
|
+
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
export declare const CreateClaimInputSchema: z.ZodObject<{
|
|
76
|
+
id: z.ZodOptional<z.ZodString>;
|
|
77
|
+
externalId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
78
|
+
sourceId: z.ZodString;
|
|
79
|
+
subject: z.ZodString;
|
|
80
|
+
predicate: z.ZodString;
|
|
81
|
+
value: z.ZodString;
|
|
82
|
+
valueType: z.ZodString;
|
|
83
|
+
normalizedValue: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
84
|
+
confidence: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
85
|
+
environment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
86
|
+
scope: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
87
|
+
sourceRole: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
88
|
+
isHistorical: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
89
|
+
validFrom: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
90
|
+
validUntil: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
91
|
+
valueConstraint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
92
|
+
multiValueContext: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
93
|
+
observedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
94
|
+
firstSeenAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
95
|
+
lastSeenAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
96
|
+
supersededBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
97
|
+
metadata: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export type CreateClaimInput = z.infer<typeof CreateClaimInputSchema>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const StandardClaimValueTypes = [
|
|
3
|
+
'date',
|
|
4
|
+
'price',
|
|
5
|
+
'version',
|
|
6
|
+
'name',
|
|
7
|
+
'quantity',
|
|
8
|
+
'status',
|
|
9
|
+
'address',
|
|
10
|
+
'policy',
|
|
11
|
+
'configuration',
|
|
12
|
+
'requirement',
|
|
13
|
+
];
|
|
14
|
+
export const StandardClaimEnvironments = [
|
|
15
|
+
'development',
|
|
16
|
+
'testing',
|
|
17
|
+
'staging',
|
|
18
|
+
'production',
|
|
19
|
+
'ci',
|
|
20
|
+
'documentation',
|
|
21
|
+
'deployment',
|
|
22
|
+
'unknown',
|
|
23
|
+
];
|
|
24
|
+
export const StandardClaimScopes = [
|
|
25
|
+
'repository',
|
|
26
|
+
'file',
|
|
27
|
+
'workflow',
|
|
28
|
+
'environment',
|
|
29
|
+
'package',
|
|
30
|
+
'service',
|
|
31
|
+
'deployment',
|
|
32
|
+
'unknown',
|
|
33
|
+
];
|
|
34
|
+
export const StandardClaimSourceRoles = [
|
|
35
|
+
'authoritative',
|
|
36
|
+
'configuration',
|
|
37
|
+
'documentation',
|
|
38
|
+
'example',
|
|
39
|
+
'historical',
|
|
40
|
+
'generated',
|
|
41
|
+
'unknown',
|
|
42
|
+
];
|
|
43
|
+
export const ClaimSchema = z.object({
|
|
44
|
+
id: z.string().min(1),
|
|
45
|
+
externalId: z.string().nullable().optional(),
|
|
46
|
+
sourceId: z.string().min(1),
|
|
47
|
+
subject: z.string().min(1),
|
|
48
|
+
predicate: z.string().min(1),
|
|
49
|
+
value: z.string(),
|
|
50
|
+
valueType: z.string().min(1),
|
|
51
|
+
normalizedValue: z.string().nullable().optional(),
|
|
52
|
+
confidence: z.number().min(0.0).max(1.0).default(1.0),
|
|
53
|
+
environment: z.string().nullable().optional().default('unknown'),
|
|
54
|
+
scope: z.string().nullable().optional().default('unknown'),
|
|
55
|
+
sourceRole: z.string().nullable().optional().default('unknown'),
|
|
56
|
+
isHistorical: z.boolean().default(false),
|
|
57
|
+
validFrom: z.coerce.date().nullable().optional(),
|
|
58
|
+
validUntil: z.coerce.date().nullable().optional(),
|
|
59
|
+
valueConstraint: z.string().nullable().optional(),
|
|
60
|
+
multiValueContext: z.string().nullable().optional(),
|
|
61
|
+
observedAt: z.coerce.date(),
|
|
62
|
+
firstSeenAt: z.coerce.date().nullable().optional(),
|
|
63
|
+
lastSeenAt: z.coerce.date().nullable().optional(),
|
|
64
|
+
supersededBy: z.string().nullable().optional(),
|
|
65
|
+
createdAt: z.coerce.date(),
|
|
66
|
+
metadata: z.record(z.string(), z.unknown()).default({}),
|
|
67
|
+
});
|
|
68
|
+
export const CreateClaimInputSchema = z.object({
|
|
69
|
+
id: z.string().min(1).optional(),
|
|
70
|
+
externalId: z.string().nullable().optional(),
|
|
71
|
+
sourceId: z.string().min(1),
|
|
72
|
+
subject: z.string().min(1),
|
|
73
|
+
predicate: z.string().min(1),
|
|
74
|
+
value: z.string(),
|
|
75
|
+
valueType: z.string().min(1),
|
|
76
|
+
normalizedValue: z.string().nullable().optional(),
|
|
77
|
+
confidence: z.number().min(0.0).max(1.0).default(1.0).optional(),
|
|
78
|
+
environment: z.string().nullable().optional(),
|
|
79
|
+
scope: z.string().nullable().optional(),
|
|
80
|
+
sourceRole: z.string().nullable().optional(),
|
|
81
|
+
isHistorical: z.boolean().default(false).optional(),
|
|
82
|
+
validFrom: z.coerce.date().nullable().optional(),
|
|
83
|
+
validUntil: z.coerce.date().nullable().optional(),
|
|
84
|
+
valueConstraint: z.string().nullable().optional(),
|
|
85
|
+
multiValueContext: z.string().nullable().optional(),
|
|
86
|
+
observedAt: z.coerce.date().optional(),
|
|
87
|
+
firstSeenAt: z.coerce.date().nullable().optional(),
|
|
88
|
+
lastSeenAt: z.coerce.date().nullable().optional(),
|
|
89
|
+
supersededBy: z.string().nullable().optional(),
|
|
90
|
+
metadata: z.record(z.string(), z.unknown()).default({}).optional(),
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/domain/entities/claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Metadata } from '../types/common.js';
|
|
3
|
+
export declare const ContradictionTypes: readonly ["VALUE_MISMATCH", "DATE_MISMATCH", "VERSION_MISMATCH", "STATUS_MISMATCH", "QUANTITY_MISMATCH", "POLICY_MISMATCH", "ENTITY_MISMATCH", "EXISTENCE_MISMATCH", "CONFIGURATION_MISMATCH", "REQUIREMENT_MISMATCH", "TEMPORAL_MISMATCH", "AUTHORITY_MISMATCH", "UNKNOWN"];
|
|
4
|
+
export type ContradictionType = (typeof ContradictionTypes)[number] | (string & {});
|
|
5
|
+
export declare const ContradictionSeverities: readonly ["LOW", "MEDIUM", "HIGH", "CRITICAL"];
|
|
6
|
+
export type ContradictionSeverity = (typeof ContradictionSeverities)[number];
|
|
7
|
+
export declare const ContradictionStatuses: readonly ["OPEN", "REVIEWED", "RESOLVED", "DISMISSED"];
|
|
8
|
+
export type ContradictionStatus = (typeof ContradictionStatuses)[number];
|
|
9
|
+
export interface Contradiction {
|
|
10
|
+
id: string;
|
|
11
|
+
claimAId: string;
|
|
12
|
+
claimBId: string;
|
|
13
|
+
contradictionType: ContradictionType;
|
|
14
|
+
severity: ContradictionSeverity;
|
|
15
|
+
confidence: number;
|
|
16
|
+
explanation: string;
|
|
17
|
+
status: ContradictionStatus;
|
|
18
|
+
detectedAt: Date;
|
|
19
|
+
resolvedAt?: Date | null;
|
|
20
|
+
resolutionReason?: string | null;
|
|
21
|
+
resolvedBy?: string | null;
|
|
22
|
+
resolutionSource?: string | null;
|
|
23
|
+
chosenClaimId?: string | null;
|
|
24
|
+
auditNotes?: string | null;
|
|
25
|
+
metadata: Metadata;
|
|
26
|
+
}
|
|
27
|
+
export interface ContradictionHistoryEntry {
|
|
28
|
+
id: string;
|
|
29
|
+
contradictionId: string;
|
|
30
|
+
action: 'REVIEWED' | 'RESOLVED' | 'DISMISSED' | 'REOPENED';
|
|
31
|
+
previousStatus: ContradictionStatus;
|
|
32
|
+
newStatus: ContradictionStatus;
|
|
33
|
+
performedBy: string;
|
|
34
|
+
performedAt: Date;
|
|
35
|
+
reason?: string | null;
|
|
36
|
+
chosenClaimId?: string | null;
|
|
37
|
+
notes?: string | null;
|
|
38
|
+
}
|
|
39
|
+
export declare const ContradictionSchema: z.ZodObject<{
|
|
40
|
+
id: z.ZodString;
|
|
41
|
+
claimAId: z.ZodString;
|
|
42
|
+
claimBId: z.ZodString;
|
|
43
|
+
contradictionType: z.ZodString;
|
|
44
|
+
severity: z.ZodEnum<{
|
|
45
|
+
LOW: "LOW";
|
|
46
|
+
MEDIUM: "MEDIUM";
|
|
47
|
+
HIGH: "HIGH";
|
|
48
|
+
CRITICAL: "CRITICAL";
|
|
49
|
+
}>;
|
|
50
|
+
confidence: z.ZodDefault<z.ZodNumber>;
|
|
51
|
+
explanation: z.ZodString;
|
|
52
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
53
|
+
OPEN: "OPEN";
|
|
54
|
+
REVIEWED: "REVIEWED";
|
|
55
|
+
RESOLVED: "RESOLVED";
|
|
56
|
+
DISMISSED: "DISMISSED";
|
|
57
|
+
}>>;
|
|
58
|
+
detectedAt: z.ZodCoercedDate<unknown>;
|
|
59
|
+
resolvedAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
60
|
+
resolutionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
61
|
+
resolvedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
62
|
+
resolutionSource: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
63
|
+
chosenClaimId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
64
|
+
auditNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
65
|
+
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export declare const CreateContradictionInputSchema: z.ZodObject<{
|
|
68
|
+
id: z.ZodOptional<z.ZodString>;
|
|
69
|
+
claimAId: z.ZodString;
|
|
70
|
+
claimBId: z.ZodString;
|
|
71
|
+
contradictionType: z.ZodString;
|
|
72
|
+
severity: z.ZodDefault<z.ZodEnum<{
|
|
73
|
+
LOW: "LOW";
|
|
74
|
+
MEDIUM: "MEDIUM";
|
|
75
|
+
HIGH: "HIGH";
|
|
76
|
+
CRITICAL: "CRITICAL";
|
|
77
|
+
}>>;
|
|
78
|
+
confidence: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
79
|
+
explanation: z.ZodString;
|
|
80
|
+
status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
81
|
+
OPEN: "OPEN";
|
|
82
|
+
REVIEWED: "REVIEWED";
|
|
83
|
+
RESOLVED: "RESOLVED";
|
|
84
|
+
DISMISSED: "DISMISSED";
|
|
85
|
+
}>>>;
|
|
86
|
+
detectedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
87
|
+
resolvedAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
88
|
+
resolutionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
89
|
+
resolvedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
90
|
+
resolutionSource: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
91
|
+
chosenClaimId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
92
|
+
auditNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
93
|
+
metadata: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
export type CreateContradictionInput = z.infer<typeof CreateContradictionInputSchema>;
|
|
96
|
+
export declare const UpdateContradictionStatusSchema: z.ZodObject<{
|
|
97
|
+
status: z.ZodEnum<{
|
|
98
|
+
OPEN: "OPEN";
|
|
99
|
+
REVIEWED: "REVIEWED";
|
|
100
|
+
RESOLVED: "RESOLVED";
|
|
101
|
+
DISMISSED: "DISMISSED";
|
|
102
|
+
}>;
|
|
103
|
+
resolvedAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
104
|
+
resolutionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
105
|
+
resolvedBy: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
106
|
+
resolutionSource: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
107
|
+
chosenClaimId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
108
|
+
auditNotes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
export type UpdateContradictionStatusInput = z.infer<typeof UpdateContradictionStatusSchema>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const ContradictionTypes = [
|
|
3
|
+
'VALUE_MISMATCH',
|
|
4
|
+
'DATE_MISMATCH',
|
|
5
|
+
'VERSION_MISMATCH',
|
|
6
|
+
'STATUS_MISMATCH',
|
|
7
|
+
'QUANTITY_MISMATCH',
|
|
8
|
+
'POLICY_MISMATCH',
|
|
9
|
+
'ENTITY_MISMATCH',
|
|
10
|
+
'EXISTENCE_MISMATCH',
|
|
11
|
+
'CONFIGURATION_MISMATCH',
|
|
12
|
+
'REQUIREMENT_MISMATCH',
|
|
13
|
+
'TEMPORAL_MISMATCH',
|
|
14
|
+
'AUTHORITY_MISMATCH',
|
|
15
|
+
'UNKNOWN',
|
|
16
|
+
];
|
|
17
|
+
export const ContradictionSeverities = ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'];
|
|
18
|
+
export const ContradictionStatuses = ['OPEN', 'REVIEWED', 'RESOLVED', 'DISMISSED'];
|
|
19
|
+
export const ContradictionSchema = z
|
|
20
|
+
.object({
|
|
21
|
+
id: z.string().min(1),
|
|
22
|
+
claimAId: z.string().min(1),
|
|
23
|
+
claimBId: z.string().min(1),
|
|
24
|
+
contradictionType: z.string().min(1),
|
|
25
|
+
severity: z.enum(ContradictionSeverities),
|
|
26
|
+
confidence: z.number().min(0.0).max(1.0).default(1.0),
|
|
27
|
+
explanation: z.string().min(1),
|
|
28
|
+
status: z.enum(ContradictionStatuses).default('OPEN'),
|
|
29
|
+
detectedAt: z.coerce.date(),
|
|
30
|
+
resolvedAt: z.coerce.date().nullable().optional(),
|
|
31
|
+
resolutionReason: z.string().nullable().optional(),
|
|
32
|
+
resolvedBy: z.string().nullable().optional(),
|
|
33
|
+
resolutionSource: z.string().nullable().optional(),
|
|
34
|
+
chosenClaimId: z.string().nullable().optional(),
|
|
35
|
+
auditNotes: z.string().nullable().optional(),
|
|
36
|
+
metadata: z.record(z.string(), z.unknown()).default({}),
|
|
37
|
+
})
|
|
38
|
+
.refine((data) => data.claimAId !== data.claimBId, {
|
|
39
|
+
message: 'claimAId and claimBId must be distinct claims',
|
|
40
|
+
path: ['claimBId'],
|
|
41
|
+
});
|
|
42
|
+
export const CreateContradictionInputSchema = z
|
|
43
|
+
.object({
|
|
44
|
+
id: z.string().min(1).optional(),
|
|
45
|
+
claimAId: z.string().min(1),
|
|
46
|
+
claimBId: z.string().min(1),
|
|
47
|
+
contradictionType: z.string().min(1),
|
|
48
|
+
severity: z.enum(ContradictionSeverities).default('MEDIUM'),
|
|
49
|
+
confidence: z.number().min(0.0).max(1.0).default(1.0).optional(),
|
|
50
|
+
explanation: z.string().min(1),
|
|
51
|
+
status: z.enum(ContradictionStatuses).default('OPEN').optional(),
|
|
52
|
+
detectedAt: z.coerce.date().optional(),
|
|
53
|
+
resolvedAt: z.coerce.date().nullable().optional(),
|
|
54
|
+
resolutionReason: z.string().nullable().optional(),
|
|
55
|
+
resolvedBy: z.string().nullable().optional(),
|
|
56
|
+
resolutionSource: z.string().nullable().optional(),
|
|
57
|
+
chosenClaimId: z.string().nullable().optional(),
|
|
58
|
+
auditNotes: z.string().nullable().optional(),
|
|
59
|
+
metadata: z.record(z.string(), z.unknown()).default({}).optional(),
|
|
60
|
+
})
|
|
61
|
+
.refine((data) => data.claimAId !== data.claimBId, {
|
|
62
|
+
message: 'claimAId and claimBId must be distinct claims',
|
|
63
|
+
path: ['claimBId'],
|
|
64
|
+
});
|
|
65
|
+
export const UpdateContradictionStatusSchema = z.object({
|
|
66
|
+
status: z.enum(ContradictionStatuses),
|
|
67
|
+
resolvedAt: z.coerce.date().nullable().optional(),
|
|
68
|
+
resolutionReason: z.string().nullable().optional(),
|
|
69
|
+
resolvedBy: z.string().nullable().optional(),
|
|
70
|
+
resolutionSource: z.string().nullable().optional(),
|
|
71
|
+
chosenClaimId: z.string().nullable().optional(),
|
|
72
|
+
auditNotes: z.string().nullable().optional(),
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=contradiction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contradiction.js","sourceRoot":"","sources":["../../../src/domain/entities/contradiction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Metadata } from '../types/common.js';
|
|
3
|
+
export declare const StandardSourceTypes: readonly ["github", "document", "email", "calendar", "spreadsheet", "database", "website", "crm", "manual"];
|
|
4
|
+
export type StandardSourceType = (typeof StandardSourceTypes)[number];
|
|
5
|
+
export type SourceType = StandardSourceType | (string & {});
|
|
6
|
+
export interface Source {
|
|
7
|
+
id: string;
|
|
8
|
+
externalId?: string | null;
|
|
9
|
+
type: SourceType;
|
|
10
|
+
name: string;
|
|
11
|
+
uri?: string | null;
|
|
12
|
+
lastFetchedAt?: Date | null;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
updatedAt: Date;
|
|
15
|
+
trustScore: number;
|
|
16
|
+
metadata: Metadata;
|
|
17
|
+
}
|
|
18
|
+
export declare const SourceSchema: z.ZodObject<{
|
|
19
|
+
id: z.ZodString;
|
|
20
|
+
externalId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
21
|
+
type: z.ZodString;
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
uri: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
24
|
+
lastFetchedAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
25
|
+
createdAt: z.ZodCoercedDate<unknown>;
|
|
26
|
+
updatedAt: z.ZodCoercedDate<unknown>;
|
|
27
|
+
trustScore: z.ZodDefault<z.ZodNumber>;
|
|
28
|
+
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export declare const CreateSourceInputSchema: z.ZodObject<{
|
|
31
|
+
id: z.ZodOptional<z.ZodString>;
|
|
32
|
+
externalId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
33
|
+
type: z.ZodString;
|
|
34
|
+
name: z.ZodString;
|
|
35
|
+
uri: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
36
|
+
lastFetchedAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
37
|
+
trustScore: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
38
|
+
metadata: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
export type CreateSourceInput = z.infer<typeof CreateSourceInputSchema>;
|
|
41
|
+
export type UpdateSourceInput = Partial<Omit<CreateSourceInput, 'id'> & {
|
|
42
|
+
lastFetchedAt?: Date | null;
|
|
43
|
+
}>;
|