diff --git a/packages/core/src/services/trackerService.test.ts b/packages/core/src/services/trackerService.test.ts index 10456242d2..1ff3f1bd10 100644 --- a/packages/core/src/services/trackerService.test.ts +++ b/packages/core/src/services/trackerService.test.ts @@ -26,13 +26,6 @@ describe('TrackerService', () => { await fs.rm(testTrackerDir, { recursive: true, force: true }); }); - it('should initialize the tracker directory', async () => { - await service.ensureInitialized(); - const tasksDir = testTrackerDir; - const stats = await fs.stat(tasksDir); - expect(stats.isDirectory()).toBe(true); - }); - it('should create a task with a generated 6-char hex ID', async () => { const taskData: Omit = { title: 'Test Task', diff --git a/packages/core/src/services/trackerService.ts b/packages/core/src/services/trackerService.ts index b9a13d077b..4d60a6aed4 100644 --- a/packages/core/src/services/trackerService.ts +++ b/packages/core/src/services/trackerService.ts @@ -12,15 +12,18 @@ import { TrackerTaskSchema, type TrackerTask } from './trackerTypes.js'; export class TrackerService { private readonly tasksDir: string; + private initialized = false; + constructor(readonly trackerDir: string) { + console.log('trackerDir', trackerDir); this.tasksDir = trackerDir; } - /** - * Initializes the tracker storage if it doesn't exist. - */ - async ensureInitialized(): Promise { - await fs.mkdir(this.tasksDir, { recursive: true }); + private async ensureInitialized(): Promise { + if (!this.initialized) { + await fs.mkdir(this.tasksDir, { recursive: true }); + this.initialized = true; + } } /** @@ -49,6 +52,7 @@ export class TrackerService { * Reads a task by ID. */ async getTask(id: string): Promise { + await this.ensureInitialized(); const taskPath = path.join(this.tasksDir, `${id}.json`); try { const content = await fs.readFile(taskPath, 'utf8'); diff --git a/packages/core/src/tools/trackerTools.ts b/packages/core/src/tools/trackerTools.ts index c64349c4ff..92434b15c5 100644 --- a/packages/core/src/tools/trackerTools.ts +++ b/packages/core/src/tools/trackerTools.ts @@ -67,7 +67,6 @@ class TrackerInitInvocation extends BaseTrackerInvocation< } override async execute(_signal: AbortSignal): Promise { - await this.service.ensureInitialized(); return { llmContent: `Task tracker initialized successfully. Storage is ready at ${this.service.trackerDir}`, returnDisplay: 'Tracker initialized.',