You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Description:** Programmatic Python service (NOT an LLM agent) that extracts entities and relationships from domain agent structured output and stores them in KG tables.
539
-
**Acceptance Criteria:**
540
-
- Reads domain agent structured output from `agent_executions.output_data` (Pydantic models)
541
-
- Extracts ALL entities from `DomainEntity` lists across all domain agents
542
-
- Creates relationship edges from findings (entities co-occurring in same finding)
- Entity deduplication: exact name+type match → auto-merge; fuzzy matching (>85% similarity) → flag for LLM resolution
550
-
- Additive-only: NEVER filters or discards entities/relationships from domain agent output
538
+
**Description:** LLM-based agent (Gemini Pro) that reads ALL domain agent findings and entities holistically, then produces a curated knowledge graph with deduplicated high-level entities and semantic relationships. Replaces the previous programmatic co-occurrence approach.
539
+
**Acceptance Criteria:**
540
+
- Receives ALL case_findings (rich markdown with citations) + all raw DomainEntity lists from agent_executions.output_data + case description
541
+
- Gemini 3 Pro with `thinking_level="high"` and 1M context window
542
+
- Runs in fresh stage-isolated ADK session after ALL domain agents complete
543
+
- Produces curated entity list with investigation-focused taxonomy:
544
+
-**PERSON** — Named individuals (suspects, witnesses, victims, officers)
@@ -671,32 +676,51 @@ This document defines formal requirements for Holmes v1. Requirements are derive
671
676
672
677
### REQ-VIS-003: Knowledge Graph View
673
678
**Priority:** HIGH
674
-
**Description:** Premium knowledge graph visualization using vis-network with intelligent clustering, physics-based layout, and relationship-aware spacing.
675
-
**Acceptance Criteria:**
676
-
-**vis-network** library (replacing D3.js) integrated via `useRef`/`useEffect` for full TypeScript control
677
-
- ForceAtlas2-based physics simulation:
678
-
- Solver: `forceAtlas2Based` for superior cluster formation in investigative graphs
- Node search and highlight (find entity by name, highlight path)
695
-
- Click node to see details: entity metadata, full citation chain, connected entities, source agent
679
+
**Description:** Premium knowledge graph visualization using D3.js force simulation with Epstein Doc Explorer-inspired layout, physics, filtering panels, entity timeline, and multi-media source viewer — adapted to Holmes's Liquid Glass design system. Filter/control and timeline panels are local to the KG canvas, not in the app-wide sidebar.
680
+
**Acceptance Criteria:**
681
+
-**D3.js** force simulation with 5 forces (link, charge, center, collision, radial) inside React `useRef`/`useEffect`
682
+
- Radial force: high-connection entities near center, low-connection pushed outward (connection-count-based gravity well)
683
+
- Sqrt-scaled node radius (connection count → 5-100px range via `d3.scalePow().exponent(0.5)`)
684
+
- Collision detection using actual circle radius + padding
685
+
- Link distance: constant base (50px) or relationship-type-based
686
+
- Charge repulsion: -400 (tunable)
687
+
- Domain-colored SVG circle nodes (person=orange, org=green, location=blue, event=amber — consistent with Holmes palette)
688
+
- Node labels below circles, entity type indicated by color
689
+
- Click node → highlight node + all connected edges (white), dim unconnected edges; open right sidebar timeline
690
+
- Drag individual nodes (fix position during drag, release on drop)
691
+
- Zoom/pan with `d3.zoom()` (scale extent [0.01, 10])
692
+
-**Left panel — Filters & Controls** (local to KG canvas, NOT in the app-wide sidebar):
693
+
- Positioned on the left side of the knowledge graph canvas area
- Basic analytics: node count, edge count, most connected entities
698
-
- Lazy clustering for graphs with >200 nodes
720
+
- Bottom instruction bar: "Click nodes to explore relationships · Scroll to zoom · Drag to pan"
721
+
- Responsive layout within KG canvas: left panel (320px) | center graph | right panel (384px, appears on select) — all local to the KG page content area, not the app-wide sidebar
699
722
- Intuitive at first glance: a user can understand entity relationships without instruction
723
+
-**Reference:**`DOCS/reference/epstein-network-ui/` for layout, physics, and interaction patterns
700
724
**Dependencies:** REQ-AGENT-009, REQ-STORE-001
701
725
702
726
### REQ-VIS-004: Timeline View
@@ -1571,13 +1595,17 @@ No confirmation dialogs implemented yet.
1571
1595
1572
1596
| Sub-Criterion | Status | Notes |
1573
1597
|---------------|--------|-------|
1574
-
|Force-directed graph | ✅| D3.js chosen and implemented|
*Architecture revision: 2026-02-08 (REQ-AGENT-009 revised for LLM-based KG Builder; REQ-VIS-003 updated for D3.js with Epstein-inspired patterns; vis-network deferred)*
1813
1842
*Status: Complete - Integration features added (REQ-RESEARCH, REQ-HYPO, REQ-GEO, REQ-TASK)*
1814
1843
*Frontend Status: Partial implementation by Yatharth (see DEVELOPMENT_DOCS/YATHARTH_WORK_SUMMARY.md)*
0 commit comments