diff --git a/src/main/services/discovery/ProjectScanner.ts b/src/main/services/discovery/ProjectScanner.ts index e118dd7b..c8e454e4 100644 --- a/src/main/services/discovery/ProjectScanner.ts +++ b/src/main/services/discovery/ProjectScanner.ts @@ -756,6 +756,13 @@ export class ProjectScanner { return this.todosDir; } + /** + * Gets the FileSystemProvider instance used by this scanner. + */ + getFileSystemProvider(): FileSystemProvider { + return this.fsProvider; + } + /** * Checks if the projects directory exists. */ diff --git a/src/main/services/discovery/SubagentResolver.ts b/src/main/services/discovery/SubagentResolver.ts index 66b11391..ee11c960 100644 --- a/src/main/services/discovery/SubagentResolver.ts +++ b/src/main/services/discovery/SubagentResolver.ts @@ -85,7 +85,7 @@ export class SubagentResolver { */ private async parseSubagentFile(filePath: string): Promise { try { - const messages = await parseJsonlFile(filePath); + const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider()); if (messages.length === 0) { return null; diff --git a/src/main/services/parsing/SessionParser.ts b/src/main/services/parsing/SessionParser.ts index e9c00547..b0fb3f0c 100644 --- a/src/main/services/parsing/SessionParser.ts +++ b/src/main/services/parsing/SessionParser.ts @@ -74,7 +74,7 @@ export class SessionParser { * Parse a JSONL file at the given path. */ async parseSessionFile(filePath: string): Promise { - const messages = await parseJsonlFile(filePath); + const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider()); return this.processMessages(messages); } @@ -339,7 +339,7 @@ export class SessionParser { messages: ParsedMessage[]; metrics: SessionMetrics; }> { - const messages = await parseJsonlFile(filePath); + const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider()); const metrics = calculateMetrics(messages); return { messages, metrics }; diff --git a/test/main/services/parsing/SessionParser.test.ts b/test/main/services/parsing/SessionParser.test.ts index c80ec8dd..f511d471 100644 --- a/test/main/services/parsing/SessionParser.test.ts +++ b/test/main/services/parsing/SessionParser.test.ts @@ -16,6 +16,7 @@ import { type ParsedSession, } from '../../../../src/main/services/parsing/SessionParser'; import type { ParsedMessage } from '../../../../src/main/types'; +import { LocalFileSystemProvider } from '../../../../src/main/services/infrastructure/LocalFileSystemProvider'; // ============================================================================= // Mock ProjectScanner @@ -30,6 +31,7 @@ const mockProjectScanner = { getSession: vi.fn(), listWorktreeSessions: vi.fn(), scanWithWorktreeGrouping: vi.fn(), + getFileSystemProvider: vi.fn().mockReturnValue(new LocalFileSystemProvider()), }; // =============================================================================