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;
|
return this.todosDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the FileSystemProvider instance used by this scanner.
|
||||||
|
*/
|
||||||
|
getFileSystemProvider(): FileSystemProvider {
|
||||||
|
return this.fsProvider;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the projects directory exists.
|
* Checks if the projects directory exists.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ export class SubagentResolver {
|
||||||
*/
|
*/
|
||||||
private async parseSubagentFile(filePath: string): Promise<Process | null> {
|
private async parseSubagentFile(filePath: string): Promise<Process | null> {
|
||||||
try {
|
try {
|
||||||
const messages = await parseJsonlFile(filePath);
|
const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider());
|
||||||
|
|
||||||
if (messages.length === 0) {
|
if (messages.length === 0) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ export class SessionParser {
|
||||||
* Parse a JSONL file at the given path.
|
* Parse a JSONL file at the given path.
|
||||||
*/
|
*/
|
||||||
async parseSessionFile(filePath: string): Promise<ParsedSession> {
|
async parseSessionFile(filePath: string): Promise<ParsedSession> {
|
||||||
const messages = await parseJsonlFile(filePath);
|
const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider());
|
||||||
return this.processMessages(messages);
|
return this.processMessages(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,7 +339,7 @@ export class SessionParser {
|
||||||
messages: ParsedMessage[];
|
messages: ParsedMessage[];
|
||||||
metrics: SessionMetrics;
|
metrics: SessionMetrics;
|
||||||
}> {
|
}> {
|
||||||
const messages = await parseJsonlFile(filePath);
|
const messages = await parseJsonlFile(filePath, this.projectScanner.getFileSystemProvider());
|
||||||
const metrics = calculateMetrics(messages);
|
const metrics = calculateMetrics(messages);
|
||||||
|
|
||||||
return { messages, metrics };
|
return { messages, metrics };
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import {
|
||||||
type ParsedSession,
|
type ParsedSession,
|
||||||
} from '../../../../src/main/services/parsing/SessionParser';
|
} from '../../../../src/main/services/parsing/SessionParser';
|
||||||
import type { ParsedMessage } from '../../../../src/main/types';
|
import type { ParsedMessage } from '../../../../src/main/types';
|
||||||
|
import { LocalFileSystemProvider } from '../../../../src/main/services/infrastructure/LocalFileSystemProvider';
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// Mock ProjectScanner
|
// Mock ProjectScanner
|
||||||
|
|
@ -30,6 +31,7 @@ const mockProjectScanner = {
|
||||||
getSession: vi.fn(),
|
getSession: vi.fn(),
|
||||||
listWorktreeSessions: vi.fn(),
|
listWorktreeSessions: vi.fn(),
|
||||||
scanWithWorktreeGrouping: vi.fn(),
|
scanWithWorktreeGrouping: vi.fn(),
|
||||||
|
getFileSystemProvider: vi.fn().mockReturnValue(new LocalFileSystemProvider()),
|
||||||
};
|
};
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue