From a12e27b83a7cfe72180a65351e708e932b4f5873 Mon Sep 17 00:00:00 2001 From: Santhosh Janardhanan Date: Sun, 12 Apr 2026 00:10:38 -0400 Subject: [PATCH] fix(bridge): resolve data dir same as Python for sync-result.json Both readSyncResult() and probeAll() now mirror Python's _resolve_data_dir() logic: dev detection (cwd/.obsidian-rag or cwd/KnowledgeVault) then home dir fallback. Previously readSyncResult always used cwd/.obsidian-rag (wrong for server deployments) and probeAll resolved sync-result.json relative to db path (wrong for absolute paths like /home/san/.obsidian-rag/). --- src/services/health.ts | 14 +++++++++++++- src/services/indexer-bridge.ts | 13 ++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/services/health.ts b/src/services/health.ts index df1383e..2f0d0a4 100644 --- a/src/services/health.ts +++ b/src/services/health.ts @@ -98,7 +98,8 @@ export async function probeAll(config: ObsidianRagConfig): Promise if (indexExists) { try { - const syncPath = resolve(dbPath, "..", "sync-result.json"); + const dataDir = resolveDataDir(); + const syncPath = resolve(dataDir, "sync-result.json"); if (existsSync(syncPath)) { const data = JSON.parse(readFileSync(syncPath, "utf-8")); lastSync = data.timestamp ?? null; @@ -120,6 +121,17 @@ export async function probeAll(config: ObsidianRagConfig): Promise }; } +function resolveDataDir(): string { + const cwd = process.cwd(); + const devDataDir = resolve(cwd, ".obsidian-rag"); + const devVaultMarker = resolve(cwd, "KnowledgeVault"); + if (existsSync(devDataDir) || existsSync(devVaultMarker)) { + return devDataDir; + } + const home = process.env.HOME ?? process.env.USERPROFILE ?? ""; + return resolve(home, ".obsidian-rag"); +} + async function probeOllama(baseUrl: string): Promise { try { const res = await fetch(`${baseUrl}/api/tags`, { signal: AbortSignal.timeout(3000) }); diff --git a/src/services/indexer-bridge.ts b/src/services/indexer-bridge.ts index b8577c4..874c6e5 100644 --- a/src/services/indexer-bridge.ts +++ b/src/services/indexer-bridge.ts @@ -109,7 +109,7 @@ export function readSyncResult(config: ObsidianRagConfig): { total_chunks: number; errors: Array<{ file: string; error: string }>; } | null { - const dataDir = resolve(process.cwd(), ".obsidian-rag"); + const dataDir = _resolveDataDir(); const path = resolve(dataDir, "sync-result.json"); if (!existsSync(path)) return null; try { @@ -118,3 +118,14 @@ export function readSyncResult(config: ObsidianRagConfig): { return null; } } + +function _resolveDataDir(): string { + const cwd = process.cwd(); + const devDataDir = resolve(cwd, ".obsidian-rag"); + const devVaultMarker = resolve(cwd, "KnowledgeVault"); + if (existsSync(devDataDir) || existsSync(devVaultMarker)) { + return devDataDir; + } + const home = process.env.HOME ?? process.env.USERPROFILE ?? ""; + return resolve(home, ".obsidian-rag"); +}