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 {
|
interface PromptsSettingsProps {
|
||||||
customSupportPrompts: Record<string, string | undefined>
|
customSupportPrompts: Record<string, string | undefined>
|
||||||
setCustomSupportPrompts: (prompts: Record<string, string | undefined>) => void
|
setCustomSupportPrompts: (prompts: Record<string, string | undefined>) => void
|
||||||
|
customCondensingPrompt?: string
|
||||||
|
setCustomCondensingPrompt?: (value: string) => void
|
||||||
includeTaskHistoryInEnhance?: boolean
|
includeTaskHistoryInEnhance?: boolean
|
||||||
setIncludeTaskHistoryInEnhance?: (value: boolean) => void
|
setIncludeTaskHistoryInEnhance?: (value: boolean) => void
|
||||||
}
|
}
|
||||||
|
|
@ -30,6 +32,8 @@ interface PromptsSettingsProps {
|
||||||
const PromptsSettings = ({
|
const PromptsSettings = ({
|
||||||
customSupportPrompts,
|
customSupportPrompts,
|
||||||
setCustomSupportPrompts,
|
setCustomSupportPrompts,
|
||||||
|
customCondensingPrompt: propsCustomCondensingPrompt,
|
||||||
|
setCustomCondensingPrompt: propsSetCustomCondensingPrompt,
|
||||||
includeTaskHistoryInEnhance: propsIncludeTaskHistoryInEnhance,
|
includeTaskHistoryInEnhance: propsIncludeTaskHistoryInEnhance,
|
||||||
setIncludeTaskHistoryInEnhance: propsSetIncludeTaskHistoryInEnhance,
|
setIncludeTaskHistoryInEnhance: propsSetIncludeTaskHistoryInEnhance,
|
||||||
}: PromptsSettingsProps) => {
|
}: PromptsSettingsProps) => {
|
||||||
|
|
@ -40,12 +44,16 @@ const PromptsSettings = ({
|
||||||
setEnhancementApiConfigId,
|
setEnhancementApiConfigId,
|
||||||
condensingApiConfigId,
|
condensingApiConfigId,
|
||||||
setCondensingApiConfigId,
|
setCondensingApiConfigId,
|
||||||
customCondensingPrompt,
|
customCondensingPrompt: contextCustomCondensingPrompt,
|
||||||
setCustomCondensingPrompt,
|
setCustomCondensingPrompt: contextSetCustomCondensingPrompt,
|
||||||
includeTaskHistoryInEnhance: contextIncludeTaskHistoryInEnhance,
|
includeTaskHistoryInEnhance: contextIncludeTaskHistoryInEnhance,
|
||||||
setIncludeTaskHistoryInEnhance: contextSetIncludeTaskHistoryInEnhance,
|
setIncludeTaskHistoryInEnhance: contextSetIncludeTaskHistoryInEnhance,
|
||||||
} = useExtensionState()
|
} = 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
|
// Use props if provided, otherwise fall back to context
|
||||||
const includeTaskHistoryInEnhance = propsIncludeTaskHistoryInEnhance ?? contextIncludeTaskHistoryInEnhance ?? true
|
const includeTaskHistoryInEnhance = propsIncludeTaskHistoryInEnhance ?? contextIncludeTaskHistoryInEnhance ?? true
|
||||||
const setIncludeTaskHistoryInEnhance = propsSetIncludeTaskHistoryInEnhance ?? contextSetIncludeTaskHistoryInEnhance
|
const setIncludeTaskHistoryInEnhance = propsSetIncludeTaskHistoryInEnhance ?? contextSetIncludeTaskHistoryInEnhance
|
||||||
|
|
@ -76,10 +84,6 @@ const PromptsSettings = ({
|
||||||
|
|
||||||
if (type === "CONDENSE") {
|
if (type === "CONDENSE") {
|
||||||
setCustomCondensingPrompt(finalValue ?? supportPrompt.default.CONDENSE)
|
setCustomCondensingPrompt(finalValue ?? supportPrompt.default.CONDENSE)
|
||||||
vscode.postMessage({
|
|
||||||
type: "updateCondensingPrompt",
|
|
||||||
text: finalValue ?? supportPrompt.default.CONDENSE,
|
|
||||||
})
|
|
||||||
// Also update the customSupportPrompts to trigger change detection
|
// Also update the customSupportPrompts to trigger change detection
|
||||||
const updatedPrompts = { ...customSupportPrompts }
|
const updatedPrompts = { ...customSupportPrompts }
|
||||||
if (finalValue === undefined) {
|
if (finalValue === undefined) {
|
||||||
|
|
@ -102,10 +106,6 @@ const PromptsSettings = ({
|
||||||
const handleSupportReset = (type: SupportPromptType) => {
|
const handleSupportReset = (type: SupportPromptType) => {
|
||||||
if (type === "CONDENSE") {
|
if (type === "CONDENSE") {
|
||||||
setCustomCondensingPrompt(supportPrompt.default.CONDENSE)
|
setCustomCondensingPrompt(supportPrompt.default.CONDENSE)
|
||||||
vscode.postMessage({
|
|
||||||
type: "updateCondensingPrompt",
|
|
||||||
text: supportPrompt.default.CONDENSE,
|
|
||||||
})
|
|
||||||
// Also update the customSupportPrompts to trigger change detection
|
// Also update the customSupportPrompts to trigger change detection
|
||||||
const updatedPrompts = { ...customSupportPrompts }
|
const updatedPrompts = { ...customSupportPrompts }
|
||||||
delete updatedPrompts[type]
|
delete updatedPrompts[type]
|
||||||
|
|
|
||||||
|
|
@ -900,6 +900,10 @@ const SettingsView = forwardRef<SettingsViewRef, SettingsViewProps>(({ onDone, t
|
||||||
<PromptsSettings
|
<PromptsSettings
|
||||||
customSupportPrompts={customSupportPrompts || {}}
|
customSupportPrompts={customSupportPrompts || {}}
|
||||||
setCustomSupportPrompts={setCustomSupportPromptsField}
|
setCustomSupportPrompts={setCustomSupportPromptsField}
|
||||||
|
customCondensingPrompt={customCondensingPrompt}
|
||||||
|
setCustomCondensingPrompt={(value) =>
|
||||||
|
setCachedStateField("customCondensingPrompt", value)
|
||||||
|
}
|
||||||
includeTaskHistoryInEnhance={includeTaskHistoryInEnhance}
|
includeTaskHistoryInEnhance={includeTaskHistoryInEnhance}
|
||||||
setIncludeTaskHistoryInEnhance={(value) =>
|
setIncludeTaskHistoryInEnhance={(value) =>
|
||||||
setCachedStateField("includeTaskHistoryInEnhance", value)
|
setCachedStateField("includeTaskHistoryInEnhance", value)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue