|
|
@@ -49,6 +49,7 @@ import { ACTION_NAMES } from "../CodeActionProvider"
|
|
|
import { Cline, ClineOptions } from "../Cline"
|
|
|
import { getNonce } from "./getNonce"
|
|
|
import { getUri } from "./getUri"
|
|
|
+import { getSystemPromptFilePath } from "../prompts/sections/custom-system-prompt"
|
|
|
import { telemetryService } from "../../services/telemetry/TelemetryService"
|
|
|
import { getWorkspacePath } from "../../utils/path"
|
|
|
import { webviewMessageHandler } from "./webviewMessageHandler"
|
|
|
@@ -1161,6 +1162,14 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
|
|
|
this.postMessageToWebview({ type: "state", state })
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Checks if there is a file-based system prompt override for the given mode
|
|
|
+ */
|
|
|
+ async hasFileBasedSystemPromptOverride(mode: Mode): Promise<boolean> {
|
|
|
+ const promptFilePath = getSystemPromptFilePath(this.cwd, mode)
|
|
|
+ return await fileExistsAtPath(promptFilePath)
|
|
|
+ }
|
|
|
+
|
|
|
async getStateToPostToWebview() {
|
|
|
const {
|
|
|
apiConfiguration,
|
|
|
@@ -1224,6 +1233,10 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
|
|
|
const allowedCommands = vscode.workspace.getConfiguration("roo-cline").get<string[]>("allowedCommands") || []
|
|
|
const cwd = this.cwd
|
|
|
|
|
|
+ // Check if there's a system prompt override for the current mode
|
|
|
+ const currentMode = mode ?? defaultModeSlug
|
|
|
+ const hasSystemPromptOverride = await this.hasFileBasedSystemPromptOverride(currentMode)
|
|
|
+
|
|
|
return {
|
|
|
version: this.context.extension?.packageJSON?.version ?? "",
|
|
|
apiConfiguration,
|
|
|
@@ -1296,6 +1309,7 @@ export class ClineProvider extends EventEmitter<ClineProviderEvents> implements
|
|
|
renderContext: this.renderContext,
|
|
|
maxReadFileLine: maxReadFileLine ?? 500,
|
|
|
settingsImportedAt: this.settingsImportedAt,
|
|
|
+ hasSystemPromptOverride,
|
|
|
}
|
|
|
}
|
|
|
|