Compare commits

...
Author SHA1 Message Date
abeatrix 2432a1655b typo 2025-11-20 21:16:41 -08:00
abeatrix 3633608c3f feat: integrate auto condense feature flag with user settings
Add feature flag support for AUTO_CONDENSE to allow independent control over the auto condense feature through both user settings and feature flags for enabling auto condense threshold for testing.

Changes:
- Add AUTO_CONDENSE feature flag definition and default value (dev-only)
- Create getUseAutoCondenseEnabled() method in FeatureFlagsService
- Update useAutoCondense state structure to track both user preference and feature flag status
- Modify ExtensionState type to use ClineFeatureSetting for useAutoCondense
- Update state initialization to use feature flag as fallback default value
2025-11-20 15:40:46 -08:00
9 changed files with 18 additions and 8 deletions
+4 -2
View File
@@ -860,7 +860,6 @@ export class Controller {
const mode = this.stateManager.getGlobalSettingsKey("mode")
const strictPlanModeEnabled = this.stateManager.getGlobalSettingsKey("strictPlanModeEnabled")
const yoloModeToggled = this.stateManager.getGlobalSettingsKey("yoloModeToggled")
const useAutoCondense = this.stateManager.getGlobalSettingsKey("useAutoCondense")
const userInfo = this.stateManager.getGlobalStateKey("userInfo")
const mcpMarketplaceEnabled = this.stateManager.getGlobalStateKey("mcpMarketplaceEnabled")
const mcpDisplayMode = this.stateManager.getGlobalStateKey("mcpDisplayMode")
@@ -935,7 +934,10 @@ export class Controller {
mode,
strictPlanModeEnabled,
yoloModeToggled,
useAutoCondense,
useAutoCondense: {
user: this.stateManager.getGlobalSettingsKey("useAutoCondense"),
featureFlag: featureFlagsService.getUseAutoCondenseEnabled(),
},
userInfo,
mcpMarketplaceEnabled,
mcpDisplayMode,
@@ -97,6 +97,10 @@ export class FeatureFlagsService {
return this.getBooleanFlagEnabled(FeatureFlag.NATIVE_TOOL_CALLS_NEXT_GEN_MODELS)
}
public getUseAutoCondenseEnabled(): boolean {
return this.getBooleanFlagEnabled(FeatureFlag.AUTO_CONDENSE)
}
public isResponseApiEnabled(): boolean {
return this.getBooleanFlagEnabled(FeatureFlag.OPENAI_NATIVE_RESPONSE_API)
}
+1 -1
View File
@@ -86,7 +86,7 @@ export interface ExtensionState {
mcpResponsesCollapsed?: boolean
strictPlanModeEnabled?: boolean
yoloModeToggled?: boolean
useAutoCondense?: boolean
useAutoCondense?: ClineFeatureSetting
focusChainSettings: FocusChainSettings
dictationSettings: DictationSettings
customPrompt?: string
@@ -11,6 +11,7 @@ export enum FeatureFlag {
// Feature flag for showing the new onboarding flow or old welcome view.
ONBOARDING_MODELS = "onboarding_models",
OPENAI_NATIVE_RESPONSE_API = "openai_native_response_api",
AUTO_CONDENSE = "auto_condense",
}
export const FeatureFlagDefaultValue: Partial<Record<FeatureFlag, FeatureFlagPayload>> = {
@@ -19,6 +20,7 @@ export const FeatureFlagDefaultValue: Partial<Record<FeatureFlag, FeatureFlagPay
[FeatureFlag.NATIVE_TOOL_CALLS_NEXT_GEN_MODELS]: process.env.IS_DEV === "true",
[FeatureFlag.ONBOARDING_MODELS]: process.env.E2E_TEST === "true" ? { models: {} } : undefined,
[FeatureFlag.OPENAI_NATIVE_RESPONSE_API]: process.env.IS_DEV === "true",
[FeatureFlag.AUTO_CONDENSE]: process.env.IS_DEV === "true",
}
export const FEATURE_FLAGS = Object.values(FeatureFlag)
@@ -19,7 +19,7 @@ interface ContextWindowInfoProps {
}
interface ContextWindowProgressProps extends ContextWindowInfoProps {
useAutoCondense: boolean
useAutoCondense?: boolean
lastApiReqTotalTokens?: number
contextWindow?: number
autoCondenseThreshold?: number
@@ -130,7 +130,7 @@ export const ContextWindowSummary: React.FC<TaskContextWindowButtonsProps> = ({
value={<span className="text-muted-foreground">{`${(autoCompactThreshold * 100).toFixed(0)}%`}</span>}>
<div className="space-y-1">
<p className="text-xs leading-relaxed text-white">
Click on the context window bar to set a new threshold.
[INTERNAL ONLY] Click on the context window bar to set a new threshold.
</p>
<p className="text-xs leading-relaxed mt-0 mb-0">
When the context window usage exceeds this threshold, the task will be automatically condensed.
@@ -59,6 +59,7 @@ const TaskHeader: React.FC<TaskHeaderProps> = ({
expandTaskHeader: isTaskExpanded,
setExpandTaskHeader: setIsTaskExpanded,
environment,
useAutoCondense,
} = useExtensionState()
const [isHighlightedTextExpanded, setIsHighlightedTextExpanded] = useState(false)
@@ -207,7 +208,8 @@ const TaskHeader: React.FC<TaskHeaderProps> = ({
onSendMessage={onSendMessage}
tokensIn={tokensIn}
tokensOut={tokensOut}
useAutoCondense={false} // Disable auto-condense configuration in UI for now
// Requires both user setting and feature flag to be enabled
useAutoCondense={useAutoCondense?.user && useAutoCondense?.featureFlag}
/>
<TaskTimeline messages={clineMessages} onBlockClick={onScrollToMessage} />
@@ -338,7 +338,7 @@ const FeatureSettingsSection = ({ renderSectionHeader }: FeatureSettingsSectionP
)}
<div style={{ marginTop: 10 }}>
<VSCodeCheckbox
checked={useAutoCondense}
checked={useAutoCondense?.user}
onChange={(e: any) => {
const checked = e.target.checked === true
updateSetting("useAutoCondense", checked)
@@ -221,7 +221,7 @@ export const ExtensionStateContextProvider: React.FC<{
strictPlanModeEnabled: false,
yoloModeToggled: false,
customPrompt: undefined,
useAutoCondense: false,
useAutoCondense: { user: false, featureFlag: false },
autoCondenseThreshold: undefined,
favoritedModelIds: [],
lastDismissedInfoBannerVersion: 0,