@refract-org/evidence-graph 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +29 -0
  3. package/dist/src/schemas/claim.d.ts +34 -0
  4. package/dist/src/schemas/claim.d.ts.map +1 -0
  5. package/dist/src/schemas/claim.js +3 -0
  6. package/dist/src/schemas/claim.js.map +1 -0
  7. package/dist/src/schemas/evidence.d.ts +34 -0
  8. package/dist/src/schemas/evidence.d.ts.map +1 -0
  9. package/dist/src/schemas/evidence.js +3 -0
  10. package/dist/src/schemas/evidence.js.map +1 -0
  11. package/dist/src/schemas/report.d.ts +51 -0
  12. package/dist/src/schemas/report.d.ts.map +1 -0
  13. package/dist/src/schemas/report.js +3 -0
  14. package/dist/src/schemas/report.js.map +1 -0
  15. package/dist/src/schemas/revision.d.ts +36 -0
  16. package/dist/src/schemas/revision.d.ts.map +1 -0
  17. package/dist/src/schemas/revision.js +3 -0
  18. package/dist/src/schemas/revision.js.map +1 -0
  19. package/dist/src/schemas/source.d.ts +24 -0
  20. package/dist/src/schemas/source.d.ts.map +1 -0
  21. package/dist/src/schemas/source.js +3 -0
  22. package/dist/src/schemas/source.js.map +1 -0
  23. package/dist/tsconfig 2.tsbuildinfo +1 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -0
  25. package/package.json +26 -0
  26. package/src/__tests__/hash-identity.test.ts +111 -0
  27. package/src/__tests__/replay-manifest.test.ts +87 -0
  28. package/src/hash-identity.ts +25 -0
  29. package/src/index.ts +43 -0
  30. package/src/interpretation-prompt.ts +209 -0
  31. package/src/replay-manifest.ts +110 -0
  32. package/src/schemas/claim.ts +58 -0
  33. package/src/schemas/evidence.ts +83 -0
  34. package/src/schemas/report.ts +54 -0
  35. package/src/schemas/revision.ts +41 -0
  36. package/src/schemas/source.ts +37 -0
@@ -0,0 +1,83 @@
1
+ // Evidence event — what happened at a revision boundary
2
+
3
+ export type EvidenceLayer = "observed" | "policy_coded" | "model_interpretation" | "speculative" | "unknown";
4
+
5
+ export type EventType =
6
+ | "sentence_first_seen"
7
+ | "sentence_removed"
8
+ | "sentence_reintroduced"
9
+ | "citation_added"
10
+ | "citation_removed"
11
+ | "citation_replaced"
12
+ | "template_added"
13
+ | "template_removed"
14
+ | "revert_detected"
15
+ | "section_reorganized"
16
+ | "lead_promotion"
17
+ | "lead_demotion"
18
+ | "page_moved"
19
+ | "wikilink_added"
20
+ | "wikilink_removed"
21
+ | "category_added"
22
+ | "category_removed"
23
+ | "protection_changed"
24
+ | "talk_page_correlated"
25
+ | "talk_thread_opened"
26
+ | "talk_thread_archived"
27
+ | "talk_reply_added"
28
+ | "template_parameter_changed"
29
+ | "edit_cluster_detected"
30
+ | "talk_activity_spike";
31
+
32
+ export interface FactProvenance {
33
+ analyzer: string;
34
+ version: string;
35
+ inputHashes: string[];
36
+ }
37
+
38
+ export type PolicyDimension =
39
+ | "verifiability"
40
+ | "npov"
41
+ | "blp"
42
+ | "due_weight"
43
+ | "protection"
44
+ | "edit_warring"
45
+ | "notability"
46
+ | "copyright"
47
+ | "civility";
48
+
49
+ export interface DeterministicFact {
50
+ fact: string;
51
+ detail?: string;
52
+ provenance?: FactProvenance;
53
+ }
54
+
55
+ export interface ModelInterpretation {
56
+ semanticChange: string;
57
+ confidence: number;
58
+ policyDimension?: PolicyDimension;
59
+ discussionType?:
60
+ | "notability_challenge"
61
+ | "sourcing_dispute"
62
+ | "neutrality_concern"
63
+ | "content_deletion"
64
+ | "content_addition"
65
+ | "naming_dispute"
66
+ | "procedural"
67
+ | "other";
68
+ }
69
+
70
+ export interface EvidenceEvent {
71
+ eventId?: string;
72
+ eventType: EventType;
73
+ claimId?: string;
74
+ fromRevisionId: number;
75
+ toRevisionId: number;
76
+ section: string;
77
+ before: string;
78
+ after: string;
79
+ deterministicFacts: DeterministicFact[];
80
+ modelInterpretation?: ModelInterpretation;
81
+ layer: EvidenceLayer;
82
+ timestamp: string; // ISO 8601
83
+ }
@@ -0,0 +1,54 @@
1
+ // Report — the assembled output of the provenance engine
2
+
3
+ import type { EvidenceLayer } from "./evidence.js";
4
+
5
+ export type ReportLayerLabel = EvidenceLayer;
6
+
7
+ export type ExportFormat = "json" | "pdf" | "csv" | "html";
8
+
9
+ export type Depth = "brief" | "detailed" | "forensic";
10
+
11
+ export interface ReportLayer {
12
+ label: ReportLayerLabel;
13
+ description: string;
14
+ events: number;
15
+ reproducible: boolean;
16
+ }
17
+
18
+ export interface Report {
19
+ pageTitle: string;
20
+ pageId: number;
21
+ analyzedRevisionRange: { from: number; to: number };
22
+ generatedAt: string; // ISO 8601
23
+ depth: Depth;
24
+ layers: ReportLayer[];
25
+ timeline: PageTimeline;
26
+ claims: string[]; // Claim IDs
27
+ sources: string[]; // Source IDs
28
+ policySignals: PolicySignal[];
29
+ caveats: string[];
30
+ phase: string;
31
+ }
32
+
33
+ export interface PageTimeline {
34
+ totalRevisions: number;
35
+ analyzedRevisions: number;
36
+ dateRange: { start: string; end: string };
37
+ events: TimelineEvent[];
38
+ }
39
+
40
+ export interface TimelineEvent {
41
+ revisionId: number;
42
+ timestamp: string;
43
+ eventType: string;
44
+ summary: string;
45
+ layer: ReportLayerLabel;
46
+ }
47
+
48
+ export interface PolicySignal {
49
+ dimension: string; // e.g., "verifiability", "npov", "blp", "due_weight"
50
+ signal: string; // e.g., "citation_needed_template_added", "blp_template_active"
51
+ firstSeenRevisionId: number;
52
+ lastSeenRevisionId?: number;
53
+ active: boolean;
54
+ }
@@ -0,0 +1,41 @@
1
+ // Revision and diff — raw Wikipedia data types
2
+
3
+ export interface Revision {
4
+ revId: number;
5
+ pageId: number;
6
+ pageTitle: string;
7
+ timestamp: string; // ISO 8601
8
+ user?: string; // Editor username (may be hidden via oversight)
9
+ comment: string; // Edit summary
10
+ content: string; // Full wikitext
11
+ size: number; // Bytes
12
+ minor: boolean;
13
+ }
14
+
15
+ export interface DiffResult {
16
+ fromRevId: number;
17
+ toRevId: number;
18
+ lines: DiffLine[];
19
+ sections: SectionChange[];
20
+ sizeDelta: number;
21
+ }
22
+
23
+ export interface DiffLine {
24
+ type: "added" | "removed" | "unchanged";
25
+ content: string;
26
+ lineNumber: number;
27
+ }
28
+
29
+ export interface Section {
30
+ title: string;
31
+ level: number; // 1 = lead, 2 = == Section ==, 3 = === Subsection ===
32
+ content: string;
33
+ byteOffset: number;
34
+ }
35
+
36
+ export interface SectionChange {
37
+ section: string;
38
+ changeType: "added" | "removed" | "modified" | "moved" | "unchanged";
39
+ fromContent?: string;
40
+ toContent?: string;
41
+ }
@@ -0,0 +1,37 @@
1
+ // Source record — citation lineage in Wikipedia
2
+
3
+ export type SourceType =
4
+ | "primary"
5
+ | "secondary"
6
+ | "tertiary"
7
+ | "self_published"
8
+ | "news"
9
+ | "academic"
10
+ | "government"
11
+ | "unknown";
12
+
13
+ export type SourceAuthority = "high" | "medium" | "low" | "disputed" | "unrated";
14
+
15
+ export interface SourceRecord {
16
+ sourceId: string; // Deterministic hash from URL or identifier
17
+ url?: string;
18
+ title?: string;
19
+ sourceType: SourceType;
20
+ authority: SourceAuthority;
21
+ firstSeenRevisionId: number;
22
+ firstSeenAt: string; // ISO 8601
23
+ lastSeenRevisionId?: number;
24
+ lastSeenAt?: string;
25
+ claimsReferencing: string[]; // Claim IDs that cite this source
26
+ }
27
+
28
+ export interface SourceLineage {
29
+ sourceId: string;
30
+ replacements: SourceReplacement[];
31
+ }
32
+
33
+ export interface SourceReplacement {
34
+ replacedById: string;
35
+ atRevisionId: number;
36
+ atTimestamp: string; // ISO 8601
37
+ }