| Method | Path |
|---|---|
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 |
| Layer | Source | Target | Relation | Confidence | |
|---|---|---|---|---|---|
| Router -> Domain | filesearchservice | → | filesearch | imports_from | EXTRACTED |
| Router -> Data | storage | → | filesearch | imports_from | EXTRACTED |
| Domain -> Data (router mediates) | filesearchservice | → | storage | none (by design) | N/A |
| Severity | Layer | Detail |
|---|---|---|
| INFO | UI | No dedicated UI component found for this feature |
| Import | From | Target | Exists | Type |
|---|---|---|---|---|
storage | server/routes/fileSearch.ts | server/storage.ts | ✓ | static |
isAuthenticated | server/routes/fileSearch.ts | server/auth/index.ts | ✓ | static |
authStorage | server/routes/fileSearch.ts | server/auth/index.ts | ✓ | static |
getUserId | server/routes/fileSearch.ts | server/utils/helpers.ts | ✓ | static |
getValidAccessToken | server/routes/fileSearch.ts | server/utils/tokenHelpers.ts | ✓ | static |
getValidDropboxAccessToken | server/routes/fileSearch.ts | server/utils/tokenHelpers.ts | ✓ | static |
fileStorage | server/routes/fileSearch.ts | server/fileStorage/index.ts | ✓ | static |
searchDriveFiles | server/routes/fileSearch.ts | server/googleDrive.ts | ✓ | static |
getMimeTypesFromFileTypes | server/routes/fileSearch.ts | server/googleDrive.ts | ✓ | static |
getDocumentContent | server/routes/fileSearch.ts | server/utils/documentContentHelpers.ts | ✓ | static |
getGeminiClientForProject | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
getOrCreateProjectStore | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
indexDocumentInStore | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
searchProjectDocuments | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
getStoreUsage | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
DEFAULT_FILE_SEARCH_MODEL | server/routes/fileSearch.ts | server/fileSearchService.ts | ✓ | static |
| Method | Path |
|---|---|
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 |
| Layer | Source | Target | Relation | Confidence | |
|---|---|---|---|---|---|
| Router -> Domain | aiservice | → | chattimeline | imports_from | EXTRACTED |
| Router -> Data | storage | → | chattimeline | imports_from | EXTRACTED |
| Domain -> Data (router mediates) | aiservice | → | storage | none (by design) | N/A |
| UI -> Router | chat_panel | → | API endpoints | UI component exists | EXTRACTED |
| Import | From | Target | Exists | Type |
|---|---|---|---|---|
storage | server/routes/chatTimeline.ts | server/storage.ts | ✓ | static |
isAuthenticated | server/routes/chatTimeline.ts | server/auth/index.ts | ✓ | static |
authStorage | server/routes/chatTimeline.ts | server/auth/index.ts | ✓ | static |
getUserId | server/routes/chatTimeline.ts | server/utils/helpers.ts | ✓ | static |
getValidAccessToken | server/routes/chatTimeline.ts | server/utils/tokenHelpers.ts | ✓ | static |
getValidDropboxAccessToken | server/routes/chatTimeline.ts | server/utils/tokenHelpers.ts | ✓ | static |
resolveChatApiKeysForUser | server/routes/chatTimeline.ts | server/utils/aiConfigHelpers.ts | ✓ | static |
getApiKeysForUser | server/routes/chatTimeline.ts | server/utils/aiConfigHelpers.ts | ✓ | static |
getDocumentContent | server/routes/chatTimeline.ts | server/utils/documentContentHelpers.ts | ✓ | static |
isRawContentBase64 | server/routes/chatTimeline.ts | server/utils/documentContentHelpers.ts | ✓ | static |
extractTextFromDocument | server/routes/chatTimeline.ts | server/documentParser.ts | ✓ | static |
chatWithOpenAI | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
chatWithGemini | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
chatWithGeminiFileSearch | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
getGeminiClientForProject | server/routes/chatTimeline.ts | server/fileSearchService.ts | ✓ | static |
DEFAULT_FILE_SEARCH_MODEL | server/routes/chatTimeline.ts | server/fileSearchService.ts | ✓ | static |
generateTimelineWithOpenAI | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | dynamic |
generateTimelineWithGemini | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | dynamic |
| Method | Path |
|---|---|
POST | /api/projects/:id/timeline |
POST | /api/projects/:id/timeline/export-word |
| Layer | Source | Target | Relation | Confidence | |
|---|---|---|---|---|---|
| Router -> Domain | aiservice | → | chattimeline | imports_from | EXTRACTED |
| Router -> Data | storage | → | chattimeline | imports_from | EXTRACTED |
| Domain -> Data (router mediates) | aiservice | → | storage | none (by design) | N/A |
| UI -> Router | timeline_panel | → | API endpoints | UI component exists | EXTRACTED |
| UI -> Router | graph_timeline | → | API endpoints | UI component exists | EXTRACTED |
| Import | From | Target | Exists | Type |
|---|---|---|---|---|
storage | server/routes/chatTimeline.ts | server/storage.ts | ✓ | static |
isAuthenticated | server/routes/chatTimeline.ts | server/auth/index.ts | ✓ | static |
authStorage | server/routes/chatTimeline.ts | server/auth/index.ts | ✓ | static |
getUserId | server/routes/chatTimeline.ts | server/utils/helpers.ts | ✓ | static |
getValidAccessToken | server/routes/chatTimeline.ts | server/utils/tokenHelpers.ts | ✓ | static |
getValidDropboxAccessToken | server/routes/chatTimeline.ts | server/utils/tokenHelpers.ts | ✓ | static |
resolveChatApiKeysForUser | server/routes/chatTimeline.ts | server/utils/aiConfigHelpers.ts | ✓ | static |
getApiKeysForUser | server/routes/chatTimeline.ts | server/utils/aiConfigHelpers.ts | ✓ | static |
getDocumentContent | server/routes/chatTimeline.ts | server/utils/documentContentHelpers.ts | ✓ | static |
isRawContentBase64 | server/routes/chatTimeline.ts | server/utils/documentContentHelpers.ts | ✓ | static |
extractTextFromDocument | server/routes/chatTimeline.ts | server/documentParser.ts | ✓ | static |
chatWithOpenAI | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
chatWithGemini | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
chatWithGeminiFileSearch | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | static |
getGeminiClientForProject | server/routes/chatTimeline.ts | server/fileSearchService.ts | ✓ | static |
DEFAULT_FILE_SEARCH_MODEL | server/routes/chatTimeline.ts | server/fileSearchService.ts | ✓ | static |
generateTimelineWithOpenAI | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | dynamic |
generateTimelineWithGemini | server/routes/chatTimeline.ts | server/aiService.ts | ✓ | dynamic |
Cross-file dependencies found in source code but absent from Graphify graph as function-level edges.
| Source | Target | Missing Functions | Reason |
|---|---|---|---|
server/routes/chatTimeline.ts | server/aiService.ts | generateTimelineWithOpenAI, generateTimelineWithGemini | Dynamic import (await import) - Graphify captured the file-level edge but not the specific function calls |
server/routes/chatTimeline.ts | docx (npm package) | Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell | Dynamic import of external npm package - no graph node for docx library |
server/fileSearchService.ts | server/storage.ts | none (by design) | By design: router fetches from storage and passes data to fileSearchService. No direct dependency. |
server/aiService.ts | server/storage.ts | none (by design) | By design: router fetches from storage and passes data to aiService. No direct dependency. |
server/routes/fileSearch.ts | server/storage.ts | storage.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.ts | server/storage.ts | storage.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 |
No critical or high-severity issues found. All three features have connected paths through the graph.
Summary of what Graphify captured vs what exists in source code:
| Aspect | Captured | Missing |
|---|---|---|
| File-level imports (static) | All captured as EXTRACTED imports_from edges | None |
| File-level imports (dynamic) | Captured at file level | Specific function names from dynamic imports not resolved |
| Function containment | All functions listed as contained in their files | None |
| Cross-file function calls | Some INFERRED within same file | Router-to-service function calls, router-to-storage method calls |
| External npm packages | Not tracked | docx, openai, @google/genai as dependency nodes |
| UI to API connections | Not tracked | fetch/API calls from React components to Express routes |