← Reports

LegalMind-Explorer

Structural Health Analysis via Graphify — 2026-04-09 14:06
1002
Nodes
1801
Edges
1439
Extracted
362
Inferred
64
Communities

Executive Summary

File Search

7 endpoints • 4 graph paths • 1 gaps
✓ WORKING

Chat

6 endpoints • 5 graph paths • 0 gaps
✓ WORKING

Timelines

2 endpoints • 6 graph paths • 0 gaps
✓ WORKING

File Search WORKING

Endpoints

MethodPath
POST/api/projects/:id/file-search/enable
POST/api/projects/:id/file-search/disable
POST/api/projects/:id/file-search/reindex
POST/api/projects/:id/file-search/search
GET/api/projects/:id/file-search/usage
GET/api/projects/:id/file-search/stores
GET/api/drive/search

Connected Paths (Graph Evidence)

LayerSourceTargetRelationConfidence
Router -> Domainfilesearchservicefilesearchimports_fromEXTRACTED
Router -> Datastoragefilesearchimports_fromEXTRACTED
Domain -> Data (router mediates)filesearchservicestoragenone (by design)N/A

Missing / Gaps

SeverityLayerDetail
INFOUINo dedicated UI component found for this feature

Import Verification (Source vs Graph)

ImportFromTargetExistsType
storageserver/routes/fileSearch.tsserver/storage.tsstatic
isAuthenticatedserver/routes/fileSearch.tsserver/auth/index.tsstatic
authStorageserver/routes/fileSearch.tsserver/auth/index.tsstatic
getUserIdserver/routes/fileSearch.tsserver/utils/helpers.tsstatic
getValidAccessTokenserver/routes/fileSearch.tsserver/utils/tokenHelpers.tsstatic
getValidDropboxAccessTokenserver/routes/fileSearch.tsserver/utils/tokenHelpers.tsstatic
fileStorageserver/routes/fileSearch.tsserver/fileStorage/index.tsstatic
searchDriveFilesserver/routes/fileSearch.tsserver/googleDrive.tsstatic
getMimeTypesFromFileTypesserver/routes/fileSearch.tsserver/googleDrive.tsstatic
getDocumentContentserver/routes/fileSearch.tsserver/utils/documentContentHelpers.tsstatic
getGeminiClientForProjectserver/routes/fileSearch.tsserver/fileSearchService.tsstatic
getOrCreateProjectStoreserver/routes/fileSearch.tsserver/fileSearchService.tsstatic
indexDocumentInStoreserver/routes/fileSearch.tsserver/fileSearchService.tsstatic
searchProjectDocumentsserver/routes/fileSearch.tsserver/fileSearchService.tsstatic
getStoreUsageserver/routes/fileSearch.tsserver/fileSearchService.tsstatic
DEFAULT_FILE_SEARCH_MODELserver/routes/fileSearch.tsserver/fileSearchService.tsstatic

Chat WORKING

Endpoints

MethodPath
GET/api/projects/:id/chat-sessions
POST/api/projects/:id/chat-sessions
PATCH/api/chat-sessions/:sessionId
DELETE/api/chat-sessions/:sessionId
GET/api/projects/:id/chat
POST/api/projects/:id/chat

Connected Paths (Graph Evidence)

LayerSourceTargetRelationConfidence
Router -> Domainaiservicechattimelineimports_fromEXTRACTED
Router -> Datastoragechattimelineimports_fromEXTRACTED
Domain -> Data (router mediates)aiservicestoragenone (by design)N/A
UI -> Routerchat_panelAPI endpointsUI component existsEXTRACTED

Import Verification (Source vs Graph)

ImportFromTargetExistsType
storageserver/routes/chatTimeline.tsserver/storage.tsstatic
isAuthenticatedserver/routes/chatTimeline.tsserver/auth/index.tsstatic
authStorageserver/routes/chatTimeline.tsserver/auth/index.tsstatic
getUserIdserver/routes/chatTimeline.tsserver/utils/helpers.tsstatic
getValidAccessTokenserver/routes/chatTimeline.tsserver/utils/tokenHelpers.tsstatic
getValidDropboxAccessTokenserver/routes/chatTimeline.tsserver/utils/tokenHelpers.tsstatic
resolveChatApiKeysForUserserver/routes/chatTimeline.tsserver/utils/aiConfigHelpers.tsstatic
getApiKeysForUserserver/routes/chatTimeline.tsserver/utils/aiConfigHelpers.tsstatic
getDocumentContentserver/routes/chatTimeline.tsserver/utils/documentContentHelpers.tsstatic
isRawContentBase64server/routes/chatTimeline.tsserver/utils/documentContentHelpers.tsstatic
extractTextFromDocumentserver/routes/chatTimeline.tsserver/documentParser.tsstatic
chatWithOpenAIserver/routes/chatTimeline.tsserver/aiService.tsstatic
chatWithGeminiserver/routes/chatTimeline.tsserver/aiService.tsstatic
chatWithGeminiFileSearchserver/routes/chatTimeline.tsserver/aiService.tsstatic
getGeminiClientForProjectserver/routes/chatTimeline.tsserver/fileSearchService.tsstatic
DEFAULT_FILE_SEARCH_MODELserver/routes/chatTimeline.tsserver/fileSearchService.tsstatic
generateTimelineWithOpenAIserver/routes/chatTimeline.tsserver/aiService.tsdynamic
generateTimelineWithGeminiserver/routes/chatTimeline.tsserver/aiService.tsdynamic

Timelines WORKING

Endpoints

MethodPath
POST/api/projects/:id/timeline
POST/api/projects/:id/timeline/export-word

Connected Paths (Graph Evidence)

LayerSourceTargetRelationConfidence
Router -> Domainaiservicechattimelineimports_fromEXTRACTED
Router -> Datastoragechattimelineimports_fromEXTRACTED
Domain -> Data (router mediates)aiservicestoragenone (by design)N/A
UI -> Routertimeline_panelAPI endpointsUI component existsEXTRACTED
UI -> Routergraph_timelineAPI endpointsUI component existsEXTRACTED

Import Verification (Source vs Graph)

ImportFromTargetExistsType
storageserver/routes/chatTimeline.tsserver/storage.tsstatic
isAuthenticatedserver/routes/chatTimeline.tsserver/auth/index.tsstatic
authStorageserver/routes/chatTimeline.tsserver/auth/index.tsstatic
getUserIdserver/routes/chatTimeline.tsserver/utils/helpers.tsstatic
getValidAccessTokenserver/routes/chatTimeline.tsserver/utils/tokenHelpers.tsstatic
getValidDropboxAccessTokenserver/routes/chatTimeline.tsserver/utils/tokenHelpers.tsstatic
resolveChatApiKeysForUserserver/routes/chatTimeline.tsserver/utils/aiConfigHelpers.tsstatic
getApiKeysForUserserver/routes/chatTimeline.tsserver/utils/aiConfigHelpers.tsstatic
getDocumentContentserver/routes/chatTimeline.tsserver/utils/documentContentHelpers.tsstatic
isRawContentBase64server/routes/chatTimeline.tsserver/utils/documentContentHelpers.tsstatic
extractTextFromDocumentserver/routes/chatTimeline.tsserver/documentParser.tsstatic
chatWithOpenAIserver/routes/chatTimeline.tsserver/aiService.tsstatic
chatWithGeminiserver/routes/chatTimeline.tsserver/aiService.tsstatic
chatWithGeminiFileSearchserver/routes/chatTimeline.tsserver/aiService.tsstatic
getGeminiClientForProjectserver/routes/chatTimeline.tsserver/fileSearchService.tsstatic
DEFAULT_FILE_SEARCH_MODELserver/routes/chatTimeline.tsserver/fileSearchService.tsstatic
generateTimelineWithOpenAIserver/routes/chatTimeline.tsserver/aiService.tsdynamic
generateTimelineWithGeminiserver/routes/chatTimeline.tsserver/aiService.tsdynamic

Missing Dependency Map

Cross-file dependencies found in source code but absent from Graphify graph as function-level edges.

SourceTargetMissing FunctionsReason
server/routes/chatTimeline.tsserver/aiService.tsgenerateTimelineWithOpenAI, generateTimelineWithGeminiDynamic import (await import) - Graphify captured the file-level edge but not the specific function calls
server/routes/chatTimeline.tsdocx (npm package)Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCellDynamic import of external npm package - no graph node for docx library
server/fileSearchService.tsserver/storage.tsnone (by design)By design: router fetches from storage and passes data to fileSearchService. No direct dependency.
server/aiService.tsserver/storage.tsnone (by design)By design: router fetches from storage and passes data to aiService. No direct dependency.
server/routes/fileSearch.tsserver/storage.tsstorage.getProject(), storage.getDocuments(), storage.updateProject(), storage.updateDocument()Graph has file-level imports_from edge but no function-level call edges between router and storage methods
server/routes/chatTimeline.tsserver/storage.tsstorage.getChatSessions(), storage.createChatSession(), storage.getChatMessages(), storage.createChatMessage(), storage.getProject(), storage.getDocuments()Graph has file-level imports_from edge but no function-level call edges between router and storage methods

Community Analysis

Community 0 (135 nodes) File Search Chat Timelines
Core routing + services (fileSearch routes, fileSearchService, storage ref, routes, constants, scheduler)
Community 1 (71 nodes)
Data layer (DatabaseStorage - all 71 storage methods)
Community 3 (46 nodes) Chat Timelines
AI Services (aiService - OpenAI + Gemini clients, extraction, chat, timeline, report generation)
Community 5 (41 nodes)
Graph visualization (graph-timeline, project-graph components)
Community 7 (32 nodes)
Google Drive integration (32 functions - auth, files, folders, search)
Community 15 (21 nodes)
UI panels (chat-panel, timeline-panel, project page)
Community 20 (17 nodes)
Auth storage (AuthStorage - user/identity management)

Recommended Fixes

No critical or high-severity issues found. All three features have connected paths through the graph.

Graphify Coverage Gaps

Summary of what Graphify captured vs what exists in source code:

AspectCapturedMissing
File-level imports (static)All captured as EXTRACTED imports_from edgesNone
File-level imports (dynamic)Captured at file levelSpecific function names from dynamic imports not resolved
Function containmentAll functions listed as contained in their filesNone
Cross-file function callsSome INFERRED within same fileRouter-to-service function calls, router-to-storage method calls
External npm packagesNot trackeddocx, openai, @google/genai as dependency nodes
UI to API connectionsNot trackedfetch/API calls from React components to Express routes
Generated by Luci — Structural Health Analysis via Graphify graph.json