diff --git a/src/core/prompts/instructions/create-mode.ts b/src/core/prompts/instructions/create-mode.ts index ea99a66901..de954a2f15 100644 --- a/src/core/prompts/instructions/create-mode.ts +++ b/src/core/prompts/instructions/create-mode.ts @@ -2,11 +2,12 @@ import * as path from "path" import * as vscode from "vscode" import { GlobalFileNames } from "../../../shared/globalFileNames" +import { getSettingsDirectoryPath } from "../../../utils/storage" export async function createModeInstructions(context: vscode.ExtensionContext | undefined): Promise { if (!context) throw new Error("Missing VSCode Extension Context") - const settingsDir = path.join(context.globalStorageUri.fsPath, "settings") + const settingsDir = await getSettingsDirectoryPath(context.globalStorageUri.fsPath) const customModesPath = path.join(settingsDir, GlobalFileNames.customModes) return ` diff --git a/src/core/prompts/sections/modes.ts b/src/core/prompts/sections/modes.ts index 9b863840c0..5a0219c7a1 100644 --- a/src/core/prompts/sections/modes.ts +++ b/src/core/prompts/sections/modes.ts @@ -1,14 +1,13 @@ -import * as path from "path" import * as vscode from "vscode" -import { promises as fs } from "fs" import type { ModeConfig } from "@roo-code/types" import { getAllModesWithPrompts } from "../../../shared/modes" +import { ensureSettingsDirectoryExists } from "../../../utils/globalContext" export async function getModesSection(context: vscode.ExtensionContext): Promise { - const settingsDir = path.join(context.globalStorageUri.fsPath, "settings") - await fs.mkdir(settingsDir, { recursive: true }) + // Make sure path gets created + await ensureSettingsDirectoryExists(context) // Get all modes with their overrides from extension state const allModes = await getAllModesWithPrompts(context) diff --git a/src/utils/globalContext.ts b/src/utils/globalContext.ts index 882501850d..1711c2a31e 100644 --- a/src/utils/globalContext.ts +++ b/src/utils/globalContext.ts @@ -1,13 +1,7 @@ -import { mkdir } from "fs/promises" -import { join } from "path" import { ExtensionContext } from "vscode" - -export async function getGlobalFsPath(context: ExtensionContext): Promise { - return context.globalStorageUri.fsPath -} +import { getSettingsDirectoryPath } from "./storage" export async function ensureSettingsDirectoryExists(context: ExtensionContext): Promise { - const settingsDir = join(context.globalStorageUri.fsPath, "settings") - await mkdir(settingsDir, { recursive: true }) - return settingsDir + // getSettingsDirectoryPath already handles the custom storage path setting + return await getSettingsDirectoryPath(context.globalStorageUri.fsPath) } diff --git a/src/utils/migrateSettings.ts b/src/utils/migrateSettings.ts index 0ddd553610..5d2625a707 100644 --- a/src/utils/migrateSettings.ts +++ b/src/utils/migrateSettings.ts @@ -3,6 +3,7 @@ import * as path from "path" import * as fs from "fs/promises" import { fileExistsAtPath } from "./fs" import { GlobalFileNames } from "../shared/globalFileNames" +import { getSettingsDirectoryPath } from "./storage" import * as yaml from "yaml" const deprecatedCustomModesJSONFilename = "custom_modes.json" @@ -26,7 +27,7 @@ export async function migrateSettings( ] try { - const settingsDir = path.join(context.globalStorageUri.fsPath, "settings") + const settingsDir = await getSettingsDirectoryPath(context.globalStorageUri.fsPath) // Check if settings directory exists first if (!(await fileExistsAtPath(settingsDir))) {