mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
fix: resolve race condition in context condensing prompt input (#10876)
This commit is contained in:
parent
9ab279ae42
commit
fa92ec4586
3 changed files with 19 additions and 10 deletions
5
AGENTS.md
Normal file
5
AGENTS.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# AGENTS.md
|
||||
|
||||
This file provides guidance to agents when working with code in this repository.
|
||||
|
||||
- Settings View Pattern: When working on `SettingsView`, inputs must bind to the local `cachedState`, NOT the live `useExtensionState()`. The `cachedState` acts as a buffer for user edits, isolating them from the `ContextProxy` source-of-truth until the user explicitly clicks "Save". Wiring inputs directly to the live state causes race conditions.
|
||||
|
|
@ -23,6 +23,8 @@ import { SearchableSetting } from "./SearchableSetting"
|
|||
interface PromptsSettingsProps {
|
||||
customSupportPrompts: Record<string, string | undefined>
|
||||
setCustomSupportPrompts: (prompts: Record<string, string | undefined>) => void
|
||||
customCondensingPrompt?: string
|
||||
setCustomCondensingPrompt?: (value: string) => void
|
||||
includeTaskHistoryInEnhance?: boolean
|
||||
setIncludeTaskHistoryInEnhance?: (value: boolean) => void
|
||||
}
|
||||
|
|
@ -30,6 +32,8 @@ interface PromptsSettingsProps {
|
|||
const PromptsSettings = ({
|
||||
customSupportPrompts,
|
||||
setCustomSupportPrompts,
|
||||
customCondensingPrompt: propsCustomCondensingPrompt,
|
||||
setCustomCondensingPrompt: propsSetCustomCondensingPrompt,
|
||||
includeTaskHistoryInEnhance: propsIncludeTaskHistoryInEnhance,
|
||||
setIncludeTaskHistoryInEnhance: propsSetIncludeTaskHistoryInEnhance,
|
||||
}: PromptsSettingsProps) => {
|
||||
|
|
@ -40,12 +44,16 @@ const PromptsSettings = ({
|
|||
setEnhancementApiConfigId,
|
||||
condensingApiConfigId,
|
||||
setCondensingApiConfigId,
|
||||
customCondensingPrompt,
|
||||
setCustomCondensingPrompt,
|
||||
customCondensingPrompt: contextCustomCondensingPrompt,
|
||||
setCustomCondensingPrompt: contextSetCustomCondensingPrompt,
|
||||
includeTaskHistoryInEnhance: contextIncludeTaskHistoryInEnhance,
|
||||
setIncludeTaskHistoryInEnhance: contextSetIncludeTaskHistoryInEnhance,
|
||||
} = useExtensionState()
|
||||
|
||||
// Use props if provided, otherwise fall back to context
|
||||
const customCondensingPrompt = propsCustomCondensingPrompt ?? contextCustomCondensingPrompt
|
||||
const setCustomCondensingPrompt = propsSetCustomCondensingPrompt ?? contextSetCustomCondensingPrompt
|
||||
|
||||
// Use props if provided, otherwise fall back to context
|
||||
const includeTaskHistoryInEnhance = propsIncludeTaskHistoryInEnhance ?? contextIncludeTaskHistoryInEnhance ?? true
|
||||
const setIncludeTaskHistoryInEnhance = propsSetIncludeTaskHistoryInEnhance ?? contextSetIncludeTaskHistoryInEnhance
|
||||
|
|
@ -76,10 +84,6 @@ const PromptsSettings = ({
|
|||
|
||||
if (type === "CONDENSE") {
|
||||
setCustomCondensingPrompt(finalValue ?? supportPrompt.default.CONDENSE)
|
||||
vscode.postMessage({
|
||||
type: "updateCondensingPrompt",
|
||||
text: finalValue ?? supportPrompt.default.CONDENSE,
|
||||
})
|
||||
// Also update the customSupportPrompts to trigger change detection
|
||||
const updatedPrompts = { ...customSupportPrompts }
|
||||
if (finalValue === undefined) {
|
||||
|
|
@ -102,10 +106,6 @@ const PromptsSettings = ({
|
|||
const handleSupportReset = (type: SupportPromptType) => {
|
||||
if (type === "CONDENSE") {
|
||||
setCustomCondensingPrompt(supportPrompt.default.CONDENSE)
|
||||
vscode.postMessage({
|
||||
type: "updateCondensingPrompt",
|
||||
text: supportPrompt.default.CONDENSE,
|
||||
})
|
||||
// Also update the customSupportPrompts to trigger change detection
|
||||
const updatedPrompts = { ...customSupportPrompts }
|
||||
delete updatedPrompts[type]
|
||||
|
|
|
|||
|
|
@ -900,6 +900,10 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
|
|||
<PromptsSettings
|
||||
customSupportPrompts={customSupportPrompts || {}}
|
||||
setCustomSupportPrompts={setCustomSupportPromptsField}
|
||||
customCondensingPrompt={customCondensingPrompt}
|
||||
setCustomCondensingPrompt={(value) =>
|
||||
setCachedStateField("customCondensingPrompt", value)
|
||||
}
|
||||
includeTaskHistoryInEnhance={includeTaskHistoryInEnhance}
|
||||
setIncludeTaskHistoryInEnhance={(value) =>
|
||||
setCachedStateField("includeTaskHistoryInEnhance", value)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue