Compare commits

...

1 Commits

Author SHA1 Message Date
celestial-vault c569c3a7a9 use singleton statemanager in isMultiRootEnabled function 2025-12-07 14:26:46 -06:00
6 changed files with 12 additions and 24 deletions
+5 -10
View File
@@ -420,7 +420,6 @@ export class Task {
shouldUseMultiRoot({
workspaceManager: this.workspaceManager,
enableCheckpoints: this.stateManager.getGlobalSettingsKey("enableCheckpointsSetting"),
stateManager: this.stateManager,
})
) {
this.checkpointManager.initialize?.().catch((error: Error) => {
@@ -537,7 +536,7 @@ export class Task {
this.ulid,
this.terminalExecutionMode,
this.workspaceManager,
isMultiRootEnabled(this.stateManager),
isMultiRootEnabled(),
this.say.bind(this),
this.ask.bind(this),
this.saveCheckpointCallback.bind(this),
@@ -2079,7 +2078,7 @@ export class Task {
// Prepare multi-root workspace information if enabled
let workspaceRoots: Array<{ path: string; name: string; vcs?: string }> | undefined
const multiRootEnabled = isMultiRootEnabled(this.stateManager)
const multiRootEnabled = isMultiRootEnabled()
if (multiRootEnabled && this.workspaceManager) {
workspaceRoots = this.workspaceManager.getRoots().map((root) => ({
path: root.path,
@@ -2671,11 +2670,7 @@ export class Task {
if (shouldCompact) {
userContent.push({
type: "text",
text: summarizeTask(
this.stateManager.getGlobalSettingsKey("focusChainSettings"),
this.cwd,
isMultiRootEnabled(this.stateManager),
),
text: summarizeTask(this.stateManager.getGlobalSettingsKey("focusChainSettings"), this.cwd, isMultiRootEnabled()),
})
}
@@ -3393,7 +3388,7 @@ export class Task {
* Format workspace roots section for multi-root workspaces
*/
private formatWorkspaceRootsSection(): string {
const multiRootEnabled = isMultiRootEnabled(this.stateManager)
const multiRootEnabled = isMultiRootEnabled()
const hasWorkspaceManager = !!this.workspaceManager
const roots = hasWorkspaceManager ? this.workspaceManager!.getRoots() : []
@@ -3436,7 +3431,7 @@ export class Task {
* Format the file details header based on workspace configuration
*/
private formatFileDetailsHeader(): string {
const multiRootEnabled = isMultiRootEnabled(this.stateManager)
const multiRootEnabled = isMultiRootEnabled()
const roots = this.workspaceManager?.getRoots() || []
if (multiRootEnabled && roots.length > 1) {
+1 -1
View File
@@ -28,7 +28,7 @@ export class AutoApprove {
if (this.workspacePathsCache === null || this.isMultiRootScenarioCache === null) {
// First time - fetch and cache for the lifetime of this task
this.workspacePathsCache = await HostProvider.workspace.getWorkspacePaths({})
this.isMultiRootScenarioCache = isMultiRootEnabled(this.stateManager) && this.workspacePathsCache.paths.length > 1
this.isMultiRootScenarioCache = isMultiRootEnabled() && this.workspacePathsCache.paths.length > 1
}
return {
+3 -2
View File
@@ -1,4 +1,4 @@
import type { StateManager } from "../storage/StateManager"
import { StateManager } from "../storage/StateManager"
/**
* Determines if multi-root workspace mode should be enabled.
@@ -8,7 +8,8 @@ import type { StateManager } from "../storage/StateManager"
* @param stateManager - The state manager to check user preferences
* @returns true if user setting is enabled
*/
export function isMultiRootEnabled(stateManager: StateManager): boolean {
export function isMultiRootEnabled(): boolean {
const stateManager = StateManager.get()
const userSetting = stateManager.getGlobalStateKey("multiRootEnabled")
return !!userSetting
}
+1 -1
View File
@@ -26,7 +26,7 @@ export async function setupWorkspaceManager({
}): Promise<WorkspaceRootManager> {
const cwd = await getCwd(getDesktopDir())
const startTime = performance.now()
const multiRootEnabled = isMultiRootEnabled(stateManager)
const multiRootEnabled = isMultiRootEnabled()
try {
let manager: WorkspaceRootManager
// Multi-root mode condition - requires both feature flag and user setting to be enabled
@@ -22,7 +22,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: true,
workspaceManager: wr,
enableCheckpoints: true,
stateManager: makeStateManager(),
})
expect(result).to.equal(true)
})
@@ -33,7 +32,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: false,
workspaceManager: wr,
enableCheckpoints: true,
stateManager: makeStateManager(),
})
expect(result).to.equal(false)
@@ -45,7 +43,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: true,
workspaceManager: wr,
enableCheckpoints: false,
stateManager: makeStateManager(),
})
expect(result).to.equal(false)
})
@@ -55,7 +52,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: true,
workspaceManager: undefined,
enableCheckpoints: true,
stateManager: makeStateManager(),
})
expect(result).to.equal(false)
})
@@ -66,7 +62,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: true,
workspaceManager: wr,
enableCheckpoints: true,
stateManager: makeStateManager(),
})
expect(result).to.equal(false)
})
@@ -77,7 +72,6 @@ describe("shouldUseMultiRoot", () => {
multiRootEnabledOverride: true,
workspaceManager: wr,
enableCheckpoints: true,
stateManager: makeStateManager(),
})
expect(result).to.equal(false)
})
+2 -4
View File
@@ -15,15 +15,13 @@ import { StateManager } from "@/core/storage/StateManager"
export function shouldUseMultiRoot({
workspaceManager,
enableCheckpoints,
stateManager,
multiRootEnabledOverride,
}: {
workspaceManager?: WorkspaceRootManager
enableCheckpoints: boolean
stateManager: StateManager
multiRootEnabledOverride?: boolean
}): boolean {
const multiRootEnabled = multiRootEnabledOverride ?? isMultiRootEnabled(stateManager)
const multiRootEnabled = multiRootEnabledOverride ?? isMultiRootEnabled()
return Boolean(multiRootEnabled && enableCheckpoints && workspaceManager && workspaceManager.getRoots().length > 1)
}
@@ -75,7 +73,7 @@ export function buildCheckpointManager(args: BuildArgs): ICheckpointManager {
const enableCheckpoints = stateManager.getGlobalSettingsKey("enableCheckpointsSetting")
if (shouldUseMultiRoot({ workspaceManager, enableCheckpoints, stateManager })) {
if (shouldUseMultiRoot({ workspaceManager, enableCheckpoints })) {
// Multi-root manager (init should be kicked off externally, non-blocking)
return new MultiRootCheckpointManager(workspaceManager!, taskId, enableCheckpoints, messageStateHandler)
}