From fc81d4ee5f8adeeab4083b97c505f888ff7d3966 Mon Sep 17 00:00:00 2001 From: Dataflow Dev Date: Tue, 1 Sep 2026 03:41:53 +0530 Subject: [PATCH] fix: break 3-file import cycle in cli/project-files project-files.ts -> auth.ts -> logger.ts -> project-files.ts Import getConfigDir directly from config-dir instead of auth to break the circular dependency. config-dir.ts exports the identical function (auth.ts just wraps it). anonymous-id.ts already imports from config-dir directly. Add getProjectDataDir tests to exercise the fixed import path. --- .../__tests__/project-files-chat-id.test.ts | 20 +++++++++++++++++++ cli/src/project-files.ts | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cli/src/__tests__/project-files-chat-id.test.ts b/cli/src/__tests__/project-files-chat-id.test.ts index 73f504f5fa..c9d732ccf6 100644 --- a/cli/src/__tests__/project-files-chat-id.test.ts +++ b/cli/src/__tests__/project-files-chat-id.test.ts @@ -8,7 +8,10 @@ import { getCurrentChatId, setCurrentChatId, startNewChat, + setProjectRoot, + getProjectDataDir, } from '../project-files' +import { getConfigDir } from '../utils/config-dir' describe('chat id lifecycle', () => { test('getCurrentChatId is stable across calls', () => { @@ -32,3 +35,20 @@ describe('chat id lifecycle', () => { expect(rotated).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}\.\d{3}Z$/) }) }) + +describe('getProjectDataDir', () => { + test('returns a path containing the project basename', () => { + setProjectRoot('/tmp/my-project') + const dataDir = getProjectDataDir() + expect(dataDir).toContain('my-project') + expect(dataDir).toContain('projects') + }) + + test('uses config-dir getConfigDir (not auth re-export)', () => { + setProjectRoot('/tmp/test-repo') + const dataDir = getProjectDataDir() + // Should resolve via config-dir's getConfigDir without pulling in auth.ts + const configDir = getConfigDir() + expect(dataDir).toContain(configDir) + }) +}) diff --git a/cli/src/project-files.ts b/cli/src/project-files.ts index 99ffa73705..89c94db0fd 100644 --- a/cli/src/project-files.ts +++ b/cli/src/project-files.ts @@ -1,7 +1,7 @@ import { mkdirSync, readdirSync, statSync } from 'fs' import path from 'path' -import { getConfigDir } from './utils/auth' +import { getConfigDir } from './utils/config-dir' let projectRoot: string | undefined let currentChatId: string | undefined