feat(01-01): thread FileSystemProvider through SessionParser and SubagentResolver
- Add getFileSystemProvider() getter to ProjectScanner - Update SessionParser.parseSessionFile() to pass provider to parseJsonlFile() - Update SessionParser.parseSubagentFile() to pass provider to parseJsonlFile() - Update SubagentResolver.parseSubagentFile() to pass provider to parseJsonlFile() - Update SessionParser test mock to include getFileSystemProvider method Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ad4e75b8e5
commit
a3f5dafdab
4 changed files with 12 additions and 3 deletions
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ export class SubagentResolver {
|
|||
*/
|
||||
private async parseSubagentFile(filePath: string): Promise<Process | null> {
|
||||
try {
|
||||
const messages = await parseJsonlFile(filePath);
|
||||
const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider());
|
||||
|
||||
if (messages.length === 0) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ export class SessionParser {
|
|||
* Parse a JSONL file at the given path.
|
||||
*/
|
||||
async parseSessionFile(filePath: string): Promise<ParsedSession> {
|
||||
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 };
|
||||
|
|
|
|||
|
|
@ -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()),
|
||||
};
|
||||
|
||||
// =============================================================================
|
||||
|
|
|
|||
Loading…
Reference in a new issue