From 604d4ded8d78ebb53838bfc670db1748894d4ab7 Mon Sep 17 00:00:00 2001 From: anj-s <32556631+anj-s@users.noreply.github.com> Date: Fri, 13 Mar 2026 16:35:26 -0700 Subject: [PATCH] fix(core): use session-specific temp directory for task tracker (#22382) --- packages/core/src/config/storage.test.ts | 19 +++++++++++++++++++ packages/core/src/config/storage.ts | 3 +++ 2 files changed, 22 insertions(+) diff --git a/packages/core/src/config/storage.test.ts b/packages/core/src/config/storage.test.ts index 6b1cd39d88..ea8fce6da3 100644 --- a/packages/core/src/config/storage.test.ts +++ b/packages/core/src/config/storage.test.ts @@ -180,6 +180,25 @@ describe('Storage – additional helpers', () => { expect(storageWithSession.getProjectTempPlansDir()).toBe(expected); }); + it('getProjectTempTrackerDir returns ~/.gemini/tmp//tracker when no sessionId is provided', async () => { + await storage.initialize(); + const tempDir = storage.getProjectTempDir(); + const expected = path.join(tempDir, 'tracker'); + expect(storage.getProjectTempTrackerDir()).toBe(expected); + }); + + it('getProjectTempTrackerDir returns ~/.gemini/tmp///tracker when sessionId is provided', async () => { + const sessionId = 'test-session-id'; + const storageWithSession = new Storage(projectRoot, sessionId); + ProjectRegistry.prototype.getShortId = vi + .fn() + .mockReturnValue(PROJECT_SLUG); + await storageWithSession.initialize(); + const tempDir = storageWithSession.getProjectTempDir(); + const expected = path.join(tempDir, sessionId, 'tracker'); + expect(storageWithSession.getProjectTempTrackerDir()).toBe(expected); + }); + describe('Session and JSON Loading', () => { beforeEach(async () => { await storage.initialize(); diff --git a/packages/core/src/config/storage.ts b/packages/core/src/config/storage.ts index f0e9c0220b..38654346fa 100644 --- a/packages/core/src/config/storage.ts +++ b/packages/core/src/config/storage.ts @@ -302,6 +302,9 @@ export class Storage { } getProjectTempTrackerDir(): string { + if (this.sessionId) { + return path.join(this.getProjectTempDir(), this.sessionId, 'tracker'); + } return path.join(this.getProjectTempDir(), 'tracker'); }