From c8e986c5e890cbf527edbf6af9c6033838191bb0 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 13:28:08 -0800 Subject: [PATCH 01/20] feat(context): condense context after idle time Add an optional Idle Condensing feature. When enabled, the task starts an idle countdown after a model response ends with context above the idle threshold. Typing resets the countdown. A new prompt cancels it. When the countdown expires, the task condenses the context through the same code path as the manual condense button, and the chat shows the same in-progress cue. Settings: Idle Condensing Enabled (default off), Idle Condensing Trigger Threshold (percent, clamped to the condense threshold), Idle time (seconds, minimum zero). Per-model profile overrides mirror the existing condensing settings. Closes #2339 --- packages/types/src/global-settings.ts | 32 + packages/types/src/vscode-extension-host.ts | 6 + src/core/context-management/index.ts | 36 +- src/core/task/Task.ts | 294 ++++++++- .../task/__tests__/Task.idle-condense.spec.ts | 591 ++++++++++++++++++ src/core/webview/ClineProvider.ts | 15 + .../webview/__tests__/ClineProvider.spec.ts | 182 ++++++ src/core/webview/webviewMessageHandler.ts | 49 ++ .../src/components/chat/ChatTextArea.tsx | 11 + webview-ui/src/components/chat/ChatView.tsx | 4 + .../chat/__tests__/ChatTextArea.spec.tsx | 46 ++ .../settings/ContextManagementSettings.tsx | 198 ++++++ .../src/components/settings/SettingsView.tsx | 15 + .../ContextManagementSettings.spec.tsx | 161 +++++ .../src/context/ExtensionStateContext.tsx | 28 + .../__tests__/ExtensionStateContext.spec.tsx | 6 + webview-ui/src/i18n/locales/ca/settings.json | 12 + webview-ui/src/i18n/locales/de/settings.json | 12 + webview-ui/src/i18n/locales/en/settings.json | 12 + webview-ui/src/i18n/locales/es/settings.json | 12 + webview-ui/src/i18n/locales/fr/settings.json | 12 + webview-ui/src/i18n/locales/hi/settings.json | 12 + webview-ui/src/i18n/locales/id/settings.json | 12 + webview-ui/src/i18n/locales/it/settings.json | 12 + webview-ui/src/i18n/locales/ja/settings.json | 12 + webview-ui/src/i18n/locales/ko/settings.json | 12 + webview-ui/src/i18n/locales/nl/settings.json | 12 + webview-ui/src/i18n/locales/pl/settings.json | 12 + .../src/i18n/locales/pt-BR/settings.json | 12 + webview-ui/src/i18n/locales/ru/settings.json | 12 + webview-ui/src/i18n/locales/tr/settings.json | 12 + webview-ui/src/i18n/locales/vi/settings.json | 12 + .../src/i18n/locales/zh-CN/settings.json | 12 + .../src/i18n/locales/zh-TW/settings.json | 12 + 34 files changed, 1879 insertions(+), 11 deletions(-) create mode 100644 src/core/task/__tests__/Task.idle-condense.spec.ts diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index f5757a51c7..809802bafc 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -187,6 +187,38 @@ export const globalSettingsSchema = z.object({ allowedMaxCost: z.number().nullish(), autoCondenseContext: z.boolean().optional(), autoCondenseContextPercent: z.number().optional(), + /** + * Master toggle for idle condensing: opportunistically condense the context + * while the task is waiting on the user, once the context exceeds the + * (typically lower) idle trigger threshold and the idle time has elapsed. + * @default false + */ + idleCondenseContext: z.boolean().optional(), + /** + * Context-window percentage (relative to the condensing context window) at + * or above which an idle condense is allowed to run. Must not exceed the + * effective autoCondenseContextPercent. + * @default 50 + */ + idleCondenseContextPercent: z.number().optional(), + /** + * Seconds of waiting-on-user (idle) time before an idle condense runs. + * The countdown restarts when the user types in the prompt input. + * @default 180 + */ + idleCondenseTimeInSeconds: z.number().optional(), + /** + * Per-model-profile overrides for idleCondenseContextPercent. A value of -1 + * inherits the global idleCondenseContextPercent; values outside + * [MIN_CONDENSE_THRESHOLD, MAX_CONDENSE_THRESHOLD] fall back to global. + */ + profileIdleThresholds: z.record(z.string(), z.number()).optional(), + /** + * Per-model-profile overrides for idleCondenseTimeInSeconds. A value of -1 + * inherits the global idleCondenseTimeInSeconds; negative values other than + * -1 fall back to global. + */ + profileIdleCondenseTimes: z.record(z.string(), z.number()).optional(), /** * Whether to include current time in the environment details diff --git a/packages/types/src/vscode-extension-host.ts b/packages/types/src/vscode-extension-host.ts index 8a006c0639..c8ad6d43fc 100644 --- a/packages/types/src/vscode-extension-host.ts +++ b/packages/types/src/vscode-extension-host.ts @@ -335,6 +335,8 @@ export type ExtensionState = Pick< | "codebaseIndexConfig" | "codebaseIndexModels" | "profileThresholds" + | "profileIdleThresholds" + | "profileIdleCondenseTimes" | "includeDiagnosticMessages" | "maxDiagnosticMessages" | "imageGenerationProvider" @@ -412,6 +414,9 @@ export type ExtensionState = Pick< autoCondenseContext: boolean autoCondenseContextPercent: number + idleCondenseContext: boolean + idleCondenseContextPercent: number + idleCondenseTimeInSeconds: number marketplaceItems?: MarketplaceItem[] // eslint-disable-next-line @typescript-eslint/no-explicit-any marketplaceInstalledMetadata?: { project: Record; global: Record } @@ -629,6 +634,7 @@ export interface WebviewMessage { | "zooCodeSignOut" | "switchOrganization" | "condenseTaskContextRequest" + | "idleCondenseReset" | "requestIndexingStatus" | "startIndexing" | "stopIndexing" diff --git a/src/core/context-management/index.ts b/src/core/context-management/index.ts index 2050cef373..5b7991daa2 100644 --- a/src/core/context-management/index.ts +++ b/src/core/context-management/index.ts @@ -47,7 +47,7 @@ export async function estimateTokenCount( * (window minus reserved output); an unknown/unlimited reserve (maxTokens -1) falls back to the * full window. Shared by `willManageContext` and `manageContext` so the two stay in lockstep. */ -function computeContextPercent({ +export function computeContextPercent({ prevContextTokens, contextWindow, maxTokens, @@ -158,6 +158,40 @@ export function truncateConversation(messages: ApiMessage[], fracToRemove: numbe } } +/** + * Resolves the effective condense threshold percent for the current model + * profile, mirroring the semantics used by `willManageContext`/`manageContext`: + * a profile value of -1 inherits the global percent, a value within + * [MIN_CONDENSE_THRESHOLD, MAX_CONDENSE_THRESHOLD] overrides it, and any other + * value falls back to the global percent with a warning. + */ +export function computeEffectiveCondenseThreshold({ + globalPercent, + profileThresholds, + currentProfileId, + label = "threshold", +}: { + globalPercent: number + profileThresholds: Record + currentProfileId: string + label?: string +}): number { + const profileThreshold = profileThresholds[currentProfileId] + if (profileThreshold === undefined) { + return globalPercent + } + if (profileThreshold === -1) { + return globalPercent + } + if (profileThreshold >= MIN_CONDENSE_THRESHOLD && profileThreshold <= MAX_CONDENSE_THRESHOLD) { + return profileThreshold + } + console.warn( + `Invalid profile ${label} ${profileThreshold} for profile "${currentProfileId}". Using global default of ${globalPercent}%`, + ) + return globalPercent +} + /** * Options for checking if context management will likely run. * A subset of ContextManagementOptions with only the fields needed for threshold calculation. diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index b911479bc6..1428552fa1 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -112,7 +112,13 @@ import { type AssistantMessageContent, presentAssistantMessage } from "../assist import { DispatchState, type PendingWork } from "./dispatchState" import { type RequestPolicySnapshot } from "../prompts/tools/effective-tool-policy" import { NativeToolCallParser } from "../assistant-message/NativeToolCallParser" -import { type ContextManagementResult, manageContext, willManageContext } from "../context-management" +import { + computeContextPercent, + computeEffectiveCondenseThreshold, + type ContextManagementResult, + manageContext, + willManageContext, +} from "../context-management" import { ClineProvider } from "../webview/ClineProvider" import { MultiSearchReplaceDiffStrategy } from "../diff/strategies/multi-search-replace" import { @@ -286,6 +292,26 @@ export class PendingActionSettlementError extends Error { } } +/** + * Outcome of a condense run, surfaced so callers (e.g. the idle-condense + * timer) can re-evaluate context fullness without waiting for the next API + * request to refresh `getTokenUsage().contextTokens` (manual condense does + * not refresh it). + */ +type CondenseContextResult = { + condensed: boolean + error?: string + newContextTokens?: number + prevContextTokens: number +} + +/** Snapshot of the idle-condense gate inputs, re-evaluated when the timer fires. */ +type IdleCondenseGate = { + idlePercent: number + contextPercent: number + idleSeconds: number +} + export class Task extends EventEmitter implements TaskLike { readonly taskId: string readonly rootTaskId?: string @@ -471,6 +497,16 @@ export class Task extends EventEmitter implements TaskLike { private blanketDeniedCommandThisTurn = false public lastMessageTs?: number private autoApprovalTimeoutRef?: NodeJS.Timeout + /** Timer for opportunistic idle condensing; armed only while the task waits on the user. */ + private idleCondenseTimeoutRef?: NodeJS.Timeout + /** True while an idle-triggered condense is running, to prevent overlapping runs/re-arms. */ + private idleCondenseInFlight = false + /** + * True while the most recent task action was a condense of any kind (idle, + * manual, inline auto, or forced overflow). Idle condensing stays suppressed + * until the task takes another action (a new model request or a user prompt). + */ + private lastActionWasCondense = false // Tool Use consecutiveMistakeCount: number = 0 @@ -2202,6 +2238,12 @@ export class Task extends EventEmitter implements TaskLike { void provider?.postMessageToWebview({ type: "interactionRequired" }).catch((error) => { console.error("[Task#ask] postMessageToWebview interactionRequired failed:", error) }) + // A followup is the model's question finished and the task + // waiting on a new user prompt: eligible for idle condensing. + // Other interactive asks (tool/command/etc) are mid-response. + if (type === "followup") { + void this.maybeStartIdleCondenseTimer() + } } }, statusMutationTimeout), ) @@ -2216,6 +2258,7 @@ export class Task extends EventEmitter implements TaskLike { if (message) { this.resumableAsk = message this.emit(RooCodeEventName.TaskResumable, this.taskId) + void this.maybeStartIdleCondenseTimer() } }, statusMutationTimeout), ) @@ -2230,6 +2273,7 @@ export class Task extends EventEmitter implements TaskLike { if (message) { this.idleAsk = message this.emit(RooCodeEventName.TaskIdle, this.taskId) + void this.maybeStartIdleCondenseTimer() } }, statusMutationTimeout), ) @@ -2472,6 +2516,10 @@ export class Task extends EventEmitter implements TaskLike { handleWebviewAskResponse(askResponse: ClineAskResponse, text?: string, images?: string[]) { // Clear any pending auto-approval timeout when user responds this.cancelAutoApprovalTimeout() + // The user is engaging with the task: stop any pending idle condense, and + // let a future idle period condense again even if the last action condensed. + this.cancelIdleCondenseTimer() + this.lastActionWasCondense = false this.askResponse = askResponse this.askResponseText = text @@ -2531,6 +2579,212 @@ export class Task extends EventEmitter implements TaskLike { } } + /** + * Cancel any pending idle-condense timeout (user sent a prompt, task was + * cancelled, or the task is being disposed). + */ + public cancelIdleCondenseTimer(): void { + if (this.idleCondenseTimeoutRef) { + clearTimeout(this.idleCondenseTimeoutRef) + this.idleCondenseTimeoutRef = undefined + } + } + + /** + * Restart the idle-condense countdown. Called when the user types in the + * prompt area. Only acts while a timer is currently armed (i.e. the task is + * waiting on the user with context above the idle threshold); a typing + * signal during active work must not start condensing. + */ + public resetIdleCondenseTimer(): void { + if (!this.idleCondenseTimeoutRef) { + return + } + this.cancelIdleCondenseTimer() + void this.maybeStartIdleCondenseTimer() + } + + /** + * Resolve the idle wait in seconds for the current model profile, mirroring + * the profileThresholds semantics: -1 inherits the global value, a value + * >= 0 overrides it, anything else falls back to global with a warning. + */ + private resolveIdleCondenseTimeInSeconds( + state: { idleCondenseTimeInSeconds?: number; profileIdleCondenseTimes?: Record }, + currentProfileId: string, + ): number { + const globalSeconds = state.idleCondenseTimeInSeconds ?? 180 + const profileSeconds = state.profileIdleCondenseTimes?.[currentProfileId] + if (profileSeconds === undefined || profileSeconds === -1) { + return Math.max(0, globalSeconds) + } + if (profileSeconds >= 0) { + return profileSeconds + } + console.warn( + `Invalid profile idle condense time ${profileSeconds} for profile "${currentProfileId}". Using global default of ${globalSeconds}s`, + ) + return Math.max(0, globalSeconds) + } + + /** + * Evaluate the idle-condense gate: enabled + active task + context above the + * effective idle threshold. The idle threshold never exceeds the main + * auto-condense threshold (belt-and-suspenders on top of settings + * validation). Returns undefined when condensing must not be considered. + */ + private async evaluateIdleCondense(): Promise { + // The last action was a condense (idle or otherwise): triggering another + // condense while the user is still idle would be redundant. Stay suppressed + // until the task takes another action. + if (this.lastActionWasCondense) { + return undefined + } + const provider = this.providerRef.deref() + if (!provider) { + return undefined + } + // Idle condensing only runs for the active task. + if (provider.getCurrentTask()?.taskId !== this.taskId) { + return undefined + } + + const state = await provider.getState() + if (!state?.idleCondenseContext) { + return undefined + } + + const { contextTokens } = this.getTokenUsage() + if (!contextTokens || contextTokens <= 0) { + return undefined + } + + const modelInfo = await this.safeEnsureModelFetched() + // Parity with attemptApiRequestWithActiveApi: vscode-lm condenses against + // its static-table maxInputTokens via getCondenseContextWindow. + const contextWindow = this.api.getCondenseContextWindow?.() ?? modelInfo.contextWindow + if (!contextWindow) { + return undefined + } + const useAvailableInputForContextPercent = typeof this.api.getCondenseContextWindow === "function" + const maxTokens = getModelMaxOutputTokens({ + modelId: this.api.getModel().id, + model: modelInfo, + settings: this.apiConfiguration, + }) + + const currentProfileId = this.getCurrentProfileId(state) + const mainPercent = computeEffectiveCondenseThreshold({ + globalPercent: state?.autoCondenseContextPercent ?? 100, + profileThresholds: state?.profileThresholds ?? {}, + currentProfileId, + label: "condense threshold", + }) + const idlePercentSetting = computeEffectiveCondenseThreshold({ + globalPercent: state?.idleCondenseContextPercent ?? 50, + profileThresholds: state?.profileIdleThresholds ?? {}, + currentProfileId, + label: "idle condense threshold", + }) + const idlePercent = Math.min(idlePercentSetting, mainPercent) + const contextPercent = computeContextPercent({ + prevContextTokens: contextTokens, + contextWindow, + maxTokens, + useAvailableInputForContextPercent, + }) + const idleSeconds = this.resolveIdleCondenseTimeInSeconds(state, currentProfileId) + + return { idlePercent, contextPercent, idleSeconds } + } + + /** + * Arm the idle-condense timer if the gate allows. No-op when a timer is + * already armed or an idle condense is in flight. + */ + private async maybeStartIdleCondenseTimer(): Promise { + try { + if (this.abort || this.abandoned) { + return + } + if (this.idleCondenseTimeoutRef || this.idleCondenseInFlight) { + return + } + const gate = await this.evaluateIdleCondense() + if (!gate || gate.contextPercent < gate.idlePercent) { + return + } + // Re-check after the async gate evaluation: a prompt may have landed. + if (this.abort || this.abandoned || this.idleCondenseTimeoutRef) { + return + } + this.armIdleCondenseTimeout(gate.idleSeconds) + } catch (error) { + console.error("[Task#maybeStartIdleCondenseTimer] error:", error) + } + } + + private armIdleCondenseTimeout(seconds: number): void { + this.cancelIdleCondenseTimer() + this.idleCondenseTimeoutRef = setTimeout(() => { + this.idleCondenseTimeoutRef = undefined + void this.onIdleCondenseTimerFired() + }, Math.max(0, seconds) * 1000) + } + + /** + * The idle wait elapsed: re-check the gate (settings or activity may have + * changed) and condense opportunistically. A successful condense marks the + * condense as the last task action, which keeps idle condensing suppressed + * until the user sends a prompt or the task runs another model request. + */ + private async onIdleCondenseTimerFired(): Promise { + if (this.idleCondenseInFlight) { + return + } + try { + if (this.abort || this.abandoned) { + return + } + // Something started (API request, tool, manual condense): the task is no + // longer idle. The next idle transition re-arms the timer. + if (this.activeApiWork > 0) { + return + } + const gate = await this.evaluateIdleCondense() + if (!gate || gate.contextPercent < gate.idlePercent) { + return + } + + this.idleCondenseInFlight = true + let result: CondenseContextResult + try { + // Give the user the same in-progress cue a manual condense shows: + // the "Condensing context..." row with its busy icon. The chat box + // keeps the normal press-to-send state, like a manual condense. + await this.providerRef + .deref() + ?.postMessageToWebview({ type: "condenseTaskContextStarted", text: this.taskId }) + result = await this.condenseContextWithLease() + } finally { + this.idleCondenseInFlight = false + // Always clear the cue, even when the lease or the condense throws. + await this.providerRef + .deref() + ?.postMessageToWebview({ type: "condenseTaskContextResponse", text: this.taskId }) + } + + if (!result.condensed) { + return + } + // Do not re-arm: the condense is now the last task action + // (`condenseContextWithLease` set `lastActionWasCondense`), so another + // idle condense must not trigger until the task does something else. + } catch (error) { + console.error("[Task#onIdleCondenseTimerFired] error:", error) + } + } + public approveAsk({ text, images }: { text?: string; images?: string[] } = {}) { this.handleWebviewAskResponse("yesButtonClicked", text, images) } @@ -2677,19 +2931,30 @@ export class Task extends EventEmitter implements TaskLike { } public async condenseContext(): Promise { + await this.condenseContextWithLease() + } + + private async condenseContextWithLease(): Promise { const endApiWork = this.beginApiWork() try { - await this.condenseContextWithActiveApi() + const result = await this.condenseContextWithActiveApi() + if (result.condensed) { + // Covers the manual condense button and the idle-triggered condense. + this.lastActionWasCondense = true + } + return result } finally { endApiWork() } } - private async condenseContextWithActiveApi(): Promise { + private async condenseContextWithActiveApi(): Promise { // CRITICAL: Flush any pending tool results before condensing // to ensure tool_use/tool_result pairs are complete in history await this.flushPendingToolResultsToHistory() + const { contextTokens: prevContextTokens } = this.getTokenUsage() + // Capture provider state and one model-info snapshot once and thread them into // getSystemPrompt so the prompt and the condensing tool array below resolve // from one snapshot. @@ -2699,7 +2964,7 @@ export class Task extends EventEmitter implements TaskLike { // A cancellation landing during the bounded metadata wait must stop // manual condensation before any prompt build or summarization request. if (this.abort || this.abandoned) { - return + return { condensed: false, prevContextTokens } } const systemPrompt = await this.getSystemPrompt(state, requestModelInfo) @@ -2707,7 +2972,7 @@ export class Task extends EventEmitter implements TaskLike { // A cancellation landing during the prompt build's bounded MCP wait must // stop manual condensation before any summarization request is issued. if (this.abort || this.abandoned) { - return + return { condensed: false, prevContextTokens } } // Get condensing configuration @@ -2716,8 +2981,6 @@ export class Task extends EventEmitter implements TaskLike { const mode = await this.getTaskMode() const apiConfiguration = this.apiConfiguration - const { contextTokens: prevContextTokens } = this.getTokenUsage() - // Build tools for condensing metadata (same tools used for normal API calls) const provider = this.providerRef.deref() let allTools: import("openai").default.Chat.ChatCompletionTool[] = [] @@ -2761,7 +3024,7 @@ export class Task extends EventEmitter implements TaskLike { // A cancellation landing while the summarization inputs are gathered must // stop manual condensation before any summarization request is issued. if (this.abort || this.abandoned) { - return + return { condensed: false, prevContextTokens } } const { @@ -2787,7 +3050,7 @@ export class Task extends EventEmitter implements TaskLike { // A cancellation landing during the summarization request must stop // manual condensation before it replaces and persists the history. if (this.abort || this.abandoned) { - return + return { condensed: false, prevContextTokens } } if (error) { await this.say( @@ -2799,7 +3062,7 @@ export class Task extends EventEmitter implements TaskLike { undefined /* progressStatus */, { isNonInteractive: true } /* options */, ) - return + return { condensed: false, error, prevContextTokens } } await this.overwriteApiConversationHistory(messages) @@ -2823,6 +3086,7 @@ export class Task extends EventEmitter implements TaskLike { // Process any queued messages after condensing completes this.processQueuedMessages() + return { condensed: true, newContextTokens, prevContextTokens } } async say( @@ -3695,6 +3959,7 @@ export class Task extends EventEmitter implements TaskLike { console.log(`[Task#dispose] disposing task ${this.taskId}.${this.instanceId}`) this.cancelAssistantMessagePersistence() this.cancelPendingPartialMessageUpdate() + this.cancelIdleCondenseTimer() // Release handler-owned host resources (e.g. VS Code configuration listeners). // This is the fallback for leases that never settle; later lease releases @@ -3950,6 +4215,12 @@ export class Task extends EventEmitter implements TaskLike { throw new Error(`[RooCode#recursivelyMakeRooRequests] task ${this.taskId}.${this.instanceId} aborted`) } + // A new model request is starting, so a condense from earlier is no longer + // the last action. An inline condense during this same request sets the + // flag again (via reportContextManagementResult), correctly suppressing a + // follow-up idle condense when the request that condensed was the last one. + this.lastActionWasCondense = false + if (this.consecutiveMistakeLimit > 0 && this.consecutiveMistakeCount >= this.consecutiveMistakeLimit) { // Track consecutive mistake errors in telemetry via a named event. // The reason is "unknown" because many paths increment consecutiveMistakeCount @@ -5494,6 +5765,9 @@ export class Task extends EventEmitter implements TaskLike { await this.say("condense_context_error", result.error) } if (result.summary) { + // A real condense ran (inline auto or forced overflow): suppress idle + // condensing until the task takes another action. + this.lastActionWasCondense = true const { summary, cost, prevContextTokens, newContextTokens = 0, condenseId } = result const contextCondense: ContextCondense = { summary, diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts new file mode 100644 index 0000000000..d1a93ba19f --- /dev/null +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -0,0 +1,591 @@ +// pnpm --dir src exec vitest run core/task/__tests__/Task.idle-condense.spec.ts +import type { ModelInfo, TokenUsage } from "@roo-code/types" + +import type { ContextManagementResult } from "../../context-management" + +import { Task } from "../Task" + +const MODEL_INFO: ModelInfo = { + contextWindow: 1_000, + supportsImages: false, + supportsPromptCache: false, + inputPrice: 0, + outputPrice: 0, +} + +type StateStub = Partial<{ + idleCondenseContext: boolean + idleCondenseContextPercent: number + idleCondenseTimeInSeconds: number + autoCondenseContextPercent: number + profileThresholds: Record + profileIdleThresholds: Record + profileIdleCondenseTimes: Record +}> + +const baseState = (overrides: StateStub = {}): StateStub => ({ + idleCondenseContext: true, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 30, + autoCondenseContextPercent: 100, + profileThresholds: {}, + profileIdleThresholds: {}, + profileIdleCondenseTimes: {}, + ...overrides, +}) + +const tokenUsage = (contextTokens: number): TokenUsage => ({ + totalTokensIn: 0, + totalTokensOut: 0, + totalCost: 0, + contextTokens, +}) + +// Mirrors the private CondenseContextResult shape returned by condenseContextWithLease. +type CondenseStubResult = { + condensed: boolean + error?: string + newContextTokens?: number + prevContextTokens: number +} + +function buildTask( + { + state = baseState(), + contextTokens = 600, + modelInfo = MODEL_INFO, + isCurrentTask = true, + providerExists = true, + }: { + state?: StateStub + contextTokens?: number + modelInfo?: ModelInfo + isCurrentTask?: boolean + providerExists?: boolean + } = {}, +) { + const task = Object.create(Task.prototype) as Task + + // Context window is 1_000, so contextTokens 600 => 60% full. + const condense = vi.fn(async (): Promise => ({ + condensed: true, + newContextTokens: 100, + prevContextTokens: contextTokens, + })) + + const postMessageToWebview = vi.fn(async (_message: { type: string; text?: string }) => {}) + const getState = vi.fn(async () => state) + const getCurrentTask = vi.fn(() => (isCurrentTask ? { taskId: "task-1" } : undefined)) + const provider = { getState, getCurrentTask, postMessageToWebview } + + task["abort"] = false + task["abandoned"] = false + task["activeApiWork"] = 0 + // Object.create skips constructor field initialisers; mirror the default. + task["lastActionWasCondense"] = false + task["clineMessages"] = [] + Object.defineProperty(task, "taskId", { value: "task-1" }) + // Double providing only the provider members the idle-condense gate touches + // (getCurrentTask and getState); the real ClineProvider surface is irrelevant here. + task["providerRef"] = { deref: () => (providerExists ? provider : undefined) } as unknown as Task["providerRef"] + task["getTokenUsage"] = vi.fn((): TokenUsage => tokenUsage(contextTokens)) + task["safeEnsureModelFetched"] = vi.fn(async (): Promise => modelInfo) + // No getCondenseContextWindow on the stub: the gate uses the model's raw + // contextWindow, so percent = 100 * contextTokens / 1000. + Object.defineProperty(task, "api", { + value: { getModel: () => ({ id: "test-model" }) }, + }) + task["apiConfiguration"] = {} + task["condenseContextWithLease"] = condense + + return { task, getState, getCurrentTask, condense, postMessageToWebview } +} + +// Ordered webview message types the idle condense emits for the in-progress cue. +const postedCueTypes = (postMessageToWebview: { + mock: { calls: Array<[{ type: string; text?: string }]> } +}): string[] => postMessageToWebview.mock.calls.map(([message]) => message.type) + +describe("Task idle condensing — evaluateIdleCondense", () => { + test("builds the gate and clamps the idle threshold to the main threshold", async () => { + const { task } = buildTask({ + state: baseState({ idleCondenseContextPercent: 90, autoCondenseContextPercent: 80 }), + }) + + const gate = await task["evaluateIdleCondense"]() + + expect(gate).toBeDefined() + expect(gate?.idlePercent).toBe(80) + expect(gate?.contextPercent).toBe(60) + expect(gate?.idleSeconds).toBe(30) + }) + + test("returns undefined when the last action was a condense", async () => { + const { task } = buildTask() + task["lastActionWasCondense"] = true + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + + test("defaults the idle threshold to 50 when unset", async () => { + const { task } = buildTask({ state: baseState({ idleCondenseContextPercent: undefined }) }) + + const gate = await task["evaluateIdleCondense"]() + + expect(gate?.idlePercent).toBe(50) + }) + + test("uses the profile idle threshold override for the current profile", async () => { + // No listApiConfigMeta => getCurrentProfileId() resolves to "default". + const { task } = buildTask({ state: baseState({ profileIdleThresholds: { default: 20 } }) }) + + const gate = await task["evaluateIdleCondense"]() + + expect(gate?.idlePercent).toBe(20) + }) + + test("returns undefined when the provider is gone", async () => { + const { task } = buildTask({ providerExists: false }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + + test("returns undefined when the task is not the active task", async () => { + const { task } = buildTask({ isCurrentTask: false }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + + test("returns undefined when idle condensing is disabled", async () => { + const { task } = buildTask({ state: baseState({ idleCondenseContext: false }) }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + + test("returns undefined when there are no context tokens yet", async () => { + const { task } = buildTask({ contextTokens: 0 }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + + test("returns undefined when the model has no context window", async () => { + const noWindow: ModelInfo = { ...MODEL_INFO } + delete (noWindow as { contextWindow?: number }).contextWindow + const { task } = buildTask({ modelInfo: noWindow }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) +}) + +describe("Task idle condensing — resolveIdleCondenseTimeInSeconds", () => { + let warn: ReturnType + + beforeEach(() => { + warn = vi.spyOn(console, "warn").mockImplementation(() => {}) + }) + + afterEach(() => { + warn.mockRestore() + }) + + const resolve = (state: { idleCondenseTimeInSeconds?: number; profileIdleCondenseTimes?: Record }) => + buildTask().task["resolveIdleCondenseTimeInSeconds"](state, "profile-1") + + test("uses the global value when the profile has no entry", () => { + expect(resolve({ idleCondenseTimeInSeconds: 45 })).toBe(45) + }) + + test("uses the default 180s when the global value is unset", () => { + expect(resolve({})).toBe(180) + }) + + test("profile -1 inherits the global value", () => { + expect(resolve({ idleCondenseTimeInSeconds: 45, profileIdleCondenseTimes: { "profile-1": -1 } })).toBe(45) + }) + + test("a non-negative profile value overrides the global value", () => { + expect(resolve({ idleCondenseTimeInSeconds: 45, profileIdleCondenseTimes: { "profile-1": 10 } })).toBe(10) + }) + + test("a zero profile value overrides the global value", () => { + expect(resolve({ idleCondenseTimeInSeconds: 45, profileIdleCondenseTimes: { "profile-1": 0 } })).toBe(0) + }) + + test("falls back to the global value with a warning for an invalid profile value", () => { + expect(resolve({ idleCondenseTimeInSeconds: 45, profileIdleCondenseTimes: { "profile-1": -7 } })).toBe(45) + expect(warn).toHaveBeenCalledTimes(1) + }) + + test("clamps a negative global value to zero", () => { + expect(resolve({ idleCondenseTimeInSeconds: -5 })).toBe(0) + }) +}) + +describe("Task idle condensing — arming the timer", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + test("arms the idle timer when the context is above the idle threshold", async () => { + const { task } = buildTask() + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(1) + }) + + test("does not arm when the context is below the idle threshold", async () => { + const { task } = buildTask({ contextTokens: 100 }) + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) + + test("does not arm for an aborted task", async () => { + const { task } = buildTask() + task["abort"] = true + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) + + test("does not arm when a timer is already armed", async () => { + const { task } = buildTask() + const evaluate = vi.fn(async () => undefined) + task["evaluateIdleCondense"] = evaluate + task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 10_000_000) + + await task["maybeStartIdleCondenseTimer"]() + + expect(evaluate).not.toHaveBeenCalled() + expect(vi.getTimerCount()).toBe(1) + }) + + test("does not arm while an idle condense is in flight", async () => { + const { task } = buildTask() + task["idleCondenseInFlight"] = true + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) + + test("does not arm when the last action was a condense", async () => { + const { task } = buildTask() + task["lastActionWasCondense"] = true + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) +}) + +describe("Task idle condensing — reset and cancel", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + test("reset is a no-op while no timer is armed", () => { + const { task } = buildTask() + const maybeStart = vi.fn(async () => {}) + task["maybeStartIdleCondenseTimer"] = maybeStart + + task.resetIdleCondenseTimer() + + expect(maybeStart).not.toHaveBeenCalled() + }) + + test("reset re-arms the countdown only while a timer is armed", async () => { + const { task } = buildTask() + task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) + const maybeStart = vi.fn(async () => {}) + task["maybeStartIdleCondenseTimer"] = maybeStart + + task.resetIdleCondenseTimer() + await vi.runOnlyPendingTimersAsync().catch(() => {}) + + expect(maybeStart).toHaveBeenCalledTimes(1) + // The old countdown was cleared and the stub does not re-arm. + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + }) + + test("cancel clears the armed countdown", () => { + const { task } = buildTask() + task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) + + task.cancelIdleCondenseTimer() + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + }) + + test("sending a prompt from the webview cancels the countdown", () => { + const { task } = buildTask() + task["checkpointSave"] = vi.fn(async () => {}) + task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) + task["lastActionWasCondense"] = true + + task.handleWebviewAskResponse("messageResponse", "new prompt") + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + // The user sent a prompt: the condense is no longer the last action. + expect(task["lastActionWasCondense"]).toBe(false) + }) +}) + +describe("Task idle condensing — timer expiry", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + test("condenses once the idle wait elapses and then stops", async () => { + const { task, condense, postMessageToWebview } = buildTask() + + await task["maybeStartIdleCondenseTimer"]() + + await vi.advanceTimersByTimeAsync(29_999) + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + + await vi.advanceTimersByTimeAsync(1) + // A condense was the last action: the timer is never re-armed. + expect(condense).toHaveBeenCalledTimes(1) + expect(vi.getTimerCount()).toBe(0) + // Same in-progress cue as a manual condense, in order, for this task. + expect(postedCueTypes(postMessageToWebview)).toEqual([ + "condenseTaskContextStarted", + "condenseTaskContextResponse", + ]) + expect(postMessageToWebview.mock.calls.every(([message]) => message.text === "task-1")).toBe(true) + }) + + test("does not re-arm after a condense even when still above the idle threshold", async () => { + const { task, condense } = buildTask() + condense.mockResolvedValue({ condensed: true, newContextTokens: 600, prevContextTokens: 600 }) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + expect(vi.getTimerCount()).toBe(0) + + await vi.advanceTimersByTimeAsync(60_000) + expect(condense).toHaveBeenCalledTimes(1) + }) + + test("does not condense when work started while the countdown ran", async () => { + const { task, condense, postMessageToWebview } = buildTask() + + await task["maybeStartIdleCondenseTimer"]() + task["activeApiWork"] = 1 + await vi.advanceTimersByTimeAsync(30_000) + + expect(condense).not.toHaveBeenCalled() + expect(vi.getTimerCount()).toBe(0) + expect(postMessageToWebview).not.toHaveBeenCalled() + }) + + test("re-checks the gate at expiry and skips condensing when disabled meanwhile", async () => { + const { task, condense, getState, postMessageToWebview } = buildTask() + + await task["maybeStartIdleCondenseTimer"]() + getState.mockResolvedValue(baseState({ idleCondenseContext: false })) + await vi.advanceTimersByTimeAsync(30_000) + + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + }) + + test("a zero idle wait fires immediately but never spins a second condense", async () => { + const { task, condense } = buildTask({ state: baseState({ idleCondenseTimeInSeconds: 0 }) }) + condense.mockResolvedValue({ condensed: true, newContextTokens: 600, prevContextTokens: 600 }) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(0) + + expect(condense).toHaveBeenCalledTimes(1) + // No re-arm at all after a condense, so a zero-wait setting cannot spin. + await vi.advanceTimersByTimeAsync(60_000) + expect(condense).toHaveBeenCalledTimes(1) + expect(vi.getTimerCount()).toBe(0) + }) + + test("a condense that did not shrink the context does not re-arm", async () => { + const { task, condense, postMessageToWebview } = buildTask() + condense.mockResolvedValue({ condensed: false, prevContextTokens: 600, error: "summarize failed" }) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + + expect(condense).toHaveBeenCalledTimes(1) + expect(vi.getTimerCount()).toBe(0) + // The cue still opens and closes even when the condense failed. + expect(postedCueTypes(postMessageToWebview)).toEqual([ + "condenseTaskContextStarted", + "condenseTaskContextResponse", + ]) + }) + + test("a condense that throws still closes the in-progress cue", async () => { + const { task, condense, postMessageToWebview } = buildTask() + condense.mockRejectedValue(new Error("summarize exploded")) + const consoleError = vi.spyOn(console, "error").mockImplementation(() => {}) + + try { + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + + expect(condense).toHaveBeenCalledTimes(1) + expect(postedCueTypes(postMessageToWebview)).toEqual([ + "condenseTaskContextStarted", + "condenseTaskContextResponse", + ]) + expect(consoleError).toHaveBeenCalled() + } finally { + consoleError.mockRestore() + } + }) + + test("an in-flight condense blocks a second expiry pass", async () => { + const { task, condense, postMessageToWebview } = buildTask() + let release: (result: CondenseStubResult) => void = () => {} + condense.mockImplementation( + () => + new Promise((resolve) => { + release = resolve + }), + ) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + expect(task["idleCondenseInFlight"]).toBe(true) + + // A manual expiry attempt while the condense is still running must bail. + await task["onIdleCondenseTimerFired"]() + expect(condense).toHaveBeenCalledTimes(1) + // Only the first pass has opened the cue so far. + expect(postedCueTypes(postMessageToWebview)).toEqual(["condenseTaskContextStarted"]) + + release({ condensed: true, newContextTokens: 100, prevContextTokens: 600 }) + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseInFlight"]).toBe(false) + expect(postedCueTypes(postMessageToWebview)).toEqual([ + "condenseTaskContextStarted", + "condenseTaskContextResponse", + ]) + }) +}) + +describe("Task idle condensing — last-action-was-a-condense suppression", () => { + // Uses the real condenseContextWithLease (the harness stub replaces it) by + // restoring the prototype method on the instance and doubling the lease's + // two collaborators. + function buildLeaseTask(condensed: boolean) { + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + const endApiWork = vi.fn() + task["beginApiWork"] = vi.fn(() => endApiWork) + task["condenseContextWithActiveApi"] = vi.fn(async () => ({ + condensed, + newContextTokens: condensed ? 100 : undefined, + prevContextTokens: 600, + })) + return { task, endApiWork } + } + + test("a successful lease condense marks the condense as the last action", async () => { + const { task, endApiWork } = buildLeaseTask(true) + + await task["condenseContextWithLease"]() + + expect(task["lastActionWasCondense"]).toBe(true) + expect(endApiWork).toHaveBeenCalledTimes(1) + }) + + test("a failed lease condense does not mark the last action", async () => { + const { task } = buildLeaseTask(false) + + await task["condenseContextWithLease"]() + + expect(task["lastActionWasCondense"]).toBe(false) + }) + + test("reporting a condense summary marks the condense as the last action", async () => { + const { task } = buildTask() + const say = vi.fn(async (): Promise => {}) + task["say"] = say + const result: ContextManagementResult = { + messages: [], + summary: "a summary", + cost: 0, + newContextTokens: 100, + prevContextTokens: 600, + condenseId: "condense-1", + } + + await task["reportContextManagementResult"](result) + + expect(task["lastActionWasCondense"]).toBe(true) + }) + + test("reporting sliding-window truncation does not mark the last action", async () => { + const { task } = buildTask() + const say = vi.fn(async (): Promise => {}) + task["say"] = say + const result: ContextManagementResult = { + messages: [], + summary: "", + cost: 0, + prevContextTokens: 600, + truncationId: "truncation-1", + } + + await task["reportContextManagementResult"](result) + + expect(task["lastActionWasCondense"]).toBe(false) + }) + + test("a successful expiry condense suppresses arming until a prompt clears the flag", async () => { + vi.useFakeTimers() + try { + const { task, condense } = buildTask() + // The harness stubs the lease, so mirror the flag the real lease sets. + condense.mockImplementation(async () => { + task["lastActionWasCondense"] = true + return { condensed: true, newContextTokens: 600, prevContextTokens: 600 } + }) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + expect(vi.getTimerCount()).toBe(0) + + // Idle again after the condense: the gate stays closed. + await task["maybeStartIdleCondenseTimer"]() + expect(vi.getTimerCount()).toBe(0) + + // The user sends a prompt: idle condensing becomes eligible again. + task["checkpointSave"] = vi.fn(async () => {}) + task.handleWebviewAskResponse("messageResponse", "new prompt") + await task["maybeStartIdleCondenseTimer"]() + expect(vi.getTimerCount()).toBe(1) + } finally { + vi.useRealTimers() + } + }) +}) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 8fff156425..71dd1b3ee2 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -3123,6 +3123,9 @@ export class ClineProvider allowedMaxCost, autoCondenseContext, autoCondenseContextPercent, + idleCondenseContext, + idleCondenseContextPercent, + idleCondenseTimeInSeconds, soundEnabled, ttsEnabled, ttsSpeed, @@ -3178,6 +3181,8 @@ export class ClineProvider codebaseIndexConfig, codebaseIndexModels, profileThresholds, + profileIdleThresholds, + profileIdleCondenseTimes, alwaysAllowFollowupQuestions, followupAutoApproveTimeoutMs, includeDiagnosticMessages, @@ -3286,6 +3291,9 @@ export class ClineProvider allowedMaxCost, autoCondenseContext: autoCondenseContext ?? true, autoCondenseContextPercent: autoCondenseContextPercent ?? 100, + idleCondenseContext: idleCondenseContext ?? false, + idleCondenseContextPercent: idleCondenseContextPercent ?? 50, + idleCondenseTimeInSeconds: idleCondenseTimeInSeconds ?? 180, uriScheme: vscode.env.uriScheme, currentTaskId: currentTask?.taskId, currentTaskItem: currentTask?.taskId ? this.taskHistoryStore.get(currentTask.taskId) : undefined, @@ -3380,6 +3388,8 @@ export class ClineProvider // Phase 1 cloud removal: do not let Cloud-auth MDM enforcement force login-only UI flows. mdmCompliant: undefined, profileThresholds: profileThresholds ?? {}, + profileIdleThresholds: profileIdleThresholds ?? {}, + profileIdleCondenseTimes: profileIdleCondenseTimes ?? {}, cloudApiUrl: getRooCodeApiUrl(), hasOpenedModeSelector: this.getGlobalState("hasOpenedModeSelector") ?? false, lockApiConfigAcrossModes: lockApiConfigAcrossModes ?? false, @@ -3536,6 +3546,9 @@ export class ClineProvider allowedMaxCost: stateValues.allowedMaxCost, autoCondenseContext: stateValues.autoCondenseContext ?? true, autoCondenseContextPercent: stateValues.autoCondenseContextPercent ?? 100, + idleCondenseContext: stateValues.idleCondenseContext ?? false, + idleCondenseContextPercent: stateValues.idleCondenseContextPercent ?? 50, + idleCondenseTimeInSeconds: stateValues.idleCondenseTimeInSeconds ?? 180, taskHistory: includeTaskHistory ? this.taskHistoryStore.getAll() : [], allowedCommands: stateValues.allowedCommands, deniedCommands: stateValues.deniedCommands, @@ -3616,6 +3629,8 @@ export class ClineProvider stateValues.codebaseIndexConfig?.codebaseIndexOpenRouterSpecificProvider, }, profileThresholds: stateValues.profileThresholds ?? {}, + profileIdleThresholds: stateValues.profileIdleThresholds ?? {}, + profileIdleCondenseTimes: stateValues.profileIdleCondenseTimes ?? {}, lockApiConfigAcrossModes: this.context.workspaceState.get("lockApiConfigAcrossModes", false), includeDiagnosticMessages: stateValues.includeDiagnosticMessages ?? true, maxDiagnosticMessages: stateValues.maxDiagnosticMessages ?? 50, diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 97a25a7038..49607cf3d7 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -3199,6 +3199,11 @@ describe("ClineProvider", () => { organizationAllowList: ORGANIZATION_ALLOW_ALL, autoCondenseContext: true, autoCondenseContextPercent: 100, + idleCondenseContext: false, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, + profileIdleThresholds: {}, + profileIdleCondenseTimes: {}, cloudIsAuthenticated: false, sharingEnabled: false, publicSharingEnabled: false, @@ -4501,6 +4506,183 @@ describe("ClineProvider", () => { expect(mockPostMessage).toHaveBeenCalled() }) + describe("idle condensing settings", () => { + const getMessageHandler = () => { + const onDidReceive = mockWebviewView.webview.onDidReceiveMessage as ReturnType + return onDidReceive.mock.calls[0][0] as (message: WebviewMessage) => Promise + } + + test("getState defaults idle condensing to disabled with 50% threshold and 180s idle time", async () => { + const idleKeys = [ + "idleCondenseContext", + "idleCondenseContextPercent", + "idleCondenseTimeInSeconds", + "profileIdleThresholds", + "profileIdleCondenseTimes", + ] + ;(mockContext.globalState.get as ReturnType).mockImplementation((key: string) => + idleKeys.includes(key) ? undefined : null, + ) + + const state = await provider.getState() + + expect(state.idleCondenseContext).toBe(false) + expect(state.idleCondenseContextPercent).toBe(50) + expect(state.idleCondenseTimeInSeconds).toBe(180) + expect(state.profileIdleThresholds).toEqual({}) + expect(state.profileIdleCondenseTimes).toEqual({}) + }) + + test("getState returns saved idle condensing values", async () => { + await provider.contextProxy.setValue("idleCondenseContext", true) + await provider.contextProxy.setValue("idleCondenseContextPercent", 40) + await provider.contextProxy.setValue("idleCondenseTimeInSeconds", 60) + await provider.contextProxy.setValue("profileIdleThresholds", { "model-a": 30 }) + await provider.contextProxy.setValue("profileIdleCondenseTimes", { "model-a": 90 }) + + const state = await provider.getState() + + expect(state.idleCondenseContext).toBe(true) + expect(state.idleCondenseContextPercent).toBe(40) + expect(state.idleCondenseTimeInSeconds).toBe(60) + expect(state.profileIdleThresholds).toEqual({ "model-a": 30 }) + expect(state.profileIdleCondenseTimes).toEqual({ "model-a": 90 }) + }) + + test("getStateToPostToWebview defaults idle condensing fields", async () => { + await provider.resolveWebviewView(mockWebviewView) + ;(mockContext.globalState.get as ReturnType).mockImplementation(() => undefined) + + const state = await provider.getStateToPostToWebview() + + expect(state.idleCondenseContext).toBe(false) + expect(state.idleCondenseContextPercent).toBe(50) + expect(state.idleCondenseTimeInSeconds).toBe(180) + expect(state.profileIdleThresholds).toEqual({}) + expect(state.profileIdleCondenseTimes).toEqual({}) + }) + + test("getStateToPostToWebview returns saved idle condensing values", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await provider.contextProxy.setValue("idleCondenseContext", true) + await provider.contextProxy.setValue("idleCondenseContextPercent", 42) + await provider.contextProxy.setValue("idleCondenseTimeInSeconds", 15) + await provider.contextProxy.setValue("profileIdleThresholds", { "model-a": 25 }) + await provider.contextProxy.setValue("profileIdleCondenseTimes", { "model-a": -1 }) + + const state = await provider.getStateToPostToWebview() + + expect(state.idleCondenseContext).toBe(true) + expect(state.idleCondenseContextPercent).toBe(42) + expect(state.idleCondenseTimeInSeconds).toBe(15) + expect(state.profileIdleThresholds).toEqual({ "model-a": 25 }) + expect(state.profileIdleCondenseTimes).toEqual({ "model-a": -1 }) + }) + + test("clamps an idleCondenseContextPercent message to the maximum threshold", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseContextPercent: 150 } }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 100) + }) + + test("clamps an idleCondenseContextPercent message to the minimum threshold", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseContextPercent: 1 } }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 5) + }) + + test("clamps an idleCondenseContextPercent message to the main threshold saved in the same message", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { idleCondenseContextPercent: 90, autoCondenseContextPercent: 80 }, + }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 80) + }) + + test("keeps a valid idleCondenseContextPercent message unchanged", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseContextPercent: 40 } }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 40) + }) + + test("clamps profileIdleThresholds entries but keeps -1 inheritance", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { + profileIdleThresholds: { inherited: -1, capped: 90, floored: 1 }, + autoCondenseContextPercent: 80, + }, + }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { + inherited: -1, + capped: 80, + floored: 5, + }) + }) + + test("clamps a negative idleCondenseTimeInSeconds message to zero", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseTimeInSeconds: -5 } }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 0) + }) + + test("rounds a fractional idleCondenseTimeInSeconds message", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseTimeInSeconds: 2.6 } }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 3) + }) + + test("clamps profileIdleCondenseTimes entries but keeps -1 inheritance", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { profileIdleCondenseTimes: { inherited: -1, zeroed: -3.4, rounded: 10.4 } }, + }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleCondenseTimes", { + inherited: -1, + zeroed: 0, + rounded: 10, + }) + }) + + test("idleCondenseReset message restarts the active task idle timer", async () => { + await provider.resolveWebviewView(mockWebviewView) + const resetIdleCondenseTimer = vi.fn() + // Double only provides the member the idleCondenseReset handler touches. + vi.spyOn(provider, "getCurrentTask").mockReturnValue({ resetIdleCondenseTimer } as unknown as Task) + + await getMessageHandler()({ type: "idleCondenseReset" }) + + expect(resetIdleCondenseTimer).toHaveBeenCalledTimes(1) + }) + + test("idleCondenseReset message is a no-op without an active task", async () => { + await provider.resolveWebviewView(mockWebviewView) + vi.spyOn(provider, "getCurrentTask").mockReturnValue(undefined) + + await expect(getMessageHandler()({ type: "idleCondenseReset" })).resolves.toBeUndefined() + }) + }) + describe("auto-close settings are included in posted state", () => { it("getStateToPostToWebview returns saved autoCloseZooOpenedFiles value", async () => { await provider.resolveWebviewView(mockWebviewView) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 4adb29264b..6d15b8c07e 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -102,9 +102,20 @@ import { generateSystemPrompt } from "./generateSystemPrompt" import { resolveDefaultSaveUri, saveLastExportPath } from "../../utils/export" import { getCommand } from "../../utils/commands" import { getLMStudioModels } from "../../api/providers/fetchers/lmstudio" +import { MIN_CONDENSE_THRESHOLD, MAX_CONDENSE_THRESHOLD } from "../condense" const ALLOWED_VSCODE_SETTINGS = new Set(["terminal.integrated.inheritEnv"]) +/** + * Clamp an idle-condense trigger threshold: within the shared condense + * threshold bounds and never above the main auto-condense threshold (the idle + * condense is a strictly-earlier trigger of the same condense). + */ +function clampIdleCondensePercent(value: number, mainPercent: number): number { + const upper = Math.min(mainPercent, MAX_CONDENSE_THRESHOLD) + return Math.min(Math.max(value, MIN_CONDENSE_THRESHOLD), upper) +} + // Serializes handling of "telemetrySetting" messages. Each invocation reads the previous // setting, awaits a persistence write, then applies the new live telemetry state -- with no // serialization, two rapid messages (e.g. a fast toggle) can interleave across those awaits: @@ -887,6 +898,38 @@ export const webviewMessageHandler = async ( if (!value) { continue } + } else if (key === "idleCondenseContextPercent") { + if (typeof value === "number") { + const mainPercent = + (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? + (getGlobalState("autoCondenseContextPercent") ?? 100) + newValue = clampIdleCondensePercent(value, mainPercent) + } + } else if (key === "profileIdleThresholds") { + if (value && typeof value === "object") { + const mainPercent = + (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? + (getGlobalState("autoCondenseContextPercent") ?? 100) + newValue = Object.fromEntries( + Object.entries(value as Record).map(([id, percent]) => [ + id, + percent === -1 ? -1 : clampIdleCondensePercent(percent, mainPercent), + ]), + ) + } + } else if (key === "idleCondenseTimeInSeconds") { + if (typeof value === "number") { + newValue = Math.max(0, Math.round(value)) + } + } else if (key === "profileIdleCondenseTimes") { + if (value && typeof value === "object") { + newValue = Object.fromEntries( + Object.entries(value as Record).map(([id, seconds]) => [ + id, + seconds === -1 ? -1 : Math.max(0, Math.round(seconds)), + ]), + ) + } } await provider.contextProxy.setValue(key as keyof RooCodeSettings, newValue) @@ -919,6 +962,12 @@ export const webviewMessageHandler = async ( break } + case "idleCondenseReset": + // The user typed in the prompt area: restart the idle-condense + // countdown for the active task (no-op unless a timer is armed). + provider.getCurrentTask()?.resetIdleCondenseTimer() + break + case "terminalOperation": if (message.terminalOperation) { await provider.getCurrentTask()?.handleTerminalOperation(message.terminalOperation) diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 8ba0df7ab2..5e1cd21837 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -610,6 +610,10 @@ export const ChatTextArea = forwardRef( // Ref to store the search timeout. const searchTimeoutRef = useRef(null) + // Throttles the idle-condense reset signal so typing doesn't spam the + // extension host; the host ignores the signal unless a timer is armed. + const lastIdleCondenseResetRef = useRef(0) + const handleInputChange = useCallback( (e: React.ChangeEvent) => { const newValue = e.target.value @@ -618,6 +622,13 @@ export const ChatTextArea = forwardRef( // Reset history navigation when user types resetOnInputChange() + // Typing in the prompt area resets the idle-condense timer. + const now = Date.now() + if (now - lastIdleCondenseResetRef.current >= 1000) { + lastIdleCondenseResetRef.current = now + vscode.postMessage({ type: "idleCondenseReset" }) + } + const newCursorPosition = e.target.selectionStart setCursorPosition(newCursorPosition) diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 820e30849d..e69ebcf030 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -654,11 +654,14 @@ const ChatViewComponent: React.ForwardRefRenderFunction 0 || clineAskRef.current === "command_output" ) { @@ -720,6 +723,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction { expect(defaultProps.setInputValue).toHaveBeenCalledWith("abc/some/path def") }) }) + + describe("idle condense reset signal", () => { + const getTextarea = (container: HTMLElement) => { + const textarea = container.querySelector("textarea") + if (!textarea) { + throw new Error("expected the chat textarea to be rendered") + } + return textarea + } + + const idleSignals = () => + mockPostMessage.mock.calls.filter(([message]) => message?.type === "idleCondenseReset") + + it("posts idleCondenseReset when the user types", () => { + const { container } = render() + const textarea = getTextarea(container) + + fireEvent.change(textarea, { target: { value: "h", selectionStart: 1 } }) + + expect(idleSignals()).toHaveLength(1) + }) + + it("throttles repeated typing to one signal per second", () => { + let now = 10_000 + const nowSpy = vi.spyOn(Date, "now").mockImplementation(() => now) + try { + const { container } = render() + const textarea = getTextarea(container) + + fireEvent.change(textarea, { target: { value: "h", selectionStart: 1 } }) + expect(idleSignals()).toHaveLength(1) + + // Typing within the throttle window does not re-signal. + now += 500 + fireEvent.change(textarea, { target: { value: "he", selectionStart: 2 } }) + expect(idleSignals()).toHaveLength(1) + + // Once the throttle window elapses, the next keystroke signals again. + now += 600 + fireEvent.change(textarea, { target: { value: "hel", selectionStart: 3 } }) + expect(idleSignals()).toHaveLength(2) + } finally { + nowSpy.mockRestore() + } + }) + }) }) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index c3af315d99..64ae3e5f02 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -28,6 +28,9 @@ import { SearchableSetting } from "./SearchableSetting" type ContextManagementSettingsProps = HTMLAttributes & { autoCondenseContext: boolean autoCondenseContextPercent: number + idleCondenseContext: boolean + idleCondenseContextPercent: number + idleCondenseTimeInSeconds: number listApiConfigMeta: any[] maxOpenTabsContext: number maxWorkspaceFiles: number @@ -36,6 +39,8 @@ type ContextManagementSettingsProps = HTMLAttributes & { maxImageFileSize?: number maxTotalImageSize?: number profileThresholds?: Record + profileIdleThresholds?: Record + profileIdleCondenseTimes?: Record includeDiagnosticMessages?: boolean maxDiagnosticMessages?: number writeDelayMs: number @@ -48,6 +53,11 @@ type ContextManagementSettingsProps = HTMLAttributes & { setCachedStateField: SetCachedStateField< | "autoCondenseContext" | "autoCondenseContextPercent" + | "idleCondenseContext" + | "idleCondenseContextPercent" + | "idleCondenseTimeInSeconds" + | "profileIdleThresholds" + | "profileIdleCondenseTimes" | "maxOpenTabsContext" | "maxWorkspaceFiles" | "showRooIgnoredFiles" @@ -68,6 +78,9 @@ type ContextManagementSettingsProps = HTMLAttributes & { export const ContextManagementSettings = ({ autoCondenseContext, autoCondenseContextPercent, + idleCondenseContext, + idleCondenseContextPercent, + idleCondenseTimeInSeconds, listApiConfigMeta, maxOpenTabsContext, maxWorkspaceFiles, @@ -77,6 +90,8 @@ export const ContextManagementSettings = ({ maxImageFileSize, maxTotalImageSize, profileThresholds = {}, + profileIdleThresholds = {}, + profileIdleCondenseTimes = {}, includeDiagnosticMessages, maxDiagnosticMessages, writeDelayMs, @@ -91,6 +106,7 @@ export const ContextManagementSettings = ({ }: ContextManagementSettingsProps) => { const { t } = useAppTranslation() const [selectedThresholdProfile, setSelectedThresholdProfile] = React.useState("default") + const [selectedIdleProfile, setSelectedIdleProfile] = React.useState("default") // Helper function to get the CONDENSE prompt value const getCondensePromptValue = (): string => { @@ -140,6 +156,80 @@ export const ContextManagementSettings = ({ setCachedStateField("profileThresholds", newThresholds) } } + + // Effective main condense threshold for the profile currently selected in + // the idle-threshold UI: the idle threshold may never exceed it. + const getMainThresholdForIdleProfile = () => { + if (selectedIdleProfile === "default") { + return autoCondenseContextPercent + } + const profileThreshold = profileThresholds[selectedIdleProfile] + if (profileThreshold === undefined || profileThreshold === -1) { + return autoCondenseContextPercent + } + return profileThreshold + } + + // Helper function to get the current idle threshold value based on selected profile + const getCurrentIdleThresholdValue = () => { + if (selectedIdleProfile === "default") { + return idleCondenseContextPercent + } + const profileThreshold = profileIdleThresholds[selectedIdleProfile] + if (profileThreshold === undefined || profileThreshold === -1) { + return idleCondenseContextPercent + } + return profileThreshold + } + + // Helper function to handle idle threshold changes (clamped to the main threshold) + const handleIdleThresholdChange = (value: number) => { + const clamped = Math.min(value, getMainThresholdForIdleProfile()) + if (selectedIdleProfile === "default") { + setCachedStateField("idleCondenseContextPercent", clamped) + } else { + setCachedStateField("profileIdleThresholds", { + ...profileIdleThresholds, + [selectedIdleProfile]: clamped, + }) + } + } + + // Helper function to get the current idle time value based on selected profile + const getCurrentIdleTimeValue = () => { + if (selectedIdleProfile === "default") { + return idleCondenseTimeInSeconds + } + const profileSeconds = profileIdleCondenseTimes[selectedIdleProfile] + if (profileSeconds === undefined || profileSeconds === -1) { + return idleCondenseTimeInSeconds + } + return profileSeconds + } + + // Helper function to handle idle time changes + const handleIdleTimeChange = (value: number) => { + const clamped = Math.max(0, Math.round(value || 0)) + if (selectedIdleProfile === "default") { + setCachedStateField("idleCondenseTimeInSeconds", clamped) + } else { + setCachedStateField("profileIdleCondenseTimes", { + ...profileIdleCondenseTimes, + [selectedIdleProfile]: clamped, + }) + } + } + + // Reset the selected profile's idle overrides back to inheriting the global values. + const handleIdleProfileUseGlobal = () => { + if (selectedIdleProfile === "default") { + return + } + setCachedStateField("profileIdleThresholds", { ...profileIdleThresholds, [selectedIdleProfile]: -1 }) + setCachedStateField("profileIdleCondenseTimes", { ...profileIdleCondenseTimes, [selectedIdleProfile]: -1 }) + } + + const idleThresholdMax = Math.max(10, Math.min(getMainThresholdForIdleProfile(), 100)) return (
@@ -584,6 +674,114 @@ export const ContextManagementSettings = ({
)} + + {/* Idle Condensing */} + + setCachedStateField("idleCondenseContext", e.target.checked)} + data-testid="idle-condense-context-checkbox"> + {t("settings:contextManagement.idleCondensing.name")} + +
+ {t("settings:contextManagement.idleCondensing.description")} +
+
+ {idleCondenseContext && ( +
+
+ +
+ + {/* Idle Threshold Slider */} +
+
+ handleIdleThresholdChange(value)} + data-testid="idle-condense-threshold-slider" + /> + {getCurrentIdleThresholdValue()}% +
+
+ {selectedIdleProfile === "default" + ? t("settings:contextManagement.idleCondensing.thresholdDescription", { + threshold: idleCondenseContextPercent, + }) + : t("settings:contextManagement.idleCondensing.thresholdProfileDescription")} +
+
+ + {/* Idle Time Input */} +
+
+ + {t("settings:contextManagement.idleCondensing.idleTime.label")} + + handleIdleTimeChange(parseInt((e.target as HTMLInputElement).value, 10))} + className="w-24" + data-testid="idle-condense-time-input" + /> + {t("settings:contextManagement.idleCondensing.idleTime.seconds")} +
+
+ {t("settings:contextManagement.idleCondensing.idleTime.description")} +
+
+ + {selectedIdleProfile !== "default" && ( +
+ +
+ )} +
+ )} ) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 26955663ee..22d837db9b 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -188,6 +188,9 @@ const SettingsView = forwardRef(({ onDone, t allowedWriteFiles, autoCondenseContext, autoCondenseContextPercent, + idleCondenseContext, + idleCondenseContextPercent, + idleCondenseTimeInSeconds, enableCheckpoints, checkpointTimeout, experiments, @@ -218,6 +221,8 @@ const SettingsView = forwardRef(({ onDone, t maxTotalImageSize, customSupportPrompts, profileThresholds, + profileIdleThresholds, + profileIdleCondenseTimes, alwaysAllowFollowupQuestions, followupAutoApproveTimeoutMs, includeDiagnosticMessages, @@ -438,6 +443,9 @@ const SettingsView = forwardRef(({ onDone, t allowedMaxCost: allowedMaxCost ?? null, autoCondenseContext, autoCondenseContextPercent, + idleCondenseContext, + idleCondenseContextPercent, + idleCondenseTimeInSeconds, soundEnabled: soundEnabled ?? true, soundVolume: soundVolume ?? 0.5, ttsEnabled, @@ -485,6 +493,8 @@ const SettingsView = forwardRef(({ onDone, t autoCloseZooOpenedFilesAfterUserEdited ?? DEFAULT_AUTO_CLOSE_ZOO_OPENED_FILES_AFTER_USER_EDITED, autoCloseZooOpenedNewFiles: autoCloseZooOpenedNewFiles ?? DEFAULT_AUTO_CLOSE_ZOO_OPENED_NEW_FILES, profileThresholds, + profileIdleThresholds, + profileIdleCondenseTimes, imageGenerationProvider, openRouterImageApiKey, openRouterImageGenerationSelectedModel, @@ -931,6 +941,9 @@ const SettingsView = forwardRef(({ onDone, t (({ onDone, t maxImageFileSize={maxImageFileSize} maxTotalImageSize={maxTotalImageSize} profileThresholds={profileThresholds} + profileIdleThresholds={profileIdleThresholds} + profileIdleCondenseTimes={profileIdleCondenseTimes} includeDiagnosticMessages={includeDiagnosticMessages} maxDiagnosticMessages={maxDiagnosticMessages} writeDelayMs={writeDelayMs} diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index 10d5d0fe4f..59e7f12eb7 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -97,11 +97,16 @@ describe("ContextManagementSettings", () => { const defaultProps = { autoCondenseContext: false, autoCondenseContextPercent: 80, + idleCondenseContext: false, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, listApiConfigMeta: [], maxOpenTabsContext: 20, maxWorkspaceFiles: 200, showRooIgnoredFiles: false, profileThresholds: {}, + profileIdleThresholds: {}, + profileIdleCondenseTimes: {}, includeDiagnosticMessages: true, maxDiagnosticMessages: 50, writeDelayMs: 1000, @@ -529,4 +534,160 @@ describe("ContextManagementSettings", () => { }) }) }) + + describe("Idle Condensing", () => { + const idleProps = { + ...defaultProps, + autoCondenseContext: true, + autoCondenseContextPercent: 100, + idleCondenseContext: true, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, + listApiConfigMeta: [ + { id: "config-1", name: "Config 1" }, + { id: "config-2", name: "Config 2" }, + ], + } + + const selectIdleProfile = (profileId: string) => { + const idleSelect = screen.getByTestId("idle-threshold-profile-select") + const trigger = idleSelect.querySelector('button[data-testid="threshold-profile-change"]') + if (!trigger) { + throw new Error("idle profile trigger not found") + } + trigger.setAttribute("data-next-value", profileId) + fireEvent.click(trigger) + } + + it("does not render idle controls when idle condensing is disabled", () => { + render() + + expect(screen.queryByTestId("idle-condense-threshold-slider")).not.toBeInTheDocument() + expect(screen.queryByTestId("idle-condense-time-input")).not.toBeInTheDocument() + }) + + it("toggles idle condensing setting", () => { + const setCachedStateField = vi.fn() + render() + + const checkbox = screen.getByTestId("idle-condense-context-checkbox") + expect(checkbox.querySelector('input[type="checkbox"]')).toBeChecked() + + fireEvent.click(checkbox) + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContext", false) + }) + + it("renders idle threshold slider and time input with current values", () => { + render() + + expect(screen.getByTestId("idle-threshold-profile-select")).toBeInTheDocument() + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("50") + expect(screen.getByTestId("idle-condense-time-input")).toHaveValue(180) + }) + + it("updates the global idle threshold", () => { + const setCachedStateField = vi.fn() + render() + + const slider = screen.getByTestId("idle-condense-threshold-slider") + fireEvent.change(slider, { target: { value: "70" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContextPercent", 70) + }) + + it("clamps the idle threshold to the main condense threshold", () => { + const setCachedStateField = vi.fn() + render( + , + ) + + const slider = screen.getByTestId("idle-condense-threshold-slider") + // The slider max follows the main threshold and the displayed value is clamped to it. + expect(slider).toHaveAttribute("max", "40") + expect(slider).toHaveValue("40") + + // Nudging past the main threshold still writes the clamped value. + slider.focus() + fireEvent.keyDown(slider, { key: "ArrowRight" }) + + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContextPercent", 40) + }) + + it("updates the global idle time", () => { + const setCachedStateField = vi.fn() + render() + + const input = screen.getByTestId("idle-condense-time-input") + fireEvent.change(input, { target: { value: "60" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 60) + }) + + it("clamps a negative idle time to zero", () => { + const setCachedStateField = vi.fn() + render() + + const input = screen.getByTestId("idle-condense-time-input") + fireEvent.change(input, { target: { value: "-5" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 0) + }) + + it("writes profile-scoped idle threshold overrides", () => { + const setCachedStateField = vi.fn() + render() + + selectIdleProfile("config-1") + + const slider = screen.getByTestId("idle-condense-threshold-slider") + fireEvent.change(slider, { target: { value: "55" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { "config-1": 55 }) + expect(setCachedStateField).not.toHaveBeenCalledWith("idleCondenseContextPercent", expect.anything()) + }) + + it("writes profile-scoped idle time overrides", () => { + const setCachedStateField = vi.fn() + render() + + selectIdleProfile("config-1") + + const input = screen.getByTestId("idle-condense-time-input") + fireEvent.change(input, { target: { value: "90" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleCondenseTimes", { "config-1": 90 }) + expect(setCachedStateField).not.toHaveBeenCalledWith("idleCondenseTimeInSeconds", expect.anything()) + }) + + it("resets profile idle overrides to global via the use-global button", () => { + const setCachedStateField = vi.fn() + render() + + selectIdleProfile("config-1") + + const button = screen.getByTestId("idle-condense-use-global-button") + fireEvent.click(button) + + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { "config-1": -1 }) + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleCondenseTimes", { "config-1": -1 }) + }) + + it("buffers profile idle changes without persisting before Save", () => { + const setCachedStateField = vi.fn() + render() + + selectIdleProfile("config-1") + + const slider = screen.getByTestId("idle-condense-threshold-slider") + slider.focus() + fireEvent.keyDown(slider, { key: "ArrowRight" }) + + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { "config-1": 51 }) + expect(vscode.postMessage).not.toHaveBeenCalledWith(expect.objectContaining({ type: "updateSettings" })) + }) + }) }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 770f051dc5..97c9d55ebe 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -72,6 +72,10 @@ export interface ExtensionStateContextType extends ExtensionState { marketplaceInstalledMetadata?: MarketplaceInstalledMetadata profileThresholds: Record setProfileThresholds: (value: Record) => void + profileIdleThresholds: Record + setProfileIdleThresholds: (value: Record) => void + profileIdleCondenseTimes: Record + setProfileIdleCondenseTimes: (value: Record) => void setApiConfiguration: (config: ProviderSettings) => void setCustomInstructions: (value?: string) => void setAlwaysAllowReadOnly: (value: boolean) => void @@ -149,6 +153,12 @@ export interface ExtensionStateContextType extends ExtensionState { setAutoCondenseContext: (value: boolean) => void autoCondenseContextPercent: number setAutoCondenseContextPercent: (value: number) => void + idleCondenseContext: boolean + setIdleCondenseContext: (value: boolean) => void + idleCondenseContextPercent: number + setIdleCondenseContextPercent: (value: number) => void + idleCondenseTimeInSeconds: number + setIdleCondenseTimeInSeconds: (value: number) => void routerModels?: RouterModels includeDiagnosticMessages?: boolean setIncludeDiagnosticMessages: (value: boolean) => void @@ -303,6 +313,11 @@ export const createInitialExtensionState = (): ExtensionState => ({ autoCondenseContext: true, autoCondenseContextPercent: 100, profileThresholds: {}, + idleCondenseContext: false, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, + profileIdleThresholds: {}, + profileIdleCondenseTimes: {}, codebaseIndexConfig: { codebaseIndexEnabled: true, codebaseIndexQdrantUrl: "http://localhost:6333", @@ -673,6 +688,11 @@ export const ExtensionStateContextProvider: React.FC<{ marketplaceItems, marketplaceInstalledMetadata, profileThresholds: state.profileThresholds ?? {}, + profileIdleThresholds: state.profileIdleThresholds ?? {}, + profileIdleCondenseTimes: state.profileIdleCondenseTimes ?? {}, + idleCondenseContext: state.idleCondenseContext ?? false, + idleCondenseContextPercent: state.idleCondenseContextPercent ?? 50, + idleCondenseTimeInSeconds: state.idleCondenseTimeInSeconds ?? 180, alwaysAllowFollowupQuestions, followupAutoApproveTimeoutMs, taskSyncEnabled: state.taskSyncEnabled, @@ -759,6 +779,14 @@ export const ExtensionStateContextProvider: React.FC<{ setAutoCondenseContextPercent: (value) => setState((prevState) => ({ ...prevState, autoCondenseContextPercent: value })), setProfileThresholds: (value) => setState((prevState) => ({ ...prevState, profileThresholds: value })), + setProfileIdleThresholds: (value) => setState((prevState) => ({ ...prevState, profileIdleThresholds: value })), + setProfileIdleCondenseTimes: (value) => + setState((prevState) => ({ ...prevState, profileIdleCondenseTimes: value })), + setIdleCondenseContext: (value) => setState((prevState) => ({ ...prevState, idleCondenseContext: value })), + setIdleCondenseContextPercent: (value) => + setState((prevState) => ({ ...prevState, idleCondenseContextPercent: value })), + setIdleCondenseTimeInSeconds: (value) => + setState((prevState) => ({ ...prevState, idleCondenseTimeInSeconds: value })), includeDiagnosticMessages: state.includeDiagnosticMessages, setIncludeDiagnosticMessages: (value) => { setState((prevState) => ({ ...prevState, includeDiagnosticMessages: value })) diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index 424255245a..d69a79309c 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -911,6 +911,9 @@ describe("mergeExtensionState", () => { organizationAllowList: { allowAll: true, providers: {} }, autoCondenseContext: true, autoCondenseContextPercent: 100, + idleCondenseContext: false, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, cloudIsAuthenticated: false, sharingEnabled: false, publicSharingEnabled: false, @@ -983,6 +986,9 @@ describe("mergeExtensionState", () => { organizationAllowList: { allowAll: true, providers: {} }, autoCondenseContext: true, autoCondenseContextPercent: 100, + idleCondenseContext: false, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 180, cloudIsAuthenticated: false, sharingEnabled: false, publicSharingEnabled: false, diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 74adb11620..c171cebcf1 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Llindar personalitzat només per a aquest perfil (substitueix el per defecte global)", "usesGlobal": "(utilitza global {{threshold}}%)" }, + "idleCondensing": { + "name": "Condensació en repòs", + "description": "Quan el model ha acabat de respondre i el context està per sobre del llindar de repòs, es condensa el context quan passa el temps de repòs. Això evita que la condensació, costosa, es produeixi enmig de la feina activa. Escriure a l'àrea de prompt reinicia el temporitzador.", + "thresholdDescription": "Quan el context arriba a aquest percentatge en repòs, s'activa el temporitzador de condensació en repòs. Ha de ser igual o inferior al llindar d'activació de condensació ({{threshold}}%).", + "thresholdProfileDescription": "Llindar de repòs personalitzat només per a aquest perfil (substitueix el per defecte global, limitat al llindar de condensació del perfil)", + "idleTime": { + "label": "Temps de repòs", + "seconds": "segons", + "description": "Quant de temps ha d'estar el model inactiu abans que s'activi la condensació. Posa'l a 0 per condensar tan aviat com el model quedi inactiu." + }, + "useGlobal": "Usa la configuració global" + }, "maxImageFileSize": { "label": "Mida màxima d'arxiu d'imatge", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 078c5c6ebf..c34ffd92b0 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Benutzerdefinierter Schwellenwert nur für dieses Profil (überschreibt globalen Standard)", "usesGlobal": "(verwendet global {{threshold}}%)" }, + "idleCondensing": { + "name": "Komprimierung im Leerlauf", + "description": "Wenn das Modell fertig geantwortet hat und der Kontext über dem Leerlauf-Schwellenwert liegt, wird der Kontext komprimiert, nachdem die Leerlaufzeit verstrichen ist. So findet die aufwendige Komprimierung nicht mitten in aktiver Arbeit statt. Wenn du in das Prompt-Feld schreibst, wird der Timer zurückgesetzt.", + "thresholdDescription": "Wenn der Kontext im Leerlauf diesen Prozentsatz erreicht, läuft der Leerlauf-Komprimierungs-Timer. Muss gleich oder niedriger als der Schwellenwert für Kontextkomprimierung ({{threshold}}%) sein.", + "thresholdProfileDescription": "Benutzerdefinierter Leerlauf-Schwellenwert nur für dieses Profil (überschreibt globalen Standard, begrenzt auf den Komprimierungsschwellenwert des Profils)", + "idleTime": { + "label": "Leerlaufzeit", + "seconds": "Sekunden", + "description": "Wie lange das Modell im Leerlauf sein muss, bevor die Komprimierung ausgelöst wird. Auf 0 setzen, um sofort zu komprimieren, wenn das Modell in den Leerlauf geht." + }, + "useGlobal": "Globale Einstellungen verwenden" + }, "maxImageFileSize": { "label": "Maximale Bilddateigröße", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 67a9f146e4..d18143b25e 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -839,6 +839,18 @@ "profileDescription": "Custom threshold for this profile only (overrides global default)", "usesGlobal": "(uses global {{threshold}}%)" }, + "idleCondensing": { + "name": "Idle condensing", + "description": "When the model has finished responding and the context is above the idle threshold, condense the context after the idle time elapses. This keeps expensive condensing from happening in the middle of active work. Typing in the prompt area resets the timer.", + "thresholdDescription": "When the context reaches this percentage while idle, the idle condensing timer runs. Must be at or below the Condensing Trigger Threshold ({{threshold}}%).", + "thresholdProfileDescription": "Custom idle threshold for this profile only (overrides global default, capped at the profile's condensing threshold)", + "idleTime": { + "label": "Idle time", + "seconds": "seconds", + "description": "How long the model must be idle before condensing is triggered. Set to 0 to condense as soon as the model goes idle." + }, + "useGlobal": "Use global settings" + }, "includeCurrentTime": { "label": "Include current time in context", "description": "When enabled, the current time and timezone information will be included in the system prompt. Disable this if models are stopping work due to time concerns." diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 81aeb1744c..4b6ab680a8 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -766,6 +766,18 @@ "profileDescription": "Umbral personalizado solo para este perfil (anula el predeterminado global)", "usesGlobal": "(usa global {{threshold}}%)" }, + "idleCondensing": { + "name": "Condensación en reposo", + "description": "Cuando el modelo ha terminado de responder y el contexto está por encima del umbral de reposo, se condensa el contexto al transcurrir el tiempo de reposo. Esto evita que la costosa condensación ocurra en medio del trabajo activo. Escribir en el área de prompt reinicia el temporizador.", + "thresholdDescription": "Cuando el contexto alcanza este porcentaje durante el reposo, se activa el temporizador de condensación en reposo. Debe ser igual o inferior al umbral de condensación de contexto ({{threshold}}%).", + "thresholdProfileDescription": "Umbral de reposo personalizado solo para este perfil (anula el predeterminado global, limitado al umbral de condensación del perfil)", + "idleTime": { + "label": "Tiempo de reposo", + "seconds": "segundos", + "description": "Cuánto tiempo debe estar el modelo inactivo antes de que se active la condensación. Establécelo en 0 para condensar en cuanto el modelo quede inactivo." + }, + "useGlobal": "Usar ajustes globales" + }, "includeCurrentTime": { "label": "Incluir hora actual en el contexto", "description": "Cuando está habilitado, la hora actual y la información de la zona horaria se incluirán en el prompt del sistema. Deshabilítelo si los modelos dejan de funcionar por problemas de tiempo." diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 555b088322..81bceec138 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -766,6 +766,18 @@ "profileDescription": "Seuil personnalisé pour ce profil uniquement (remplace le défaut global)", "usesGlobal": "(utilise global {{threshold}}%)" }, + "idleCondensing": { + "name": "Condensation en veille", + "description": "Lorsque le modèle a fini de répondre et que le contexte dépasse le seuil de veille, le contexte est condensé une fois le temps de veille écoulé. Cela évite que la condensation, coûteuse, se produise en pleine activité. Taper dans la zone de prompt réinitialise le minuteur.", + "thresholdDescription": "Lorsque le contexte atteint ce pourcentage en veille, le minuteur de condensation en veille démarre. Doit être inférieur ou égal au seuil de condensation du contexte ({{threshold}}%).", + "thresholdProfileDescription": "Seuil de veille personnalisé pour ce profil uniquement (remplace le défaut global, plafonné au seuil de condensation du profil)", + "idleTime": { + "label": "Temps de veille", + "seconds": "secondes", + "description": "Durée pendant laquelle le modèle doit rester inactif avant que la condensation soit déclenchée. Mettre 0 pour condenser dès que le modèle passe en veille." + }, + "useGlobal": "Utiliser les paramètres globaux" + }, "includeCurrentTime": { "label": "Inclure l'heure actuelle dans le contexte", "description": "Lorsque cette option est activée, l'heure actuelle et les informations de fuseau horaire seront incluses dans le prompt système. Désactivez cette option si les modèles cessent de fonctionner en raison de problèmes liés à l'heure." diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 5c33bf5ccb..ecc6c3adfa 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -756,6 +756,18 @@ "profileDescription": "केवल इस प्रोफ़ाइल के लिए कस्टम सीमा (वैश्विक डिफ़ॉल्ट को ओवरराइड करता है)", "usesGlobal": "(वैश्विक {{threshold}}% का उपयोग करता है)" }, + "idleCondensing": { + "name": "निष्क्रिय काल में संघनन", + "description": "जब मॉडल उत्तर देना समाप्त कर दे और संदर्भ निष्क्रिय सीमा से ऊपर हो, तो निष्क्रिय समय बीतने के बाद संदर्भ संघनित हो जाता है। इससे महंगा संघनन सक्रिय कार्य के बीच में नहीं होता। प्रॉम्प्ट क्षेत्र में टाइप करने से टाइमर रीसेट हो जाता है।", + "thresholdDescription": "जब निष्क्रिय अवस्था में संदर्भ इस प्रतिशत तक पहुँचता है, तो निष्क्रिय संघनन टाइमर चलता है। यह संघनन ट्रिगर सीमा ({{threshold}}%) के बराबर या उससे कम होना चाहिए।", + "thresholdProfileDescription": "केवल इस प्रोफ़ाइल के लिए कस्टम निष्क्रिय सीमा (वैश्विक डिफ़ॉल्ट को ओवरराइड करती है, प्रोफ़ाइल की संघनन सीमा तक सीमित)", + "idleTime": { + "label": "निष्क्रिय समय", + "seconds": "सेकंड", + "description": "संघनन ट्रिगर होने से पहले मॉडल को कितनी देर निष्क्रिय रहना चाहिए। जैसे ही मॉडल निष्क्रिय हो संघनन करने के लिए इसे 0 पर सेट करें।" + }, + "useGlobal": "वैश्विक सेटिंग्स उपयोग करें" + }, "maxImageFileSize": { "label": "अधिकतम छवि फ़ाइल आकार", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 62d91e4d06..5e3daabed8 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -744,6 +744,18 @@ "profileDescription": "Ambang batas kustom untuk profil ini saja (menimpa default global)", "usesGlobal": "(menggunakan global {{threshold}}%)" }, + "idleCondensing": { + "name": "Kondensasi saat idle", + "description": "Saat model selesai merespons dan konteks berada di atas ambang batas idle, konteks dikondensasi setelah waktu idle berlalu. Ini mencegah kondensasi yang mahal terjadi di tengah pekerjaan aktif. Mengetik di area prompt mengatur ulang timer.", + "thresholdDescription": "Saat konteks mencapai persentase ini selama idle, timer kondensasi idle berjalan. Harus sama atau di bawah Ambang Batas Pemicu Kondensasi ({{threshold}}%).", + "thresholdProfileDescription": "Ambang batas idle kustom hanya untuk profil ini (menimpa default global, dibatasi pada ambang kondensasi profil)", + "idleTime": { + "label": "Waktu idle", + "seconds": "detik", + "description": "Berapa lama model harus tidak aktif sebelum kondensasi dipicu. Setel ke 0 untuk mengondensasi segera setelah model menjadi idle." + }, + "useGlobal": "Gunakan pengaturan global" + }, "openTabs": { "label": "Batas konteks tab terbuka", "description": "Jumlah maksimum tab VSCode terbuka yang disertakan dalam konteks. Nilai yang lebih tinggi memberikan lebih banyak konteks tetapi meningkatkan penggunaan token." diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index eb090e3f47..112bd42163 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Soglia personalizzata solo per questo profilo (sovrascrive il predefinito globale)", "usesGlobal": "(usa globale {{threshold}}%)" }, + "idleCondensing": { + "name": "Condensazione inattiva", + "description": "Quando il modello ha finito di rispondere e il contesto è sopra la soglia di inattività, il contesto viene condensato allo scadere del tempo di inattività. Questo evita che la condensazione, costosa, avvenga nel mezzo del lavoro attivo. Digitare nell'area del prompt reimposta il timer.", + "thresholdDescription": "Quando il contesto raggiunge questa percentuale durante l'inattività, il timer di condensazione inattiva parte. Deve essere uguale o inferiore alla soglia di attivazione condensazione ({{threshold}}%).", + "thresholdProfileDescription": "Soglia di inattività personalizzata solo per questo profilo (sovrascrive il predefinito globale, limitata alla soglia di condensazione del profilo)", + "idleTime": { + "label": "Tempo di inattività", + "seconds": "secondi", + "description": "Quanto a lungo il modello deve restare inattivo prima che la condensazione venga attivata. Imposta a 0 per condensare non appena il modello diventa inattivo." + }, + "useGlobal": "Usa le impostazioni globali" + }, "maxImageFileSize": { "label": "Dimensione massima file immagine", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index a7939d2e3d..6164064f39 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -756,6 +756,18 @@ "profileDescription": "このプロファイルのみのカスタムしきい値(グローバルデフォルトを上書き)", "usesGlobal": "(グローバル {{threshold}}% を使用)" }, + "idleCondensing": { + "name": "アイドル時の圧縮", + "description": "モデルが応答を終え、コンテキストがアイドルしきい値を超えている場合、アイドル時間が経過した後にコンテキストを圧縮します。これにより、コストのかかる圧縮が作業の途中で行われるのを防ぎます。プロンプト領域に入力するとタイマーがリセットされます。", + "thresholdDescription": "アイドル中にコンテキストがこのパーセンテージに達すると、アイドル圧縮タイマーが作動します。圧縮トリガーしきい値({{threshold}}%)以下である必要があります。", + "thresholdProfileDescription": "このプロファイルのみのカスタムアイドルしきい値(グローバルデフォルトを上書き。プロファイルの圧縮しきい値を上限とします)", + "idleTime": { + "label": "アイドル時間", + "seconds": "秒", + "description": "圧縮がトリガーされる前にモデルがアイドル状態である必要がある時間。モデルがアイドルになったらすぐ圧縮するには 0 に設定してください。" + }, + "useGlobal": "グローバル設定を使用" + }, "maxImageFileSize": { "label": "最大画像ファイルサイズ", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 572141342a..b7155f1f93 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -756,6 +756,18 @@ "profileDescription": "이 프로필만을 위한 사용자 정의 임계값 (글로벌 기본값 재정의)", "usesGlobal": "(글로벌 {{threshold}}% 사용)" }, + "idleCondensing": { + "name": "유휴 시 압축", + "description": "모델이 응답을 마쳤고 컨텍스트가 유휴 임계값을 초과한 경우, 유휴 시간이 지나면 컨텍스트를 압축합니다. 이렇게 하면 비싼 압축이 작업 도중에 실행되는 것을 방지합니다. 프롬프트 영역에 입력하면 타이머가 초기화됩니다.", + "thresholdDescription": "유휴 상태인 동안 컨텍스트가 이 백분율에 도달하면 유휴 압축 타이머가 작동합니다. 압축 트리거 임계값({{threshold}}%) 이하이어야 합니다.", + "thresholdProfileDescription": "이 프로필만의 사용자 정의 유휴 임계값 (글로벌 기본값을 재정의하며, 프로필의 압축 임계값을 상한으로 제한)", + "idleTime": { + "label": "유휴 시간", + "seconds": "초", + "description": "압축이 트리거되기 전에 모델이 유휴 상태여야 하는 시간. 모델이 유휴 상태가 되자마자 압축하려면 0으로 설정하세요." + }, + "useGlobal": "전역 설정 사용" + }, "maxImageFileSize": { "label": "최대 이미지 파일 크기", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 2103bfd08c..73d023a87b 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -766,6 +766,18 @@ "profileDescription": "Aangepaste drempelwaarde alleen voor dit profiel (overschrijft globale standaard)", "usesGlobal": "(gebruikt globaal {{threshold}}%)" }, + "idleCondensing": { + "name": "Comprimeren bij inactiviteit", + "description": "Wanneer het model klaar is met antwoorden en de context boven de inactiviteitsdrempel is, wordt de context gecomprimeerd nadat de inactiviteitstijd is verstreken. Zo vindt dure compressie niet midden in actief werk plaats. Typen in het promptgebied reset de timer.", + "thresholdDescription": "Wanneer de context tijdens inactiviteit dit percentage bereikt, start de timer voor inactiviteitscompressie. Moet gelijk zijn aan of lager dan de compressie trigger drempelwaarde ({{threshold}}%).", + "thresholdProfileDescription": "Aangepaste inactiviteitsdrempel alleen voor dit profiel (overschrijft globale standaard, beperkt tot de compressiedrempel van het profiel)", + "idleTime": { + "label": "Inactiviteitstijd", + "seconds": "seconden", + "description": "Hoe lang het model inactief moet zijn voordat compressie wordt geactiveerd. Stel in op 0 om te comprimeren zodra het model inactief wordt." + }, + "useGlobal": "Globale instellingen gebruiken" + }, "includeCurrentTime": { "label": "Huidige tijd opnemen in context", "description": "Indien ingeschakeld, worden de huidige tijd en tijdzone-informatie opgenomen in de systeemprompt. Schakel dit uit als modellen stoppen met werken vanwege tijdproblemen." diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 7a0ea345ec..2040c56ed2 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Niestandardowy próg tylko dla tego profilu (zastępuje globalny domyślny)", "usesGlobal": "(używa globalnego {{threshold}}%)" }, + "idleCondensing": { + "name": "Kondensacja podczas bezczynności", + "description": "Gdy model skończy odpowiadać, a kontekst przekracza próg bezczynności, kontekst zostanie skondensowany po upływie czasu bezczynności. Dzięki temu kosztowna kondensacja nie zachodzi w trakcie aktywnej pracy. Pisanie w polu promptu resetuje timer.", + "thresholdDescription": "Gdy kontekst osiągnie ten procent podczas bezczynności, uruchamia się timer kondensacji. Musi być równy lub niższy niż próg wyzwalania kondensacji ({{threshold}}%).", + "thresholdProfileDescription": "Niestandardowy próg bezczynności tylko dla tego profilu (zastępuje domyślny globalny, ograniczony do progu kondensacji profilu)", + "idleTime": { + "label": "Czas bezczynności", + "seconds": "sekund", + "description": "Jak długo model musi pozostawać bezczynny, zanim kondensacja zostanie wyzwolona. Ustaw na 0, aby kondensować zaraz po przejściu modelu w stan bezczynności." + }, + "useGlobal": "Użyj ustawień globalnych" + }, "maxImageFileSize": { "label": "Maksymalny rozmiar pliku obrazu", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 3c755f7ee2..c2e74d2b06 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Limite personalizado apenas para este perfil (substitui o padrão global)", "usesGlobal": "(usa global {{threshold}}%)" }, + "idleCondensing": { + "name": "Condensação em ociosidade", + "description": "Quando o modelo termina de responder e o contexto está acima do limite de ociosidade, o contexto é condensado após o tempo de ociosidade decorrer. Isso evita que a condensação, custosa, aconteça no meio do trabalho ativo. Digitar na área de prompt reinicia o temporizador.", + "thresholdDescription": "Quando o contexto atinge essa porcentagem durante a ociosidade, o temporizador de condensação em ociosidade é iniciado. Deve ser igual ou menor que o Limite de Ativação de Condensação ({{threshold}}%).", + "thresholdProfileDescription": "Limite de ociosidade personalizado apenas para este perfil (substitui o padrão global, limitado ao limite de condensação do perfil)", + "idleTime": { + "label": "Tempo de ociosidade", + "seconds": "segundos", + "description": "Quanto tempo o modelo deve ficar ocioso antes que a condensação seja acionada. Defina como 0 para condensar assim que o modelo ficar ocioso." + }, + "useGlobal": "Usar configurações globais" + }, "maxImageFileSize": { "label": "Tamanho máximo do arquivo de imagem", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 69486d9e72..cd1668ff4d 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Пользовательский порог только для этого профиля (переопределяет глобальный по умолчанию)", "usesGlobal": "(использует глобальный {{threshold}}%)" }, + "idleCondensing": { + "name": "Сжатие в простое", + "description": "Когда модель завершила ответ, а контекст превышает порог простоя, контекст сжимается после истечения времени простоя. Это предотвращает дорогостоящее сжатие посреди активной работы. Ввод текста в поле промпта сбрасывает таймер.", + "thresholdDescription": "Когда во время простоя контекст достигает этого процента, запускается таймер сжатия в простое. Должен быть не выше порога запуска сжатия ({{threshold}}%).", + "thresholdProfileDescription": "Пользовательский порог простоя только для этого профиля (переопределяет глобальный по умолчанию, ограничен порогом сжатия профиля)", + "idleTime": { + "label": "Время простоя", + "seconds": "секунд", + "description": "Как долго модель должна находиться в простое, прежде чем сжатие будет запущено. Установите 0, чтобы сжимать сразу при переходе модели в простой." + }, + "useGlobal": "Использовать глобальные настройки" + }, "maxImageFileSize": { "label": "Максимальный размер файла изображения", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 760990b0c2..69f0dd422c 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Sadece bu profil için özel eşik (küresel varsayılanı geçersiz kılar)", "usesGlobal": "(küresel {{threshold}}% kullanır)" }, + "idleCondensing": { + "name": "Boşta sıkıştırma", + "description": "Model yanıt vermeyi bitirdiğinde ve bağlam boşta eşiğinin üzerindeyse, boşta süresi dolduğunda bağlam sıkıştırılır. Bu, maliyetli sıkıştırmanın aktif işin ortasında yapılmasını önler. İstem alanına yazmak zamanlayıcıyı sıfırlar.", + "thresholdDescription": "Boşta durumdayken bağlam bu yüzdelere ulaştığında boşta sıkıştırma zamanlayıcısı çalışır. Sıkıştırma Tetikleme Eşiği ({{threshold}}%) değerine eşit veya altında olmalıdır.", + "thresholdProfileDescription": "Yalnızca bu profil için özel boşta eşiği (küresel varsayılanı geçersiz kılar, profilin sıkıştırma eşiğiyle sınırlıdır)", + "idleTime": { + "label": "Boşta süresi", + "seconds": "saniye", + "description": "Sıkıştırmanın tetiklenmeden önce modelin ne kadar boşta kalması gerektiği. Model boşta kaldığı anda sıkıştırma yapmak için 0 olarak ayarlayın." + }, + "useGlobal": "Küresel ayarları kullan" + }, "maxImageFileSize": { "label": "Maksimum görüntü dosyası boyutu", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 07c2596d43..6f9f2c8768 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -756,6 +756,18 @@ "profileDescription": "Ngưỡng tùy chỉnh chỉ cho hồ sơ này (ghi đè mặc định toàn cục)", "usesGlobal": "(sử dụng toàn cục {{threshold}}%)" }, + "idleCondensing": { + "name": "Nén khi nhàn rỗi", + "description": "Khi mô hình đã trả lời xong và ngữ cảnh vượt ngưỡng nhàn rỗi, ngữ cảnh sẽ được nén sau khi thời gian nhàn rỗi trôi qua. Điều này giúp việc nén tốn kém không diễn ra giữa lúc đang làm việc. Gõ vào ô prompt sẽ đặt lại bộ đếm.", + "thresholdDescription": "Khi ngữ cảnh đạt tỷ lệ phần trăm này trong lúc nhàn rỗi, bộ đếm nén khi nhàn rỗi sẽ chạy. Phải bằng hoặc thấp hơn Ngưỡng kích hoạt nén ({{threshold}}%).", + "thresholdProfileDescription": "Ngưỡng nhàn rỗi tùy chỉnh chỉ cho hồ sơ này (ghi đè mặc định toàn cục, giới hạn ở ngưỡng nén của hồ sơ)", + "idleTime": { + "label": "Thời gian nhàn rỗi", + "seconds": "giây", + "description": "Mô hình phải nhàn rỗi bao lâu trước khi việc nén được kích hoạt. Đặt bằng 0 để nén ngay khi mô hình chuyển sang nhàn rỗi." + }, + "useGlobal": "Sử dụng cài đặt toàn cục" + }, "maxImageFileSize": { "label": "Kích thước tối đa của tệp hình ảnh", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 12fd5afe63..19947c90b8 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -756,6 +756,18 @@ "profileDescription": "仅此配置文件的自定义阈值(覆盖全局默认)", "usesGlobal": "(使用全局 {{threshold}}%)" }, + "idleCondensing": { + "name": "空闲时压缩", + "description": "当模型完成响应且上下文高于空闲阈值时,在空闲时间结束后压缩上下文。这可避免昂贵的压缩发生在进行中的工作期间。在提示区输入内容会重置计时器。", + "thresholdDescription": "当上下文在空闲期间达到此百分比时,启动空闲压缩计时器。必须不高于压缩触发阈值({{threshold}}%)。", + "thresholdProfileDescription": "仅此配置文件的自定义空闲阈值(覆盖全局默认值,上限为该配置文件的压缩阈值)", + "idleTime": { + "label": "空闲时间", + "seconds": "秒", + "description": "模型必须空闲多久才触发压缩。设为 0 可在模型进入空闲后立即压缩。" + }, + "useGlobal": "使用全局设置" + }, "maxImageFileSize": { "label": "最大图像文件大小", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 6760aa6458..52ab92d80b 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -793,6 +793,18 @@ "profileDescription": "僅此設定檔的自訂閾值(覆寫全域預設)", "usesGlobal": "(使用全域 {{threshold}}%)" }, + "idleCondensing": { + "name": "空閒時壓縮", + "description": "當模型完成回應且上下文高於空閒閾值時,在空閒時間結束後壓縮上下文。這可避免昂貴的壓縮發生在進行中的工作期間。在提示區輸入內容會重設計時器。", + "thresholdDescription": "當上下文在空閒期間達到此百分比時,啟動空閒壓縮計時器。必須不高於壓縮觸發閾值({{threshold}}%)。", + "thresholdProfileDescription": "僅此設定檔的自訂空閒閾值(覆寫全域預設,上限為該設定檔的壓縮閾值)", + "idleTime": { + "label": "空閒時間", + "seconds": "秒", + "description": "模型必須空閒多久才觸發壓縮。設為 0 可在模型進入空閒後立即壓縮。" + }, + "useGlobal": "使用全域設定" + }, "includeCurrentTime": { "label": "在上下文中包含目前時間", "description": "啟用後,目前時間和時區資訊將包含在系統提示中。如果模型因時間問題停止工作,請停用此選項。" From 0ad4da0ebe839eb6e0bce450c0a9327d921029b9 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 14:27:37 -0800 Subject: [PATCH 02/20] clamp the to conext threshold sliders together --- .../settings/ContextManagementSettings.tsx | 51 +++++++++++--- .../ContextManagementSettings.spec.tsx | 69 +++++++++++++++++-- webview-ui/src/i18n/locales/ca/settings.json | 2 +- webview-ui/src/i18n/locales/de/settings.json | 2 +- webview-ui/src/i18n/locales/en/settings.json | 2 +- webview-ui/src/i18n/locales/es/settings.json | 2 +- webview-ui/src/i18n/locales/fr/settings.json | 2 +- webview-ui/src/i18n/locales/hi/settings.json | 2 +- webview-ui/src/i18n/locales/id/settings.json | 2 +- webview-ui/src/i18n/locales/it/settings.json | 2 +- webview-ui/src/i18n/locales/ja/settings.json | 2 +- webview-ui/src/i18n/locales/ko/settings.json | 2 +- webview-ui/src/i18n/locales/nl/settings.json | 2 +- webview-ui/src/i18n/locales/pl/settings.json | 3 +- .../src/i18n/locales/pt-BR/settings.json | 4 +- webview-ui/src/i18n/locales/ru/settings.json | 2 +- webview-ui/src/i18n/locales/tr/settings.json | 2 +- webview-ui/src/i18n/locales/vi/settings.json | 2 +- .../src/i18n/locales/zh-CN/settings.json | 2 +- .../src/i18n/locales/zh-TW/settings.json | 2 +- 20 files changed, 126 insertions(+), 33 deletions(-) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 64ae3e5f02..37ee54ccfd 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -143,10 +143,39 @@ export const ContextManagementSettings = ({ return profileThreshold } + // Lowering the condensing trigger threshold lowers the current idle thresholds + // that inherit from it, so the idle threshold never exceeds the trigger + // threshold. The idle slider's max stays at 100%. + const clampIdleToTrigger = (newValue: number) => { + if (idleCondenseContextPercent > newValue) { + setCachedStateField("idleCondenseContextPercent", newValue) + } + const clampedProfileIdleThresholds = { ...profileIdleThresholds } + let changed = false + for (const [id, idleValue] of Object.entries(profileIdleThresholds)) { + if (idleValue === -1) { + continue + } + const profileTrigger = profileThresholds[id] + // Only profile idle overrides that inherit the default trigger threshold follow this change. + if (profileTrigger !== undefined && profileTrigger !== -1) { + continue + } + if (idleValue > newValue) { + clampedProfileIdleThresholds[id] = newValue + changed = true + } + } + if (changed) { + setCachedStateField("profileIdleThresholds", clampedProfileIdleThresholds) + } + } + // Helper function to handle threshold changes const handleThresholdChange = (value: number) => { if (selectedThresholdProfile === "default") { setCachedStateField("autoCondenseContextPercent", value) + clampIdleToTrigger(value) } else { const newThresholds = { ...profileThresholds, @@ -154,11 +183,20 @@ export const ContextManagementSettings = ({ } setCachedStateField("profileThresholds", newThresholds) + + const profileIdle = profileIdleThresholds[selectedThresholdProfile] + if (profileIdle !== undefined && profileIdle !== -1 && profileIdle > value) { + setCachedStateField("profileIdleThresholds", { + ...profileIdleThresholds, + [selectedThresholdProfile]: value, + }) + } } } // Effective main condense threshold for the profile currently selected in - // the idle-threshold UI: the idle threshold may never exceed it. + // the idle-threshold UI: the idle threshold value may never exceed it, + // though the slider's max stays at 100%. const getMainThresholdForIdleProfile = () => { if (selectedIdleProfile === "default") { return autoCondenseContextPercent @@ -182,7 +220,7 @@ export const ContextManagementSettings = ({ return profileThreshold } - // Helper function to handle idle threshold changes (clamped to the main threshold) + // Helper function to handle idle threshold changes (value clamped to the main threshold) const handleIdleThresholdChange = (value: number) => { const clamped = Math.min(value, getMainThresholdForIdleProfile()) if (selectedIdleProfile === "default") { @@ -229,7 +267,6 @@ export const ContextManagementSettings = ({ setCachedStateField("profileIdleCondenseTimes", { ...profileIdleCondenseTimes, [selectedIdleProfile]: -1 }) } - const idleThresholdMax = Math.max(10, Math.min(getMainThresholdForIdleProfile(), 100)) return (
@@ -734,9 +771,9 @@ export const ContextManagementSettings = ({
handleIdleThresholdChange(value)} data-testid="idle-condense-threshold-slider" /> @@ -744,9 +781,7 @@ export const ContextManagementSettings = ({
{selectedIdleProfile === "default" - ? t("settings:contextManagement.idleCondensing.thresholdDescription", { - threshold: idleCondenseContextPercent, - }) + ? t("settings:contextManagement.idleCondensing.thresholdDescription") : t("settings:contextManagement.idleCondensing.thresholdProfileDescription")}
diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index 59e7f12eb7..2d2339a893 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -595,7 +595,19 @@ describe("ContextManagementSettings", () => { expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContextPercent", 70) }) - it("clamps the idle threshold to the main condense threshold", () => { + it("keeps the idle slider max at 100 regardless of the main threshold", () => { + render( + , + ) + + const slider = screen.getByTestId("idle-condense-threshold-slider") + expect(slider).toHaveAttribute("max", "100") + }) + + it("clamps the idle threshold value to the main condense threshold", () => { const setCachedStateField = vi.fn() render( { ) const slider = screen.getByTestId("idle-condense-threshold-slider") - // The slider max follows the main threshold and the displayed value is clamped to it. - expect(slider).toHaveAttribute("max", "40") - expect(slider).toHaveValue("40") - - // Nudging past the main threshold still writes the clamped value. + // Nudging above the main threshold writes the clamped value. slider.focus() fireEvent.keyDown(slider, { key: "ArrowRight" }) expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContextPercent", 40) }) + it("lowers the current idle threshold when the trigger threshold is reduced", () => { + const setCachedStateField = vi.fn() + render() + + const triggerSlider = screen.getByTestId("condense-threshold-slider") + fireEvent.change(triggerSlider, { target: { value: "40" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("autoCondenseContextPercent", 40) + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseContextPercent", 40) + }) + + it("leaves the idle threshold alone when the trigger threshold change does not exceed it", () => { + const setCachedStateField = vi.fn() + render() + + const triggerSlider = screen.getByTestId("condense-threshold-slider") + fireEvent.change(triggerSlider, { target: { value: "80" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("autoCondenseContextPercent", 80) + expect(setCachedStateField).not.toHaveBeenCalledWith("idleCondenseContextPercent", expect.anything()) + }) + + it("lowers a profile idle override when its trigger threshold is reduced", () => { + const setCachedStateField = vi.fn() + render( + , + ) + + // Select config-1 in the trigger-threshold profile picker. + const triggerSelect = screen.getByTestId("threshold-profile-select") + const trigger = triggerSelect.querySelector('button[data-testid="threshold-profile-change"]') + if (!trigger) { + throw new Error("trigger profile trigger not found") + } + trigger.setAttribute("data-next-value", "config-1") + fireEvent.click(trigger) + + const triggerSlider = screen.getByTestId("condense-threshold-slider") + fireEvent.change(triggerSlider, { target: { value: "60" } }) + + expect(setCachedStateField).toHaveBeenCalledWith("profileThresholds", { "config-1": 60 }) + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { "config-1": 60 }) + }) + it("updates the global idle time", () => { const setCachedStateField = vi.fn() render() diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index c171cebcf1..c45991054a 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Condensació en repòs", "description": "Quan el model ha acabat de respondre i el context està per sobre del llindar de repòs, es condensa el context quan passa el temps de repòs. Això evita que la condensació, costosa, es produeixi enmig de la feina activa. Escriure a l'àrea de prompt reinicia el temporitzador.", - "thresholdDescription": "Quan el context arriba a aquest percentatge en repòs, s'activa el temporitzador de condensació en repòs. Ha de ser igual o inferior al llindar d'activació de condensació ({{threshold}}%).", + "thresholdDescription": "Quan el context arriba a aquest percentatge en repòs, s'activa el temporitzador de condensació en repòs. Ha de ser igual o inferior al llindar d'activació de condensació.", "thresholdProfileDescription": "Llindar de repòs personalitzat només per a aquest perfil (substitueix el per defecte global, limitat al llindar de condensació del perfil)", "idleTime": { "label": "Temps de repòs", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index c34ffd92b0..ad1677b768 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Komprimierung im Leerlauf", "description": "Wenn das Modell fertig geantwortet hat und der Kontext über dem Leerlauf-Schwellenwert liegt, wird der Kontext komprimiert, nachdem die Leerlaufzeit verstrichen ist. So findet die aufwendige Komprimierung nicht mitten in aktiver Arbeit statt. Wenn du in das Prompt-Feld schreibst, wird der Timer zurückgesetzt.", - "thresholdDescription": "Wenn der Kontext im Leerlauf diesen Prozentsatz erreicht, läuft der Leerlauf-Komprimierungs-Timer. Muss gleich oder niedriger als der Schwellenwert für Kontextkomprimierung ({{threshold}}%) sein.", + "thresholdDescription": "Wenn der Kontext im Leerlauf diesen Prozentsatz erreicht, läuft der Leerlauf-Komprimierungs-Timer. Muss gleich oder niedriger als der Schwellenwert für Kontextkomprimierung sein.", "thresholdProfileDescription": "Benutzerdefinierter Leerlauf-Schwellenwert nur für dieses Profil (überschreibt globalen Standard, begrenzt auf den Komprimierungsschwellenwert des Profils)", "idleTime": { "label": "Leerlaufzeit", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index d18143b25e..04397af2c5 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -842,7 +842,7 @@ "idleCondensing": { "name": "Idle condensing", "description": "When the model has finished responding and the context is above the idle threshold, condense the context after the idle time elapses. This keeps expensive condensing from happening in the middle of active work. Typing in the prompt area resets the timer.", - "thresholdDescription": "When the context reaches this percentage while idle, the idle condensing timer runs. Must be at or below the Condensing Trigger Threshold ({{threshold}}%).", + "thresholdDescription": "When the context reaches this percentage while idle, the idle condensing timer runs. Must be at or below the Condensing Trigger Threshold.", "thresholdProfileDescription": "Custom idle threshold for this profile only (overrides global default, capped at the profile's condensing threshold)", "idleTime": { "label": "Idle time", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 4b6ab680a8..115f1a647c 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -769,7 +769,7 @@ "idleCondensing": { "name": "Condensación en reposo", "description": "Cuando el modelo ha terminado de responder y el contexto está por encima del umbral de reposo, se condensa el contexto al transcurrir el tiempo de reposo. Esto evita que la costosa condensación ocurra en medio del trabajo activo. Escribir en el área de prompt reinicia el temporizador.", - "thresholdDescription": "Cuando el contexto alcanza este porcentaje durante el reposo, se activa el temporizador de condensación en reposo. Debe ser igual o inferior al umbral de condensación de contexto ({{threshold}}%).", + "thresholdDescription": "Cuando el contexto alcanza este porcentaje durante el reposo, se activa el temporizador de condensación en reposo. Debe ser igual o inferior al umbral de condensación de contexto.", "thresholdProfileDescription": "Umbral de reposo personalizado solo para este perfil (anula el predeterminado global, limitado al umbral de condensación del perfil)", "idleTime": { "label": "Tiempo de reposo", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 81bceec138..50a511406d 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -769,7 +769,7 @@ "idleCondensing": { "name": "Condensation en veille", "description": "Lorsque le modèle a fini de répondre et que le contexte dépasse le seuil de veille, le contexte est condensé une fois le temps de veille écoulé. Cela évite que la condensation, coûteuse, se produise en pleine activité. Taper dans la zone de prompt réinitialise le minuteur.", - "thresholdDescription": "Lorsque le contexte atteint ce pourcentage en veille, le minuteur de condensation en veille démarre. Doit être inférieur ou égal au seuil de condensation du contexte ({{threshold}}%).", + "thresholdDescription": "Lorsque le contexte atteint ce pourcentage en veille, le minuteur de condensation en veille démarre. Doit être inférieur ou égal au seuil de condensation du contexte.", "thresholdProfileDescription": "Seuil de veille personnalisé pour ce profil uniquement (remplace le défaut global, plafonné au seuil de condensation du profil)", "idleTime": { "label": "Temps de veille", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index ecc6c3adfa..1f7fd399bf 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "निष्क्रिय काल में संघनन", "description": "जब मॉडल उत्तर देना समाप्त कर दे और संदर्भ निष्क्रिय सीमा से ऊपर हो, तो निष्क्रिय समय बीतने के बाद संदर्भ संघनित हो जाता है। इससे महंगा संघनन सक्रिय कार्य के बीच में नहीं होता। प्रॉम्प्ट क्षेत्र में टाइप करने से टाइमर रीसेट हो जाता है।", - "thresholdDescription": "जब निष्क्रिय अवस्था में संदर्भ इस प्रतिशत तक पहुँचता है, तो निष्क्रिय संघनन टाइमर चलता है। यह संघनन ट्रिगर सीमा ({{threshold}}%) के बराबर या उससे कम होना चाहिए।", + "thresholdDescription": "जब निष्क्रिय अवस्था में संदर्भ इस प्रतिशत तक पहुँचता है, तो निष्क्रिय संघनन टाइमर चलता है। यह संघनन ट्रिगर सीमा के बराबर या उससे कम होना चाहिए।", "thresholdProfileDescription": "केवल इस प्रोफ़ाइल के लिए कस्टम निष्क्रिय सीमा (वैश्विक डिफ़ॉल्ट को ओवरराइड करती है, प्रोफ़ाइल की संघनन सीमा तक सीमित)", "idleTime": { "label": "निष्क्रिय समय", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 5e3daabed8..abcc962fde 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -747,7 +747,7 @@ "idleCondensing": { "name": "Kondensasi saat idle", "description": "Saat model selesai merespons dan konteks berada di atas ambang batas idle, konteks dikondensasi setelah waktu idle berlalu. Ini mencegah kondensasi yang mahal terjadi di tengah pekerjaan aktif. Mengetik di area prompt mengatur ulang timer.", - "thresholdDescription": "Saat konteks mencapai persentase ini selama idle, timer kondensasi idle berjalan. Harus sama atau di bawah Ambang Batas Pemicu Kondensasi ({{threshold}}%).", + "thresholdDescription": "Saat konteks mencapai persentase ini selama idle, timer kondensasi idle berjalan. Harus sama atau di bawah Ambang Batas Pemicu Kondensasi.", "thresholdProfileDescription": "Ambang batas idle kustom hanya untuk profil ini (menimpa default global, dibatasi pada ambang kondensasi profil)", "idleTime": { "label": "Waktu idle", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 112bd42163..dd7df60127 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Condensazione inattiva", "description": "Quando il modello ha finito di rispondere e il contesto è sopra la soglia di inattività, il contesto viene condensato allo scadere del tempo di inattività. Questo evita che la condensazione, costosa, avvenga nel mezzo del lavoro attivo. Digitare nell'area del prompt reimposta il timer.", - "thresholdDescription": "Quando il contesto raggiunge questa percentuale durante l'inattività, il timer di condensazione inattiva parte. Deve essere uguale o inferiore alla soglia di attivazione condensazione ({{threshold}}%).", + "thresholdDescription": "Quando il contesto raggiunge questa percentuale durante l'inattività, il timer di condensazione inattiva parte. Deve essere uguale o inferiore alla soglia di attivazione condensazione.", "thresholdProfileDescription": "Soglia di inattività personalizzata solo per questo profilo (sovrascrive il predefinito globale, limitata alla soglia di condensazione del profilo)", "idleTime": { "label": "Tempo di inattività", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 6164064f39..76168eeca4 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "アイドル時の圧縮", "description": "モデルが応答を終え、コンテキストがアイドルしきい値を超えている場合、アイドル時間が経過した後にコンテキストを圧縮します。これにより、コストのかかる圧縮が作業の途中で行われるのを防ぎます。プロンプト領域に入力するとタイマーがリセットされます。", - "thresholdDescription": "アイドル中にコンテキストがこのパーセンテージに達すると、アイドル圧縮タイマーが作動します。圧縮トリガーしきい値({{threshold}}%)以下である必要があります。", + "thresholdDescription": "アイドル中にコンテキストがこのパーセンテージに達すると、アイドル圧縮タイマーが作動します。圧縮トリガーしきい値以下である必要があります。", "thresholdProfileDescription": "このプロファイルのみのカスタムアイドルしきい値(グローバルデフォルトを上書き。プロファイルの圧縮しきい値を上限とします)", "idleTime": { "label": "アイドル時間", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index b7155f1f93..41be100028 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "유휴 시 압축", "description": "모델이 응답을 마쳤고 컨텍스트가 유휴 임계값을 초과한 경우, 유휴 시간이 지나면 컨텍스트를 압축합니다. 이렇게 하면 비싼 압축이 작업 도중에 실행되는 것을 방지합니다. 프롬프트 영역에 입력하면 타이머가 초기화됩니다.", - "thresholdDescription": "유휴 상태인 동안 컨텍스트가 이 백분율에 도달하면 유휴 압축 타이머가 작동합니다. 압축 트리거 임계값({{threshold}}%) 이하이어야 합니다.", + "thresholdDescription": "유휴 상태인 동안 컨텍스트가 이 백분율에 도달하면 유휴 압축 타이머가 작동합니다. 압축 트리거 임계값 이하이어야 합니다.", "thresholdProfileDescription": "이 프로필만의 사용자 정의 유휴 임계값 (글로벌 기본값을 재정의하며, 프로필의 압축 임계값을 상한으로 제한)", "idleTime": { "label": "유휴 시간", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 73d023a87b..bea0e474c0 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -769,7 +769,7 @@ "idleCondensing": { "name": "Comprimeren bij inactiviteit", "description": "Wanneer het model klaar is met antwoorden en de context boven de inactiviteitsdrempel is, wordt de context gecomprimeerd nadat de inactiviteitstijd is verstreken. Zo vindt dure compressie niet midden in actief werk plaats. Typen in het promptgebied reset de timer.", - "thresholdDescription": "Wanneer de context tijdens inactiviteit dit percentage bereikt, start de timer voor inactiviteitscompressie. Moet gelijk zijn aan of lager dan de compressie trigger drempelwaarde ({{threshold}}%).", + "thresholdDescription": "Wanneer de context tijdens inactiviteit dit percentage bereikt, start de timer voor inactiviteitscompressie. Moet gelijk zijn aan of lager dan de compressie trigger drempelwaarde.", "thresholdProfileDescription": "Aangepaste inactiviteitsdrempel alleen voor dit profiel (overschrijft globale standaard, beperkt tot de compressiedrempel van het profiel)", "idleTime": { "label": "Inactiviteitstijd", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 2040c56ed2..87af1cf0a8 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Kondensacja podczas bezczynności", "description": "Gdy model skończy odpowiadać, a kontekst przekracza próg bezczynności, kontekst zostanie skondensowany po upływie czasu bezczynności. Dzięki temu kosztowna kondensacja nie zachodzi w trakcie aktywnej pracy. Pisanie w polu promptu resetuje timer.", - "thresholdDescription": "Gdy kontekst osiągnie ten procent podczas bezczynności, uruchamia się timer kondensacji. Musi być równy lub niższy niż próg wyzwalania kondensacji ({{threshold}}%).", + "thresholdDescription": "Gdy kontekst osiągnie ten procent podczas bezczynności, uruchamia się timer kondensacji. Musi być równy lub niższy niż próg wyzwalania kondensacji.", "thresholdProfileDescription": "Niestandardowy próg bezczynności tylko dla tego profilu (zastępuje domyślny globalny, ograniczony do progu kondensacji profilu)", "idleTime": { "label": "Czas bezczynności", @@ -1168,3 +1168,4 @@ } } } + diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index c2e74d2b06..af12b70f96 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -1,4 +1,4 @@ -{ +t{ "back": "Voltar para a visão de tarefas", "common": { "save": "Salvar", @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Condensação em ociosidade", "description": "Quando o modelo termina de responder e o contexto está acima do limite de ociosidade, o contexto é condensado após o tempo de ociosidade decorrer. Isso evita que a condensação, custosa, aconteça no meio do trabalho ativo. Digitar na área de prompt reinicia o temporizador.", - "thresholdDescription": "Quando o contexto atinge essa porcentagem durante a ociosidade, o temporizador de condensação em ociosidade é iniciado. Deve ser igual ou menor que o Limite de Ativação de Condensação ({{threshold}}%).", + "thresholdDescription": "Quando o contexto atinge essa porcentagem durante a ociosidade, o temporizador de condensação em ociosidade é iniciado. Deve ser igual ou menor que o Limite de Ativação de Condensação.", "thresholdProfileDescription": "Limite de ociosidade personalizado apenas para este perfil (substitui o padrão global, limitado ao limite de condensação do perfil)", "idleTime": { "label": "Tempo de ociosidade", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index cd1668ff4d..c57c4cfebd 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Сжатие в простое", "description": "Когда модель завершила ответ, а контекст превышает порог простоя, контекст сжимается после истечения времени простоя. Это предотвращает дорогостоящее сжатие посреди активной работы. Ввод текста в поле промпта сбрасывает таймер.", - "thresholdDescription": "Когда во время простоя контекст достигает этого процента, запускается таймер сжатия в простое. Должен быть не выше порога запуска сжатия ({{threshold}}%).", + "thresholdDescription": "Когда во время простоя контекст достигает этого процента, запускается таймер сжатия в простое. Должен быть не выше порога запуска сжатия.", "thresholdProfileDescription": "Пользовательский порог простоя только для этого профиля (переопределяет глобальный по умолчанию, ограничен порогом сжатия профиля)", "idleTime": { "label": "Время простоя", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 69f0dd422c..c20957723f 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Boşta sıkıştırma", "description": "Model yanıt vermeyi bitirdiğinde ve bağlam boşta eşiğinin üzerindeyse, boşta süresi dolduğunda bağlam sıkıştırılır. Bu, maliyetli sıkıştırmanın aktif işin ortasında yapılmasını önler. İstem alanına yazmak zamanlayıcıyı sıfırlar.", - "thresholdDescription": "Boşta durumdayken bağlam bu yüzdelere ulaştığında boşta sıkıştırma zamanlayıcısı çalışır. Sıkıştırma Tetikleme Eşiği ({{threshold}}%) değerine eşit veya altında olmalıdır.", + "thresholdDescription": "Boşta durumdayken bağlam bu yüzdelere ulaştığında boşta sıkıştırma zamanlayıcısı çalışır. Sıkıştırma Tetikleme Eşiği değerine eşit veya altında olmalıdır.", "thresholdProfileDescription": "Yalnızca bu profil için özel boşta eşiği (küresel varsayılanı geçersiz kılar, profilin sıkıştırma eşiğiyle sınırlıdır)", "idleTime": { "label": "Boşta süresi", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 6f9f2c8768..90b2ea0db5 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "Nén khi nhàn rỗi", "description": "Khi mô hình đã trả lời xong và ngữ cảnh vượt ngưỡng nhàn rỗi, ngữ cảnh sẽ được nén sau khi thời gian nhàn rỗi trôi qua. Điều này giúp việc nén tốn kém không diễn ra giữa lúc đang làm việc. Gõ vào ô prompt sẽ đặt lại bộ đếm.", - "thresholdDescription": "Khi ngữ cảnh đạt tỷ lệ phần trăm này trong lúc nhàn rỗi, bộ đếm nén khi nhàn rỗi sẽ chạy. Phải bằng hoặc thấp hơn Ngưỡng kích hoạt nén ({{threshold}}%).", + "thresholdDescription": "Khi ngữ cảnh đạt tỷ lệ phần trăm này trong lúc nhàn rỗi, bộ đếm nén khi nhàn rỗi sẽ chạy. Phải bằng hoặc thấp hơn Ngưỡng kích hoạt nén.", "thresholdProfileDescription": "Ngưỡng nhàn rỗi tùy chỉnh chỉ cho hồ sơ này (ghi đè mặc định toàn cục, giới hạn ở ngưỡng nén của hồ sơ)", "idleTime": { "label": "Thời gian nhàn rỗi", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 19947c90b8..a20b0ddf0f 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -759,7 +759,7 @@ "idleCondensing": { "name": "空闲时压缩", "description": "当模型完成响应且上下文高于空闲阈值时,在空闲时间结束后压缩上下文。这可避免昂贵的压缩发生在进行中的工作期间。在提示区输入内容会重置计时器。", - "thresholdDescription": "当上下文在空闲期间达到此百分比时,启动空闲压缩计时器。必须不高于压缩触发阈值({{threshold}}%)。", + "thresholdDescription": "当上下文在空闲期间达到此百分比时,启动空闲压缩计时器。必须不高于压缩触发阈值。", "thresholdProfileDescription": "仅此配置文件的自定义空闲阈值(覆盖全局默认值,上限为该配置文件的压缩阈值)", "idleTime": { "label": "空闲时间", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 52ab92d80b..6409450d32 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -796,7 +796,7 @@ "idleCondensing": { "name": "空閒時壓縮", "description": "當模型完成回應且上下文高於空閒閾值時,在空閒時間結束後壓縮上下文。這可避免昂貴的壓縮發生在進行中的工作期間。在提示區輸入內容會重設計時器。", - "thresholdDescription": "當上下文在空閒期間達到此百分比時,啟動空閒壓縮計時器。必須不高於壓縮觸發閾值({{threshold}}%)。", + "thresholdDescription": "當上下文在空閒期間達到此百分比時,啟動空閒壓縮計時器。必須不高於壓縮觸發閾值。", "thresholdProfileDescription": "僅此設定檔的自訂空閒閾值(覆寫全域預設,上限為該設定檔的壓縮閾值)", "idleTime": { "label": "空閒時間", From 4c42cd1339cca540c0840c800d98e77ddc0fadf1 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 15:43:48 -0800 Subject: [PATCH 03/20] nest idle condensing under auto condense and reword idle description --- src/core/task/Task.ts | 4 +- .../task/__tests__/Task.idle-condense.spec.ts | 10 + src/eslint-suppressions.json | 2882 ++++++++--------- .../settings/ContextManagementSettings.tsx | 206 +- .../ContextManagementSettings.spec.tsx | 30 + webview-ui/src/i18n/locales/ca/settings.json | 2 +- webview-ui/src/i18n/locales/de/settings.json | 2 +- webview-ui/src/i18n/locales/en/settings.json | 2 +- webview-ui/src/i18n/locales/es/settings.json | 2 +- webview-ui/src/i18n/locales/fr/settings.json | 2 +- webview-ui/src/i18n/locales/hi/settings.json | 2 +- webview-ui/src/i18n/locales/id/settings.json | 2 +- webview-ui/src/i18n/locales/it/settings.json | 2 +- webview-ui/src/i18n/locales/ja/settings.json | 2 +- webview-ui/src/i18n/locales/ko/settings.json | 2 +- webview-ui/src/i18n/locales/nl/settings.json | 2 +- webview-ui/src/i18n/locales/pl/settings.json | 2 +- .../src/i18n/locales/pt-BR/settings.json | 4 +- webview-ui/src/i18n/locales/ru/settings.json | 2 +- webview-ui/src/i18n/locales/tr/settings.json | 2 +- webview-ui/src/i18n/locales/vi/settings.json | 2 +- .../src/i18n/locales/zh-CN/settings.json | 2 +- .../src/i18n/locales/zh-TW/settings.json | 2 +- 23 files changed, 1610 insertions(+), 1560 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 1428552fa1..80ef79e553 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2650,7 +2650,9 @@ export class Task extends EventEmitter implements TaskLike { } const state = await provider.getState() - if (!state?.idleCondenseContext) { + // Idle condensing is a sub-feature of auto condensing: disabling auto + // condensing disables idle condensing too. + if (!state?.idleCondenseContext || !state?.autoCondenseContext) { return undefined } diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index d1a93ba19f..f393244a26 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -17,6 +17,7 @@ type StateStub = Partial<{ idleCondenseContext: boolean idleCondenseContextPercent: number idleCondenseTimeInSeconds: number + autoCondenseContext: boolean autoCondenseContextPercent: number profileThresholds: Record profileIdleThresholds: Record @@ -27,6 +28,7 @@ const baseState = (overrides: StateStub = {}): StateStub => ({ idleCondenseContext: true, idleCondenseContextPercent: 50, idleCondenseTimeInSeconds: 30, + autoCondenseContext: true, autoCondenseContextPercent: 100, profileThresholds: {}, profileIdleThresholds: {}, @@ -162,6 +164,14 @@ describe("Task idle condensing — evaluateIdleCondense", () => { await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() }) + test("returns undefined when auto condensing is disabled", async () => { + // Idle condensing is a sub-feature of auto condensing: disabling auto + // condensing disables idle condensing even when idle is still checked. + const { task } = buildTask({ state: baseState({ autoCondenseContext: false }) }) + + await expect(task["evaluateIdleCondense"]()).resolves.toBeUndefined() + }) + test("returns undefined when there are no context tokens yet", async () => { const { task } = buildTask({ contextTokens: 0 }) diff --git a/src/eslint-suppressions.json b/src/eslint-suppressions.json index e59c4b6cfc..6beeec4702 100644 --- a/src/eslint-suppressions.json +++ b/src/eslint-suppressions.json @@ -1,1442 +1,1442 @@ { - "api/providers/__tests__/anthropic-vertex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 31 - } - }, - "api/providers/__tests__/anthropic.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/__tests__/base-openai-compatible-provider-timeout.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/base-openai-compatible-provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/base-provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/__tests__/bedrock-custom-arn.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "api/providers/__tests__/bedrock-error-handling.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/__tests__/bedrock-inference-profiles.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "api/providers/__tests__/bedrock-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 19 - } - }, - "api/providers/__tests__/bedrock-reasoning.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/bedrock.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 37 - } - }, - "api/providers/__tests__/deepseek.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "api/providers/__tests__/gemini-handler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "api/providers/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 33 - } - }, - "api/providers/__tests__/kenari.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/kimi-code.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/lite-llm.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 36 - } - }, - "api/providers/__tests__/mimo.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "api/providers/__tests__/minimax.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/moonshot.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "api/providers/__tests__/native-ollama.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "api/providers/__tests__/openai-codex-native-tool-calls.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "api/providers/__tests__/openai-codex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 16 - } - }, - "api/providers/__tests__/openai-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "api/providers/__tests__/openai-native-usage.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 25 - } - }, - "api/providers/__tests__/openai-native.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 74 - } - }, - "api/providers/__tests__/openai-timeout.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/openai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/__tests__/opencode-go.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "api/providers/__tests__/poe.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/qwen-code-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/sambanova.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/unbound.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/vertex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/zai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/anthropic-vertex.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/anthropic.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/base-openai-compatible-provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/providers/base-provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/bedrock.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 32 - } - }, - "api/providers/deepseek.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/fetchers/__tests__/kenari.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/kimi-code.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/lmstudio.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/fetchers/__tests__/modelEndpointCache.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "api/providers/fetchers/__tests__/moonshot.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/ollama.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "api/providers/fetchers/__tests__/opencode-go.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/zoo-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/providers/fetchers/litellm.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/gemini.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/lite-llm.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/providers/mimo.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/moonshot.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/native-ollama.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/openai-codex.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 31 - } - }, - "api/providers/openai-native.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "api/providers/openai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/openrouter.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/providers/poe.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/requesty.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/unbound.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/utils/__tests__/error-handler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 35 - } - }, - "api/providers/utils/__tests__/image-generation.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "api/providers/utils/__tests__/timeout-config.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/utils/error-handler.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/xai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/transform/__tests__/ai-sdk.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/anthropic-filter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/transform/__tests__/bedrock-converse-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/gemini-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/mistral-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/__tests__/model-params.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/__tests__/openai-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 49 - } - }, - "api/transform/__tests__/r1-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/__tests__/reasoning.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/__tests__/responses-api-input.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/__tests__/responses-api-stream.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/zai-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/transform/ai-sdk.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/bedrock-converse-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/cache-strategy/__tests__/cache-strategy.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "api/transform/caching/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/gemini-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/openai-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/r1-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/responses-api-input.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/transform/responses-api-stream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/transform/zai-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/assistant-message/NativeToolCallParser.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-custom-tool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-images.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-unknown-tool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/assistant-message/presentAssistantMessage.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/auto-approval/__tests__/AutoApprovalHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/checkpoints/__tests__/checkpoint.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/checkpoints/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/condense/__tests__/condense.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/condense/__tests__/foldedFileContext.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/condense/__tests__/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 24 - } - }, - "core/config/ContextProxy.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/config/CustomModesManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/ProviderSettingsManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/config/__tests__/ContextProxy.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/__tests__/CustomModesManager.exportImportSlugChange.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/__tests__/CustomModesManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "core/config/__tests__/CustomModesManager.yamlEdgeCases.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context-management/__tests__/context-management.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context-tracking/__tests__/FileContextTracker.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/context/context-management/__tests__/context-error-handling.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context/context-management/context-error-handling.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/diff/stats.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/environment/__tests__/getEnvironmentDetails.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/ignore/__tests__/RooIgnoreController.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/__tests__/processUserContentMentions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/processUserContentMentions.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/message-manager/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "core/message-manager/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/prompts/__tests__/add-custom-instructions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/__tests__/get-prompt-component.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/__tests__/responses-rooignore.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "core/prompts/__tests__/system-prompt.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/prompts/sections/__tests__/custom-instructions-global.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "core/prompts/sections/__tests__/custom-instructions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 55 - } - }, - "core/prompts/sections/__tests__/system-info.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/prompts/tools/native-tools/__tests__/converters.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/tools/native-tools/__tests__/read_file.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/task-persistence/__tests__/TaskHistoryStore.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/task-persistence/__tests__/importRooTaskHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/task-persistence/__tests__/taskMessages.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/task-persistence/apiMessages.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/task/Task.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "core/task/__tests__/Task.dispose.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/Task.persistence.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/task/__tests__/Task.sticky-profile-race.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/Task.throttle.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 24 - } - }, - "core/task/__tests__/apiConversationHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 23 - } - }, - "core/task/__tests__/ask-clear-approval-buttons.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 19 - } - }, - "core/task/__tests__/ask-queued-message-drain.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "core/task/__tests__/flushPendingToolResultsToHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/task/__tests__/grace-retry-errors.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/task/__tests__/grounding-sources.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/task/__tests__/native-tools-filtering.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/new-task-isolation.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/task/__tests__/reasoning-preservation.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "core/task/__tests__/task-tool-history.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/apiConversationHistory.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/tools/BaseTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/CodebaseSearchTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/GenerateImageTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/NewTaskTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/ReadFileTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/tools/ToolRepetitionDetector.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/UpdateTodoListTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/UseMcpToolTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/tools/__tests__/ReadCommandOutputTool.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 16 - } - }, - "core/tools/__tests__/askFollowupQuestionTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "core/tools/__tests__/attemptCompletionTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 11 - } - }, - "core/tools/__tests__/editFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/tools/__tests__/editTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/__tests__/executeCommand.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/tools/__tests__/executeCommandTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/tools/__tests__/generateImageTool.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "core/tools/__tests__/listFilesTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/tools/__tests__/mcpServerRestriction.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "core/tools/__tests__/newTaskTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 26 - } - }, - "core/tools/__tests__/readFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 96 - } - }, - "core/tools/__tests__/runSlashCommandTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/searchReplaceTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/skillTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/tools/__tests__/updateTodoListTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/useMcpToolTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "core/tools/__tests__/validateToolUse.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/writeToFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/tools/helpers/toolResultFormatting.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/validateToolUse.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/webview/ClineProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "core/webview/__tests__/ClineProvider.apiHandlerRebuild.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "core/webview/__tests__/ClineProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 195 - } - }, - "core/webview/__tests__/ClineProvider.sticky-mode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "core/webview/__tests__/ClineProvider.sticky-profile.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 15 - } - }, - "core/webview/__tests__/ClineProvider.taskHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "core/webview/__tests__/diagnosticsHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "core/webview/__tests__/messageEnhancer.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/webview/__tests__/skillsMessageHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/telemetrySettingsTracking.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/webview/__tests__/webviewMessageHandler.delete.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "core/webview/__tests__/webviewMessageHandler.edit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/webviewMessageHandler.importRooHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 13 - } - }, - "core/webview/__tests__/webviewMessageHandler.readFileContent.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 56 - } - }, - "core/webview/__tests__/webviewMessageHandler.searchFiles.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/webview/__tests__/webviewMessageHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 35 - } - }, - "core/webview/messageEnhancer.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/webviewMessageHandler.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "integrations/editor/DiffViewProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/editor/__tests__/DiffViewProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 310 - } - }, - "integrations/editor/__tests__/EditorUtils.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "integrations/kimi-code/__tests__/oauth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/misc/__tests__/export-markdown.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/misc/__tests__/open-file.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 11 - } - }, - "integrations/misc/__tests__/performance/processCarriageReturns.benchmark.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/ExecaTerminalProcess.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "integrations/terminal/__tests__/OutputInterceptor.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "integrations/terminal/__tests__/TerminalProcess.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "integrations/terminal/__tests__/TerminalProcess.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.bash.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.cmd.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.pwsh.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/TerminalProcessInterpretExitCode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "integrations/terminal/__tests__/TerminalProfile.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "integrations/terminal/__tests__/TerminalRegistry.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "integrations/terminal/__tests__/setupTerminalTests.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/bashStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/cmdStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/streamUtils/pwshStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/theme/getTheme.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "services/__tests__/zoo-code-auth.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/checkpoints/__tests__/ShadowCheckpointService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/__tests__/config-manager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/__tests__/manager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 84 - } - }, - "services/code-index/__tests__/orchestrator.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 23 - } - }, - "services/code-index/__tests__/service-factory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 43 - } - }, - "services/code-index/embedders/__tests__/bedrock.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/code-index/embedders/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/mistral.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/ollama.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 15 - } - }, - "services/code-index/embedders/__tests__/openai-compatible.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 28 - } - }, - "services/code-index/embedders/__tests__/openai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "services/code-index/embedders/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/bedrock.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/embedders/ollama.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/openai-compatible.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/openai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/openrouter.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/interfaces/vector-store.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/orchestrator.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/processors/__tests__/file-watcher.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 25 - } - }, - "services/code-index/processors/__tests__/parser.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "services/code-index/processors/__tests__/scanner.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 26 - } - }, - "services/code-index/processors/file-watcher.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/processors/scanner.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/semble/__tests__/provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "services/code-index/semble/__tests__/semble-cli.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/semble/__tests__/semble-downloader.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 61 - } - }, - "services/code-index/semble/provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/semble/semble-cli.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/shared/__tests__/validation-helpers.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/shared/validation-helpers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/code-index/vector-store/__tests__/qdrant-client.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 87 - } - }, - "services/code-index/vector-store/qdrant-client.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/glob/__tests__/gitignore-integration.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/glob/__tests__/gitignore-test.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/glob/__tests__/list-files-limit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "services/glob/__tests__/list-files.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "services/marketplace/MarketplaceManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/marketplace/SimpleInstaller.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/marketplace/__tests__/MarketplaceManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/marketplace/__tests__/SimpleInstaller.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "services/marketplace/__tests__/marketplace-setting-check.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/mcp/McpHub.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/mcp/McpOAuthClientProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/mcp/McpServerManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/mcp/__tests__/McpHub.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 150 - } - }, - "services/mcp/__tests__/McpOAuthClientProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "services/mcp/__tests__/SecretStorageService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/mcp/utils/__tests__/oauth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "services/mcp/utils/callbackServer.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/mcp/utils/oauth.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/mdm/__tests__/MdmService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/ripgrep/__tests__/diagnostic.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/roo-config/__tests__/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "services/roo-config/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/rules/__tests__/rules.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/search/__tests__/file-search.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/skills/__tests__/SkillsManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/tree-sitter/__tests__/helpers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/tree-sitter/__tests__/markdownParser.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - } -} + "api/providers/__tests__/anthropic-vertex.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 31 + } + }, + "api/providers/__tests__/anthropic.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "api/providers/__tests__/base-openai-compatible-provider-timeout.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/providers/__tests__/base-openai-compatible-provider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/__tests__/base-provider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "api/providers/__tests__/bedrock-custom-arn.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "api/providers/__tests__/bedrock-error-handling.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "api/providers/__tests__/bedrock-inference-profiles.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 27 + } + }, + "api/providers/__tests__/bedrock-native-tools.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 19 + } + }, + "api/providers/__tests__/bedrock-reasoning.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/__tests__/bedrock.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 37 + } + }, + "api/providers/__tests__/deepseek.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "api/providers/__tests__/gemini-handler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "api/providers/__tests__/gemini.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 33 + } + }, + "api/providers/__tests__/kenari.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/__tests__/kimi-code.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/__tests__/lite-llm.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 36 + } + }, + "api/providers/__tests__/mimo.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "api/providers/__tests__/minimax.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/__tests__/moonshot.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 22 + } + }, + "api/providers/__tests__/native-ollama.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 21 + } + }, + "api/providers/__tests__/openai-codex-native-tool-calls.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 22 + } + }, + "api/providers/__tests__/openai-codex.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 16 + } + }, + "api/providers/__tests__/openai-native-tools.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 14 + } + }, + "api/providers/__tests__/openai-native-usage.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 25 + } + }, + "api/providers/__tests__/openai-native.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 74 + } + }, + "api/providers/__tests__/openai-timeout.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/providers/__tests__/openai.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "api/providers/__tests__/opencode-go.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/__tests__/openrouter.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 34 + } + }, + "api/providers/__tests__/poe.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/__tests__/qwen-code-native-tools.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/__tests__/sambanova.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/__tests__/unbound.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/providers/__tests__/vercel-ai-gateway.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/__tests__/vertex.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/providers/__tests__/zai.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/anthropic-vertex.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/anthropic.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/base-openai-compatible-provider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "api/providers/base-provider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "api/providers/bedrock.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 32 + } + }, + "api/providers/deepseek.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/fetchers/__tests__/kenari.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/fetchers/__tests__/kimi-code.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/fetchers/__tests__/lmstudio.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/fetchers/__tests__/modelEndpointCache.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "api/providers/fetchers/__tests__/moonshot.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/fetchers/__tests__/ollama.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "api/providers/fetchers/__tests__/opencode-go.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/fetchers/__tests__/openrouter.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/fetchers/__tests__/zoo-gateway.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "api/providers/fetchers/litellm.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/gemini.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/lite-llm.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "api/providers/mimo.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/providers/moonshot.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/providers/native-ollama.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/openai-codex.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 31 + } + }, + "api/providers/openai-native.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 27 + } + }, + "api/providers/openai.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/openrouter.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "api/providers/poe.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/requesty.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/unbound.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/providers/utils/__tests__/error-handler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 35 + } + }, + "api/providers/utils/__tests__/image-generation.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "api/providers/utils/__tests__/timeout-config.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/providers/utils/error-handler.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "api/providers/xai.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "api/transform/__tests__/ai-sdk.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/transform/__tests__/anthropic-filter.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "api/transform/__tests__/bedrock-converse-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/transform/__tests__/gemini-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/transform/__tests__/mistral-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/transform/__tests__/model-params.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "api/transform/__tests__/openai-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 49 + } + }, + "api/transform/__tests__/r1-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "api/transform/__tests__/reasoning.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/transform/__tests__/responses-api-input.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/transform/__tests__/responses-api-stream.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/transform/__tests__/zai-format.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "api/transform/ai-sdk.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/transform/bedrock-converse-format.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "api/transform/cache-strategy/__tests__/cache-strategy.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "api/transform/caching/__tests__/gemini.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/transform/gemini-format.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "api/transform/openai-format.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "api/transform/r1-format.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "api/transform/responses-api-input.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "api/transform/responses-api-stream.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "api/transform/zai-format.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/assistant-message/NativeToolCallParser.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/assistant-message/__tests__/presentAssistantMessage-custom-tool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/assistant-message/__tests__/presentAssistantMessage-images.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 14 + } + }, + "core/assistant-message/__tests__/presentAssistantMessage-unknown-tool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "core/assistant-message/presentAssistantMessage.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/auto-approval/__tests__/AutoApprovalHandler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/checkpoints/__tests__/checkpoint.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/checkpoints/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/condense/__tests__/condense.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/condense/__tests__/foldedFileContext.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "core/condense/__tests__/index.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 24 + } + }, + "core/config/ContextProxy.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/config/CustomModesManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/config/ProviderSettingsManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/config/__tests__/ContextProxy.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/config/__tests__/CustomModesManager.exportImportSlugChange.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/config/__tests__/CustomModesManager.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "core/config/__tests__/CustomModesManager.yamlEdgeCases.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/context-management/__tests__/context-management.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/context-tracking/__tests__/FileContextTracker.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/context/context-management/__tests__/context-error-handling.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/context/context-management/context-error-handling.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/diff/stats.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/environment/__tests__/getEnvironmentDetails.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/ignore/__tests__/RooIgnoreController.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/mentions/__tests__/processUserContentMentions.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/mentions/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/mentions/processUserContentMentions.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/message-manager/index.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 21 + } + }, + "core/message-manager/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/prompts/__tests__/add-custom-instructions.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/prompts/__tests__/get-prompt-component.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/prompts/__tests__/responses-rooignore.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "core/prompts/__tests__/system-prompt.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/prompts/sections/__tests__/custom-instructions-global.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "core/prompts/sections/__tests__/custom-instructions.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 55 + } + }, + "core/prompts/sections/__tests__/system-info.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 14 + } + }, + "core/prompts/tools/native-tools/__tests__/converters.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/prompts/tools/native-tools/__tests__/read_file.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/task-persistence/__tests__/TaskHistoryStore.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/task-persistence/__tests__/importRooTaskHistory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/task-persistence/__tests__/taskMessages.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/task-persistence/apiMessages.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/task/Task.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "core/task/__tests__/Task.dispose.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/task/__tests__/Task.persistence.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "core/task/__tests__/Task.sticky-profile-race.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/task/__tests__/Task.throttle.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 24 + } + }, + "core/task/__tests__/apiConversationHistory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 23 + } + }, + "core/task/__tests__/ask-clear-approval-buttons.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 19 + } + }, + "core/task/__tests__/ask-queued-message-drain.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "core/task/__tests__/flushPendingToolResultsToHistory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 14 + } + }, + "core/task/__tests__/grace-retry-errors.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/task/__tests__/grounding-sources.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/task/__tests__/native-tools-filtering.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/task/__tests__/new-task-isolation.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/task/__tests__/reasoning-preservation.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 20 + } + }, + "core/task/__tests__/task-tool-history.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/task/apiConversationHistory.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "core/tools/BaseTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/CodebaseSearchTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/GenerateImageTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/NewTaskTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/ReadFileTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/tools/ToolRepetitionDetector.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/UpdateTodoListTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/UseMcpToolTool.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/tools/__tests__/ReadCommandOutputTool.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 16 + } + }, + "core/tools/__tests__/askFollowupQuestionTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 20 + } + }, + "core/tools/__tests__/attemptCompletionTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + } + }, + "core/tools/__tests__/editFileTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/tools/__tests__/editTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/__tests__/executeCommand.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "core/tools/__tests__/executeCommandTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "core/tools/__tests__/generateImageTool.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "core/tools/__tests__/listFilesTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "core/tools/__tests__/mcpServerRestriction.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "core/tools/__tests__/newTaskTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 26 + } + }, + "core/tools/__tests__/readFileTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 96 + } + }, + "core/tools/__tests__/runSlashCommandTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/tools/__tests__/searchReplaceTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/tools/__tests__/skillTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/tools/__tests__/updateTodoListTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/tools/__tests__/useMcpToolTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 21 + } + }, + "core/tools/__tests__/validateToolUse.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/tools/__tests__/writeToFileTool.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "core/tools/helpers/toolResultFormatting.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/tools/validateToolUse.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "core/webview/ClineProvider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "core/webview/__tests__/ClineProvider.apiHandlerRebuild.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 34 + } + }, + "core/webview/__tests__/ClineProvider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 195 + } + }, + "core/webview/__tests__/ClineProvider.sticky-mode.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 27 + } + }, + "core/webview/__tests__/ClineProvider.sticky-profile.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 15 + } + }, + "core/webview/__tests__/ClineProvider.taskHistory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "core/webview/__tests__/diagnosticsHandler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "core/webview/__tests__/messageEnhancer.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "core/webview/__tests__/skillsMessageHandler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/webview/__tests__/telemetrySettingsTracking.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/webview/__tests__/webviewMessageHandler.delete.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "core/webview/__tests__/webviewMessageHandler.edit.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/webview/__tests__/webviewMessageHandler.importRooHistory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 13 + } + }, + "core/webview/__tests__/webviewMessageHandler.readFileContent.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 56 + } + }, + "core/webview/__tests__/webviewMessageHandler.searchFiles.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "core/webview/__tests__/webviewMessageHandler.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 35 + } + }, + "core/webview/messageEnhancer.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "core/webview/webviewMessageHandler.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "integrations/editor/DiffViewProvider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/editor/__tests__/DiffViewProvider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 310 + } + }, + "integrations/editor/__tests__/EditorUtils.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "integrations/kimi-code/__tests__/oauth.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/misc/__tests__/export-markdown.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/misc/__tests__/open-file.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 11 + } + }, + "integrations/misc/__tests__/performance/processCarriageReturns.benchmark.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "integrations/terminal/__tests__/ExecaTerminalProcess.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "integrations/terminal/__tests__/OutputInterceptor.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "integrations/terminal/__tests__/TerminalProcess.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "integrations/terminal/__tests__/TerminalProcess.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "integrations/terminal/__tests__/TerminalProcessExec.bash.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "integrations/terminal/__tests__/TerminalProcessExec.cmd.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/terminal/__tests__/TerminalProcessExec.pwsh.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/terminal/__tests__/TerminalProcessInterpretExitCode.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "integrations/terminal/__tests__/TerminalProfile.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 34 + } + }, + "integrations/terminal/__tests__/TerminalRegistry.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 22 + } + }, + "integrations/terminal/__tests__/setupTerminalTests.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/terminal/__tests__/streamUtils/bashStream.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/terminal/__tests__/streamUtils/cmdStream.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/terminal/__tests__/streamUtils/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "integrations/terminal/__tests__/streamUtils/pwshStream.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "integrations/theme/getTheme.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "services/__tests__/zoo-code-auth.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/checkpoints/__tests__/ShadowCheckpointService.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/__tests__/config-manager.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/__tests__/manager.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 84 + } + }, + "services/code-index/__tests__/orchestrator.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 23 + } + }, + "services/code-index/__tests__/service-factory.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 43 + } + }, + "services/code-index/embedders/__tests__/bedrock.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "services/code-index/embedders/__tests__/gemini.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/code-index/embedders/__tests__/mistral.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/code-index/embedders/__tests__/ollama.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 15 + } + }, + "services/code-index/embedders/__tests__/openai-compatible.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 28 + } + }, + "services/code-index/embedders/__tests__/openai.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 10 + } + }, + "services/code-index/embedders/__tests__/openrouter.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/embedders/bedrock.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/code-index/embedders/ollama.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/code-index/embedders/openai-compatible.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/embedders/openai.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/code-index/embedders/openrouter.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/code-index/interfaces/vector-store.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/code-index/orchestrator.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/code-index/processors/__tests__/file-watcher.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 25 + } + }, + "services/code-index/processors/__tests__/parser.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 22 + } + }, + "services/code-index/processors/__tests__/scanner.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 26 + } + }, + "services/code-index/processors/file-watcher.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/code-index/processors/scanner.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/code-index/semble/__tests__/provider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 12 + } + }, + "services/code-index/semble/__tests__/semble-cli.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/code-index/semble/__tests__/semble-downloader.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 61 + } + }, + "services/code-index/semble/provider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/code-index/semble/semble-cli.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/code-index/shared/__tests__/validation-helpers.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/code-index/shared/validation-helpers.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "services/code-index/vector-store/__tests__/qdrant-client.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 87 + } + }, + "services/code-index/vector-store/qdrant-client.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "services/glob/__tests__/gitignore-integration.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/glob/__tests__/gitignore-test.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/glob/__tests__/list-files-limit.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 6 + } + }, + "services/glob/__tests__/list-files.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 22 + } + }, + "services/marketplace/MarketplaceManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/marketplace/SimpleInstaller.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "services/marketplace/__tests__/MarketplaceManager.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/marketplace/__tests__/SimpleInstaller.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 17 + } + }, + "services/marketplace/__tests__/marketplace-setting-check.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/mcp/McpHub.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 7 + } + }, + "services/mcp/McpOAuthClientProvider.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/mcp/McpServerManager.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/mcp/__tests__/McpHub.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 150 + } + }, + "services/mcp/__tests__/McpOAuthClientProvider.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 18 + } + }, + "services/mcp/__tests__/SecretStorageService.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/mcp/utils/__tests__/oauth.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "services/mcp/utils/callbackServer.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/mcp/utils/oauth.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/mdm/__tests__/MdmService.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 5 + } + }, + "services/ripgrep/__tests__/diagnostic.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "services/roo-config/__tests__/index.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 20 + } + }, + "services/roo-config/index.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/rules/__tests__/rules.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/search/__tests__/file-search.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "services/skills/__tests__/SkillsManager.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "services/tree-sitter/__tests__/helpers.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + } + }, + "services/tree-sitter/__tests__/markdownParser.spec.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + } +} \ No newline at end of file diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 37ee54ccfd..3a462c5c74 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -709,110 +709,118 @@ export const ContextManagementSettings = ({ : t("settings:contextManagement.condensingThreshold.profileDescription")} - - )} - {/* Idle Condensing */} - - setCachedStateField("idleCondenseContext", e.target.checked)} - data-testid="idle-condense-context-checkbox"> - {t("settings:contextManagement.idleCondensing.name")} - -
- {t("settings:contextManagement.idleCondensing.description")} -
-
- {idleCondenseContext && ( -
-
- -
- - {/* Idle Threshold Slider */} -
-
- handleIdleThresholdChange(value)} - data-testid="idle-condense-threshold-slider" - /> - {getCurrentIdleThresholdValue()}% -
-
- {selectedIdleProfile === "default" - ? t("settings:contextManagement.idleCondensing.thresholdDescription") - : t("settings:contextManagement.idleCondensing.thresholdProfileDescription")} -
-
- - {/* Idle Time Input */} -
-
+ {/* Idle Condensing */} + + setCachedStateField("idleCondenseContext", e.target.checked)} + data-testid="idle-condense-context-checkbox"> - {t("settings:contextManagement.idleCondensing.idleTime.label")} + {t("settings:contextManagement.idleCondensing.name")} - handleIdleTimeChange(parseInt((e.target as HTMLInputElement).value, 10))} - className="w-24" - data-testid="idle-condense-time-input" - /> - {t("settings:contextManagement.idleCondensing.idleTime.seconds")} -
+
- {t("settings:contextManagement.idleCondensing.idleTime.description")} + {t("settings:contextManagement.idleCondensing.description")}
-
- - {selectedIdleProfile !== "default" && ( -
- + + {idleCondenseContext && ( +
+
+ +
+ + {/* Idle Threshold Slider */} +
+
+ handleIdleThresholdChange(value)} + data-testid="idle-condense-threshold-slider" + /> + {getCurrentIdleThresholdValue()}% +
+
+ {selectedIdleProfile === "default" + ? t("settings:contextManagement.idleCondensing.thresholdDescription") + : t( + "settings:contextManagement.idleCondensing.thresholdProfileDescription", + )} +
+
+ + {/* Idle Time Input */} +
+
+ + {t("settings:contextManagement.idleCondensing.idleTime.label")} + + + handleIdleTimeChange(parseInt((e.target as HTMLInputElement).value, 10)) + } + className="w-24" + data-testid="idle-condense-time-input" + /> + {t("settings:contextManagement.idleCondensing.idleTime.seconds")} +
+
+ {t("settings:contextManagement.idleCondensing.idleTime.description")} +
+
+ + {selectedIdleProfile !== "default" && ( +
+ +
+ )}
)}
diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index 2d2339a893..bfb99ca572 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -475,6 +475,36 @@ describe("ContextManagementSettings", () => { // When auto condense is false, threshold slider should not be visible expect(screen.queryByTestId("condense-threshold-slider")).not.toBeInTheDocument() }) + + it("does not render idle condensing controls when autoCondenseContext is false", () => { + render( + , + ) + + // Idle condensing is nested under auto condense: everything idle + // should be hidden while auto condense is unchecked. + expect(screen.queryByTestId("idle-condense-context-checkbox")).not.toBeInTheDocument() + expect(screen.queryByTestId("idle-condense-threshold-slider")).not.toBeInTheDocument() + expect(screen.queryByTestId("idle-condense-time-input")).not.toBeInTheDocument() + }) + + it("renders idle condensing controls when autoCondenseContext is enabled", () => { + render( + , + ) + + expect(screen.getByTestId("idle-condense-context-checkbox")).toBeInTheDocument() + expect(screen.getByTestId("idle-condense-threshold-slider")).toBeInTheDocument() + expect(screen.getByTestId("idle-condense-time-input")).toBeInTheDocument() + }) }) describe("Accessibility", () => { diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index c45991054a..ad4325b7c7 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Condensació en repòs", - "description": "Quan el model ha acabat de respondre i el context està per sobre del llindar de repòs, es condensa el context quan passa el temps de repòs. Això evita que la condensació, costosa, es produeixi enmig de la feina activa. Escriure a l'àrea de prompt reinicia el temporitzador.", + "description": "Un llindar més baix per condensar el context durant els moments de repòs, així sempre tens un context net quan tornes al teclat.", "thresholdDescription": "Quan el context arriba a aquest percentatge en repòs, s'activa el temporitzador de condensació en repòs. Ha de ser igual o inferior al llindar d'activació de condensació.", "thresholdProfileDescription": "Llindar de repòs personalitzat només per a aquest perfil (substitueix el per defecte global, limitat al llindar de condensació del perfil)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index ad1677b768..f09d44d667 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Komprimierung im Leerlauf", - "description": "Wenn das Modell fertig geantwortet hat und der Kontext über dem Leerlauf-Schwellenwert liegt, wird der Kontext komprimiert, nachdem die Leerlaufzeit verstrichen ist. So findet die aufwendige Komprimierung nicht mitten in aktiver Arbeit statt. Wenn du in das Prompt-Feld schreibst, wird der Timer zurückgesetzt.", + "description": "Ein niedrigerer Schwellenwert zum Komprimieren des Kontexts im Leerlauf, damit du immer einen sauberen Kontext hast, wenn du zurück an die Tastatur kommst.", "thresholdDescription": "Wenn der Kontext im Leerlauf diesen Prozentsatz erreicht, läuft der Leerlauf-Komprimierungs-Timer. Muss gleich oder niedriger als der Schwellenwert für Kontextkomprimierung sein.", "thresholdProfileDescription": "Benutzerdefinierter Leerlauf-Schwellenwert nur für dieses Profil (überschreibt globalen Standard, begrenzt auf den Komprimierungsschwellenwert des Profils)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 04397af2c5..f6470ea9bd 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -841,7 +841,7 @@ }, "idleCondensing": { "name": "Idle condensing", - "description": "When the model has finished responding and the context is above the idle threshold, condense the context after the idle time elapses. This keeps expensive condensing from happening in the middle of active work. Typing in the prompt area resets the timer.", + "description": "A lower threshold for condensing the context during idle moments, so you always have a clean context when you return to the keyboard.", "thresholdDescription": "When the context reaches this percentage while idle, the idle condensing timer runs. Must be at or below the Condensing Trigger Threshold.", "thresholdProfileDescription": "Custom idle threshold for this profile only (overrides global default, capped at the profile's condensing threshold)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 115f1a647c..fab872c3f4 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -768,7 +768,7 @@ }, "idleCondensing": { "name": "Condensación en reposo", - "description": "Cuando el modelo ha terminado de responder y el contexto está por encima del umbral de reposo, se condensa el contexto al transcurrir el tiempo de reposo. Esto evita que la costosa condensación ocurra en medio del trabajo activo. Escribir en el área de prompt reinicia el temporizador.", + "description": "Un umbral más bajo para condensar el contexto durante los momentos de reposo, para que siempre tengas un contexto limpio cuando vuelvas al teclado.", "thresholdDescription": "Cuando el contexto alcanza este porcentaje durante el reposo, se activa el temporizador de condensación en reposo. Debe ser igual o inferior al umbral de condensación de contexto.", "thresholdProfileDescription": "Umbral de reposo personalizado solo para este perfil (anula el predeterminado global, limitado al umbral de condensación del perfil)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 50a511406d..fde6c31b3c 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -768,7 +768,7 @@ }, "idleCondensing": { "name": "Condensation en veille", - "description": "Lorsque le modèle a fini de répondre et que le contexte dépasse le seuil de veille, le contexte est condensé une fois le temps de veille écoulé. Cela évite que la condensation, coûteuse, se produise en pleine activité. Taper dans la zone de prompt réinitialise le minuteur.", + "description": "Un seuil plus bas pour condenser le contexte pendant les moments de veille, afin d’avoir toujours un contexte propre quand tu reviens au clavier.", "thresholdDescription": "Lorsque le contexte atteint ce pourcentage en veille, le minuteur de condensation en veille démarre. Doit être inférieur ou égal au seuil de condensation du contexte.", "thresholdProfileDescription": "Seuil de veille personnalisé pour ce profil uniquement (remplace le défaut global, plafonné au seuil de condensation du profil)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 1f7fd399bf..25b7379453 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "निष्क्रिय काल में संघनन", - "description": "जब मॉडल उत्तर देना समाप्त कर दे और संदर्भ निष्क्रिय सीमा से ऊपर हो, तो निष्क्रिय समय बीतने के बाद संदर्भ संघनित हो जाता है। इससे महंगा संघनन सक्रिय कार्य के बीच में नहीं होता। प्रॉम्प्ट क्षेत्र में टाइप करने से टाइमर रीसेट हो जाता है।", + "description": "निष्क्रिय क्षणों में संदर्भ संघनित करने के लिए एक निचली सीमा, ताकि जब आप कीबोर्ड पर वापस आएँ तो आपके पास हमेशा एक साफ़ संदर्भ हो।", "thresholdDescription": "जब निष्क्रिय अवस्था में संदर्भ इस प्रतिशत तक पहुँचता है, तो निष्क्रिय संघनन टाइमर चलता है। यह संघनन ट्रिगर सीमा के बराबर या उससे कम होना चाहिए।", "thresholdProfileDescription": "केवल इस प्रोफ़ाइल के लिए कस्टम निष्क्रिय सीमा (वैश्विक डिफ़ॉल्ट को ओवरराइड करती है, प्रोफ़ाइल की संघनन सीमा तक सीमित)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index abcc962fde..2bc4cf58c0 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -746,7 +746,7 @@ }, "idleCondensing": { "name": "Kondensasi saat idle", - "description": "Saat model selesai merespons dan konteks berada di atas ambang batas idle, konteks dikondensasi setelah waktu idle berlalu. Ini mencegah kondensasi yang mahal terjadi di tengah pekerjaan aktif. Mengetik di area prompt mengatur ulang timer.", + "description": "Ambang batas lebih rendah untuk mengkondensasi konteks saat idle, sehingga kamu selalu memiliki konteks bersih saat kembali ke keyboard.", "thresholdDescription": "Saat konteks mencapai persentase ini selama idle, timer kondensasi idle berjalan. Harus sama atau di bawah Ambang Batas Pemicu Kondensasi.", "thresholdProfileDescription": "Ambang batas idle kustom hanya untuk profil ini (menimpa default global, dibatasi pada ambang kondensasi profil)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index dd7df60127..b2ca1c00fe 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Condensazione inattiva", - "description": "Quando il modello ha finito di rispondere e il contesto è sopra la soglia di inattività, il contesto viene condensato allo scadere del tempo di inattività. Questo evita che la condensazione, costosa, avvenga nel mezzo del lavoro attivo. Digitare nell'area del prompt reimposta il timer.", + "description": "Una soglia più bassa per condensare il contesto durante i momenti di inattività, così avrai sempre un contesto pulito quando torni alla tastiera.", "thresholdDescription": "Quando il contesto raggiunge questa percentuale durante l'inattività, il timer di condensazione inattiva parte. Deve essere uguale o inferiore alla soglia di attivazione condensazione.", "thresholdProfileDescription": "Soglia di inattività personalizzata solo per questo profilo (sovrascrive il predefinito globale, limitata alla soglia di condensazione del profilo)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 76168eeca4..f663e290f9 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "アイドル時の圧縮", - "description": "モデルが応答を終え、コンテキストがアイドルしきい値を超えている場合、アイドル時間が経過した後にコンテキストを圧縮します。これにより、コストのかかる圧縮が作業の途中で行われるのを防ぎます。プロンプト領域に入力するとタイマーがリセットされます。", + "description": "アイドル時にコンテキストを圧縮するためのしきい値を低めに設定。キーボードに戻ったとき、いつでもクリーンなコンテキストが使えるようになります。", "thresholdDescription": "アイドル中にコンテキストがこのパーセンテージに達すると、アイドル圧縮タイマーが作動します。圧縮トリガーしきい値以下である必要があります。", "thresholdProfileDescription": "このプロファイルのみのカスタムアイドルしきい値(グローバルデフォルトを上書き。プロファイルの圧縮しきい値を上限とします)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 41be100028..d52c1468f2 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "유휴 시 압축", - "description": "모델이 응답을 마쳤고 컨텍스트가 유휴 임계값을 초과한 경우, 유휴 시간이 지나면 컨텍스트를 압축합니다. 이렇게 하면 비싼 압축이 작업 도중에 실행되는 것을 방지합니다. 프롬프트 영역에 입력하면 타이머가 초기화됩니다.", + "description": "유휴 시간에 컨텍스트를 압축하기 위한 더 낮은 임계값으로, 키보드로 돌아올 때마다 항상 깨끗한 컨텍스트를 유지할 수 있습니다.", "thresholdDescription": "유휴 상태인 동안 컨텍스트가 이 백분율에 도달하면 유휴 압축 타이머가 작동합니다. 압축 트리거 임계값 이하이어야 합니다.", "thresholdProfileDescription": "이 프로필만의 사용자 정의 유휴 임계값 (글로벌 기본값을 재정의하며, 프로필의 압축 임계값을 상한으로 제한)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index bea0e474c0..76f7e80ef0 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -768,7 +768,7 @@ }, "idleCondensing": { "name": "Comprimeren bij inactiviteit", - "description": "Wanneer het model klaar is met antwoorden en de context boven de inactiviteitsdrempel is, wordt de context gecomprimeerd nadat de inactiviteitstijd is verstreken. Zo vindt dure compressie niet midden in actief werk plaats. Typen in het promptgebied reset de timer.", + "description": "Een lagere drempel om de context tijdens inactieve momenten te comprimeren, zodat je altijd een schone context hebt als je terugkomt naar het toetsenbord.", "thresholdDescription": "Wanneer de context tijdens inactiviteit dit percentage bereikt, start de timer voor inactiviteitscompressie. Moet gelijk zijn aan of lager dan de compressie trigger drempelwaarde.", "thresholdProfileDescription": "Aangepaste inactiviteitsdrempel alleen voor dit profiel (overschrijft globale standaard, beperkt tot de compressiedrempel van het profiel)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 87af1cf0a8..2c73905ec4 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Kondensacja podczas bezczynności", - "description": "Gdy model skończy odpowiadać, a kontekst przekracza próg bezczynności, kontekst zostanie skondensowany po upływie czasu bezczynności. Dzięki temu kosztowna kondensacja nie zachodzi w trakcie aktywnej pracy. Pisanie w polu promptu resetuje timer.", + "description": "Niższy próg kondensacji kontekstu w chwilach bezczynności, dzięki czemu zawsze masz czysty kontekst, gdy wracasz do klawiatury.", "thresholdDescription": "Gdy kontekst osiągnie ten procent podczas bezczynności, uruchamia się timer kondensacji. Musi być równy lub niższy niż próg wyzwalania kondensacji.", "thresholdProfileDescription": "Niestandardowy próg bezczynności tylko dla tego profilu (zastępuje domyślny globalny, ograniczony do progu kondensacji profilu)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index af12b70f96..6c473df82d 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -1,4 +1,4 @@ -t{ +{ "back": "Voltar para a visão de tarefas", "common": { "save": "Salvar", @@ -758,7 +758,7 @@ t{ }, "idleCondensing": { "name": "Condensação em ociosidade", - "description": "Quando o modelo termina de responder e o contexto está acima do limite de ociosidade, o contexto é condensado após o tempo de ociosidade decorrer. Isso evita que a condensação, custosa, aconteça no meio do trabalho ativo. Digitar na área de prompt reinicia o temporizador.", + "description": "Um limite mais baixo para condensar o contexto durante momentos de ociosidade, para que você sempre tenha um contexto limpo ao voltar ao teclado.", "thresholdDescription": "Quando o contexto atinge essa porcentagem durante a ociosidade, o temporizador de condensação em ociosidade é iniciado. Deve ser igual ou menor que o Limite de Ativação de Condensação.", "thresholdProfileDescription": "Limite de ociosidade personalizado apenas para este perfil (substitui o padrão global, limitado ao limite de condensação do perfil)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index c57c4cfebd..02005f99df 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Сжатие в простое", - "description": "Когда модель завершила ответ, а контекст превышает порог простоя, контекст сжимается после истечения времени простоя. Это предотвращает дорогостоящее сжатие посреди активной работы. Ввод текста в поле промпта сбрасывает таймер.", + "description": "Более низкий порог сжатия контекста в моменты простоя — чтобы, возвращаясь к клавиатуре, вы всегда видели чистый контекст.", "thresholdDescription": "Когда во время простоя контекст достигает этого процента, запускается таймер сжатия в простое. Должен быть не выше порога запуска сжатия.", "thresholdProfileDescription": "Пользовательский порог простоя только для этого профиля (переопределяет глобальный по умолчанию, ограничен порогом сжатия профиля)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index c20957723f..461f877462 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Boşta sıkıştırma", - "description": "Model yanıt vermeyi bitirdiğinde ve bağlam boşta eşiğinin üzerindeyse, boşta süresi dolduğunda bağlam sıkıştırılır. Bu, maliyetli sıkıştırmanın aktif işin ortasında yapılmasını önler. İstem alanına yazmak zamanlayıcıyı sıfırlar.", + "description": "Boşta anlarda bağlamı sıkıştırmak için daha düşük bir eşik; klavyeye geri döndüğünde her zaman temiz bir bağlamın olur.", "thresholdDescription": "Boşta durumdayken bağlam bu yüzdelere ulaştığında boşta sıkıştırma zamanlayıcısı çalışır. Sıkıştırma Tetikleme Eşiği değerine eşit veya altında olmalıdır.", "thresholdProfileDescription": "Yalnızca bu profil için özel boşta eşiği (küresel varsayılanı geçersiz kılar, profilin sıkıştırma eşiğiyle sınırlıdır)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 90b2ea0db5..cd268a5aa6 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "Nén khi nhàn rỗi", - "description": "Khi mô hình đã trả lời xong và ngữ cảnh vượt ngưỡng nhàn rỗi, ngữ cảnh sẽ được nén sau khi thời gian nhàn rỗi trôi qua. Điều này giúp việc nén tốn kém không diễn ra giữa lúc đang làm việc. Gõ vào ô prompt sẽ đặt lại bộ đếm.", + "description": "Ngưỡng thấp hơn để nén ngữ cảnh trong những lúc nhàn rỗi, để bạn luôn có ngữ cảnh sạch khi quay lại bàn phím.", "thresholdDescription": "Khi ngữ cảnh đạt tỷ lệ phần trăm này trong lúc nhàn rỗi, bộ đếm nén khi nhàn rỗi sẽ chạy. Phải bằng hoặc thấp hơn Ngưỡng kích hoạt nén.", "thresholdProfileDescription": "Ngưỡng nhàn rỗi tùy chỉnh chỉ cho hồ sơ này (ghi đè mặc định toàn cục, giới hạn ở ngưỡng nén của hồ sơ)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index a20b0ddf0f..9441f84b5b 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -758,7 +758,7 @@ }, "idleCondensing": { "name": "空闲时压缩", - "description": "当模型完成响应且上下文高于空闲阈值时,在空闲时间结束后压缩上下文。这可避免昂贵的压缩发生在进行中的工作期间。在提示区输入内容会重置计时器。", + "description": "在空闲时段以更低的阈值压缩上下文,让你回到键盘前时始终拥有干净的上下文。", "thresholdDescription": "当上下文在空闲期间达到此百分比时,启动空闲压缩计时器。必须不高于压缩触发阈值。", "thresholdProfileDescription": "仅此配置文件的自定义空闲阈值(覆盖全局默认值,上限为该配置文件的压缩阈值)", "idleTime": { diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 6409450d32..227afd8a85 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -795,7 +795,7 @@ }, "idleCondensing": { "name": "空閒時壓縮", - "description": "當模型完成回應且上下文高於空閒閾值時,在空閒時間結束後壓縮上下文。這可避免昂貴的壓縮發生在進行中的工作期間。在提示區輸入內容會重設計時器。", + "description": "在空閒時段以更低的閾值壓縮上下文,讓你回到鍵盤前時始終擁有乾淨的上下文。", "thresholdDescription": "當上下文在空閒期間達到此百分比時,啟動空閒壓縮計時器。必須不高於壓縮觸發閾值。", "thresholdProfileDescription": "僅此設定檔的自訂空閒閾值(覆寫全域預設,上限為該設定檔的壓縮閾值)", "idleTime": { From 6df461ee8607b5347cc6c8b344b72c4c3fcde970 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 17:52:54 -0800 Subject: [PATCH 04/20] fix formatting and repair eslint-suppressions.json merge corruption --- src/core/task/Task.ts | 11 +- .../task/__tests__/Task.idle-condense.spec.ts | 34 +- src/core/webview/webviewMessageHandler.ts | 6 +- src/eslint-suppressions.json | 1441 ----------------- .../ContextManagementSettings.spec.tsx | 19 +- webview-ui/src/i18n/locales/pl/settings.json | 1 - 6 files changed, 31 insertions(+), 1481 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 80ef79e553..a44a151876 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2728,10 +2728,13 @@ export class Task extends EventEmitter implements TaskLike { private armIdleCondenseTimeout(seconds: number): void { this.cancelIdleCondenseTimer() - this.idleCondenseTimeoutRef = setTimeout(() => { - this.idleCondenseTimeoutRef = undefined - void this.onIdleCondenseTimerFired() - }, Math.max(0, seconds) * 1000) + this.idleCondenseTimeoutRef = setTimeout( + () => { + this.idleCondenseTimeoutRef = undefined + void this.onIdleCondenseTimerFired() + }, + Math.max(0, seconds) * 1000, + ) } /** diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index f393244a26..d82198b42e 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -51,21 +51,19 @@ type CondenseStubResult = { prevContextTokens: number } -function buildTask( - { - state = baseState(), - contextTokens = 600, - modelInfo = MODEL_INFO, - isCurrentTask = true, - providerExists = true, - }: { - state?: StateStub - contextTokens?: number - modelInfo?: ModelInfo - isCurrentTask?: boolean - providerExists?: boolean - } = {}, -) { +function buildTask({ + state = baseState(), + contextTokens = 600, + modelInfo = MODEL_INFO, + isCurrentTask = true, + providerExists = true, +}: { + state?: StateStub + contextTokens?: number + modelInfo?: ModelInfo + isCurrentTask?: boolean + providerExists?: boolean +} = {}) { const task = Object.create(Task.prototype) as Task // Context window is 1_000, so contextTokens 600 => 60% full. @@ -198,8 +196,10 @@ describe("Task idle condensing — resolveIdleCondenseTimeInSeconds", () => { warn.mockRestore() }) - const resolve = (state: { idleCondenseTimeInSeconds?: number; profileIdleCondenseTimes?: Record }) => - buildTask().task["resolveIdleCondenseTimeInSeconds"](state, "profile-1") + const resolve = (state: { + idleCondenseTimeInSeconds?: number + profileIdleCondenseTimes?: Record + }) => buildTask().task["resolveIdleCondenseTimeInSeconds"](state, "profile-1") test("uses the global value when the profile has no entry", () => { expect(resolve({ idleCondenseTimeInSeconds: 45 })).toBe(45) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 6d15b8c07e..f93135e7bc 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -902,14 +902,16 @@ export const webviewMessageHandler = async ( if (typeof value === "number") { const mainPercent = (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - (getGlobalState("autoCondenseContextPercent") ?? 100) + getGlobalState("autoCondenseContextPercent") ?? + 100 newValue = clampIdleCondensePercent(value, mainPercent) } } else if (key === "profileIdleThresholds") { if (value && typeof value === "object") { const mainPercent = (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - (getGlobalState("autoCondenseContextPercent") ?? 100) + getGlobalState("autoCondenseContextPercent") ?? + 100 newValue = Object.fromEntries( Object.entries(value as Record).map(([id, percent]) => [ id, diff --git a/src/eslint-suppressions.json b/src/eslint-suppressions.json index 0c56864767..42be14463c 100644 --- a/src/eslint-suppressions.json +++ b/src/eslint-suppressions.json @@ -1,1445 +1,4 @@ { - "api/providers/__tests__/anthropic-vertex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 31 - } - }, - "api/providers/__tests__/anthropic.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/__tests__/base-openai-compatible-provider-timeout.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/base-openai-compatible-provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/base-provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/__tests__/bedrock-custom-arn.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "api/providers/__tests__/bedrock-error-handling.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/__tests__/bedrock-inference-profiles.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "api/providers/__tests__/bedrock-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 19 - } - }, - "api/providers/__tests__/bedrock-reasoning.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/bedrock.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 37 - } - }, - "api/providers/__tests__/deepseek.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "api/providers/__tests__/gemini-handler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "api/providers/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 33 - } - }, - "api/providers/__tests__/kenari.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/kimi-code.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/lite-llm.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 36 - } - }, - "api/providers/__tests__/mimo.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "api/providers/__tests__/minimax.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/moonshot.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "api/providers/__tests__/native-ollama.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "api/providers/__tests__/openai-codex-native-tool-calls.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "api/providers/__tests__/openai-codex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 16 - } - }, - "api/providers/__tests__/openai-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "api/providers/__tests__/openai-native-usage.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 25 - } - }, - "api/providers/__tests__/openai-native.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 74 - } - }, - "api/providers/__tests__/openai-timeout.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/openai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/__tests__/opencode-go.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "api/providers/__tests__/poe.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/__tests__/qwen-code-native-tools.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/sambanova.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/unbound.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/__tests__/vertex.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/__tests__/zai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/anthropic-vertex.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/anthropic.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/base-openai-compatible-provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/providers/base-provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/providers/bedrock.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 32 - } - }, - "api/providers/deepseek.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/fetchers/__tests__/kenari.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/kimi-code.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/lmstudio.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/fetchers/__tests__/modelEndpointCache.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "api/providers/fetchers/__tests__/moonshot.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/ollama.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "api/providers/fetchers/__tests__/opencode-go.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/fetchers/__tests__/zoo-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/providers/fetchers/litellm.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/gemini.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/lite-llm.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/providers/mimo.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/providers/moonshot.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/providers/native-ollama.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/openai-codex.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 31 - } - }, - "api/providers/openai-native.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "api/providers/openai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/openrouter.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/providers/poe.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/requesty.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/unbound.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/providers/utils/__tests__/error-handler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 35 - } - }, - "api/providers/utils/__tests__/image-generation.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "api/providers/utils/__tests__/timeout-config.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/providers/utils/error-handler.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "api/providers/xai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/transform/__tests__/ai-sdk.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/anthropic-filter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/transform/__tests__/bedrock-converse-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/gemini-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/mistral-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/__tests__/model-params.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/__tests__/openai-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 49 - } - }, - "api/transform/__tests__/r1-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/__tests__/reasoning.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/__tests__/responses-api-input.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/__tests__/responses-api-stream.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/__tests__/zai-format.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "api/transform/ai-sdk.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/bedrock-converse-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "api/transform/cache-strategy/__tests__/cache-strategy.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "api/transform/caching/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/gemini-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "api/transform/openai-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "api/transform/r1-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "api/transform/responses-api-input.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "api/transform/responses-api-stream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "api/transform/zai-format.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/assistant-message/NativeToolCallParser.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-custom-tool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-images.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/assistant-message/__tests__/presentAssistantMessage-unknown-tool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/assistant-message/presentAssistantMessage.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/auto-approval/__tests__/AutoApprovalHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/checkpoints/__tests__/checkpoint.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/checkpoints/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/condense/__tests__/condense.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/condense/__tests__/foldedFileContext.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/condense/__tests__/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 24 - } - }, - "core/config/ContextProxy.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/config/CustomModesManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/ProviderSettingsManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/config/__tests__/ContextProxy.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/__tests__/CustomModesManager.exportImportSlugChange.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/config/__tests__/CustomModesManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "core/config/__tests__/CustomModesManager.yamlEdgeCases.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context-management/__tests__/context-management.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context-tracking/__tests__/FileContextTracker.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/context/context-management/__tests__/context-error-handling.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/context/context-management/context-error-handling.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/diff/stats.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/environment/__tests__/getEnvironmentDetails.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/ignore/__tests__/RooIgnoreController.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/__tests__/processUserContentMentions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/mentions/processUserContentMentions.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/message-manager/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "core/message-manager/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/prompts/__tests__/add-custom-instructions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/__tests__/get-prompt-component.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/__tests__/responses-rooignore.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "core/prompts/__tests__/system-prompt.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/prompts/sections/__tests__/custom-instructions-global.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "core/prompts/sections/__tests__/custom-instructions.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 55 - } - }, - "core/prompts/sections/__tests__/system-info.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/prompts/tools/native-tools/__tests__/converters.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/prompts/tools/native-tools/__tests__/read_file.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/task-persistence/__tests__/TaskHistoryStore.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/task-persistence/__tests__/importRooTaskHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/task-persistence/__tests__/taskMessages.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/task-persistence/apiMessages.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/task/Task.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "core/task/__tests__/Task.dispose.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/Task.persistence.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/task/__tests__/Task.sticky-profile-race.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/Task.throttle.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 24 - } - }, - "core/task/__tests__/apiConversationHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 23 - } - }, - "core/task/__tests__/ask-clear-approval-buttons.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 19 - } - }, - "core/task/__tests__/ask-queued-message-drain.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "core/task/__tests__/flushPendingToolResultsToHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 14 - } - }, - "core/task/__tests__/grace-retry-errors.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/task/__tests__/grounding-sources.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/task/__tests__/native-tools-filtering.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/__tests__/new-task-isolation.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/task/__tests__/reasoning-preservation.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "core/task/__tests__/task-tool-history.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/task/apiConversationHistory.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/tools/BaseTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/CodebaseSearchTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/GenerateImageTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/NewTaskTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/ReadFileTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/tools/ToolRepetitionDetector.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/UpdateTodoListTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/UseMcpToolTool.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/tools/__tests__/ReadCommandOutputTool.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 16 - } - }, - "core/tools/__tests__/askFollowupQuestionTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "core/tools/__tests__/attemptCompletionTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 11 - } - }, - "core/tools/__tests__/editFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/tools/__tests__/editTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/__tests__/executeCommand.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/tools/__tests__/executeCommandTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/tools/__tests__/generateImageTool.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "core/tools/__tests__/listFilesTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "core/tools/__tests__/mcpServerRestriction.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "core/tools/__tests__/newTaskTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 26 - } - }, - "core/tools/__tests__/readFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 96 - } - }, - "core/tools/__tests__/runSlashCommandTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/searchReplaceTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/skillTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/tools/__tests__/updateTodoListTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/useMcpToolTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 21 - } - }, - "core/tools/__tests__/validateToolUse.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/tools/__tests__/writeToFileTool.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "core/tools/helpers/toolResultFormatting.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/tools/validateToolUse.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "core/webview/ClineProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "core/webview/__tests__/ClineProvider.apiHandlerRebuild.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "core/webview/__tests__/ClineProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 195 - } - }, - "core/webview/__tests__/ClineProvider.sticky-mode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 27 - } - }, - "core/webview/__tests__/ClineProvider.sticky-profile.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 15 - } - }, - "core/webview/__tests__/ClineProvider.taskHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "core/webview/__tests__/diagnosticsHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "core/webview/__tests__/messageEnhancer.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "core/webview/__tests__/skillsMessageHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/telemetrySettingsTracking.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "core/webview/__tests__/webviewMessageHandler.cloudAuth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/webview/__tests__/webviewMessageHandler.delete.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "core/webview/__tests__/webviewMessageHandler.edit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/webviewMessageHandler.importRooHistory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 13 - } - }, - "core/webview/__tests__/webviewMessageHandler.readFileContent.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/__tests__/webviewMessageHandler.routerModels.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 56 - } - }, - "core/webview/__tests__/webviewMessageHandler.searchFiles.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "core/webview/__tests__/webviewMessageHandler.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 35 - } - }, - "core/webview/messageEnhancer.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "core/webview/webviewMessageHandler.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "integrations/editor/DiffViewProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/editor/__tests__/DiffViewProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 310 - } - }, - "integrations/editor/__tests__/EditorUtils.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "integrations/kimi-code/__tests__/oauth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/misc/__tests__/export-markdown.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/misc/__tests__/open-file.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 11 - } - }, - "integrations/misc/__tests__/performance/processCarriageReturns.benchmark.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/ExecaTerminalProcess.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "integrations/terminal/__tests__/OutputInterceptor.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "integrations/terminal/__tests__/TerminalProcess.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "integrations/terminal/__tests__/TerminalProcess.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.bash.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.cmd.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/TerminalProcessExec.pwsh.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/TerminalProcessInterpretExitCode.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "integrations/terminal/__tests__/TerminalProfile.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 34 - } - }, - "integrations/terminal/__tests__/TerminalRegistry.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "integrations/terminal/__tests__/setupTerminalTests.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/bashStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/cmdStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/terminal/__tests__/streamUtils/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "integrations/terminal/__tests__/streamUtils/pwshStream.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "integrations/theme/getTheme.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "services/__tests__/zoo-code-auth.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/checkpoints/__tests__/ShadowCheckpointService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/__tests__/config-manager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/__tests__/manager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 84 - } - }, - "services/code-index/__tests__/orchestrator.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 23 - } - }, - "services/code-index/__tests__/service-factory.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 43 - } - }, - "services/code-index/embedders/__tests__/bedrock.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/code-index/embedders/__tests__/gemini.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/mistral.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/ollama.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 15 - } - }, - "services/code-index/embedders/__tests__/openai-compatible.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 28 - } - }, - "services/code-index/embedders/__tests__/openai.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 10 - } - }, - "services/code-index/embedders/__tests__/openrouter.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/bedrock.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/embedders/ollama.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/embedders/openai-compatible.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/openai.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/code-index/embedders/openrouter.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/interfaces/vector-store.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/orchestrator.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/processors/__tests__/file-watcher.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 25 - } - }, - "services/code-index/processors/__tests__/parser.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "services/code-index/processors/__tests__/scanner.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 26 - } - }, - "services/code-index/processors/file-watcher.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/processors/scanner.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/semble/__tests__/provider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 12 - } - }, - "services/code-index/semble/__tests__/semble-cli.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/semble/__tests__/semble-downloader.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 61 - } - }, - "services/code-index/semble/provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/code-index/semble/semble-cli.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/code-index/shared/__tests__/validation-helpers.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/code-index/shared/validation-helpers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/code-index/vector-store/__tests__/qdrant-client.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 87 - } - }, - "services/code-index/vector-store/qdrant-client.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/glob/__tests__/gitignore-integration.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/glob/__tests__/gitignore-test.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/glob/__tests__/list-files-limit.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 6 - } - }, - "services/glob/__tests__/list-files.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 22 - } - }, - "services/marketplace/MarketplaceManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/marketplace/SimpleInstaller.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/marketplace/__tests__/MarketplaceManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/marketplace/__tests__/SimpleInstaller.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 17 - } - }, - "services/marketplace/__tests__/marketplace-setting-check.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/mcp/McpHub.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 7 - } - }, - "services/mcp/McpOAuthClientProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/mcp/McpServerManager.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/mcp/__tests__/McpHub.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 150 - } - }, - "services/mcp/__tests__/McpOAuthClientProvider.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 18 - } - }, - "services/mcp/__tests__/SecretStorageService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/mcp/utils/__tests__/oauth.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 9 - } - }, - "services/mcp/utils/callbackServer.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/mcp/utils/oauth.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/mdm/__tests__/MdmService.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 5 - } - }, - "services/ripgrep/__tests__/diagnostic.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, - "services/roo-config/__tests__/index.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 20 - } - }, - "services/roo-config/index.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/rules/__tests__/rules.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/search/__tests__/file-search.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 - } - }, - "services/skills/__tests__/SkillsManager.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - }, - "services/tree-sitter/__tests__/helpers.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 4 - } - }, - "services/tree-sitter/__tests__/markdownParser.spec.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 - } - } -} "api/providers/__tests__/anthropic-vertex.spec.ts": { "@typescript-eslint/no-explicit-any": { "count": 31 diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index bfb99ca572..3441dbc923 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -478,11 +478,7 @@ describe("ContextManagementSettings", () => { it("does not render idle condensing controls when autoCondenseContext is false", () => { render( - , + , ) // Idle condensing is nested under auto condense: everything idle @@ -494,11 +490,7 @@ describe("ContextManagementSettings", () => { it("renders idle condensing controls when autoCondenseContext is enabled", () => { render( - , + , ) expect(screen.getByTestId("idle-condense-context-checkbox")).toBeInTheDocument() @@ -626,12 +618,7 @@ describe("ContextManagementSettings", () => { }) it("keeps the idle slider max at 100 regardless of the main threshold", () => { - render( - , - ) + render() const slider = screen.getByTestId("idle-condense-threshold-slider") expect(slider).toHaveAttribute("max", "100") diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 2c73905ec4..b7ea28cfca 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -1168,4 +1168,3 @@ } } } - From 6710459fdddd567cf8cb5974882022aa26f0939d Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 18:17:52 -0800 Subject: [PATCH 05/20] fix Task.spec.ts condense stub to resolve with CondenseContextResult --- src/core/task/__tests__/Task.spec.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/task/__tests__/Task.spec.ts b/src/core/task/__tests__/Task.spec.ts index c1ee5a0b13..ae103f3830 100644 --- a/src/core/task/__tests__/Task.spec.ts +++ b/src/core/task/__tests__/Task.spec.ts @@ -65,7 +65,7 @@ type TaskTestAccess = { requestModelInfo: ModelInfo, ) => Array<{ role: string; content: unknown } | { type: "reasoning"; encrypted_content: string }> attemptApiRequestWithActiveApi: () => AsyncGenerator - condenseContextWithActiveApi: () => Promise + condenseContextWithActiveApi: () => Promise<{ condensed: boolean; prevContextTokens: number }> retiredApis: Set } @@ -2018,7 +2018,10 @@ describe("Cline", () => { const oldDispose = disposableApi(task) let release!: () => void vi.spyOn(getTaskTestAccess(task), "condenseContextWithActiveApi").mockImplementation( - () => new Promise((resolve) => (release = resolve)), + () => + new Promise<{ condensed: boolean; prevContextTokens: number }>((resolve) => { + release = () => resolve({ condensed: false, prevContextTokens: 0 }) + }), ) const condensing = task.condenseContext() From 19952cea13fb04e7a70b9b40ed2009f1f5ef524c Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Fri, 6 Nov 2026 19:37:46 -0800 Subject: [PATCH 06/20] test webview-ui idle-condense state and condense queueing for patch coverage --- .../chat/__tests__/ChatView.spec.tsx | 64 +++++++++++++ .../__tests__/ExtensionStateContext.spec.tsx | 90 +++++++++++++++++++ 2 files changed, 154 insertions(+) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index 42edc94b9f..9567cc1fc9 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -1822,4 +1822,68 @@ describe("ChatView - Context Condensing Indicator Tests", () => { { timeout: 2000 }, ) }) + + it("queues messages sent while a condense is in progress", async () => { + // While isCondensing is true, handleSendMessage must queue the message + // (queueMessage) instead of sending askResponse, so it drains via + // processQueuedMessages once the condensation finishes. + const { getByTestId } = renderChatView() + + // Hydrate with a completed API request so sending is enabled and not streaming + mockPostMessage({ + clineMessages: [ + { + type: "say", + say: "task", + ts: Date.now() - 2000, + text: "Initial task", + }, + { + type: "say", + say: "api_req_started", + ts: Date.now() - 1000, + text: JSON.stringify({ apiProtocol: "anthropic", cost: 0.05, tokensIn: 100, tokensOut: 50 }), + }, + ], + }) + + await waitFor(() => { + expect(getByTestId("chat-textarea")).toBeInTheDocument() + }) + + // Put ChatView into the condensing state the way the extension does + await act(async () => { + window.dispatchEvent( + new MessageEvent("message", { + data: { type: "condenseTaskContextStarted", text: "test-task-id" }, + }), + ) + await new Promise((resolve) => setTimeout(resolve, 0)) + }) + + vscodePostMessageMock.cleanup() + + const chatTextArea = getByTestId("chat-textarea") + const input = chatTextArea.querySelector("input")! as HTMLInputElement + + await act(async () => { + fireEvent.change(input, { target: { value: "queued during condense" } }) + fireEvent.keyDown(input, { key: "Enter", code: "Enter" }) + }) + + await waitFor(() => { + expect(vscode.postMessage).toHaveBeenCalledWith({ + type: "queueMessage", + text: "queued during condense", + images: [], + }) + }) + + expect(vscode.postMessage).not.toHaveBeenCalledWith( + expect.objectContaining({ + type: "askResponse", + askResponse: "messageResponse", + }), + ) + }) }) diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index d69a79309c..5a46db81ec 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -112,6 +112,50 @@ const ApiConfigTestComponent = () => { ) } +const IdleCondenseTestComponent = () => { + const { + idleCondenseContext, + setIdleCondenseContext, + idleCondenseContextPercent, + setIdleCondenseContextPercent, + idleCondenseTimeInSeconds, + setIdleCondenseTimeInSeconds, + profileIdleThresholds, + setProfileIdleThresholds, + profileIdleCondenseTimes, + setProfileIdleCondenseTimes, + } = useExtensionState() + + return ( +
+
{JSON.stringify(idleCondenseContext)}
+
{JSON.stringify(idleCondenseContextPercent)}
+
{JSON.stringify(idleCondenseTimeInSeconds)}
+
{JSON.stringify(profileIdleThresholds)}
+
{JSON.stringify(profileIdleCondenseTimes)}
+ + + + + +
+ ) +} + const InitialStateTestComponent = () => { const { alwaysAllowFollowupQuestions, @@ -689,6 +733,52 @@ describe("ExtensionStateContext", () => { expect(JSON.parse(screen.getByTestId("show-rooignored-files").textContent!)).toBe(true) }) + it("initializes idle condensing fields to their defaults", () => { + const state = createInitialExtensionState() + + expect(state.idleCondenseContext).toBe(false) + expect(state.idleCondenseContextPercent).toBe(50) + expect(state.idleCondenseTimeInSeconds).toBe(180) + expect(state.profileIdleThresholds).toEqual({}) + expect(state.profileIdleCondenseTimes).toEqual({}) + }) + + it("updates idle condensing fields through their setters", () => { + render( + + + , + ) + + expect(JSON.parse(screen.getByTestId("idle-condense").textContent!)).toBe(false) + expect(JSON.parse(screen.getByTestId("idle-condense-percent").textContent!)).toBe(50) + expect(JSON.parse(screen.getByTestId("idle-condense-time").textContent!)).toBe(180) + expect(JSON.parse(screen.getByTestId("profile-idle-thresholds").textContent!)).toEqual({}) + expect(JSON.parse(screen.getByTestId("profile-idle-condense-times").textContent!)).toEqual({}) + + act(() => { + screen.getByTestId("set-idle-condense-button").click() + }) + act(() => { + screen.getByTestId("set-idle-condense-percent-button").click() + }) + act(() => { + screen.getByTestId("set-idle-condense-time-button").click() + }) + act(() => { + screen.getByTestId("set-profile-idle-thresholds-button").click() + }) + act(() => { + screen.getByTestId("set-profile-idle-condense-times-button").click() + }) + + expect(JSON.parse(screen.getByTestId("idle-condense").textContent!)).toBe(true) + expect(JSON.parse(screen.getByTestId("idle-condense-percent").textContent!)).toBe(75) + expect(JSON.parse(screen.getByTestId("idle-condense-time").textContent!)).toBe(60) + expect(JSON.parse(screen.getByTestId("profile-idle-thresholds").textContent!)).toEqual({ architect: 40 }) + expect(JSON.parse(screen.getByTestId("profile-idle-condense-times").textContent!)).toEqual({ code: 90 }) + }) + it("initializes the write delay to the pre-hydration default", () => { // The initializer itself (not a merge fixture) must carry the shared // default: a regression that dropped it from createInitialExtensionState From 93f0d4f9adb4d9c3517e8de97811fe6e29a85722 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sat, 7 Nov 2026 17:19:31 -0800 Subject: [PATCH 07/20] fix: address review findings on idle-condense clamping, inheritance, and display - webviewMessageHandler: clamp each profileIdleThresholds entry against that profile's effective main threshold via computeEffectiveCondenseThreshold; normalize invalid profile threshold/delay overrides to the -1 inherit sentinel instead of clamping them into valid overrides - ContextManagementSettings: cap displayed idle threshold (slider + label) at the profile's effective main threshold to match runtime Math.min(idle, main) behavior, display-only - tests: ClineProvider.spec profile-threshold clamping/inheritance cases; ContextManagementSettings.spec 50%-idle/30%-main display cases; ChatView.spec hydrated-queue fixture --- src/core/task/Task.ts | 142 ++++++- .../task/__tests__/Task.idle-condense.spec.ts | 393 +++++++++++++++++- .../ask-queued-message-drain.spec.ts | 65 +++ .../webview/__tests__/ClineProvider.spec.ts | 100 ++++- src/core/webview/webviewMessageHandler.ts | 83 +++- .../chat/__tests__/ChatView.spec.tsx | 13 + .../settings/ContextManagementSettings.tsx | 9 +- .../ContextManagementSettings.spec.tsx | 48 +++ 8 files changed, 833 insertions(+), 20 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index a44a151876..f296bdd5bf 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -507,6 +507,29 @@ export class Task extends EventEmitter implements TaskLike { * until the task takes another action (a new model request or a user prompt). */ private lastActionWasCondense = false + /** + * True when the idle condense timer expired while API work was in flight and + * was therefore discarded. Consumed when the last in-flight request finishes: + * the timer is re-armed only if a follow-up ask is still pending, so a + * follow-up presented during a response stream still gets an idle condense. + */ + private idleCondenseRearmAfterApiWork = false + /** + * Bumped by user activity (currently every webview ask response) so a fired + * idle-condense evaluation that is still awaiting its gate can detect that + * the user engaged while it ran. A stale evaluation is discarded instead of + * summarizing over and overwriting the conversation updates it missed. + */ + private idleCondenseActivitySeq = 0 + /** + * Set while a condense (idle or manual) replaces the API history. `ask()` + * treats a landing response as still pending and the queue drain stays + * blocked, so a resuming request cannot append turns the summary — computed + * from the pre-condense snapshot — would then overwrite. Settled in the + * lease's finally on both success and failure, so waiting responses never + * remain blocked. + */ + private condenseHistoryBarrier?: Promise // Tool Use consecutiveMistakeCount: number = 0 @@ -1419,10 +1442,16 @@ export class Task extends EventEmitter implements TaskLike { * queue containing nothing but claims as available for a new consumer. * `isMessageQueued`/`isStatusMutable` keep `isEmpty()` semantics on purpose: * flipping those would re-enable interactive prompt timers whenever a claim - * is outstanding. + * is outstanding. The condense barrier blocks draining while a condense is + * replacing the API history, so the queued message's follow-up request cannot + * append turns the in-flight summary would then overwrite. */ private mayDrainQueuedMessageForAsk(): boolean { - return !this.blanketDeniedCommandThisTurn && this.messageQueueService.hasUnclaimed() + return ( + !this.blanketDeniedCommandThisTurn && + !this.condenseHistoryBarrier && + this.messageQueueService.hasUnclaimed() + ) } /** @@ -2406,7 +2435,14 @@ export class Task extends EventEmitter implements TaskLike { try { await pWaitFor( () => { - if (this.abort || this.askResponse !== undefined || this.lastMessageTs !== askTs) { + // While a condense is still replacing the API history, hold a + // landed response pending: delivering it would let the follow-up + // request append turns the summary (computed from the pre-condense + // snapshot) overwrites. Aborts and supersession still win + // immediately; the next poll (100ms) picks the response up once + // the barrier settles. + const responseReady = this.askResponse !== undefined && !this.condenseHistoryBarrier + if (this.abort || responseReady || this.lastMessageTs !== askTs) { return true } @@ -2519,6 +2555,9 @@ export class Task extends EventEmitter implements TaskLike { // The user is engaging with the task: stop any pending idle condense, and // let a future idle period condense again even if the last action condensed. this.cancelIdleCondenseTimer() + // Invalidate any idle-condense evaluation already in flight: the user's + // update must not be summarized away by a condense started before it. + this.idleCondenseActivitySeq++ this.lastActionWasCondense = false this.askResponse = askResponse @@ -2604,6 +2643,23 @@ export class Task extends EventEmitter implements TaskLike { void this.maybeStartIdleCondenseTimer() } + /** + * Re-check idle-condense eligibility after the relevant settings were + * saved. A task that has been waiting on the user since before idle + * condensing was enabled (or before its thresholds were loosened) has no + * countdown armed, and nothing else arms one for it; this gives it a fresh + * evaluation. A task with API work in flight stays ineligible, and every + * other existing gate (abort, active task, enabled flags, thresholds, + * in-flight condense, already-armed countdown) is re-checked by the shared + * arming path. + */ + public reevaluateIdleCondenseAfterSettingsSave(): void { + if (this.activeApiWork > 0) { + return + } + void this.maybeStartIdleCondenseTimer() + } + /** * Resolve the idle wait in seconds for the current model profile, mirroring * the profileThresholds semantics: -1 inherits the global value, a value @@ -2627,6 +2683,22 @@ export class Task extends EventEmitter implements TaskLike { return Math.max(0, globalSeconds) } + /** + * Resolve the profile id for this task's own provider profile. Delegated or + * reopened tasks keep a task-local profile that may differ from the + * provider's current profile, so profile-scoped overrides must be selected + * for the task, not the global selection. Falls back to the provider's + * current profile, then to "default" (same semantics as + * `getCurrentProfileId`). + */ + private async getTaskProfileId(state: { + currentApiConfigName?: string + listApiConfigMeta?: Array<{ id: string; name: string }> + }): Promise { + const apiConfigName = (await this.getTaskApiConfigName()) ?? state?.currentApiConfigName + return state?.listApiConfigMeta?.find((profile) => profile.name === apiConfigName)?.id ?? "default" + } + /** * Evaluate the idle-condense gate: enabled + active task + context above the * effective idle threshold. The idle threshold never exceeds the main @@ -2675,7 +2747,10 @@ export class Task extends EventEmitter implements TaskLike { settings: this.apiConfiguration, }) - const currentProfileId = this.getCurrentProfileId(state) + // Profile overrides follow the task's own provider profile: a delegated + // child or reopened task may use a different profile than the provider's + // current one, and its thresholds/delay must come from that profile. + const currentProfileId = await this.getTaskProfileId(state) const mainPercent = computeEffectiveCondenseThreshold({ globalPercent: state?.autoCondenseContextPercent ?? 100, profileThresholds: state?.profileThresholds ?? {}, @@ -2752,14 +2827,31 @@ export class Task extends EventEmitter implements TaskLike { return } // Something started (API request, tool, manual condense): the task is no - // longer idle. The next idle transition re-arms the timer. + // longer idle. If the in-flight work ends while a follow-up ask is still + // pending, the completion of the last request re-arms the timer (see + // `beginApiWork`); otherwise the next idle transition re-arms. if (this.activeApiWork > 0) { + this.idleCondenseRearmAfterApiWork = true return } + const activitySeq = this.idleCondenseActivitySeq const gate = await this.evaluateIdleCondense() if (!gate || gate.contextPercent < gate.idlePercent) { return } + // The gate is an async evaluation: the user may have answered (bumping + // the activity sequence) or a new request may have started (incrementing + // `activeApiWork`) while it ran. Condensing now would summarize and + // overwrite history without those updates, so discard the stale + // evaluation; the idle transition after the response re-arms the timer. + if ( + this.abort || + this.abandoned || + this.activeApiWork > 0 || + this.idleCondenseActivitySeq !== activitySeq + ) { + return + } this.idleCondenseInFlight = true let result: CondenseContextResult @@ -2790,6 +2882,19 @@ export class Task extends EventEmitter implements TaskLike { } } + /** + * True while the task is still waiting on a follow-up ask: no response has + * arrived and the last ask message is a complete follow-up at the current + * `lastMessageTs`. Mirrors the pending-ask check used when arming the timer. + */ + private hasPendingFollowupAsk(): boolean { + if (this.askResponse !== undefined) { + return false + } + const lastAsk = findLast(this.clineMessages, (message) => message.type === "ask") + return lastAsk?.ask === "followup" && lastAsk.ts === this.lastMessageTs && lastAsk.partial !== true + } + public approveAsk({ text, images }: { text?: string; images?: string[] } = {}) { this.handleWebviewAskResponse("yesButtonClicked", text, images) } @@ -2849,6 +2954,16 @@ export class Task extends EventEmitter implements TaskLike { for (const api of retired) { this.safeDisposeApi(api) } + // The idle condense timer may have expired and been discarded while this + // request was in flight (see `onIdleCondenseTimerFired`). Re-arm it now + // that the task is idle again, but only while a follow-up ask is still + // pending; any other idle transition re-arms the timer as usual. + if (this.idleCondenseRearmAfterApiWork) { + this.idleCondenseRearmAfterApiWork = false + if (this.hasPendingFollowupAsk()) { + void this.maybeStartIdleCondenseTimer() + } + } } } @@ -2940,6 +3055,14 @@ export class Task extends EventEmitter implements TaskLike { } private async condenseContextWithLease(): Promise { + // Hold ask responses while the summary below replaces the API history, so + // a resuming request cannot append turns the summary would overwrite. The + // barrier settles in `finally`, releasing waiting responses on both the + // success and the failure path. + let settleBarrier: () => void = () => {} + this.condenseHistoryBarrier = new Promise((resolve) => { + settleBarrier = resolve + }) const endApiWork = this.beginApiWork() try { const result = await this.condenseContextWithActiveApi() @@ -2949,6 +3072,8 @@ export class Task extends EventEmitter implements TaskLike { } return result } finally { + this.condenseHistoryBarrier = undefined + settleBarrier() endApiWork() } } @@ -3532,6 +3657,13 @@ export class Task extends EventEmitter implements TaskLike { // This is important in case the user deletes messages without resuming // the task first. this.hydrateApiConversationHistory(savedApiConversationHistory) + + // A condense persists its summary as the last API-history entry. Restore + // the in-memory suppression flag before the resume ask arms the idle + // condense timer, so a task closed right after a condense does not arm + // another idle condense on reopen. + this.lastActionWasCondense = savedApiConversationHistory.at(-1)?.isSummary === true + await this.settleInterruptedCreateSubtaskBeforeReplay() if ( this.pendingAction && diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index d82198b42e..755cd00326 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -1,7 +1,8 @@ // pnpm --dir src exec vitest run core/task/__tests__/Task.idle-condense.spec.ts -import type { ModelInfo, TokenUsage } from "@roo-code/types" +import type { ClineAsk, ClineMessage, ModelInfo, TokenUsage } from "@roo-code/types" import type { ContextManagementResult } from "../../context-management" +import type { ApiMessage } from "../../task-persistence/apiMessages" import { Task } from "../Task" @@ -22,6 +23,8 @@ type StateStub = Partial<{ profileThresholds: Record profileIdleThresholds: Record profileIdleCondenseTimes: Record + currentApiConfigName: string + listApiConfigMeta: Array<{ id: string; name: string }> }> const baseState = (overrides: StateStub = {}): StateStub => ({ @@ -136,7 +139,7 @@ describe("Task idle condensing — evaluateIdleCondense", () => { }) test("uses the profile idle threshold override for the current profile", async () => { - // No listApiConfigMeta => getCurrentProfileId() resolves to "default". + // No listApiConfigMeta => the task profile id resolves to "default". const { task } = buildTask({ state: baseState({ profileIdleThresholds: { default: 20 } }) }) const gate = await task["evaluateIdleCondense"]() @@ -144,6 +147,45 @@ describe("Task idle condensing — evaluateIdleCondense", () => { expect(gate?.idlePercent).toBe(20) }) + // Two profiles whose idle threshold/delay overrides differ from each other + // and from the global values, so a gate built from the wrong one is visible. + const twoProfileState = () => + baseState({ + currentApiConfigName: "global-profile", + listApiConfigMeta: [ + { id: "profile-global", name: "global-profile" }, + { id: "profile-child", name: "child-profile" }, + ], + profileThresholds: { "profile-global": 30, "profile-child": 70 }, + profileIdleThresholds: { "profile-global": 20, "profile-child": 40 }, + profileIdleCondenseTimes: { "profile-global": 5, "profile-child": 15 }, + }) + + test("uses the task-local profile overrides when the task keeps another profile", async () => { + const { task } = buildTask({ state: twoProfileState() }) + // A delegated child keeps the profile it was created with even though the + // user has since switched the provider's current profile. + task["taskApiConfigReady"] = Promise.resolve() + task["_taskApiConfigName"] = "child-profile" + + const gate = await task["evaluateIdleCondense"]() + + // Threshold and delay come from profile-child (clamped by its own main + // threshold 70), not the global profile's values. + expect(gate?.idlePercent).toBe(40) + expect(gate?.idleSeconds).toBe(15) + }) + + test("falls back to the provider's current profile when the task has none", async () => { + const { task } = buildTask({ state: twoProfileState() }) + + const gate = await task["evaluateIdleCondense"]() + + // No task-local profile name: the provider's current selection wins. + expect(gate?.idlePercent).toBe(20) + expect(gate?.idleSeconds).toBe(5) + }) + test("returns undefined when the provider is gone", async () => { const { task } = buildTask({ providerExists: false }) @@ -501,6 +543,91 @@ describe("Task idle condensing — timer expiry", () => { }) }) +describe("Task idle condensing — activity invalidates a pending expiry evaluation", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + // Arms the timer with the real gate (first getState call), then defers the + // next one so the expiry's re-evaluation stalls mid-flight, modelling + // activity landing while the async gate evaluation is still running. + function buildPendingGateTask() { + const built = buildTask() + // Object.create skips constructor field initialisers; the discarded + // evaluation must never touch this flag, so mirror the default. + built.task["idleCondenseInFlight"] = false + let resolveState: (state: StateStub) => void = () => {} + const pendingGate = new Promise((resolve) => { + resolveState = resolve + }) + let gateCalls = 0 + built.getState.mockImplementation(() => { + gateCalls++ + return gateCalls === 1 ? Promise.resolve(baseState()) : pendingGate + }) + const settleGate = () => { + resolveState(baseState()) + } + return { ...built, settleGate } + } + + // Arm and expire the timer so onIdleCondenseTimerFired is now awaiting the + // deferred gate. + async function expireIntoPendingGate(task: Task) { + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + } + + test("an answer landing during the gate evaluation cancels the condense", async () => { + const { task, condense, settleGate, postMessageToWebview } = buildPendingGateTask() + task["checkpointSave"] = vi.fn(async () => {}) + + await expireIntoPendingGate(task) + + // The user answers the follow-up while the expiry is still evaluating its gate. + task.handleWebviewAskResponse("messageResponse", "new prompt") + settleGate() + await vi.advanceTimersByTimeAsync(0) + + // The stale evaluation was discarded: no condense, no in-progress cue. + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + expect(task["idleCondenseInFlight"]).toBe(false) + }) + + test("work starting during the gate evaluation cancels the condense", async () => { + const { task, condense, settleGate, postMessageToWebview } = buildPendingGateTask() + + await expireIntoPendingGate(task) + + // A new request starts while the expiry is still evaluating its gate. + task["activeApiWork"] = 1 + settleGate() + await vi.advanceTimersByTimeAsync(0) + + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + expect(task["idleCondenseInFlight"]).toBe(false) + }) + + test("condenses normally when no activity lands during the gate evaluation", async () => { + const { task, condense, settleGate } = buildPendingGateTask() + + await expireIntoPendingGate(task) + + // The gate resolves while the task is still idle: the condense proceeds. + settleGate() + await vi.advanceTimersByTimeAsync(0) + + expect(condense).toHaveBeenCalledTimes(1) + }) +}) + describe("Task idle condensing — last-action-was-a-condense suppression", () => { // Uses the real condenseContextWithLease (the harness stub replaces it) by // restoring the prototype method on the instance and doubling the lease's @@ -599,3 +726,265 @@ describe("Task idle condensing — last-action-was-a-condense suppression", () = } }) }) + +describe("Task idle condensing — restoring last-action-was-a-condense on reopen", () => { + // Drives the real resumeTaskFromHistory through to the resume ask. Persistence + // reads, the webview ask (which arms the idle timer in production), the + // initialization bookkeeping (run-state transitions are covered elsewhere), + // and the task-loop handoff are stubbed; hydration stays real. + function buildResumeTask(savedApiConversationHistory: ApiMessage[]) { + const { task } = buildTask() + // Object.create skips constructor field initialisers; message hydration needs this Set. + task["cloudSyncedMessageTimestamps"] = new Set() + + task["getSavedClineMessages"] = vi.fn(async () => []) + task["getSavedApiConversationHistory"] = vi.fn(async () => savedApiConversationHistory) + task["markInitialized"] = vi.fn() + + let lastActionWasCondenseAtAsk: boolean | undefined + // Capturing the flag inside the ask stub proves the restore lands before the + // resume ask arms the idle condense timer. + task["ask"] = vi.fn(async (_askType: ClineAsk) => { + lastActionWasCondenseAtAsk = task["lastActionWasCondense"] + return { response: "yesButtonClicked" as const } + }) + task["overwriteApiConversationHistory"] = vi.fn(async (_history: ApiMessage[]) => {}) + const initiateTaskLoop = vi.fn(async (_content: unknown[]) => {}) + task["initiateTaskLoop"] = initiateTaskLoop + + return { task, initiateTaskLoop, flagAtAsk: () => lastActionWasCondenseAtAsk } + } + + test("reopening a task whose history ends in a condense summary marks the last action", async () => { + const { task, initiateTaskLoop, flagAtAsk } = buildResumeTask([ + { role: "user", content: [{ type: "text", text: "do the thing" }] }, + { role: "assistant", content: [{ type: "text", text: "all set" }] }, + { + role: "user", + content: [{ type: "text", text: "Summary of the condensed conversation..." }], + isSummary: true, + condenseId: "condense-1", + }, + ]) + + await task["resumeTaskFromHistory"]() + + expect(flagAtAsk()).toBe(true) + expect(task["lastActionWasCondense"]).toBe(true) + expect(initiateTaskLoop).toHaveBeenCalledTimes(1) + }) + + test("reopening a task with a plain history leaves the flag cleared", async () => { + const { task, initiateTaskLoop, flagAtAsk } = buildResumeTask([ + { role: "user", content: [{ type: "text", text: "do the thing" }] }, + { role: "assistant", content: [{ type: "text", text: "still working on it" }] }, + ]) + + await task["resumeTaskFromHistory"]() + + expect(flagAtAsk()).toBe(false) + expect(task["lastActionWasCondense"]).toBe(false) + expect(initiateTaskLoop).toHaveBeenCalledTimes(1) + }) +}) + +describe("Task idle condensing — re-arm after API work discards the timer", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + const FOLLOWUP_TS = 1_000 + + // A task waiting on a follow-up ask while a response stream is still active. + function buildApiWorkTask(ask: ClineAsk = "followup") { + const built = buildTask() + const { task } = built + // Object.create skips constructor field initialisers; beginApiWork + // flushes the retired-handler set when the last request finishes. + task["retiredApis"] = new Set() + task["lastMessageTs"] = FOLLOWUP_TS + task["askResponse"] = undefined + const pendingAsk: ClineMessage = { ts: FOLLOWUP_TS, type: "ask", ask, text: "What should I do next?" } + task["clineMessages"] = [pendingAsk] + return built + } + + // Arm the timer for the pending follow-up, then let it expire while the + // task still has a request in flight, so the expiry discards the timer. + async function discardTimerDuringApiWork(task: Task) { + const endApiWork = task["beginApiWork"]() + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(vi.getTimerCount()).toBe(0) + expect(task["idleCondenseRearmAfterApiWork"]).toBe(true) + return endApiWork + } + + test("re-arms the timer when the last request finishes with the follow-up still pending", async () => { + const { task, condense } = buildApiWorkTask() + const endApiWork = await discardTimerDuringApiWork(task) + expect(condense).not.toHaveBeenCalled() + + endApiWork() + // Flush the microtasks of the re-arm kicked off by the work completion. + await vi.advanceTimersByTimeAsync(0) + + // The timer was re-armed once, and the flag was consumed. + expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + expect(vi.getTimerCount()).toBe(1) + + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + // A successful condense is now the last action: no further re-arm. + expect(vi.getTimerCount()).toBe(0) + }) + + test("does not re-arm once the follow-up has been answered", async () => { + const { task, condense } = buildApiWorkTask() + const endApiWork = await discardTimerDuringApiWork(task) + + task["askResponse"] = "messageResponse" + endApiWork() + await vi.advanceTimersByTimeAsync(0) + + expect(vi.getTimerCount()).toBe(0) + expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + + await vi.advanceTimersByTimeAsync(60_000) + expect(condense).not.toHaveBeenCalled() + }) + + test.each([ + ["a different pending ask", () => "resume_task" as ClineAsk], + ["a partial follow-up ask", () => "followup" as ClineAsk], + ])( + "does not re-arm when the stream ends with %s", + async (_label, pickAsk) => { + const ask = pickAsk() + const { task, condense } = buildApiWorkTask(ask) + if (ask === "followup") { + // Only a complete follow-up counts as pending. + ;(task["clineMessages"][0] as ClineMessage).partial = true + } + const endApiWork = await discardTimerDuringApiWork(task) + + endApiWork() + await vi.advanceTimersByTimeAsync(0) + + expect(vi.getTimerCount()).toBe(0) + expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + + await vi.advanceTimersByTimeAsync(60_000) + expect(condense).not.toHaveBeenCalled() + }, + ) +}) + +describe("Task idle condensing — history barrier serializes ask responses", () => { + // The lease sets condenseHistoryBarrier so a pending ask holds a landing + // response and the queue drain stays blocked while the summary replaces the + // API history. The barrier must settle on both the success and failure + // paths so waiting responses never remain blocked. + function buildBarrierTask(summarize: () => Promise) { + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + task["beginApiWork"] = vi.fn(() => vi.fn()) + task["condenseContextWithActiveApi"] = vi.fn(summarize) + return task + } + + test("the barrier is held while the summary runs and released once it succeeds", async () => { + let barrierDuringSummarize: Promise | undefined + const task = buildBarrierTask(async () => { + barrierDuringSummarize = task["condenseHistoryBarrier"] + return { condensed: true, newContextTokens: 100, prevContextTokens: 600 } + }) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + + await task["condenseContextWithLease"]() + + expect(barrierDuringSummarize).toBeInstanceOf(Promise) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + }) + + test("a condense that throws releases the barrier so responses are not blocked", async () => { + let barrierDuringSummarize: Promise | undefined + const task = buildBarrierTask(async () => { + barrierDuringSummarize = task["condenseHistoryBarrier"] + throw new Error("summarize failed") + }) + + await expect(task["condenseContextWithLease"]()).rejects.toThrow("summarize failed") + + expect(barrierDuringSummarize).toBeInstanceOf(Promise) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + }) +}) + +describe("Task idle condensing — re-evaluation after settings save", () => { + // Saving idle-condense settings re-evaluates the waiting task: enabling + // the feature (or loosening a threshold) while the task is already idle + // above the threshold must start a countdown that nothing else armed. + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + test("arms a countdown for a task already idle above a newly enabled threshold", async () => { + // Idle condensing off: no countdown was ever armed for this waiting task. + const state = baseState({ idleCondenseContext: false }) + const { task } = buildTask({ state }) + expect(vi.getTimerCount()).toBe(0) + + // The save lands, then the handler re-evaluates the waiting task. + state.idleCondenseContext = true + task.reevaluateIdleCondenseAfterSettingsSave() + // Flush the eligibility check's resolved-promise chain without moving + // the fake clock, so the freshly armed countdown is not fired. + await vi.advanceTimersByTimeAsync(0) + + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + expect(vi.getTimerCount()).toBe(1) + }) + + test("keeps a task with API work in flight ineligible", async () => { + const { task } = buildTask() + task["activeApiWork"] = 1 + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + }) + + test("keeps an already-armed countdown untouched", async () => { + const { task } = buildTask() + task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + // maybeStartIdleCondenseTimer no-ops while a timer is armed: still one, + // and the fake clock never reached its deadline. + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + expect(vi.getTimerCount()).toBe(1) + }) + + test("a save that disables the feature does not arm a countdown", async () => { + const { task } = buildTask({ state: baseState({ idleCondenseContext: false }) }) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + }) +}) diff --git a/src/core/task/__tests__/ask-queued-message-drain.spec.ts b/src/core/task/__tests__/ask-queued-message-drain.spec.ts index bb74531d45..1a6b45ff98 100644 --- a/src/core/task/__tests__/ask-queued-message-drain.spec.ts +++ b/src/core/task/__tests__/ask-queued-message-drain.spec.ts @@ -48,6 +48,71 @@ describe("Task.ask queued message drain", () => { expect(result.text).toBe("picked answer") }) + // Mirrors the release protocol in condenseContextWithLease's finally: clear + // the field, then settle the promise it handed to waiters. + function installCondenseBarrier(task: Task): () => void { + let settle!: () => void + task["condenseHistoryBarrier"] = new Promise((resolve) => { + settle = resolve + }) + return () => { + task["condenseHistoryBarrier"] = undefined + settle() + } + } + + it("holds the queued-message drain while a condense holds the history", async () => { + const task = await createTask() + + // Stand in for condenseContextWithLease summarizing: it replaces the API + // history from a pre-condense snapshot, so the drain must not claim a + // queued message whose follow-up request would append turns the summary + // overwrites. + const releaseBarrier = installCondenseBarrier(task) + task.messageQueueService.addMessage("picked answer") + + const askPromise = task.ask("followup", "Q?", false) + + const premature = await Promise.race([ + askPromise, + new Promise<"pending">((resolve) => setTimeout(() => resolve("pending"), 250)), + ]) + expect(premature).toBe("pending") + // Not even claimed: the message is intact for the post-settle drain. + expect(task.messageQueueService.messages[0]?.text).toBe("picked answer") + + releaseBarrier() + const result = await askPromise + expect(result).toMatchObject({ response: "messageResponse", text: "picked answer" }) + }) + + it("holds a direct ask response while a condense holds the history", async () => { + const task = await createTask() + + const releaseBarrier = installCondenseBarrier(task) + + const askPromise = task.ask("followup", "Q?", false) + + // The user resumes mid-summarize once the ask is waiting (the same + // deferred-delivery timing the other tests use). The response lands but + // stays pending: delivering it would let the follow-up request append + // turns the in-flight summary then overwrites. + await new Promise((resolve) => setTimeout(resolve, 50)) + task.handleWebviewAskResponse("messageResponse", "answered mid-condense") + + const premature = await Promise.race([ + askPromise, + new Promise<"pending">((resolve) => setTimeout(() => resolve("pending"), 250)), + ]) + expect(premature).toBe("pending") + // The response did land — only its delivery is held. + expect(task["askResponse"]).toBe("messageResponse") + + releaseBarrier() + const result = await askPromise + expect(result).toMatchObject({ response: "messageResponse", text: "answered mid-condense" }) + }) + it("does not consume queued messages for command_output asks", async () => { const task = await createTask() diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 49607cf3d7..3142c812f3 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4621,15 +4621,50 @@ describe("ClineProvider", () => { await getMessageHandler()({ type: "updateSettings", updatedSettings: { - profileIdleThresholds: { inherited: -1, capped: 90, floored: 1 }, + profileIdleThresholds: { inherited: -1, capped: 90, belowMin: 1, aboveMax: 150 }, autoCondenseContextPercent: 80, }, }) + // 90 clamps to the global main threshold; out-of-bounds values keep global + // inheritance instead of becoming valid overrides through clamping. expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { inherited: -1, capped: 80, - floored: 5, + belowMin: -1, + aboveMax: -1, + }) + }) + + test("clamps profileIdleThresholds against each profile's own main threshold", async () => { + await provider.resolveWebviewView(mockWebviewView) + + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { + // Global main is 40; "raised" opts into 90 and "inherited" inherits via -1. + autoCondenseContextPercent: 40, + profileThresholds: { raised: 90, lowered: 60, inherited: -1 }, + profileIdleThresholds: { + raised: 70, + lowered: 70, + inherited: 70, + fallback: 70, + idleInherited: -1, + }, + }, + }) + + // "raised" is clamped against its profile threshold (90) and stays 70 instead of + // being lowered to the global 40; "lowered" is capped at its profile threshold (60); + // "inherited" has a -1 profile threshold so it falls back to the global 40, as does + // "fallback" which has no profile threshold entry at all; an idle -1 entry is kept. + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { + raised: 70, + lowered: 60, + inherited: 40, + fallback: 40, + idleInherited: -1, }) }) @@ -4654,12 +4689,15 @@ describe("ClineProvider", () => { await getMessageHandler()({ type: "updateSettings", - updatedSettings: { profileIdleCondenseTimes: { inherited: -1, zeroed: -3.4, rounded: 10.4 } }, + updatedSettings: { profileIdleCondenseTimes: { inherited: -1, negative: -3.4, zero: 0, rounded: 10.4 } }, }) + // A negative delay keeps global inheritance instead of clamping into a + // valid (immediate) 0s override; 0 remains a legitimate explicit override. expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleCondenseTimes", { inherited: -1, - zeroed: 0, + negative: -1, + zero: 0, rounded: 10, }) }) @@ -4681,6 +4719,60 @@ describe("ClineProvider", () => { await expect(getMessageHandler()({ type: "idleCondenseReset" })).resolves.toBeUndefined() }) + + test("saving an idle-condense setting re-evaluates the active task", async () => { + await provider.resolveWebviewView(mockWebviewView) + const reevaluateIdleCondenseAfterSettingsSave = vi.fn() + // Double only provides the member the re-evaluation call touches. + vi.spyOn(provider, "getCurrentTask").mockReturnValue({ + reevaluateIdleCondenseAfterSettingsSave, + } as unknown as Task) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseContext: true } }) + + expect(reevaluateIdleCondenseAfterSettingsSave).toHaveBeenCalledTimes(1) + }) + + test.each([ + ["idleCondenseContextPercent", 60], + ["idleCondenseTimeInSeconds", 60], + ["profileIdleThresholds", { a: 60 }], + ["profileIdleCondenseTimes", { a: 60 }], + ["autoCondenseContext", true], + ["autoCondenseContextPercent", 90], + ["profileThresholds", { a: 90 }], + ])("saving the related key %s also re-evaluates the active task", async (key, value) => { + await provider.resolveWebviewView(mockWebviewView) + const reevaluateIdleCondenseAfterSettingsSave = vi.fn() + vi.spyOn(provider, "getCurrentTask").mockReturnValue({ + reevaluateIdleCondenseAfterSettingsSave, + } as unknown as Task) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { [key]: value } }) + + expect(reevaluateIdleCondenseAfterSettingsSave).toHaveBeenCalledTimes(1) + }) + + test("saving an unrelated setting does not re-evaluate the active task", async () => { + await provider.resolveWebviewView(mockWebviewView) + const reevaluateIdleCondenseAfterSettingsSave = vi.fn() + vi.spyOn(provider, "getCurrentTask").mockReturnValue({ + reevaluateIdleCondenseAfterSettingsSave, + } as unknown as Task) + + await getMessageHandler()({ type: "updateSettings", updatedSettings: { soundEnabled: true } }) + + expect(reevaluateIdleCondenseAfterSettingsSave).not.toHaveBeenCalled() + }) + + test("saving an idle-condense setting without an active task does not throw", async () => { + await provider.resolveWebviewView(mockWebviewView) + vi.spyOn(provider, "getCurrentTask").mockReturnValue(undefined) + + await expect( + getMessageHandler()({ type: "updateSettings", updatedSettings: { idleCondenseContext: true } }), + ).resolves.toBeUndefined() + }) }) describe("auto-close settings are included in posted state", () => { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index f93135e7bc..01c6174efc 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -103,6 +103,7 @@ import { resolveDefaultSaveUri, saveLastExportPath } from "../../utils/export" import { getCommand } from "../../utils/commands" import { getLMStudioModels } from "../../api/providers/fetchers/lmstudio" import { MIN_CONDENSE_THRESHOLD, MAX_CONDENSE_THRESHOLD } from "../condense" +import { computeEffectiveCondenseThreshold } from "../context-management" const ALLOWED_VSCODE_SETTINGS = new Set(["terminal.integrated.inheritEnv"]) @@ -116,6 +117,22 @@ function clampIdleCondensePercent(value: number, mainPercent: number): number { return Math.min(Math.max(value, MIN_CONDENSE_THRESHOLD), upper) } +/** + * Setting keys whose save can change a waiting task's idle-condense + * eligibility: enabling the feature or any threshold/time the idle gate + * reads. Saving any other key does not trigger a re-evaluation. + */ +const IDLE_CONDENSE_SETTING_KEYS = new Set([ + "idleCondenseContext", + "idleCondenseContextPercent", + "idleCondenseTimeInSeconds", + "profileIdleThresholds", + "profileIdleCondenseTimes", + "autoCondenseContext", + "autoCondenseContextPercent", + "profileThresholds", +]) + // Serializes handling of "telemetrySetting" messages. Each invocation reads the previous // setting, awaits a persistence write, then applies the new live telemetry state -- with no // serialization, two rapid messages (e.g. a fast toggle) can interleave across those awaits: @@ -762,6 +779,7 @@ export const webviewMessageHandler = async ( // settings page keeps the user's edits as unsaved after a failure. The error is then thrown, as it always was. let failed = false let failure: unknown + let idleCondenseSettingsChanged = false try { if (!message.updatedSettings) break @@ -908,15 +926,47 @@ export const webviewMessageHandler = async ( } } else if (key === "profileIdleThresholds") { if (value && typeof value === "object") { - const mainPercent = + const globalMainPercent = (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? getGlobalState("autoCondenseContextPercent") ?? 100 + // Each profile's idle override may only be clamped against that + // profile's own effective main threshold, since that is what the + // runtime resolves per profile; clamping against the global + // threshold could silently lower a profile's idle trigger below + // what the user selected. + const profileMainThresholds = + (message.updatedSettings.profileThresholds as Record | undefined) ?? + getGlobalState("profileThresholds") ?? + {} newValue = Object.fromEntries( - Object.entries(value as Record).map(([id, percent]) => [ - id, - percent === -1 ? -1 : clampIdleCondensePercent(percent, mainPercent), - ]), + Object.entries(value as Record).map(([id, percent]) => { + // Mirror computeEffectiveCondenseThreshold's resolve semantics: + // -1 inherits and a value within the shared bounds is a valid + // override; anything else (e.g. 1%) must preserve global + // inheritance instead of becoming a valid override through + // clamping (which would silently condense below the global + // idle threshold). + if ( + percent === -1 || + !Number.isFinite(percent) || + percent < MIN_CONDENSE_THRESHOLD || + percent > MAX_CONDENSE_THRESHOLD + ) { + return [id, -1] + } + return [ + id, + clampIdleCondensePercent( + percent, + computeEffectiveCondenseThreshold({ + globalPercent: globalMainPercent, + profileThresholds: profileMainThresholds, + currentProfileId: id, + }), + ), + ] + }), ) } } else if (key === "idleCondenseTimeInSeconds") { @@ -928,13 +978,34 @@ export const webviewMessageHandler = async ( newValue = Object.fromEntries( Object.entries(value as Record).map(([id, seconds]) => [ id, - seconds === -1 ? -1 : Math.max(0, Math.round(seconds)), + // Mirror resolveIdleCondenseTimeInSeconds' resolve semantics: + // -1 inherits the global wait and any other non-negative number + // is a valid override; anything else (e.g. -7s) must preserve + // global inheritance instead of clamping into a valid override + // (which would silently condense on an immediate 0s trigger). + seconds === -1 || !Number.isFinite(seconds) || seconds < 0 + ? -1 + : Math.round(seconds), ]), ) } } await provider.contextProxy.setValue(key as keyof RooCodeSettings, newValue) + + if (IDLE_CONDENSE_SETTING_KEYS.has(key)) { + idleCondenseSettingsChanged = true + } + } + + // Saving these settings can change idle-condense eligibility: a + // task waiting on the user above the idle threshold has no + // countdown armed (and nothing else arms one) when the feature is + // only just enabled or its thresholds loosened. Let the active + // task re-run the full eligibility check; tasks with API work in + // flight stay ineligible and an already-armed countdown is kept. + if (idleCondenseSettingsChanged) { + provider.getCurrentTask()?.reevaluateIdleCondenseAfterSettingsSave() } } catch (error) { failed = true diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index 9567cc1fc9..cc6d14003b 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -1844,6 +1844,12 @@ describe("ChatView - Context Condensing Indicator Tests", () => { ts: Date.now() - 1000, text: JSON.stringify({ apiProtocol: "anthropic", cost: 0.05, tokensIn: 100, tokensOut: 50 }), }, + { + type: "say", + say: "api_req_finished", + ts: Date.now() - 500, + text: JSON.stringify({ cost: 0.05, tokensIn: 100, tokensOut: 50 }), + }, ], }) @@ -1851,6 +1857,13 @@ describe("ChatView - Context Condensing Indicator Tests", () => { expect(getByTestId("chat-textarea")).toBeInTheDocument() }) + // Pin the precondition: sending is enabled and not streaming, so the + // only reason for queueing below is isCondensing. + await waitFor(() => { + const input = getByTestId("chat-textarea").querySelector("input")! + expect(input.getAttribute("data-sending-disabled")).toBe("false") + }) + // Put ChatView into the condensing state the way the extension does await act(async () => { window.dispatchEvent( diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 3a462c5c74..be53972a0d 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -208,16 +208,19 @@ export const ContextManagementSettings = ({ return profileThreshold } - // Helper function to get the current idle threshold value based on selected profile + // Helper function to get the current idle threshold value based on selected profile. + // The displayed value is capped at the profile's effective main threshold to match + // the runtime behavior (Task.ts resolves idlePercent = Math.min(idlePercentSetting, + // mainPercent)); the inherited setting itself is left unchanged. const getCurrentIdleThresholdValue = () => { if (selectedIdleProfile === "default") { return idleCondenseContextPercent } const profileThreshold = profileIdleThresholds[selectedIdleProfile] if (profileThreshold === undefined || profileThreshold === -1) { - return idleCondenseContextPercent + return Math.min(idleCondenseContextPercent, getMainThresholdForIdleProfile()) } - return profileThreshold + return Math.min(profileThreshold, getMainThresholdForIdleProfile()) } // Helper function to handle idle threshold changes (value clamped to the main threshold) diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index 3441dbc923..ac077749c1 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -763,5 +763,53 @@ describe("ContextManagementSettings", () => { expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { "config-1": 51 }) expect(vscode.postMessage).not.toHaveBeenCalledWith(expect.objectContaining({ type: "updateSettings" })) }) + + it("displays an inherited idle threshold capped at the profile main threshold", () => { + // Runtime resolves idlePercent = Math.min(idlePercentSetting, mainPercent) + // per profile, so a profile inheriting the 50% global idle threshold + // while capping at a 30% main threshold must display 30%, not 50%. + render( + , + ) + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("30") + expect(screen.getByText("30%")).toBeInTheDocument() + }) + + it("displays a profile idle override above its main threshold as capped", () => { + render( + , + ) + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("40") + expect(screen.getByText("40%")).toBeInTheDocument() + }) + + it("leaves a profile idle override below its main threshold uncapped", () => { + render( + , + ) + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("20") + expect(screen.getByText("20%")).toBeInTheDocument() + }) }) }) From bf6e469418f149359009885b7ad764557a44d21c Mon Sep 17 00:00:00 2001 From: David Abrahams <40281893+DavidWAbrahams@users.noreply.github.com> Date: Sun, 8 Nov 2026 08:53:15 -0800 Subject: [PATCH 08/20] Update webview-ui/src/components/settings/ContextManagementSettings.tsx as suggested by coderabbitai Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- webview-ui/src/components/settings/ContextManagementSettings.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index be53972a0d..64b3a06267 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -798,6 +798,7 @@ export const ContextManagementSettings = ({ {t("settings:contextManagement.idleCondensing.idleTime.label")} Date: Sat, 7 Nov 2026 22:38:17 -0800 Subject: [PATCH 09/20] fix: type idle-condensing checkbox change event with checkbox target guard --- .../settings/ContextManagementSettings.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 64b3a06267..f763e5d1f3 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -1,4 +1,4 @@ -import { HTMLAttributes } from "react" +import { FormEvent, HTMLAttributes } from "react" import React from "react" import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox, VSCodeTextArea } from "@vscode/webview-ui-toolkit/react" @@ -75,6 +75,13 @@ type ContextManagementSettingsProps = HTMLAttributes & { > } +// The toolkit checkbox delivers change events retargeted to its custom-element host, which mirrors +// `checked` without being an HTMLInputElement; a directly rendered input is one. Match on the +// property so both target shapes update the setting, and decline targets that carry no boolean +// `checked` rather than writing `undefined` through the guard. +const isCheckboxTarget = (target: EventTarget | null): target is EventTarget & { checked: boolean } => + target !== null && "checked" in target && typeof target.checked === "boolean" + export const ContextManagementSettings = ({ autoCondenseContext, autoCondenseContextPercent, @@ -720,7 +727,12 @@ export const ContextManagementSettings = ({ label={t("settings:contextManagement.idleCondensing.name")}> setCachedStateField("idleCondenseContext", e.target.checked)} + onChange={(e: Event | FormEvent) => { + if (!isCheckboxTarget(e.target)) { + return + } + setCachedStateField("idleCondenseContext", e.target.checked) + }} data-testid="idle-condense-context-checkbox"> {t("settings:contextManagement.idleCondensing.name")} From 1b1fbeb9cdeeb3530952c41dfeca26b93b024185 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 14:35:41 -0800 Subject: [PATCH 10/20] fix: slice long idle timer delays and reset countdown on every edit - Chain maximum-length setTimeout slices in armIdleCondenseTimeout so idle waits at or beyond 2,147,484s no longer hit Node's int32 clamp and fire almost immediately; regression test pins the exact scheduled slice delays - Post idleCondenseReset on every textarea edit (removed the one-second throttle) so condensing cannot start less than one idle window after the last keystroke - Cover idle scheduling through real Task.ask status transitions (followup/resume_task/completion_result arm; tool/command do not) - Add visual snapshots for the enabled idle condensing panel across themes plus a 320px narrow-width test, and let nested selects wrap at narrow widths --- src/core/task/Task.ts | 30 ++++- .../task/__tests__/Task.idle-condense.spec.ts | 123 ++++++++++++++++++ webview-ui/playwright/gallery/stories.tsx | 5 + .../src/components/chat/ChatTextArea.tsx | 13 +- .../chat/__tests__/ChatTextArea.spec.tsx | 35 ++--- .../settings/ContextManagementSettings.tsx | 9 +- ...ntextManagementSettings.visual.fixture.tsx | 64 +++++++++ .../ContextManagementSettings.visual.tsx | 34 +++++ .../context-management-settings-320.png | Bin 0 -> 182022 bytes .../context-management-settings-dark.png | Bin 0 -> 180569 bytes ...anagement-settings-high-contrast-light.png | Bin 0 -> 184117 bytes ...text-management-settings-high-contrast.png | Bin 0 -> 184421 bytes .../context-management-settings-light.png | Bin 0 -> 182841 bytes 13 files changed, 273 insertions(+), 40 deletions(-) create mode 100644 webview-ui/src/components/settings/__tests__/ContextManagementSettings.visual.fixture.tsx create mode 100644 webview-ui/src/components/settings/__tests__/ContextManagementSettings.visual.tsx create mode 100644 webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-320.png create mode 100644 webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-dark.png create mode 100644 webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast-light.png create mode 100644 webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast.png create mode 100644 webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-light.png diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index f296bdd5bf..b69eca3b2f 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2803,13 +2803,29 @@ export class Task extends EventEmitter implements TaskLike { private armIdleCondenseTimeout(seconds: number): void { this.cancelIdleCondenseTimer() - this.idleCondenseTimeoutRef = setTimeout( - () => { - this.idleCondenseTimeoutRef = undefined - void this.onIdleCondenseTimerFired() - }, - Math.max(0, seconds) * 1000, - ) + // Node clamps setTimeout delays above the int32 maximum to 1ms, so an + // idle wait of 2,147,484 s or more would fire almost immediately and + // condense a task that just went idle. Chain maximum-length slices so + // the callback still runs only after the full requested duration. + // idleCondenseTimeoutRef always points at the slice in flight, so + // cancelIdleCondenseTimer and resetIdleCondenseTimer keep working. + const maxDelayMs = 2_147_483_647 + let remainingMs = Math.max(0, seconds) * 1000 + const armSlice = (): void => { + if (remainingMs > maxDelayMs) { + remainingMs -= maxDelayMs + this.idleCondenseTimeoutRef = setTimeout(armSlice, maxDelayMs) + return + } + this.idleCondenseTimeoutRef = setTimeout( + () => { + this.idleCondenseTimeoutRef = undefined + void this.onIdleCondenseTimerFired() + }, + remainingMs, + ) + } + armSlice() } /** diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index 755cd00326..bc7d1878eb 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -336,6 +336,98 @@ describe("Task idle condensing — arming the timer", () => { expect(vi.getTimerCount()).toBe(0) }) + + // The tests above call the scheduler directly; these drive the real ask() + // so the two-second status-transition hooks — the only places a waiting + // ask schedules idle condensing — are covered end to end. + function buildAskTask() { + const built = buildTask() + const { task } = built + + task["emit"] = vi.fn() + task["saveClineMessages"] = vi.fn(async () => true) + // The status-timer callbacks resolve the pending ask via + // findMessageByTimestamp, so the stub has to land the message. + task["addToClineMessages"] = vi.fn(async (message: ClineMessage) => { + task["clineMessages"].push(message) + }) + // Empty, never-claimable queue: the ask stays pending for the user. + // defineProperty because messageQueueService is readonly on the class. + Object.defineProperty(task, "messageQueueService", { + value: { + isEmpty: () => true, + hasUnclaimed: () => false, + claimNextMessage: () => undefined, + releaseMessage: () => {}, + }, + }) + + return built + } + + // Starts a blocking ask and advances the fake clock just past the + // two-second status transition, asserting nothing is scheduled before it. + async function startAskAcrossStatusTransition(askType: ClineAsk) { + const { task } = buildAskTask() + const askPromise = task.ask(askType, "waiting on the user", false) + + await vi.advanceTimersByTimeAsync(1_999) + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + // Cross the boundary by 11ms — short enough to skip a pWaitFor poll tick. + await vi.advanceTimersByTimeAsync(11) + + return { task, askPromise } + } + + async function resolveAsk(task: Task, askPromise: ReturnType) { + // Deliberately not handleWebviewAskResponse: it cancels the idle timer, + // which is the very thing the assertions above depend on. + task["askResponse"] = "yesButtonClicked" + await vi.advanceTimersByTimeAsync(100) + await expect(askPromise).resolves.toMatchObject({ response: "yesButtonClicked" }) + } + + test("a pending followup ask schedules idle condensing on the interactive transition", async () => { + const { task, askPromise } = await startAskAcrossStatusTransition("followup") + + expect(task["interactiveAsk"]).toBeDefined() + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + + await resolveAsk(task, askPromise) + }) + + test("a pending resume_task ask schedules idle condensing on the resumable transition", async () => { + const { task, askPromise } = await startAskAcrossStatusTransition("resume_task") + + expect(task["resumableAsk"]).toBeDefined() + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + + await resolveAsk(task, askPromise) + }) + + test("a pending idle ask schedules idle condensing on the idle transition", async () => { + const { task, askPromise } = await startAskAcrossStatusTransition("completion_result") + + expect(task["idleAsk"]).toBeDefined() + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + + await resolveAsk(task, askPromise) + }) + + // Tool and command asks are interactive, so they take the same two-second + // transition — but they are mid-response, so only the status change fires + // and idle condensing stays unscheduled. + test.each(["tool", "command"] as const)( + "a pending %s ask crosses the interactive transition without scheduling idle condensing", + async (askType) => { + const { task, askPromise } = await startAskAcrossStatusTransition(askType) + + expect(task["interactiveAsk"]).toBeDefined() + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + + await resolveAsk(task, askPromise) + }, + ) }) describe("Task idle condensing — reset and cancel", () => { @@ -541,6 +633,37 @@ describe("Task idle condensing — timer expiry", () => { "condenseTaskContextResponse", ]) }) + + test("an idle wait beyond the maximum timer delay waits the full duration", async () => { + const { task, condense } = buildTask({ + state: baseState({ idleCondenseTimeInSeconds: 2_147_484 }), + }) + // Node silently clamps setTimeout delays above 2,147,483,647 ms to + // 1 ms, so a raw delay for 2,147,484 s would condense a task that just + // went idle. Fake timers do not emulate that clamp, so pin the exact + // scheduled delays as well as the elapsed behavior. + const setTimeoutSpy = vi.spyOn(globalThis, "setTimeout") + const scheduledDelays = () => + setTimeoutSpy.mock.calls + .map((call) => call[1]) + .filter((delay): delay is number => typeof delay === "number") + + try { + await task["maybeStartIdleCondenseTimer"]() + // The first slice never exceeds the maximum Node supports. + expect(scheduledDelays()).toEqual([2_147_483_647]) + + await vi.advanceTimersByTimeAsync(2_147_483_647) + expect(condense).not.toHaveBeenCalled() + // The remainder is 2,147,484,000 - 2,147,483,647 = 353 ms. + expect(scheduledDelays()).toEqual([2_147_483_647, 353]) + + await vi.advanceTimersByTimeAsync(353) + expect(condense).toHaveBeenCalledTimes(1) + } finally { + setTimeoutSpy.mockRestore() + } + }) }) describe("Task idle condensing — activity invalidates a pending expiry evaluation", () => { diff --git a/webview-ui/playwright/gallery/stories.tsx b/webview-ui/playwright/gallery/stories.tsx index 7d169431ce..8fe4d47064 100644 --- a/webview-ui/playwright/gallery/stories.tsx +++ b/webview-ui/playwright/gallery/stories.tsx @@ -155,6 +155,11 @@ export const stories: Record = { const { ChatTextAreaStory } = await import("@/components/chat/__tests__/ChatTextArea.visual.fixture") return }, + "context-management-settings": async () => { + const { ContextManagementSettingsStory } = + await import("@/components/settings/__tests__/ContextManagementSettings.visual.fixture") + return + }, "history-empty": async () => { const [{ AppProviders }, { default: HistoryView }] = await Promise.all([ import("../AppProviders"), diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 5e1cd21837..a0b080a43d 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -610,10 +610,6 @@ export const ChatTextArea = forwardRef( // Ref to store the search timeout. const searchTimeoutRef = useRef(null) - // Throttles the idle-condense reset signal so typing doesn't spam the - // extension host; the host ignores the signal unless a timer is armed. - const lastIdleCondenseResetRef = useRef(0) - const handleInputChange = useCallback( (e: React.ChangeEvent) => { const newValue = e.target.value @@ -623,11 +619,10 @@ export const ChatTextArea = forwardRef( resetOnInputChange() // Typing in the prompt area resets the idle-condense timer. - const now = Date.now() - if (now - lastIdleCondenseResetRef.current >= 1000) { - lastIdleCondenseResetRef.current = now - vscode.postMessage({ type: "idleCondenseReset" }) - } + // Signal on every edit: a throttled signal can let condensing + // start less than one idle window after a suppressed keystroke. + // The host ignores the signal unless a timer is armed. + vscode.postMessage({ type: "idleCondenseReset" }) const newCursorPosition = e.target.selectionStart setCursorPosition(newCursorPosition) diff --git a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx index 2de507156b..e896d7dd4f 100644 --- a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx @@ -1629,28 +1629,19 @@ describe("ChatTextArea", () => { expect(idleSignals()).toHaveLength(1) }) - it("throttles repeated typing to one signal per second", () => { - let now = 10_000 - const nowSpy = vi.spyOn(Date, "now").mockImplementation(() => now) - try { - const { container } = render() - const textarea = getTextarea(container) - - fireEvent.change(textarea, { target: { value: "h", selectionStart: 1 } }) - expect(idleSignals()).toHaveLength(1) - - // Typing within the throttle window does not re-signal. - now += 500 - fireEvent.change(textarea, { target: { value: "he", selectionStart: 2 } }) - expect(idleSignals()).toHaveLength(1) - - // Once the throttle window elapses, the next keystroke signals again. - now += 600 - fireEvent.change(textarea, { target: { value: "hel", selectionStart: 3 } }) - expect(idleSignals()).toHaveLength(2) - } finally { - nowSpy.mockRestore() - } + it("signals on every edit, including edits within the former throttle window", () => { + const { container } = render() + const textarea = getTextarea(container) + + fireEvent.change(textarea, { target: { value: "h", selectionStart: 1 } }) + expect(idleSignals()).toHaveLength(1) + + // Every keystroke must restart the idle countdown. A keystroke + // suppressed by the old one-second throttle could let condensing + // start less than one idle window after the user last typed. + fireEvent.change(textarea, { target: { value: "he", selectionStart: 2 } }) + fireEvent.change(textarea, { target: { value: "hel", selectionStart: 3 } }) + expect(idleSignals()).toHaveLength(3) }) }) }) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index f763e5d1f3..4b4cb64fe8 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -661,7 +661,11 @@ export const ContextManagementSettings = ({ setSelectedThresholdProfile(value) }} data-testid="threshold-profile-select"> - + {/* At narrow editor widths the selected-profile text must wrap + instead of one-line clamping, so it is never clipped. Radix + drops SelectValue classNames, so the override has to target + the clamping child rule from the trigger itself. */} + - + {/* Same narrow-width wrap fix as the main threshold select. */} + ({ + autoCondenseContext: true, + autoCondenseContextPercent: 80, + idleCondenseContext: true, + idleCondenseContextPercent: 50, + idleCondenseTimeInSeconds: 300, + }) + const setCachedStateField: SetCachedStateField = (field, value) => { + setState((current) => { + switch (field) { + case "autoCondenseContext": + case "idleCondenseContext": + return { ...current, [field]: Boolean(value) } + case "autoCondenseContextPercent": + case "idleCondenseContextPercent": + case "idleCondenseTimeInSeconds": + return { ...current, [field]: typeof value === "number" ? value : current[field] } + default: + return current + } + }) + } + + return ( + +
+ undefined} + setCachedStateField={setCachedStateField} + /> +
+
+ ) +} diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.visual.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.visual.tsx new file mode 100644 index 0000000000..656f24ce30 --- /dev/null +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.visual.tsx @@ -0,0 +1,34 @@ +import { expect, test } from "../../../../playwright/coverage-fixture" +import { collectBoundedLayoutFailures, REFLOW_VIEWPORT_WIDTH } from "../../../../playwright/layout-contracts" +import { mountedStory } from "../../../../playwright/mounted-story" +import { applyVisualTheme, visualThemes } from "../../../../playwright/themes" + +// Declared in webview-ui/src/i18n/locales/en/settings.json under +// settings:contextManagement.idleCondensing.name; the checkbox takes its accessible +// name from that label text, so the two must stay in sync. +const idleCondenseLabel = "Idle condensing" + +for (const theme of visualThemes) { + test(`renders the enabled idle condensing panel in the VS Code ${theme.name} theme`, async ({ mount, page }) => { + const component = mountedStory(await mount("context-management-settings")) + await applyVisualTheme(page, theme) + const story = component.getByTestId("context-management-settings-story") + const checkbox = story.getByRole("checkbox", { name: idleCondenseLabel }) + await expect(checkbox).toBeVisible() + await expect(checkbox).toBeChecked() + await expect(story.getByTestId("idle-condense-threshold-slider")).toBeVisible() + await expect(story.getByTestId("idle-condense-time-input")).toBeVisible() + await expect(story).toHaveScreenshot(`context-management-settings-${theme.name}.png`) + }) +} + +test("keeps the enabled idle panel readable at narrow editor widths", async ({ mount, page }) => { + await page.setViewportSize({ width: REFLOW_VIEWPORT_WIDTH, height: 640 }) + const component = mountedStory(await mount("context-management-settings")) + const story = component.getByTestId("context-management-settings-story") + + await expect(story.getByTestId("idle-condense-threshold-slider")).toBeVisible() + await expect(story.getByTestId("idle-condense-time-input")).toBeVisible() + await expect(story).toHaveScreenshot("context-management-settings-320.png") + await expect.poll(() => story.evaluate(collectBoundedLayoutFailures)).toEqual([]) +}) diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-320.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-320.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ad758342f226cc489b2548d97fffb5a7b28aa8 GIT binary patch literal 182022 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 JiMB(~zW|(LspkLy literal 0 HcmV?d00001 diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-dark.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..48b067711648b1904121c998fc9779d94d3876f4 GIT binary patch literal 180569 zcmce;Wn7$Jw=9UeyL<2?xJz&i?h-7x2MF$NK|^r&;2zvv6I_D?x8Tm*{NFjhbKki$ zXYToMC!YvSKi$2by=&E~s@3623R0*@L`V=25U4WJ;wlgjkh>5N2;>M*;5V^?p$rfZ z7!WezB5H2whi!&6YB$UNTNq2U> zOAQd3N{W->eAI-5#f_DK{irPR>Wv>(tRD>mrZh}aU8)4#aYUs=yplrskf1troe=QjCc!H8fW#jwK_p_E&Iz6|#iN#{-M9d{POX{>J#G^SSJUyQSM`hl-4Ruu!{Wp5+|^so4?OyI>hcQBT7QYJLZ;x$lee8AK8P6DqA+OY_-@p00X<}@wbmV#b zqv%7Mhk^Iy%tEa>=C0#rKPJjbrQQ!VNsrC`=(#fO!0oI3nMi(2OicQl#xNd*=e=&un9)>Dx$naG#SP%9r$k*1 zO>qiO1Byp?wqUE>JbyFrVLi!SajP54Lec5y7WV1G)#Rb>>V2c%%&|&v@cxL=zd-KW z=i_BU_^Iw-!7waCie6QGCNKye2nz#8r;i^n+g^Y>7p zQ}!K?TsHG8bM~zJ*3-qxx#Eb2c4c%Ds)fMv z%a<=)9UG5E6dmK+-V9ikmDR&>K2dh(OW;_XHK-b}i!mFtlQwK96u;s2s*(dZ|X4G%w?OKi+>{gn+PrKlgXSB7oBk|w1U$1(C?Wf!Bb=z{%-eUQy z@a5FBJ8t+}F4PpXf2cJ>{nZnQE>yfWL$weia27WEmrT$@TwHuKofjLPTe9tT^RHMa z8mHyY{Ops@0Kbre!7FofxfmN8N8-JPLnCq9$#9ML-}_YrHms~~i%}1p03Eu(>AMb} zMz{hmvC=l|#JJrFW8=Zr5>!145 z@$ly@fDVtx%Q@ehb@tjLBt3&X4lPOhHRIUyeoPKvga*(cFzvo^F z6087N9ni=7KvJb;V^j7NnApkdewN>iK{3f`JzMw4F*&N;=5guZ0V7nBJ<=qEVSJ7m zWxXZT*%3&`ohL@#) z@~Q&wRTJO>*mX(vgWxb=ov*feo};G3#yVW=DtlkGlBaUpE4(HZ_F48g|H6M978W*N zYaYYy^>?H1{`$nA-f9M$PGO7K-QQxZ-P_8F5&yML-R^w#rlRm;K2lhgO`4KtjNsKg zI5Z_t*#LOBSDb%=4fP0rFjr|{XLsxm4gU~il)mOPA-Lv!opHIH%xdCu`{&!?p^Y%Q z&b_3ct<`2pQ6?4ExmL_QIKK1MCR<7E(^W=20PI{ao6d%r7|wFULZJ{z+@3Z4>uZq8 zl*glya2YXpJ=&ah6q@0A2b7R$&bPIgl<1tJyDpc&hIv^HW1QP`-cW3Z0PkU{1eUSe z%Q=He?b;ARx6|KU0Nn)1q1}^0#LL?suXJ&pQ#mXH@RH3ZthXn!PM8D^5NSNS0$}$= z0qPQ$DiE5t`ZMzQ)Yys|JzrM(mgIH;nK$^)wP08wR=X%Z8piHZ}@O@hQ)uJ_|kj0mJ2!5kRyOl2_yk~v*20SK8-`;fL z9mAm#r3<*L$f2t~=1N2+CtP}?oc=73b8;F_=S|jxhDZBYQ8@JXyVvE6rlqAN0VXb! z1_^+YCHs!C%NXIOuwCD?A-eVT^#=2dJ)w(9G5fa5+4Y{#6fQ1e40c*XgPCIG%_Lnr z%CGkAw`QO$EdMxaSW2$DK3P)?lKb|?cBPp!2~*}5X8F0WARO`r!0paAS{*)uE5T_1 zDa`y_j+av&P>47z`lATBSKX)!OuUX)+jQl4Q?%=?aIvD~Pmgdl^}4+JcMGBjrjwzW zG%I>9OpJTnda2|T70rnZ=~d{0^5GCVCGsSrg&t0Oz%~Z#ELhf%jMgWr3>EieOD$lB#Z#!;2DE6}2e!O0zo47ES zmpE2^t@c(973t~zq@z|;zvd%iLx;BHzQ6RY3Bbb6CdbVtpNGE#m{P~ryHkO$MmXp6 zHWzvK$SR_Z4+;_!J$^g#3D1o16g&Z#EB`(hZabL0=;-M9F(jo#r`}3y?W3+{WPQ{i zlR+Gwx~w5oo%P%}iS@@NO}ed(ik9PCgcLZ98Cts8seKY}+AuhG6RicSOudEPP!A=E zD8u_EOFFB`hcIsFM+w?vP_|#_#zt?r*GG(f`x5VC`82L*Ou4M=h+E&Yt)b?*8qq8^ zQ>5JOyE0Uo5ZFq#hjEU4wn8NDNf!2j=@QkwI1704J#3VQYLkKZH-QPW5+C;7I7=CP z=Q>j~Nr2o+RtWj!hfF0^{}*{Gut+g$JX_Q%{C%i-XY1{DngyPq=kf9n`_{j33wdku z$t?aK!r1ns;*Ncv&dCc&rqfXpUgi4}RV`WoxE9q5ixwKF%m1cNPaWR=baycSMBifF z!0){KPAEJ9GSHBLd_Ff<+<8|ffi{lGIaFKrHpHk$Kz6lQj5Pkv+~Ma3`nTmn;u5w> zFlKtx)+5=+#2e>Lue zRcW$cYcGMjkhdnFlA0bAb_wtg4^oyq{v|y0I@gbbUP@R5?V>fn>es>D)zOGo6l1wo zHI#a8-`*#2&x7*DTvBEP8&jA!$w#FG7`)U0X&ePJ)JAgC^~&jOi9%(eh~<^vBcEg* zn;IgW26vw(o}J5GSKZ-lUoE)>*_f(@$c4gkqtm{6HKo3rguyVl&bEFTU=%9d#k7e`vm2u^YZ*!$51X0AJEutsZm*0cl1JAhkA0e* ztL54a+r@E$BP!BOZLhGE_aLy9(VQjh`IwE%%0U1jP8Rk(QPi^bi;W?XR)?td;7$s= zdDE;M3>>A&5QkcI(M3wuM@dD?V(1<}x`5UY1LRsHx{KA#&A9-c#S$K;Hptkm9x_IUA2@$26Y;<`0uSYhvV z@1jskk!5lZ%Rc|;;k?^r;$ka97R{UAUkE9G|JUCz({+DZ=FuIk-bXRp$j!PSFM%a^ z7ll9PspL)Rw^zYq23_yvG1{g9$>B}yRtXQ$kaXR6jaER5DEt^CDXtApP=T;jd46Rs zzn7^lyLOICtQt~_$E8(jh#HG&8Dx4mA93G;9H#0arRfcqB`F-T#Oc>)h|s9os3`01 zgKH#&#w>iq28H6ttQ0fA|X?Eq_!MOR@aj}S!)|K&>>WBf2p9@a836qt^VFm*>Yqrld9S}#+}A`O>ngm62WPzl}=&%bI&&%6Gj70{$Ab%h25#4r?7$0dY58TmQZ-86B>Ka-jbsX zDP`iq1Mls7KSkx}L}|jsi@A;`^|xpo(`j}HIO2+;P0j=~!z|0iTBZo7i$$gx3jvva zkRz(irY<7mkaO)u0o$oU7#i&jS(e6r>``>Y6oLx&;c(Bm1zIhiUq?E|iw%xe(nEc! zoWamdQ<*$ooXJMXYOnlUWUx1zj~T8sM}~~KOs!}5LCHV)=jdAd@E}PbY$=Kn6){in z*^$Y(q~lQm3bux)S05~rU4^oP2F15o1pUw`Y;!_KCiZI+Zu*|hC{G<&uGxyVtHs`4 zah;=J{0~)aHdXz2ApF4UMZQ{PCVw#<4>(aqy={~|rG)~iN=W=wolbc}Ih?rzjQ zf)`}CJ(^N6QNvi|%BFZ$y4X6zOgdOQyc@%_SEu+WEJOHjUen1n2b5N5DUj-S4}_@`5#I%}K@uELXh`O)E&)6leU zcKVjdG=iRjqmbm2pBMZM&Vj4sVl1UtEF+1~EV;fipH32{bV+@1*sjCQs^^KRSMJSl zF$PJ?^|BLsxuWNKUN2vvhNXrcs@L~%M6mMROsZZKf$-@47TG>!CpGlQsu`9^8|v>~ z3Ev;Go72eOCc*}$YQw{Sa|zg@9f#LRNu{By!&H^X67p{9ktN|ye9MiW5$zNFUMeDa zw3SpsBleTfPa_M}?~GuT+eClFZo*2PYTg z;ki?K%SC8rRd~SdXk)HQic33byC!=t_Ep8D6-z0pI^@@oCMFAy!xwfVmf%U~p{PsO zYEYT^?&>TjR9heN*)o1G-r@8l{t}w)9BMSz6DZajeRUv>OyrD-0^{VO7p4S_5Sr!k z=Z_5KRrI<4EkWeOT>_afPB7aBgV}H8r>7E`K5vL{S;xjzXO`D-zMve@C4~lZXqlacSk(vv`NBzoO>gO4+N;^ zkA%e|xC^98|0!GjKX*RY9y{@ZFo&>t?<%hQBT8#`&!~X0T+TE3wMxi95qs4kb zj|;cIefVFiUl{>n9N>i!MS%dDEBydDUf#HRH{tuFYTu|;uETjzEE!GYv2zJ}9~1%> zh^f8FoSwVOgE(Fr+hro*ryJ^xdef04P%3hSK+EwQgos_{yR{!B^7w<759_uQ8XaTi ztLBGrzxKcV#KSyZ6Dh15-r$4-A;5LbyYcnww(_UpuS{{8G#^4M0qIR-P_5%j7(ylH zT6W*b$bV^@nwpyUkDH)>IGgnleqFusUGEOoLkA7P_3_H=V;<-+KSw;TxUR)LgSLZu zxuSkw2U-KPJy*WZ*SN4mjc{04g^m?h`ZWjKs;;0?Xy~?!bhgipR z^z%^E58ib5^)mH2qElGxdE3U75M*ic9a;oYW!m|-blN`-NO!03+pK+V&;B@)=Zzq2 z>}2_V@uL2moTcOVLQk$m22`VB2+(^#r|=>_a^QTOf@h;}a-$5Jl<(t&quWgt!hT06 zwSPNYYyGkk2YIkx9VsAUVB7`+*%_aSpG`0i-runnUtV#H>!4P_jhYZ9=d$brIV?Bk z2Np~YJ+@6Gu_Dx6a9Z-U%i{a4CH9Yhaze>O#bbY<3qQpE5jGG6N2ztACo8)RGK``E zS`CG?_qNKgD*$v>mwUh91tmOK6w1-;<_OZW%iSnL&`2Yi_n^tVO_x%@De-PSPYmYv zaZ?*C_qin;q(mPt?wsp?X7PRUqD9xBgPF}FF)xSHg5Iu1ktcSO8{CpuG1tZjLJr_= zaFJMW40zrVepU{7z3{`yJkbIauTpyd_xdfLZ676BEq+70gVQr%?rC?f1$P$HAu+)n zKmiji_gPo7Z2a;5+T^PVrACPgY$F6-Bi0)jt!rjy&}j#?=w*?fs802NPTcvIod55*IQ|DFJ%Fr^8X?z*dXgDQ*Mu;aMj)0C{B14r6$hB7BbOChOU9_&0Xd?HyS+A?B^L^MP|1M3G_uO9Ij|^*48WnoHU^C!CjK+nBhnGsvzF=U1IM8tw6uuzgSzPQ+*Q5;zb(=3Cv*8P!V-308gXk0>cA`CX5vW0oCyP=SJaG?^o& zr8WPy<01DX5eO2Rl^+1yQgqucHE1U^{Ylb2Zrc2^Kl8oOYKD=Q_jWLj8fZ9FEK^(- zlYRu!+(1o>V5$gff z4^Cs8zPBR=e4h^qh=@|-<2OPzG`q9_HOu#IuLu}XDh|ejgM+`HfgFcD ze-)O3nsE!HS0O&WX5+pHpk)3S_7ivkULf*O5tmug+XF$)B}u2wBJS%~3HAF3RScL) zKXI6)4aqa$Hq^NsXq=COqdJ){gKfHt+0PT-_Hig42!5+BbNb7zdxdEZ2+Vp-7{9Pc zTY);!6yEg&DuNe~QGpV)iB@Cr-uQfbY|ZQZy@$sgP$_(Y9{?N}qiGZS_S0_Ug@py* z`=vE!mTkl*Um!qHQ&H9J_@l6holYNAb|@q@HJFlhz#!e9_&yV3e!N>pQ{l0huTm7c z-8yPqqwV2d^QyJJve7oq^|)FvpE>{_KU1N9pXqtL&VWabE_i{_SJb-o>nhCJl*{>r2|J~~>r+SSjY z|B4_+wMd~a$qTS8Aarvb8*))e4r1s$gPzz*>b1>s6Xtr4nO=vFx4e85XZOqASgc33 zU8ypHMha7Sd_3{pam2%O+8!0z#E=R&T4}k?ixHw?XEz(QSZa8^EkHD^CYer8p|JkL zX-6l|)KUdpiRJ|Gku4hF+oUD;>zR0;thS{s^j(O~*O-rBE#3ibuS~b`%l#;c)-d1= zz56?u+i)K)DTqSyHdhe2m#y-B>^K- zc~U(+J>{;ajD~>+);OvLzdz8M`*8=(c!QE_`;Qal?eCZLMt@N;!hAekgq~Fa^A8}u zcuX4d=7!Htk9-jL7LGtKcOcALN!|(jJt6$uYO_!?J*~!0=0!wPx&N&9VAXei7 zA#c_z7<(9pr$D(4_ZUZz+|1%{4%mzBBFCtMx`RA2kwjtqC8q-A^H%^*py72exiwa% z(j{2DLqkJ)D8D08RW`8r(ZwaMQr*NVVf&XNgOLU3ut6fxvc^8f^Ty7)36t4-gWMj1 z!1fZ_&^K!6gbygO3t87aNDQ1KXu)M7dt3W?z+^D(gUR!Pm?Dt>B1`OAVxUPi;ocA( zI>xI4e71vGQV(E=AYNY&C6{En1)d!DS#A_(`%@CWcNi`HE-lssa?eToJ(^;`(`T@U zfgOlQgS$-aR&mLx!NLH{q0Qk=nevkZO)oz5*6Lna&dq@WKSe#_Ia+2YgqWgWYk9Y$ z0I3#t>r&|7zh^s^2f5{L6y5wwto=4RE`G`lpFV9ytk)l19W6OJEs_0D(u?AO6+vJF zCer$!Zw5~X2G4w^!#F5by?^(Lvbet8GB7YC_b>P6`~^0QgErWcKvGRV^G9e!f*a{!Q$@ z5l-j8hmEzV!!IV!Qt{X1R0VSY4USWLgO<$w5y91Aj6d39j+s@NRXCcIKS>+rAk6|O zxPUlZcK`*NPvMP5nU;~KxIV%gNpO^4Qj7^QfnTaB0&m)jH!H01>*8dM+@*gaGB4$R zmYhMOR1MLTLx0`h568GO^{-mxhm5_hs~#zv56l*I@*S4bfd67EqOB5dEfK!9bJY_h z=$lOwS6GcTRF7qj>y75M`VTFDkF)cBzLWe1#lIGfXg)QVc3Gj$!NljqmhXZ`aHVXL z_3GMK@#19w74Rk(0r48(cg;3+Kmg2`>B7;ZaeCv*kw`bP*$N;mR z$zs%fKJo0d*4}1HyhgI%qqS${ZcdRt|E<+`rq@KcvdifVxU3xjRY54Ai~C2Bf~mPV zIlsqr2gWtPJJ6s=s(f;C3PmBrA|fhnw7cTy!n1o=1kH;c*bxhoqz5RO#`m9hrYQ#+ z%J&xAJoi)zg!S9?Kyu+G+wJd0fvBh~&fBE8xOKS}#PjVm`xn9w$gNWUms{Xx02qG) zf_4YP+dv2SOU+lU(W5M1Lc$Mue%{*7=#u?@_V&E)@8{A0hpkQ)4<}HKWn*s3!e+BaRmr4^)y`YnlELPO=aDa@_11GQ7r2c} z@RTJF-H-)U%*GRcbB{~0>5?P(od3AC$O+um?!GP1mI2QKJkE9k0vz1}jkCXC)SFaQ zRWGLu=-5B=bm7mcO8Y$1EMzgo>|7DHICzK{v-)4k9JEG(=G*0mQi z!{2s5(>*c!>CYChiw!)F>c`T!pBr2*$1TN5SG{~oN-t+pe$6jR-&WgZ&3)Ibbn+?! z`nCqMfx^qOQ(R9o*c^%7K9V@}Mc_6`eE<&E=0MCQ&5w^hRwRdOj+(_vMu5Wr(Et2I zRRsJzV44EY?V(^j2(a%kjKSLqvRvTRy`ooSL5~Ii+1npYoaM1!0+>P)ljax8D(AhQ z(Zt+#tF5&a@J<*#O!b04TC;EpY? zf!7$B;M4}4Oa0HWlK+w&UO@oTc3rzy^%bNy#DS0)5~5>& z7MBJ-EC6LaEEwG;@H#K5?e+f5NNeEi17Lz}K#qoXZv~$U7z)LV-P4r@YdX#6FG&Sp z)xNNhQGRGR6pO{WlG|z!8+f0}u^zwz;Bjv%Z@?r*&VK((Ly&pAz&qmF>q$U6* zm?>2k3kPP?u!NV_1OG{DEs!=q(juCGbpv$fYmN3|N! z0Be_pV3Oz1Rr2t7r6nBu;5R5SG0&%Fs|5S=m=`A7U%{R70=6QEuyg>nJSk+V<-kKS zI0J~XFEDYLDqGo@m=4Y-ggbzjn3z)pK7T!1^IJSAY3V^w-GB_?JuLS_r_nA0q-_9v zz#`*KZenV5s}=+IGQXf;Z(0VJRTTuXA1?tUJp!&4Rs=wG8j<{c!L~@*A;{fi2)NgL zK3W83G+lVBw|NBaFI_#VF*Qtla6)$&yjft?hhaMJLJo-Sn$}CdR{#SxFA5|~))mCX zVPvp-064o4Gy!Xg0rr+Mq_X{PcrgsT_Th91Hf!t~RwbB2jVLyx!OeV5(0>H<_4lhx zyh5Sp`KtIUzp#*sY1t^~Kq%YjOHLI{qvbDJtN54;)IxXJMw_VOU#X&b){F` zKtam1!GHT9-R8kA-J;Y;Uvw2TnRRAkL>>X<#^t7#^HoNHaHv9eyVT~Z7I7d-qE@OF zURt;=Rpk#ua)}ccw8FNP+p|2j=!(z zodj+3EALDj?D7Sdj0{M*jmWp{h6Ow({U}0=JxJ?$WOf|lVB1y;+oT$r`Ax~%?(&1) znU0ZYF+~;xIS3F?qJd-2NSExnuP=aPE+KE;26~Dc@(D!stj8Tfyt-eYi?U?&032gY zu_%9L4`%Lz=WBIgmwmN^GwkSOA#c9BKBUwSHw)%jtXKs5vxW6ohHgo2&eXlegRzu@ z3D#;ryjlU8+}WQIM-dh?v+;D9elnjMqu0w(gf+uno!JG+7j(^+hYPhodJ_GpC9dUq z1K`W2_6r2L3HOao3H;HuHF4+9~M0pVGd9?loU$q@PtC5h_F=xAtS2}7a@aYwww z{qdpzPnfG*BerkNF`+$AexRp_VUGy20#P-T%m%pTQo9m662BOg%fL)8Ajt=b%R$E(En-GfXQ2oR7nn2*j*am%dSafW(kv4uTNRh`l6OhZ>8|QO)3Vv@a=1a;@E7K(!bnbGuuaPnDiH8R zREk5RD9%j@k(jv|tjhEGf6y!>#&`1lVP{LZ0=8}EV6Vbl98Zi= z_vc@XqX_HTiTbw?yt8mbVx~Zgy`zQl_cMOT9U0}jD;6v&`YNLEvzd+1gq4*Q1yM~g z3ngGlRuOAHM@<198ZLPZUN*2!e!nGbF{x0}hjOGQI7}wIpNOiJi zz77!u5O&|;*7T9&S-XHk!;x;S&Bn&2WNVsUV-eX^kDJ^*L`i7YThiGnt7Vd1j?GjU zA795SZOIUV$U7H_K4)WC>kAIbY_VGqTMbE(f`zlyPjzgs^;9HIcB^UnLP5UKSGBKP z*R__1S(*W4Sp^+}HoCC+@_nIQY1()fi5&mlj|@uj`y3@5+xHJyUO8ERe4VEDgO<>OW11o|A<#t6>?ZhP=>wK;t;aqfUPux%b3V%48p(u?I7p(aH)Gdm{!Bq3bIROT zcQh9Zm9%q{df115r`N%zc=Auyz zhY2eQidmt4Z@6aePL9C9FxxUP&IK_9OS|vJ6f&nn!nDp(F{f?<(lgyZq7f#%Ql%i` zHCN`0DPpU!Z7h<6Qa=$%N6;k`-bWlgLYHEcJ!T71IH-cW+l!5Gd@__+h!Nx2d}}6_ z;9u{i(|iQQ3{}54I^u9-xh=VU3;Yi6+gM3X1hYy=&ldP6)w*KpJ4O+0@?_6t71c!Z zWkw0h1qKG5N-^(A8`NAZl|qj8awv)oQ$0W)e|*d+JU*sh{AU9r^hsu;tF3iix28@= z_fS#}mvcC}c;}hx=-k?3hL1LHv_& z_z z#^1>8v!GIbKwr-J<^(^IF`xWk^L7?N(TU|P)iO=aYoS6TfuiQ4y7SZ!3Q9OEGH6DT zKk)8_eahy`P*L2Orlonz(p+n7@r2O`uXyQ{O>g8+Jynoo$8?Q#Z3M#RjnMImjmv*) z4J489I8ekJxd<}lnK~Y`KP#)W`MiBuV+}5MiX9v!a_30oZVf!AcIWaTK>wy^krpMw z$FZVhFbnd|Pn*+fvh7-lY5XjC;Gz0?qWeb3J|^yI++WyE9zdO-BvW75w)Hw%1rVa7 z^y3-X{Cp(HuP9;ZPvVtPvtV={|n_#0#) zI_7bTX%&fz0|M(u&WwA*Fw5Yy&W*|qrq_y)iK;>7oX4Q*m~~!zIa&A!_YIk`BXWQP zh@_{C5rH zZ`0FB+EDv|)6(E_Fbk;I?$J(OULL4!gPYr|sDKY4H0tuMpQK0;8 zEb9Q`ay1(?3LlC}Ecx*9X9K+N=g$qcJ3cz4pwlBHB*gKL8Bc(;p(7&^aGU($(soXd z$WAwVj{Oop6s9A~&IEDtC!iRmr~SF-jqJRnN7+F{85a{s-+`v@fTu z-!>;yU5!H_H|(%&v(yj`mCF$2m4O=njvuVQN}eQYVurO^6icG?N$4$j^X=dk?Q-^s z(<0=>#29|j2B~7uR!oWSXbcYW@#d4+0dCtCnvQBMS~2Dy6bCaC;KnMvmvO)5dC~@e zKHJ&@pSzHROzL;KHm9Nh1!bZ7QJ?W@uIQ@AK{@at#U&+Gpr@frSWL=4v@L$7Evk3k zR>s;2EiP;60=zI`sAoBTZI)zP8zvuXP(?DU^AzYDs`PC#2|~RlAkc=>3KHWuvRUZw zW-wJ05yv-}MCehFx?I8}@=&Qhs>QH63A-$jJx3*69?VgbCtD&!2nEOmK2UOa>&g>aT)qptya)sx{y|&RWzucMUg{4vS98t&_A-lt%SjSA7OGrk&!YtH zZHUW`P?Y&`a~3*cQ=3LbpDL@bth$DBDpZC3U4ihRVOx4`s9U7%(-Ly{4RKbA^u-q4 zXKDO#eualM%wR6xTH`VtJ~1_w4(oDf_EJ7q-mr`XgU35DNMR~wRatYowI&@ao156k zQsQTmYhujysS}<*(;W;PlEgQ|&&vIjWM%p+#Z!)LMjhu~5Od)3BJc&@j!T^cS5{s= z*^Uc7ea*?A=N~KiNk3*vYBSuGxO&$L(aiWW9D73n`p- z-D1~xa&Utn{OYI7d_&R%{u0^4c*gx#(?(Bo4Shv{DqDTUqaS3i)_do|;So5lIM3QZ zw>m5XG zOU+-TvQ~R1`#gTOEV6f=YQj9J!pu3pe>j0WS^no8(QR`*j~`uS3`iy4Z!AqBuEXYX zITZ3YCNYkzQ$L(FYveXhl_W+luUBLxr=Nki0nI-DQER+Or8_!#dJGlcK%+j zT5}ijJLp0vQ;s-GQ(uqIchGy)`d2JWJ7npzpYzHlxk+@a29UkpB=X4rO=sI4s{}dW ziThWQY>bA@v`}4~`Uj0ZSAMR?^(P*Ke%MZFzB~WG1+8MH%?kcn6y#fY(=9>BZhw*C zdM9glYf%OKAJ{wNkFz}!>Dm(Ywsd4XjTHli*S?8C+I#{l6?9~~d>?rwSkm`k`LeqH zFEIFL;hM;z-a)UMtuwts=%SimYKHrybM;5ezu{Im3mY!t$sG#+>H#P_}%r)iK zl&aabPZQ=#qq)AB@06Et)LtH70~LniM*QVRiWj&S-tvOTv7kzm2U3>Xf2jlgANM0A ztAg*zpKqjqy>aORhD-pxYy%nhM@P^jg2d-AcgO(`t>CBzpTR2^LFhB-^T+3{bpxnNW=7c z>#NN!*1!e3bODX7lI@n5Z!1WA0$9%#=$_Fu0Llfs$HguXz}Vv+K!CSY=?73kfXJ+o zE%kKvtwXIurBBfhlmc2>+ENG>>)#|blnA0CFZK=K2fg#NbHIODY;|Wp1B$=FOPn7h zR6xFEN2oy;6h$yG)IR_M7}sFzXliO|S)AVe^H?gUnGFbXlq=$1druL8i3y9mvoFan^)tomK`Y${?G< z#=wBM$y)hAHmMcpG$8SxnUV3HrN;I(EF42zP;f9R0gK-$K-eu2Ylyi4eRj*flxU!X zx`Mx#yN<^zkaGX~k|+L|%=H5GAe9e9t~-$V1ua+^G=fv02pEvKNrFd| z`T6pv;PHyqvtckk1oSgZrx#NhG}i#j8}*1IW2bLHtY@*#vL`Sxj7lj1T%H)6ZBGSB z-@h3yeE|bz-53L864Hp;#4r<$j3=^$JAfEJOmGXzooF7DM%f?|=}*;v>m!lMLy? zd=l9IEY(ITDlMFz7%&QNKp@>c-Q%}ekwONTeBl9(92mz^6_&SDL*|rR$<2pp0-A{% zMsR^g3RL(y7&}ZPt^czWM=e#DpMR=uW=1;&WbRo_lbkueKA?hOu1DZ9Av_OK$2dGr zNs+fbUM&GV$j!}-2htgJ9_+Gi399+-=l~izy4uu!dO10{o@Ft`YF13UVmJ$Mhc6&Fs_kIop!4qk08AR0(Sg z1{`c&>QS(bs#RDGSp=XK#1a_P2|{@=&W7@vrG&Q5+u2GS%>r=|u~BY0ti>wTI#IxY>32FVro;;{M8jeLMGoxi zXKg}5gqH}~N$dF+MjnrVAix-EKTgd_cd)wv@t!M~V!4Y^$xy(m+ZOWCvc)v<#zuGQ z1Ve``J(}e@ecoPdd=eyo__onys8*pz=)dWhw6C)Vp~%{&rkQP&yL#JXNzyUtOZwV*N@a8H}9IVCn`9+LRa1W#)Pr%sSf63X>n@DmLMIZ-r5(73tgVeRr zzv*v|w>J&PfTo8d{+tQp))kz228UjYnU>fX=99YtORAttQfa{&A2f%%Zeq+5JqF}P z#Z(SN2JL2NhA)~NaW@0e#8O-NVQ9un8!%EFj<3#NI}L&UVj^%pfBvkg)LlD*dpX9q zdBZDR1uSR?|G3TX*?~U+_h|=!U24B}CYG0bkrZ>~tA-NjHqkaiILI*hGom(u^;&LzYitE8GHUlAhz91f;?M0Xf$=8fb#n?t)mQB7s(`NGqyyRi#aRRG7v~A+>Tp2@ z#sRDaM$$_haVY-PFh9j|@NY(j53Oz>I97>(jLdK=wGRS`&)1c{kH|A`mTtBOuXvr-E{Rc7*)4H5)X*D4!HFhR4T+K3`b0d%gwCU(%LF zv*W2VDChP9+hhWaF1~b;d4%vL*U!ZKxa+`0R7uUTaC02sgs*S?nd zUFS#JzpMio(BG2rTy%6|O`YL!pjOHQT)Pyv9) z+VyGN*0W^`V6+qH>+cEEzP1Am_hm4%F^GS@gONeC!6pSQugAE>VkV^7XuxOXffGND zREn=hv+dQ%=+J+9yKrHbe}NsD!K>P!$1B_=bn_dUW~ss25kycywFV)h0%5zgc2dW= zj_^|?Fr8LaRi)xm(YRWI=ON&}si~I;{9eL#wU7Ew&!z)t-n;%_`^YF9Gqle5Kqc?n zz@{`Dmw~yA5^AY0dZ%I%Zx|(Zcl^v1vo;&%!0z!6EULVy_zx{Werep2QM)F;(We>D zCi33x^VLvdWx4CsAHAvUK2*K*(fK`;O8eQC{Zdec7{De%&Y^r2hokKjwT>B6E03D%&-09Q$gdGSM)(^j>N+7%&rpixZ4wu z&rjDKFE*Njj10rCD({)Jleg;i?R-u|y2K2^cju{q+(i?zhg^5RnEU_oh4Wr~;jO_q zur0f>1EO9UX?`$?es@?qp_F6P6H;$61qJV_qVf~m)w4%!qp6(Y2S~I^SV=$+fz-ca zRq&sNF-X?F_~yZRASHG;mVbsL@n^RN*mzZ+-1ke0#xn(VEA)PVG6M=mGnmE%9vL}{ zVJ9$q=u2NCbi=}zR6nXrVh4qU;FbR`Zt*yvoUeg11b_TI(5Hv0QU1z(*6>DfF>hAzp9&6UCFH#_tJOsK@ zqGQxc939H*3YX*Z>y-U?=$N$OT+7GKB$B0F%DY z_XgWqB(U-jFxzIJ2Wb)lOn#Gux5uZ58e~?|cvyE{B9%Aj_S?~9^4F!>wY2BM;IbgJ zmjG0;wNE3jUx*7EN&?txaZF||sm~z(GCDkb2Y9YMh}gBimzBM{J7{I60^iyIcmOdL z)~CCRJz#NXovBoSnB>mZmLU|gR+V3MgrkTXQa!j%T^&aTUpVMwaPy+dKwh&E+(**C z)1~T>eCz+r6bEYCzkHd(QlsJ=U@Lh3pi@#Df0rVTjHFNQGZ3YbTUWd`2wr}NDi;Raipp^ZT1sci7lbmw){KYk8$T%D{vgG0pQ z^WYYWMhY4#3j=xh_E(-XQcSUYygStEswyh!-kmyfFp~@_A0yuN>onK^?3PK|&3cLV zgH(cj(|XAFie^S;=BR-Z2dEeV)&POnA)ssT58QH5QW`xy+&a6g6lCmu>e`Qv5VSE= zJ=)#f1w-6Fp~v!ctJH}(EKWfapzVpDF*!?a0mY`cmFNMEl{1a7w_lNS+g}_pvxl3% zG-@CgjiqD9+q#rOXj}yXD%EaOW>~oqVPjlB$41i}@Aew~S-=+%I0ri0x)dM%1sQ=j zLbg-TXu}GLMxq68ZWgxGvZ;jZ1feCq7`q^fuMawJ5W3wNO%a1w@dTC6?Wlfk1O6RV zd7M%oU^a9wA}en!w?1$m`$wkqLvKA{C8UhOJI4dy2cBN^M{%nT`I#rsrKAsIS zma1FaCpnZLeVPut>hsF{onL*@=sXx3DJ)0blHcK_r8NV+i-4SKfgg}ub3Liyz540^ zYVdw4=JwvEE^YhtM>dUM;b&iy$W7P|`1*wGMlCU_dNocn$OR#{)9l)+X4j*&jGwMj}&QVR7NLpF^7qLwQRo@L>1tmu{k*-9|N**#KN!0 z1l&$R6JyJtVd9j*mTh!#7W$=cdY@?uqKEye4jo?C4`p&FU71z+fK?u4OG!#jTJVtJ zU-m2;3j!wTU6Ri%4sA&EYn{;@ppH7lrKOG3UJysUSI5x%MU{|@uJvup9mH$eGf@RD zf!;!I!u~=3!?cF|MpzY9`!KhbVjZ&+*<2K%cPvw35?AQg9E)8F+T?@U=I@5T7V-(t z@iwImsA1Z<-c$3QLkP&rW$;a4Xgp}4|%1#f@cPAs8i$fM<bX*X=aPkJI6>1(M|x!be(E^3{sWmEKV?Uo;SxS?pjJ3AiKmijdn2G8`|l$mzQ z%LKOw5xebg8?q1&GS|FqY^mUzZPmk=FJpS-$>=JiP$(NKQcSPuH(X_HwBxQ7kGO+k zWh0;ZI-#2A0SW-$Cw+aC&39IrRKF)XuLh`09`YOss1PdNbDBBtFQML+~u>5a=p#D2^-@&Ef+lka6&MKili}0f?2--l)*cBZb z8hT>i)Ty53Oh1rr#5C+sm#k#R7i;(ht9LNTcOlJpimBsFUzY{VrlB3FY%n`6dosY? z{c%vBEGShcXkK?HSk zuyoLN1_tO@T9xhonW>dYypHc9`%vL%zbjmHdq|eT^$;fPc&X4Sk20A?jRFa3qV=Tg ze-QW9L0!J>zNiW+Ez+GzOG|f4inMe~cc(~7N=YLnAT137ihy)WNQZ=kq#(Jk@9$mj zo>_C&S!dSFKC}N+8GPb??)$nvbqT0rv{f3|SKpZ2GzqjBs^#perX-AJtGwx!@qpX= z=mi;`>kWO>C~eC(N*kmYuy?KKOq{p+|1_D1$N#VaexLk#Y)(AA^a6(43fOk6*wtku zZ%}6mKfTN22Y71bTK4f&;M69cHi-Jn(~o6eJrm1(m`>RFx?1#|4TbEQTZ3EN^qAvO^aZh zwwfap<3RS?ax`U2^jpzVMJN8-IQ*@Bpc+evxS75|Hi%Q(&XhGDMPaN~S%a~9-}^zP z?o43A=n=F0{9nhg!RVx=E%Et`VI8mYun}1e_I8b%U-+Egha}E|#9$ohYuBGFG2*74 z8RfGh{=zFz-&Ez31H(zX2OTK)?`BQ%@@Jp2`LM&YYuPL`|%|3K+y!d=m!1MfK2Z+MXmDOqUr7LPVhhDeSOBC~MxX^Z1BeKA*l z>sV_k^dgrX>Z)8j$9c3xCz^yGkC)I?tM)8^#?;E0AKV#oMR}Jq73*oySYg=Sy!?am z1#MZrXYzvg)}x>G_on<+W$$?Qy3-^c|@A?~W z{x0}%F}_rC+6>VL{6}=xe^oTgsN(Iqh~O>;tu*x@3D^4ytE} z_4F!RcpdYK?aoz6E;v}SZ1k2mrC96(^f=df-f04AOi1fUHH64+0t-ni6G?{3W{@O2 z1a_=Ms#ChDwiOBi*9~a7kKBcz5?P2M<{|-UW8b5CFj?@?(_3Di9eaPhi#bs~F;G;* z(Bf2S=kW(Tj-d5*hkTB6sIL*WN!#;o*WdG(P+bF3ECkIG*ensL3s9iD;9h15dYH(C zhJ=7LlvU^B16tY@Q0UVk$^%?uNRENxA&<9lQkG1;RND#uyhe~%RaG@*{}6+KMce3- z+2DGe$7rk;su94`Vb1}KdLD4EvPNh79fwEv_iI34=MYQAFOijL$+ibY&JGF!8Y?X= z1#xNkDro05K6&nkhoc-=&2VMuA*g3qm6rfJf=u`mqz>5_*^CBL!pb+?0ZHJ`-lRbn zobLFo>NSeLFUi`CviQXosPfA~p~|-2dQ?vSd9nuss`J{%VS}OUlFp*w@BHKJ&c7aU zcjCD-#qv_x*V9wa-uSF6_^RKi1xM4*l9WMe6OZ3gfSZtD^c zWX2MW27}<66X$D&l&v>z2UKg%eCZ_o&J=-*0Wp0j!G;o_>LD|RW`#l7NmRD54-bCK z(IT;!*L|#9X`60Rd%ODGVb+cP-sL(Ve!ZWXaCHgXtzV=Tb?r@_8GRZ4*yOz#*Ux$-nBvHf zYrBNt)`_Z!7^5&-z7tD^vqo}`>SPL9{&3tK9E@v#sIn2NJB3^JTL3Pqb+NXfBpA@9 zr*D{|3_(;Fv2LBICr)~nR-Ems57g-v4~Rq=Y!3^RGz>ebu5D|)6z%L-oqXL09y1dQ9iy4QBK-WR1+S8ESk!<&E%)iV zhK7oPFzp2wg&mcFHySlHQ-?s+ZROT5_7qF3hKb7RdOkt1KzgoI>u~6fmlChxORo*_ z8Ki%d!sjAqS_blF5KnU7{#UW zNH^n~cF$TB&!333+O+AT*fKcIH?gnzZD|vLyA^Ts`A>a7r&nqwa#HOkg;$UTR+=&Sq#khvDgB_#xpNiC z9+P-ii-;@#?%r(@6dZiYg0~h3v>k5YeB;9Fc`k|;(+{7&SYM){qcn%2-?@is+#mn2 z)U-vQF7$!EpXLp#H^$~f2eTsxruEl$ zZFYw%td%6F0Ke(U19gQ(#GAXf@3g=T> zVm6#K#o1r|NM-J1O(9;U)8J?f)CsXs6nAphk2MnmP-PDRT2V@^Q?N|3yU->YpYxq^ zh_TglUW%ipGXB=}cVw^kc%M{R>;jvo2|f=^Txm~tqeUD@B#}t!Rj%0zE;Lh=ygpk* zd-u9>(blIckG4U_=@PhhalMLxJEXO+B=(^{*r?9 zf^9y8Vd-EEXJG;#H{xaQ4>kQiR23+}JKFo`IH$KnNXcFsVU0McBiJa7F5*=Xh)ycW zW0Q5)mA}1DkI5>th<cv41{Q({ZKv##-0kA7L|7L1!!g5-GuGF<}{0TH#5x|9jlg1|`M3ey? zib#AS02o9p!`D2z4B#L=Q0U`mKrjE)m&QrPrjKjF2_Oa4YdBEdW%>Htgy z@KT9^wH}-#6F}ht{WM zJ{_|IFfc>xB(X7E?pTGP=rVBH%>UuyT}y`=kQJBxIB18d7-*VnQ^RzRxDT-FFn@KI z(HI*W18P3Js09vkh&ZSfAtfb^Ty>)4RRG+eVIKG#phUmY&I*D0=g+z5)&4z z+VN(A#=6<~&5j%wH}BEW4P$#<$O-DZJ#%^Z&#mHo`Qwyl4!H17Sl4}tj9+Ev`}hM& z!hA^fUx$ZR&Ou$f2$?wzQ@{YWq8RWvM-$Fq^h8boAPSDx!)4XBvFff+k6TFDg!#Qs zy+lXuV9CEeUmjBtm9F(F4%hEjVsSEffQTog^xgXc9|t-fb&Ru=;q^E&A%FSd;Sl0^ z6FH@Fm><^bHy~>OIJGY1i&K=*lI9gG0h{>_(a$BKv#orTdkRscyfNw8 zyA5;(UO(|M5L?tdXjKsO32NY@*n4Rw!KtaK6H_QM7%$G~vwho}3NLp~(3Yg6VcHxEN8|3#6*1rnC?3 zjM=|zck&${R@VX2Y7Nbl@?9r*xlT7%eA(NUZ&R`H158^ZNXo|b+RDXF*R({h(OFIo zh4NBXmkQg4j(QB=|H{azIuMb7dA#Oj@eDgy;l}v;VT4akobN8S{d9@cf8Wjh=k(@~ zy|)Qzh-@R93B~Ijlm9P6>JdZ^nrDz=6BC10r5-l=t|qrypw*1>u&_kP!D{QSMBI*knoGVu$m>1l$q(by`g$7F$?y? zl8RQ6Cp`lL%B#P8c&5oU(;8OArr`4h+6n_wMoD zV+;nDqobNv_B%8WYinx=1#aL=ts47V)~fUSLkVyf1@PkswA}ft``fmL3(G|Oo_j_> zu=ERp@&vYdjd}W__7>Rr2-x)Ufp+}6bA^wqK2N-^Drz^6FeCeZjr=xRAfb@V-~=J8 zqF*4N=xtnF;M~A5barx!Kz=a)#vO0V(1Vs1(WAk6zfe~`&u=I9pXtWBokQpc++u!n z17-XAXCHzZrG)nvQs&3dmW>2r-&-f$Ko9v|oH}JZc-yZM{pwP17xIH36x$oL&x3}m z;N5ls?KUumZQL0Usf~AEPsQ<=)f{Y1;$F6F25d}lFe1#4YAV8Rz>k8BkpmL~2mT9k zG2|yGnq*_hRNtcYONO{>JHi$Z^$3{%=2dQhlq}-h2lxtrL&WzYGZ5V3BFAbXqQ3ec z1fcr_f?h+Am)yOD5hX+pe%*g$D7$gwtZS9)>FCcRpR3GU{b;+s{0%O@3s4GPcZ)~h zKt!!J@t5teZheTsly-revev#X&d2!qo<=g zyEg$4%GA^pU?T=au4RCp=udvKapT`Ny!Uc)G=%1}tJl{hib9==k4Qzz0mY2gzdbS9eml`un+u;OjudvJw)0Geea6 zR%(%6>Fo8h&WOC!ugD4&G!*^J6iX{m%le(}8Ml=68(yDHA{f2^PcEM$CORBNi%|eF zenI{5L91dO)FdENR3+}Z#f(Hj% z6WQb}D(ZnF>Ggbn2-hQ<%Y=trMCRjOD_HK_ky*M9ElEY58F#Bv!h;{P-IR$Udbuf8 z4)RkIlEw~|FU2&9S72p!32Qg8Q!S~vpVYPSy=SBu$KTOW&_!_=$~l3^{gv7(e^aTNRzxH#WpfC^d!nc;*OWlWG(;{uZFH5uyoOVq zdMozZ7F8B7lk>oXBZ(1b;g0v}X>cGwD1=iUoCDZ5A{Svn6ckjn{CWOFk4p3)>Ic$zS*df73is)Pf`RW@Ab$>`ggSrpKJ?O$2 z3TTSc-C~5pm4S+fB=s7`3owwID&EbLJfw0-A$}D9(@@n|ewk6pbp-s@}7xLL4I zrjr<2S%p`Ei~`|?-^h#YPFIfE4}Bx?T1c90p~ec=ZBVM#=*um0vZ#T$ym_KH0h~M3 zI|l$wnLOhdC#Ik6Xs4M$B#h;TYNs>Cqa`yQ3xPvdJrMOq&q`W%4}GIsnE_K=f80Yn zG~wKYcQ%M*K|3udZAFzzF(l(>A= zhCdt43&EgD*LhbSyLi7j*0t=itM3&d6?_Y^=q>SL+epO#P5IouyBNG!+8iD19Noh!bJ6rj)YU|0EJC;!Iai zcX40u7G6+^6tQK>i0D(~&@c_Z4V4t3{?VyMaNvIm0WzI0(*i`nr4e8nHI2*SH-JAlip@^V=pgRqWR`s4h;S@XcTP-l-17)9j?%FkRNhayLBunaf2LFB zx+o+Okwmp3Mf^?mkfqn)X?ATz4fho7Y61)6*Wmn6ME5DvY=4U&B_*y7C3U9l`pRc3 z6S8)mnb{JXcQ^5P>bOUdJboRN*XQppOy?8z(0rWqyR?^nY_TM5_)}ubJMj-|QoN~D zcOj+a_1f3K<0RyX46DDKQC8yDZp-xgTUu)*LFZQMZTrB1m>cfcG|9`;_-w3b_s^ zZn({)EwJY)Ozzv%lD(L8XljX~lll|%J zFLemX%!bw;qp@cx1WKIqQ$2dk8%SYF-ZGU^y7&U)z4yd%@5Wn%dA^Wlc0(fYjj84f zwX{ZRv6er#>$sSaGI3pk_U~12MRr(Y1WByorOsV#6((H++&VHe;#J; z5V(a(M{1^={XIG$TiL{4T5_wM2G_Hu(a3%B?lWf7kT(vQ$S5{;igJ3GP>uxH{T|gX z*#cb??bp(2oi;Tjv(L}(4f@+(PE7k`R{bp|v%b+5tm%8f-s=4ZAk?!jsWI3qgzd4m zeH3?^b-vOy(Cw{j|7Ner)R!ifE#@nU?B8$;yzXC_F*biE$c_|Tn`vN;$BlSQ)eZNE zD=li~S2d6vUT;1*lD@o^K!|mubzuVMofBXhRok~BF5u8Mwd&~*8@pq|cKWhBFbmP2 zMMd8TSpAmL!C$nK295*v9LP2%_M*IQ8I^zR zGHh_9jt-}wR^)yW=#Cw_3S(Ae>LT3zlU<^?vaGY5lT++&sioT0 zF@*dTt?O*;*|KH+iojRuUHU^jGM6leh`1myAuMPX-B@WvM&O2oDFxcJ=g-3k@RBc5 zmii@m!UDC#=Jpob&VH5j?u{;{cg1Uigpio(^RENLdtWLFZq**#?x%RqI~F@|`x{!6 z;Ex#>5xpW$@Z;Qyp+ZKkBdx%$BG~US>ez3;2)Zaspvpjk`9IhUDb7=cDX(u|k}8Nd zRDzmyZG`~Y;f>WhL|IW1Ip(>6g!*G@eEe}9|^4MtU?RdLD+POnqHrN60`sa57 zoB(MmMlEA7ZvmuV9|EZ_pcfPYYyylo9su9Lm!(d4tA)O-!Xf>!&HH+1w*o-r@Rnd1 ztNAlNl}-gIA!tWmF@+;kd`#h|6@Sq?HMI1l8=KsByg}Ucy;MgHRbol?fj<_}1^Lm~ z=;#r_HthdUp~@>Newq@sxE}dDS$~rv>Z!IYCJLNiW)=wj_Xa=cfgv6yh21#FC7oRy z1q;;j;fW%5P=^AOKR~TBkSPdZ`FZv8-pqNq5PJkcTi$t5P_@s4a1C0y!JZx+7%~Dj znZ}+K(5#3;@fOr<-bcV?L4$~zCsu|Y`Wn*Lkoe~$9hTJ)0MRs*t&lkg(We&B+JdII zOuZO~QYC}$Wqy``8(Q8md^2O|Yrc@x4}KM0n1cd3OQO;I2G`AJ(ch0B%B{UvUqlcAyo-G8*xB(!An>gpv!;vO~o%qRASc!exoY2=TV* zC|0t+>HrG?Ci!0~I#$(O$n)U$J9FJOYzZOC zvj_BfmRe}#Y1k_BF2WA5@phh2>Fcn0e+BfcZj$l7J7f3GE=by`C{eQKd&53)e0maY z3nP`z;qIh$5JQ_hwyW)=hccm&ea8YaMXaX0%SWq!09{xb1bybwll$dUgVvQ4QP|z8 zNagtE%V}Qb+r7z2NgC5Pj>nsi?tcfzuI>35vt&9pow;HL3*Lq8YQ?Owsu7J;YY&CX z4vdY-kHRIf`zf!iJkflzv@x8z8X(M(*9Ivcw2v-Jd!UIpYIXH|)JwAQC|J*CzLx8h z|KY2@H+iS#Gj(9jw(7LcB zdiXf-(Gs2#pXYKUm(I)3h(aXL{5-DRL9I#~=bsBxb<-*kZ^cDOr7KGnea$oX{a$CM zOGD4oqL6LJ>>V7)viYc;@qU_wPPmf8v?P&Pr!4u@ko9o-iOns3>(8~hih5iX;sp0) zZAaN!PlK9FMqX)@&;B`9k(W2ok;GS(p^>7zBtu^ml787Vs?n?U969r+L<2zhGVOgeiu>k6S$&_J6fInspQimzA*AzMiIM@Z$YXFh;TD@rnXoyc`imdJLkJ(;6_8KGY) z!PMS7e`aTn!rS%uV`M7yIat^(&79kuWN8=&fI0>iG|hjXufrEk@!2_iH%~bA>!@a@ z!=ZBs6;<=)p4)h!jdW^*g+boQ3Y`#Fwur>j-)d3DJ`h%kOHIIQJxE(heVWXuL^)B& zdm!7lCyGJL*)f}@^QsY{*0a5a##@}S!qkq?@TbJbs-sl)7q`ou$`<`bZz?LePEd13 z8{pz6Fqm^hyXp>{|H8N$dT*pE&9is0Sp6|G!E&aZa%9paiwX~<^7iW@Cv>F)RiA*q z_vs>Se`y@jv2r0@Tg6e)xJGiwLfXF$~QZWak=4%D;qX#;!!2ABMjK&Q`l&+ISsQV3&I$X=M99L|*{rcP=h*3U8sF2Uu;=%mViO?q2p-L%tQOt0l-6lG&h{#`Xqgt3 z;if6UY;{F-_%{}yvEF($+o3Dbn39pW5PcCbF!aw&8f?*$HGU4SBUf5S>lq<-mE+w0 zX1KJCab?=oQAb{A5)xcfp+`L9;!^fojp6JbS29j870pZ&+OAPKXW8?Bajlvkv7OGIr8{hGKnn8skF2jNtq{sHM^N~*yL=pa9w#EKuSoxvGFe8vufMdxg_ls_V zWe-m2Z8!@N*xG4=5jyV&eL%66JCQyf-S@cVLj42g3mV}7xzkSm&e{g0pZ4EB=n;YQ zQ2i$A;+weesq(xmZ>!~*-w@Q>tY+x9v~R3$N-NPoiGMvl{`PG0o|<$7(+*|!>95ME zcV3SY}J$mHuvW>oNX+F8jxh~3dcEnc`TC?0Ze31{RBe~~cBJrJq6fF~qDecHe# zWX$0gdK|5kDY(?*#u%m^BH-i~ib=x7wAE9!rLOwGbf8VPT=fezJu@>iFE2CwLZGoK zxF35QVu+fBXtf?0Bzly*7VvN$OBUgBwGz+jp5-$>k~1_6mHOtkLs08#YV!O&4)Rhw z_U>MI_+Cb0huf2`%0cDlB1@^5_nB~Szg~8cGn-jr6TYuiD6yM`*=M1c((*=3d*kaJ zw-VgJNgb;Qbc=qaa?xLn_QbeZS#J`_HQTOThTI0z_E!)4#+<9Pvv;xuS9(xMt9Ob` z)J2Zf!}{|}ry9aL-ezZHJYNr3$*5(0q!prWHE((Pu1+<_%R_BqFpa~(R7UFjTlQ8G z|58uS6Q(A=_Ptgo4Rw3XAED77q!0Ufv%R?TlniP}M`=xS4|m`T{p^_ zJWG&FuSe0jjHS0Ml&N__^qrnHzQcKRVlai>!PLUu!rIwc*@CrKuWhSHwZ%lDnv-j6 z)LB9!xt3vMKQGj+NR2vwNKHjO^;%NBZP064p&q$tIb27>YW`7mgVlBk*#X{G<0*t^MVQ4)93yWM>FnmVQL9UDDpfXQlT&d1?%Cf`zdQ|YCC{Zj zpix#a5OMH#9uHLYOB+{zqY@&mn39DvHgvW#>sEX{#%+AOau5`C1$wRa5F{iS!L3$7`kW44+2B8+i1jxBoE-caGisK*mvr7p_HF zU-$9bq5_{IlEL^xV8wi^9|%coMduEEA(GR5N^>L;r4CGB~+k~rT)kET}h(PH=n(%|T=Z6Ogd9orr(;iuZs{`^( zxyr7)AJ=7tczk^1Y_sX_JRVB9Jd&iP^!6{d7WCClXQFPj>H}szA(@n5#>2Bh?xTS7 z(b!nM?0CclWwx08uLIPC$=xRl>|1}=EghWjc={i%RTiDL?k{c83H_ZijpdlrcrnJ) z^(|MF_rXVH&t)_D!{O8DCA+hZ^AlOBx2P?-@$=j?S(U60$|YaTy7i-N`b-RXUM-Zk zR8;xRtOjH-8z1{%suX2cEpAdvQl!NZQM?^4lny>nEf|>#J&91xyqM}9QBjt|h={?c zf7@hpU1z;{n13`Sy7pemgFQ?9*9?i$pW(4X&h&dENm?WU5zm`seFxLtQj#1HUB27e z6PFQ1iHM3A(78P5_DAZX3-w^PrlYanO9?I-NXX95G&CR_u^C@nyU&y>o!wfMTAel6 z*E{u4r;23jWC4^v0>{bYoXm-9X5{f~>q?Q*Y&?{DYcMxQ9K zFd?8TEZJi+HojkFXX?zuqS8U7IbFP^Nxv@Br8yw4+#3~MMtL7cRg_N1P02*Y%vN1W z+f30_?nh`Miy`BBzJp;4>kyVpB-aOD^~i>z{*LdY2Xt??S0CG`N#vU5Df*#Dye`gt zrbYkW{IL6%S6_lstcV=W_B8dVjr@+){@|vT+22#CZGCO{fj_s6Xq^FZo;4ai+X43eakM83p7k(%ru*>5tzA2xO z{-(i5Nk(0ldt4>=dQ3Q(btWY_wa#gNiay)lMbe)8AYJ56j?EOZY4C9|wSJj+X*fp~m{Vez-6cpAL4~1B`d6@+# zJsEhnhI3ew4zF`H{;u=qKUj`WO3f@WjYO#!HruoLjmeWegB#*VY9A5zH1WZD?6+uH zXQTkeH4>N91&dfek!r1qQ{$CTtgFPUxYvlRtY{ zr(`QP+7#`5!_vV}#81Zcl0%hGgr_M)wuji-i{}l8cKe|o^QKN%RjJ0p+Eh3H%-e!O zbBo|_ybkw?-=qd7ZP4$Ni8@h;kY$ybe7K-~L!E=MUpg+y|7)mLj84YJEQRN_WIMAu zik1lZ+wy(O><^|rC^Uf;E1T<+W_*-G1GqcGd!h-iQP3GbKbx`aFW$0}A^l%(n5nYwM) z=qlX%sq*%r1@e-I`QPu;xSXdEUmI{Cy=t5(;y^_uuWLzolbZF(YR2PtoAd^xWrK6E@3;6Kd?HP)fbxK*@{8Xpu3Iv1M_oY2Mu$GDI;p36i=Ur2g%dXLie`>dsl!)PioN z&$T1}R8d*ij~=f0}+j<25FAzQ#kD=abQYJHqPzBY~RkLv5*!j{4|c z`CgZ(i@#63ozq_1&jeXk;x^aDVx3q;p7mCTY$tYLrmAK(KjzIS)L1@?B_8kUH@BC0 zX0557&g133QMpk^o~Hiv5rQ7JHw?aFyyq7|ZL(%yJ zg}q#4l8uYjtZc%E9F*E=O=-M-zKKsgdCphvGG8+Glu}K7Hz#qmAFaynz;{(W!1u8G zy6iHp==7VR_XnGreG&GD{ErgyKL*TH@(AZj*7M~RN_QMIafk@8TuZrdCE%z@ny%=o z_qc?Ai}iY4-?4i|V=(#PXGfO@yZ;yKPg5HUpU^~(EDcGM;(E%0A0Q=|blBtZOllD_zXLAN$HmT?@?H_mRn=Clld2Bu0T3l?8TEJ=;H}&TY{rg(s#H_3ucT@TP>jwF~ zwIN-c@AON>4SRdxO!pg~RMVCAbr0%`Tn&U9qYkws$Gt+$Ob~ML^>(-LZjCsI@oW#? zQ~lc2aw6BzJ1x2O(4vU1e%X>vnUa#n^R&om-%Eiusm@;JxrKYzFP*;gBa$oiu<-Ei z@ZtUr9X5x!Y-xjeyvXQiMDPI`0obIU-L?erz%QJ;NWUWrm(>jXz3VQ96|j*-0hyC= zzsn-k{_7;*kH!V2=Q9Z!({$ON59rOqtGa_kr!m=fNq zWW9aBYy_f>hg0S8;C;YzZH@tb*p{_YGhX~2S3+&4!005jd0U(K(z6-uoSJxUQjBX8>C}qq08$d}=MVtpzLRvBquE)oA z5UIzg4m>8zX4(T9(wUx{`{>JEN_E0)5HL&>t9?5zfgGh6wEB5S?uZ(km(B&XfrZ4R zo=bES3dj_MSy`3!xmn%ue@5zv%{|H_F9x|KFn^ls-#STO-QOK}1`BSkwa_^I6b{GoUpkkvEbuQc{XoNd}oD1YnfIE*w0??=}q&eEy9EI98#1 zRxv)kx^(S6+?IgRS1SN&Rz?ZDSz+Q+A?uRr#7{G>Leadd0 zCa*H77l~;g2KOeOP3SsAM@6j$S=mAq(Zpv&$g(zwK~qoxn4f^eB*`8n{B89`aALM7O+8Y$BS<|YqWT~r3KP}ye8FopUMknOS6m#Z9ZGa@XR_k6!onI zJzCJ;-xPEy`jCk}6$sHx@0zqPl9)7J%M=#GP>L$=gDyl~v!Y=ct%>G-nns6`1)Bis zo4xNq^-A2d({U3~UWAE4zA(j!#lxaMMcha?cC;}!l!M<*)C)i&kS9x#BQyk}7kiR` zX}jG_G6Yd_u?me8gB1yW>$rBK= z<}z*C^%f2MN0Oo!M4U`A+utF=JpiqN==FumSmGEmQ7b57FwOx}AHCKV7$rt3DAxWVSFIgTj8=GTj1mUTs zi7`v@x9|y$8I*f(niFMa0s5_@ZZLDTnrPG96_PtC_yt!Z#U6z&b@S1?HpJL>yku5o zwg*C66nMWtx=Ux(RPh*p4LTgJu$Th)QD*b4h#CxZ}l8_VrTW-$cblQcp zk<(2I9-_}3GX9Vy=KkYt4WxG{>KBXp3HmAsg*P8Rx}BP1&v+}kr0_0;2~t|hOU`u* zJzm=`Ao+0H=H17eb5X>qgk(KxH^od<3!>h^j%YQRZSzpKPlBwIAWNzAMBfzIDvTw1 zK)cgg%R+Z23r0%}pfPtHUz|#O07m3kFAjsUZ;KO%DL6}HANQJN?f;`i25RyTkTN|3jwhO zdS0e$YCf@BtMww};?uabGkk3~xzo!@=P2ao|R&NM#; zGX-75Eh@_zAT+!{^aZJsXn~!bx%OKNyQz=Ad^70YML`Th%fX1kfL>0ZtFp|^cqx42 zv3G1t>>Kz|RIHV+Q|7EtEFY$SFNtdH=zS%qn5)2TlX*@6$0+SlDTL)X>EwsGoz=nj-2k$UMvRo)q0 zavV;Z9z4P7tcWix4PDRO&7;KbOu^)XRC5lwvJzF&Ld+L>n#I~@2q%u;96=+hj!7{4 zn~mj-U*@hkSQ9A6Au++JqXC!NHa&{ce`Qqk&5)$WJc=+gi;mxyiBg^9mlG;_<1hDr zsQBi#spnISYTdp1g_dR0vHkf@hi?_dhBZNlW{+lNN5rS(o2}@IT0eHu#Cwj&wx5+30b>qw-O*S?ppzv5#syW|W=N$_aDQpOG88C?-vHzwjZAH-|m+1y(Gmeu}QYNMEy z{LbcN>X!%kxrx*jN5~iIy(!Nfg@4-kX1ZKXIY%xmc!#}Inm=mFy4ZNX9&os>!Vsh( zu#ZAre2TgEdGw{e+WuifZ^c_qf+HO4`}sS2%E+v&sYI-pdw5g9dE4i9aRP0{9?KX>^XR23Mv z&v`dJkp%{9lXN-eeWF#eJ&c!l9?LA&ykf^kS?{0jz$R^T z)L6=ZRaa&}jC?C;NHOpkt>dSdm6&V!_b+$buKm4l`@Pb-RqoW39CGJ-77gph=Z-v9 ztbXhUd6>Yu>EkNBv&GvScYUGegK<-a;ctF{EgSxQdoBu5Vn=el5M_=ik)22QgSY|& z1`35m_%ta@DMtPoq%Q;IM$A*cC+;VQrdrH4IITS+q>UlIMJV68Z$!nlw{cP$bDy@W z%}xI|{)?Zgc{2OIG>GenDxMHcNq-n&yUVIhc<@5Ytd|8j^88uI&ocjGbyq&CcZ0ED zo%svyLTPsnmC8m>Kg$p9FWCbKzfhs>@#08h_r@@r0L zt34}mRhcWBpSb^eA=2XD_FXo91!4khmZc;rWWuV3kigFqf6AkMIUqSZ=&4*c9b#D7 z|05$Ur(5-dda-;G6XVioE{s9<_6bGr{P}6XuQH@rtXb6%T#TSLe@6Hc3c(-ln$Dd= z{b!a^ zKx_a>CLw2xF^vN)XD+eTLCcm5`r8!#;tbqN?sJtXsHx8dA*?8<=vrOn6$z&XBIIn1 za$BI@f`Z3(3etKU_ZG!Xl;z~Kt4wZdlD?_l1+UXORBas3Ji$vVIvJ1^DQ2Xd$?rnP z!J+zFL*^9Jw-CK!3oTxGz&G26D5Q~NlRXdk3-JV$d-*_|4$X}~eS!NN=ai02v`ehT z92rp~=&%o6HdK6leL*z*q84PGn@Z>){_T?OJ%A;o+LD;odDrW6MotvQjrEuzfA?_s zc;+BDRN?NT)AQcCSB;0_GZq8h^`g-gJ1L0jb-imtIU~JVFwz3kVXJ9ymmDAeXQ8A( z{o@n0Uob;+<8lBY>yw=+-(6Fq1tqYk|0mA6y-rU3R^P_QU)2>rp?Xv|$Nd^!n@gTo z6SsNJ?VjpJwJApq35MPn`UrI_j62NHs>=Va)X8T&Cy%aEuj6Pxpy=^UHYZBo#~*@H%)5p2T%nen zYLnuGD6;1xdZqg)L!5M0q)k}Gw8U^dkj#hU*Y4_fx@_XWqP$j&$r(E}?f%SdF8POB zpAneKi86e+6TIEsc{tcVsY)6atj$3E$dz03F>V9QZ{WQC4T<|V@Tn+fSrUIHsEFje zwQ+dm^365BRz#R$7A-04EYE@UsH^r1jT2gkP z8?_fGn!otb(fF9lF81L^kPb94MsoJcY@@V9G7?%@S@oWN6+Ju-uiHlr++fdr@nHM$ zqc>90hg;i!5f3P4r=pP3-1fI+ZIJ%ImYb%G&1#)+nrc0`@f3*zMt8QliRh#3TJED& zQJ;)c=V_^A_fEMfH14Eq2ZX&4<)b{R)~SZ&q+vA0W9jiI?XhWH`PTM)Kk=1dzMZbi zSni3T{-FNcfM^npLP|MaFst$TIio<9!OM}Li5OW9JJJE%_)Sf=#Uh!^0LxtDR;qv9 z|J@*)dEeWA+P?Y(p0^RA!CbyUC4VbYmlLxOio}AbM%)~89Hg}FniUCK6aC{Xw82NgFDw{hHnI(jP+ai-&Vlw&he1TK@tt#QL8?9|TS30d@DQQle z?lQewb<|mVohheg{55&5-%^@grQL+>6=oCM5)#XMI~VuK+*EB3p-KJ8A@_L_QSxUF zHoI-(6Zv+{P3bVK_|w??!Q(Hei6Z~T0!Gm4#`RB3#x2dYe{VSD%mw=6Xb`?2b^Ylv z_E*etAf4^v_a4RK)$b6AoJRSK^b5|hUrCuFr6i=uyFtVuRbt;dU)uQ1y4hGnp(MM# z-&vvbW57eoddOo+>T$QOx-LfNc!p%YF`~Mun=~?k(#6AJrbO9t+Ru*ImN~C=vq_fA zqdSXpTP=5#+N<|(By&Hp;UB#Bn9D`_1d26HJ+^{$*c+@_AZ zBT)-?C|N5)ep?b0?l#lm=)rk%g@V9t2)>U2}tTEAA+$(I(y1x2N7@=V8A;wMU@c_&Ip&rTy zV!qpHsW+lopRtNo;GWj4(XCyr`L`SOzkMWP*QII95^B_^#>9z5F$DNK~|QR zho8Ej{{d78kpT!3S`hNXBM#OVHsHCkeY4T>_x>1+bI%(`;a!4%X@ankToN!4fkLk5 z6}X@$0&Xr;TdJ7Ie1tsFRLIPGh2rY&{s$~S_xIr_Qq15}z4ST~2a6SGDPtVB$fu80 z`M@9&ehzTMQP;2DsS05sA-z9aaCxV2c`hz4aCVJ>;Ryggu+B*T*0q=knsfW@&U|xs zAXa}CWNRI1=P<@iwjo0P_l^!+6j+{^R*>5PXws6k5j^|cNP7-xh)>OUH3^ZI4yYm9 z8WUuwCnjCFx~OIj{`1_+7&J-TS=KW6QU^)P?U#7y=Z1bEv zyjjzcldZ{n^^e=-J!f8OKrB5m-Qnk#NcRo(ewBMU?smtRerv31+9F1Ws*v#B^n?a@ zBNZT?0RA{HiLjUccM(DVS^Wc&;Qyks{67UjLwHfpH|(YVKZ5>MpWV)cr=1LtvsuqY zf(Urmz&Q=sG#}vU28%*?Yu*n4>6i_Ks1zuj=-CN#=ipB1zPKk*&EEV_7y4P~U*J3Z z;9CY&3H-PV%7_<-r{ni_6v@5|DdGqIOJ4L|N$QGsC^D|7d`Q_ZC%`pa_;16%bx96} zojX;PXP1U)r?$T8-Pc|C*V`Qkag!<`kzpz#3gRh>$Zn*>Zq6~A=%3$isl9o@(w$vW z58C)mwhyB80P$apRgi9&`{L~Ts~9Ww9{~;x&HrNVEu*S#zqL`3?v(EClrBM1LP|*i z>24Jeq#GnfN*X~@1Stun1f)|sB?Uo1Y0g~#ID4OS#vbq3=iMLPPtO?muvlyT?wIqM zSG0TT=ntjwKev2~^^R!D);kBU`U&USTQ*k%8OQEm=DWY|GFqHVWe(@57D}WvyG&+| zO&PETCvXm&c#C>ATX5Su=SV-x;o0{|muCVODZ*vH88-Sd&^D{#Euse(LDp zzNTj1!_s@_#o0TlBFkHbKHA}mPsxvUA{r!?8=p_|r3v^L+RT+arrFlR*g701e$eyS zL*Zg+xy9n}=S9{LE^w8Mk{t$=Gv(r$J0JA+_Vuf4#Gj0@zbsjNGQ961u%>CvI>55? zZkn4cn})Vpy6B#X`g*x-wpsQcu{iGw&rgB z3e=J_j8&W-Lb}9c{YFVC9Ak0xDDi5S8-b0SQk+H=KBv7SU}4%UU3#~wp@hKd`EV{C z0~M>(ZL6L!&oRp;Rp<)5sLe7|#wcE@g|qM_$!dGJ4Gl8!lQRY`1pV^cT% z#OB{ozLAsDqTPi{JH}E{Pu%IuQU4D4)l*=xBsRm7SK_Bk`gVo zX=t5&@tvuqU4KLRa4oZU1hbn-yiuH!vFTp-Pc}N=ZawGs3)fDI_CMk=1d|Cq`ut92 zQkFUU-4tmGDHQP-F}pKu6-H-%riRx7qAWA6hNyB4`zD+)FV8z>8Y}1B(?`EtJ{wTI ze{U|!mfE(6hDM5=D`}5Sp&C&e^BPu`w?C8=E+040-ZO16f1+cg-bSX0ROj`UO%+)nZMfX^2!cVtOFu&<`Es%zqd)S{h9A1!eigJDP;7VbUtvXvl$KSg} zMr{ARYB zm+9ve`^M=+=n!paWGAMrvegIJaIkT`_Tp}$AtEBAO-jx_-RLkx!NAAAUe)a#-j7Vk zs^z|Pc6sVs8U2H?SzaM5gXgNvo~GaKgGbM!x7rERq7ROrTn8`+5iTcc(54?PGX*U4 zO`8;X|1RISP8==MuU9suqD^|0T5Eom`K^9K5*_@JzckeP&+Waxpqt>bIQ>p|-y-j! z{o#oxW`G|dB@r#5L!`e-_Cv;m00(22he|fSzmux(^BvoptlKd2q>7$YGg2zc|1qd!&9inBhhx9>@IdkbvHiEnGjR)zSE&|!<7j0 z&v+KO$-Mrf6c#>N>D7QEA?}B$fkW!s{Z=+bRoVM%p$fAp4gLeM0afWi?-rfM(?Ub> zREPL9h|7!#g1f9w*nTk(YHKh1yh#2jHTKEbFF7)SpaW08RQ^rfu4Vi07psI*tem34 z9J`S6x%SrCAd_|^&)DRZlwnLH%#RKHYJW_HGaNscJ|9i{gGuWwK~`&D8p zF{S;99E@h;p7~_#_k73WajOm0vmeb<4C^l>*(q!3Uwfh|ESe%1QE`(JRn=qNq%pyCZx4uz{;~>D^dIBT33n<|P6M9%#;Fa@)qYeH zsiV8PZkfE$vJr7vw^sFU!lj%zj=S$3!NwNx*XJ?kb{Nz1J*obF*|^EM@gJ*;vE-@y zbB>te-&e(Z54($v%V+0y%WQdmjX9p^(!gMmNnVK9wxyXt$hg8Z`)YiD>h1A8Rn3`% zqzrpI4&T@5sVNkq>mTL3g+7Szr8QG>Em*AEuxjQI2zc)kuQr7#D1_Tq<_J9HnRL38 z6>4+&vW<6NO3dC!{w!~;vv94SJimXyK+{YiEKx_%;6*QiSjm6hb2V`zUyCu}uk3@-~Ton!(i!qatj4 zeEfa-Ffii-Z3@CfV);JS@J)pMIdN~ zrl+S*!+*{-dP24ScXzhA1bO(kf(j93Fa=dwf3OS7kO|8 zgjM4(dWGU!?vY((+m-LxGGI`bp?Mn!^G&c<+GboWOSAHT5NWH=bM)DWxa$%yR0dK0 zX@lbw?-ku`yJ2wJnS#h}QZ%qbv7;8>Fs{TTprM%uuVk1)!64)i?1y$oi@qU5RXrds z8h(d>px*q4S3uB_DO*zvh(v~)b-^$~#{W#K7aqzdnDK4ZZ_MHLmuO~*xq~2{1%;+t zp5Z5+%IgdP%kb8{*?PW~3&!3>gzTS}@?TB?M1xeJxqzp_AJu*$KZ)r9m>;vJ(Ah3p+BW1Mh(;jayB7%ljY6Wg zT^A6jIMmaXO$6rc2-gsx0+{547@SAnW9P;?O?lRz0N#|GmOmyShl%?oRDgU2?{65! zMn>jVz2-JdGW`JA=diYv>HPH^t@ZRsL;y2t_5|@g3kyqER<=#rzp;R>t_qM35eK%u zWC%(84Q|Qy4d*7;bg`{FbrylT?6*AAn(D(U+XW{_Y~z}pbAtTc$w6LWLWS`mQZ<-vFoiyAnB zBeIJ7+E3QxZ1}9OKQ(}XBMVN?Eo5(ilfkhRm6*y$1YPRZ6Yy`?KY$?;csp<%SpF5b zGJK!RYmZo@ef(%3z7ED!yO$c|2_~0F|}m3eX9tT;e+mFhKsh5&!py{ z9PCFz#B`iq{L3ufMQ2xG=Vv}^KlL~{ExE7oK;C)9M>{_?XT2)ZH$>V&FSf@hCyH}k zIMk6%)wOogTaSEJZbHJAX<|I2z6^3QYgUAuGf)K>mQM(nCybqc9Ib9BP$Z=BRRt0Z z#$G`$@5ml&lpBHBP zTaVv5a9O4Z))5YaWmm!YBu=iR9o80vGS2!E<%fWYrTHtM!@QBah)?fWWfy$Mq{EIU zzQLt4_rV(5Blct0MQ9{_MrUs9V-pZufVH0S5KeoeLLGRfAkv=z9TnhDsXlv~4{?dX z!V0tm?$Q0q%t^I=58h~o`N0x-RY#9ss1jP${5!hxsY`y16(T6f7OR%G<+2u)=@ghM z#oQn`ySrtlY>S)r)s7xlFL&!T{RTVg^q=H=!0_o|z85467AueRVs)6lFl#&#z#a3O z-1qzV{O=wt*;ka7Z_CZvWJC{Khtb)^lI}hFVXV$7^gCWdqirI+ShDEt+YBTyk9n+_ zkWvzYv}=I|l2w-EbQeCe+%~UyAVsb6KMr?8%l-AZIC&SY0KvanYjF6w=UqJ2_89C} zUdQ|yn_SC|F~(zU%bM#2Pm%Q1wCP}LVO!T(9^K06ScCtAZ@^O|TdQ~rGeq04;U zR)%l5?N0%o)%7u?6O~_i=sW4)(-L5#cM^^3KSCA@q<5te)GcH3Y?~WvC3?CIIbCz(d|Y`1081OF_+#soC$^T7T1EdZs@{tbt%i5BWjO` zCTM81yLmgvN5(Ld;=Y4MiB7ZS5F~&8Txso`Al8@ z3vUyO2tBuAF#6HUz>Bw;{>exDq58$8FRzEEXLVE$rcoW_y3egxk=KwgC1Mxirqh$7 zDkP=2dKnM9eg8J&a(VET&L?2W2-z1`pc`9x88SF6Yrz1BtC`0KKxj6R;;rX)TxgnFIZ|5tN8)e?=5}4Qakka2`((%X zGIW$N8QR?vNpJIPF2;**)wE>!N6DzZ+O};RcI4(LvTM@2$zyA#olRE zeC(V)VqHJq2u>SXO81n_{V*gLbWi%{GAQLe3M zNYu4WKu=qG>hrqMJ-(g`FKt==zr&`m=|-#5rHAkP8wt#Qn||&0<6#3m2_(Z%yx8RU zgC~L~gS2b=d7&9X0^RN~Ri&xSJq~)OjJnReqsu$|&{$9Er6ekHYIZ$%<*dz~@pQ!g zpu!q-d-B#A_gzbEnowQAkF5rBRuleaLu=zUi>g4(vqCr za$1v+{Cnq+Z}5ZCIvqon{YcXgOIrq8nQiVNnjrkdFR@*_J8XuXu_&94tU_kmk16ci zkj$@`!pdde*LhPj?LkrTApDEwqphwFe|Ep;#(5Q_nHv+DPVw^;1q`p0BfVk&`zFMM z!qk!mxvwZrj@S=%rl2U+KK5P-%m{rfp9J5~&Z%=)=8{0;$Zs64@aPB-=w-{7?YO~4 z)H|Y6vX3ybBGU=C+a?_%OSM>=o~rK`5V17l!|0zp3d!N!2EqdRabP~lNzBP&fPd4< zPqljuX(a34RNp$L#%&7j$)<)j&zWD@?%P>X{7TzX`Y!36(AcpA{>gNnlF_clR|Q*h z8xy$E9aQ{MU6Za9^~xc^y336(3CRSd z^KWsUG2dqKfho{y-j$^F;8@$9)}@s?9g$#`Sn)vQZ!IFc_(;tR`cGB$Q6DAi0Z`uni zLk{B&HR|~<*LMnX^MH+s8}#mu-}L1ExX^q!W}tYuc<;yV3o_!ysa8H~?xm8aUUA~t zSQp>SuH?sRDlJ5W&zVi}JQ;fYclv9;-8sFXf2+#D&g^Y~QQWSOk}LPDHQsr@$s+oclY(P{4qD8hZJcGi|edd&_MU6zfGUc_1%qSKN`7eYq2mn*f-2Iy=%YThcJ}TsRP^t%RoxG;r zas3eXsds z%|8cz&WVeR+yvh)T+z9ui%h~jDexZ%ifE&@gJ7&j&*qD+>ivf*B21Wpb;<9wsdY=i zj)orf>K%u5p`{%ir!^!=Q(q_XkfSFBwyucnpp``&0M64F<9`E2Rc z(p7E(N&&N3PUi!vdpj}Eic(@hf}pN#3ro=bWL9lV%$ zpbw7gyVEtwvSFu6PQGOcFm^uylU7fc+TAws_c4Y*iH`PxYV7oIgKM>l-MK;w&M)vp z7^AS`$p7e4dm9qL!9Z!B8=J4x1!$pb#oz~J^n5!Di>Qj9Bn^>}^GU;7{HIpG} z748b;FMrN2jeN}?#eBbcm<<8HFC|;ub@>1+7F-uw=j)1_({E3_N=Udf9rdLVNdgsU z0`4|8HZVvywy_=DvsHSMC?Y@>Ee1kq&oVP>rw5N`C8kmAZBTg4TARUJ0&Ljw&$oBO z6IIUkO0)}{mba#HY|!vKqP~D#s*PTt^%jgU-aY$jGdx;zpa*k`11#hg^kv{M0-~(f zEmb-NwP4GW@CE&uSQFP&Y4AcvQ#VHLMsqj@JKP9K6{?oSrbMUKO`c}LduT*WOBpDO z`M>mTTIc;d?Y76Qs*fnb=tP8wCW1i@)Dc zb1SWWn8qW9pCRMn7vOZhjEa)G`|fsMm|Jo>m~=Z7lUAqimc_ogPS8HX*HOvx&E|h+ z^pVr3_sDbp$yDBZY%*Re!8GW^^HraW9MnobCjB~81Gb$=r&$n&GvttS>z0}!c(i>T zkG%ct=XY&2&bVL);0z_nr&HzbFu88xjQfH421FC9kD%exmWNGDUzUpt7*F1p9m!1F znSMRKMRdE&nfYwG^#QvBOm?c3os2InxWq&9@M7;815cPqS!?*y9bAGgsR{UfV>39=-GJ9XJc#RNQfjl%ZgKF0z47vkI4b;ov);mgJm; z^YLS66bhy3SJjU`9jci1Kb?QwgIT)aSoQQ#mIK;2xo60sq4m$G==JSGA$z%v?B52% zX*6~cjiZ0<>1WY4JBR9PgBR>m&s@L1&%17Q7x>pgL|_{;b!Q)GPZVB{8ox6n3t<dZrRG+QJQ^`(b2@hcb{!IG{72^b zYVQi^B^MgIcK^I_pMKY|wfrIKhF|tEzQoI;0B~;WGssBj1G1IVSe{$D=jq;8|Is^` zuh|!z%}C#Pw;bc!81Ns=Xz3ZdF`m0)%a7dr8urwAdG$kU5gAHcRv;6GBA%1;j-;ua z+y4=P-~ZFI&6LR4*#6#LZ8?HV~z%UdXc%X5ABkF1jY0#u+00M#$WV;^1fzfk} z5|MBb6`1eqJX0$U$c}UUeE54v{@#ZRpGwNxO+}>#N(_YDp$GIpi2Ob8q9v(53g;1HLsSHj9v%axU0&J#EgN2Lr))$r?jOQtrDmA zIzKRwopk)s!?w!G%CemgfpLua7&kdf*cAy=UYaLp65NzWkyj;=hu=JHNv|1neQL8e zpn;*vD)md&`_cMf)>+n&&!CX#1~W6W)SvH`D*IrR-(aVP+oH5{>W26pk$DdRV+1QE zRT)HHDY3<{n7M-3xnZya z%~m`EDaRo^p#`6fHtjs97aPMD z`%CpUwJmW=_l`p2u!Ww}a(mbdotH5&9co>1(q5YchWlnR2wy0`m%Ft6A)zmo+c0>& z(zt#P6eJA`C&y5et`J6tW`LW&KE)ot$Nh$M3%{cg<&*PCZUUE9`Nt5sgK!GArMQr- zjAcQ^I|qMqcB%tXtC@>vBUce~YknX~0^JCaUbFpPNgO;#fzU5kP%Q?=!6skV0#Vk! zy^arngrb2mDU)9_A069(w+WE-_#$JK%B`em*_YfNLW6=YHz1P}2$a&zn%7a84A>^# zezunsiMV)p>&PQf0RAM>bG+u#$0LKSFb|ryu1n>Hg8X~}6BigXv;nOB$!ja0PS)pl zVIRhp%wXtkx1~GVNhv9vwFe-2;(u-6nyUg#Jh7jB-k!#9)hSFLZC9naVw|YlHX*3A z_2_?Q46M-ul-s_L-#MAf!^cVJ<;5u?LOMkhH#P--vjwo8V4Q{=jOsoy?;SX>Gr$)Z z_K=&?N0Q%2BR@w9z5-g<*a}`^){!z;FXO8O6`SIPR4;(zy@DJ>DNhGA>={&v1Fli| z1k8_p@~+hmCd&;&HvW+$p1Txh8eaU^xY(&P@_GZJ@I-iasyBt>3k0Ztlc@stgfHeszN)&o z!bT&-uT1YmFkU%hHM6o>13Hl&Z^(_?kLMf@Udu&3$&(N3CqDq!>ezy~$enAV+|Q^s zzn46re~4O!IflG7)^$8FYN<{U7RzI2!k(e?{RYFBeL+ZrcJmL3{4u)7MlJ54@Q7-V zJnecy)}=Q`R`!bffcU0hGwOudqaWCJ;MZxRVq$cWI;dG86gQalweQ?CrY|Dp6281& z;E>t_lzCd{WE-RBcHC{*&T$cQEailGBvd&9ssHAU<*|hC_IqQnnU3J6|d`F%RD3g2X8oGpdmXXr!oeGS@0xXPL#CIC8g zKR7#&k72X}w~;+qWJ8eD1Gpf}xo`h%+rL z@_jnsu_MF-GAZoZ7NKAM8MVF7O~lz)hk}m2idW`{+1>(I7Bn)M`oJ;%0DE%d4H&>* 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 literal 0 HcmV?d00001 diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast.png new file mode 100644 index 0000000000000000000000000000000000000000..a613dd1e8ad36928cec926bd9001b9eddb7bdce3 GIT binary patch literal 184421 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

fucmQ_1#K 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
  • 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

    ^_b+;4OoYS`gWoNxcwp+0@}$bV-TEiizq{M? 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 BUg-b; literal 0 HcmV?d00001 From bf9d892e700e388b0d0c1c74ae9733d5cb13bc35 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 14:40:10 -0800 Subject: [PATCH 11/20] style: apply prettier formatting to idle-condense sources --- src/core/task/Task.ts | 19 +++++----- .../task/__tests__/Task.idle-condense.spec.ts | 35 +++++++++---------- .../webview/__tests__/ClineProvider.spec.ts | 4 ++- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index b69eca3b2f..65bdf40345 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2817,13 +2817,10 @@ export class Task extends EventEmitter implements TaskLike { this.idleCondenseTimeoutRef = setTimeout(armSlice, maxDelayMs) return } - this.idleCondenseTimeoutRef = setTimeout( - () => { - this.idleCondenseTimeoutRef = undefined - void this.onIdleCondenseTimerFired() - }, - remainingMs, - ) + this.idleCondenseTimeoutRef = setTimeout(() => { + this.idleCondenseTimeoutRef = undefined + void this.onIdleCondenseTimerFired() + }, remainingMs) } armSlice() } @@ -2899,10 +2896,10 @@ export class Task extends EventEmitter implements TaskLike { } /** - * True while the task is still waiting on a follow-up ask: no response has - * arrived and the last ask message is a complete follow-up at the current - * `lastMessageTs`. Mirrors the pending-ask check used when arming the timer. - */ + * True while the task is still waiting on a follow-up ask: no response has + * arrived and the last ask message is a complete follow-up at the current + * `lastMessageTs`. Mirrors the pending-ask check used when arming the timer. + */ private hasPendingFollowupAsk(): boolean { if (this.askResponse !== undefined) { return false diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index bc7d1878eb..ce064b6bdf 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -984,27 +984,24 @@ describe("Task idle condensing — re-arm after API work discards the timer", () test.each([ ["a different pending ask", () => "resume_task" as ClineAsk], ["a partial follow-up ask", () => "followup" as ClineAsk], - ])( - "does not re-arm when the stream ends with %s", - async (_label, pickAsk) => { - const ask = pickAsk() - const { task, condense } = buildApiWorkTask(ask) - if (ask === "followup") { - // Only a complete follow-up counts as pending. - ;(task["clineMessages"][0] as ClineMessage).partial = true - } - const endApiWork = await discardTimerDuringApiWork(task) - - endApiWork() - await vi.advanceTimersByTimeAsync(0) + ])("does not re-arm when the stream ends with %s", async (_label, pickAsk) => { + const ask = pickAsk() + const { task, condense } = buildApiWorkTask(ask) + if (ask === "followup") { + // Only a complete follow-up counts as pending. + ;(task["clineMessages"][0] as ClineMessage).partial = true + } + const endApiWork = await discardTimerDuringApiWork(task) - expect(vi.getTimerCount()).toBe(0) - expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + endApiWork() + await vi.advanceTimersByTimeAsync(0) - await vi.advanceTimersByTimeAsync(60_000) - expect(condense).not.toHaveBeenCalled() - }, - ) + expect(vi.getTimerCount()).toBe(0) + expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + + await vi.advanceTimersByTimeAsync(60_000) + expect(condense).not.toHaveBeenCalled() + }) }) describe("Task idle condensing — history barrier serializes ask responses", () => { diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 3142c812f3..54819a9d90 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4689,7 +4689,9 @@ describe("ClineProvider", () => { await getMessageHandler()({ type: "updateSettings", - updatedSettings: { profileIdleCondenseTimes: { inherited: -1, negative: -3.4, zero: 0, rounded: 10.4 } }, + updatedSettings: { + profileIdleCondenseTimes: { inherited: -1, negative: -3.4, zero: 0, rounded: 10.4 }, + }, }) // A negative delay keeps global inheritance instead of clamping into a From ae763be0a10a81102ca41e2a92f70845000a51c4 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 14:49:48 -0800 Subject: [PATCH 12/20] test: define abort as own property in idle-condense task stub On main, Task.abort is a getter-only accessor derived from run state, so the bare assignment threw 'Cannot set property abort' in the coverage CI job. Object.defineProperty keeps the stub working against both shapes. --- src/core/task/__tests__/Task.idle-condense.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index ce064b6bdf..33c68266a1 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -81,7 +81,9 @@ function buildTask({ const getCurrentTask = vi.fn(() => (isCurrentTask ? { taskId: "task-1" } : undefined)) const provider = { getState, getCurrentTask, postMessageToWebview } - task["abort"] = false + // `abort` may be a prototype accessor, so assign defines an own writable + // data property that shadows it instead of throwing on a getter-only set. + Object.defineProperty(task, "abort", { value: false, configurable: true, writable: true }) task["abandoned"] = false task["activeApiWork"] = 0 // Object.create skips constructor field initialisers; mirror the default. From 2eecdb3f5a71d26406b022682d5f9eb5598af66a Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 21:16:16 -0800 Subject: [PATCH 13/20] test: redefine abort instead of assigning in aborted-task test Merging with main makes Task.abort a getter-only accessor, so the direct assignment failed check-types with TS2540. Object.defineProperty shadows the accessor at runtime and avoids the read-only assignment in the type checker. --- src/core/task/__tests__/Task.idle-condense.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index 33c68266a1..5b8731c9d7 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -302,7 +302,9 @@ describe("Task idle condensing — arming the timer", () => { test("does not arm for an aborted task", async () => { const { task } = buildTask() - task["abort"] = true + // Redefine rather than assign: `abort` may be a getter-only accessor, + // and the shadowing own property from buildTask is writable at runtime. + Object.defineProperty(task, "abort", { value: true, configurable: true, writable: true }) await task["maybeStartIdleCondenseTimer"]() From 3a7e6ef13659fafcb8fb473fe597b27da7efa707 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 22:11:46 -0800 Subject: [PATCH 14/20] test: cover idle-condensing patch gaps flagged by codecov Adds unit coverage for computeEffectiveCondenseThreshold (valid, -1, missing, out-of-range with warning, custom label) in src/core/context-management. Adds webviewMessageHandler tests for idle thresholds clamped against percentages persisted in global state (?? chain arms) and non-numeric values persisted unchanged when guards reject them. Adds ExtensionStateContext fallback test for explicit undefined idle fields in initialState. Adds ContextManagementSettings tests for clampIdleToTrigger on trigger reduction, profile idle time display, profile select threshold suffix, and the isCheckboxTarget guard via a checked getter override. Line 274 (handleIdleProfileUseGlobal default-profile guard) is left uncovered: the use-global button only renders when the selected idle profile is not default, making that guard UI-unreachable. --- .../__tests__/context-management.spec.ts | 91 +++++++++++++++++++ .../webview/__tests__/ClineProvider.spec.ts | 40 ++++++++ .../ContextManagementSettings.spec.tsx | 58 +++++++++++- .../__tests__/ExtensionStateContext.spec.tsx | 25 +++++ 4 files changed, 213 insertions(+), 1 deletion(-) diff --git a/src/core/context-management/__tests__/context-management.spec.ts b/src/core/context-management/__tests__/context-management.spec.ts index 38c941cf4f..c7434e68b8 100644 --- a/src/core/context-management/__tests__/context-management.spec.ts +++ b/src/core/context-management/__tests__/context-management.spec.ts @@ -15,6 +15,7 @@ import { truncateConversation, manageContext, willManageContext, + computeEffectiveCondenseThreshold, } from "../index" // Create a mock ApiHandler for testing @@ -1247,6 +1248,96 @@ describe("Context Management", () => { }) }) + /** + * Tests for the computeEffectiveCondenseThreshold helper + */ + describe("computeEffectiveCondenseThreshold", () => { + it("returns the profile threshold when it is within the valid range", () => { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 80, + profileThresholds: { architect: 40 }, + currentProfileId: "architect", + }), + ).toBe(40) + }) + + it("returns the global percent when the profile threshold is -1 (inheritance)", () => { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 80, + profileThresholds: { architect: -1 }, + currentProfileId: "architect", + }), + ).toBe(80) + }) + + it("returns the global percent when the profile has no specific threshold", () => { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 80, + profileThresholds: { code: 40 }, + currentProfileId: "architect", + }), + ).toBe(80) + }) + + it("warns and returns the global percent when the profile threshold is below the minimum", () => { + const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}) + try { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 80, + profileThresholds: { architect: 1 }, + currentProfileId: "architect", + }), + ).toBe(80) + expect(warnSpy).toHaveBeenCalledWith( + 'Invalid profile threshold 1 for profile "architect". Using global default of 80%', + ) + } finally { + warnSpy.mockRestore() + } + }) + + it("warns and returns the global percent when the profile threshold is above the maximum", () => { + const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}) + try { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 80, + profileThresholds: { architect: 150 }, + currentProfileId: "architect", + }), + ).toBe(80) + expect(warnSpy).toHaveBeenCalledWith( + 'Invalid profile threshold 150 for profile "architect". Using global default of 80%', + ) + } finally { + warnSpy.mockRestore() + } + }) + + it("uses a custom label in the warning message", () => { + const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}) + try { + expect( + computeEffectiveCondenseThreshold({ + globalPercent: 180, + profileThresholds: { architect: -5 }, + currentProfileId: "architect", + label: "idle time", + }), + ).toBe(180) + expect(warnSpy).toHaveBeenCalledWith( + 'Invalid profile idle time -5 for profile "architect". Using global default of 180%', + ) + } finally { + warnSpy.mockRestore() + } + }) + }) + /** * Tests for the getMaxTokens function (private but tested through manageContext) */ diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 050c194c4f..292f8833d9 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4668,6 +4668,46 @@ describe("ClineProvider", () => { }) }) + test("clamps idle thresholds against main percentages persisted in global state", async () => { + await provider.resolveWebviewView(mockWebviewView) + + // Neither the main percent nor the profile thresholds are in the message, so the + // handler must resolve them from global state instead of the message or the default. + await provider.contextProxy.setValue("autoCondenseContextPercent", 70) + await provider.contextProxy.setValue("profileThresholds", { raised: 90 }) + + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { idleCondenseContextPercent: 90, profileIdleThresholds: { raised: 80 } }, + }) + + // The global idle percent is capped at the stored main percent (70), while the + // profile idle override is clamped against that profile's own stored threshold (90). + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 70) + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { raised: 80 }) + }) + + test("persists non-numeric idle-condense values unchanged when their guards reject them", async () => { + await provider.resolveWebviewView(mockWebviewView) + + // A hand-crafted message can carry payloads the webview controls never produce; the + // normalization guards reject them and the raw value is stored unchanged. + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { + idleCondenseContextPercent: "40" as unknown as number, + profileIdleThresholds: null as unknown as Record, + idleCondenseTimeInSeconds: "180" as unknown as number, + profileIdleCondenseTimes: "180" as unknown as Record, + }, + }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", "40") + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", null) + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseTimeInSeconds", "180") + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleCondenseTimes", "180") + }) + test("clamps a negative idleCondenseTimeInSeconds message to zero", async () => { await provider.resolveWebviewView(mockWebviewView) diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index ac077749c1..aed3eb01b6 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -1,6 +1,6 @@ // npx vitest src/components/settings/__tests__/ContextManagementSettings.spec.tsx -import { render, screen, fireEvent, waitFor } from "@/utils/test-utils" +import { render, screen, fireEvent, waitFor, within } from "@/utils/test-utils" import { ContextManagementSettings } from "../ContextManagementSettings" import { vscode } from "@/utils/vscode" @@ -811,5 +811,61 @@ describe("ContextManagementSettings", () => { expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("20") expect(screen.getByText("20%")).toBeInTheDocument() }) + + it("clamps inheriting profile idle overrides when the default trigger threshold is reduced", () => { + const setCachedStateField = vi.fn() + render( + , + ) + + const triggerSlider = screen.getByTestId("condense-threshold-slider") + fireEvent.change(triggerSlider, { target: { value: "40" } }) + + // config-1 keeps its -1 inheritance, config-2 follows its own profile trigger + // (90) and stays 70, and only config-3, which inherits the default trigger, + // follows the lowered threshold down to 40. + expect(setCachedStateField).toHaveBeenCalledWith("profileIdleThresholds", { + "config-1": -1, + "config-2": 70, + "config-3": 40, + }) + }) + + it("displays a profile idle time override in the idle time input", () => { + render() + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-time-input")).toHaveValue(42) + }) + + it("shows each profile's idle threshold override as a suffix in the profile select", () => { + render() + + const idleSelect = screen.getByTestId("idle-threshold-profile-select") + expect(within(idleSelect).getByText("Config 1 (55%)")).toBeInTheDocument() + // A profile without an override shows no suffix. + expect(within(idleSelect).getByText("Config 2")).toBeInTheDocument() + }) + + it("ignores an idle condense checkbox change whose target has no boolean checked value", () => { + const setCachedStateField = vi.fn() + render() + + const input = screen.getByTestId("idle-condense-context-checkbox").querySelector('input[type="checkbox"]')! + // Simulate an event whose target lacks a boolean `checked`: the mocked toolkit + // forwards { target: { checked: undefined } }, so the component's guard must + // reject it. React fires the checkbox onChange on click, and the no-op setter + // keeps jsdom's activation behavior from throwing on the getter-only override. + Object.defineProperty(input, "checked", { get: () => undefined, set: () => {}, configurable: true }) + fireEvent.click(input) + + expect(setCachedStateField).not.toHaveBeenCalledWith("idleCondenseContext", expect.anything()) + }) }) }) diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index 5a46db81ec..edc13cb4ae 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -779,6 +779,31 @@ describe("ExtensionStateContext", () => { expect(JSON.parse(screen.getByTestId("profile-idle-condense-times").textContent!)).toEqual({ code: 90 }) }) + it("falls back to the idle condensing defaults when initialState carries explicit undefined values", () => { + // A hand-written state payload can carry explicit undefined values, which the plain + // merge spread lets overwrite the initialized defaults; the provider's fallbacks must + // still expose the documented defaults rather than undefined. + render( + + + , + ) + + expect(JSON.parse(screen.getByTestId("idle-condense").textContent!)).toBe(false) + expect(JSON.parse(screen.getByTestId("idle-condense-percent").textContent!)).toBe(50) + expect(JSON.parse(screen.getByTestId("idle-condense-time").textContent!)).toBe(180) + expect(JSON.parse(screen.getByTestId("profile-idle-thresholds").textContent!)).toEqual({}) + expect(JSON.parse(screen.getByTestId("profile-idle-condense-times").textContent!)).toEqual({}) + }) + it("initializes the write delay to the pre-hydration default", () => { // The initializer itself (not a merge fixture) must carry the shared // default: a regression that dropped it from createInitialExtensionState From c353db357c5e1fea22441a4aac097ed376bbdfe7 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Sun, 8 Nov 2026 22:58:12 -0800 Subject: [PATCH 15/20] fix: re-arm idle countdown with newly saved delay A settings save went through reevaluateIdleCondenseAfterSettingsSave into the shared arming path, which no-ops while a countdown is armed, so an armed countdown kept firing on the deadline from the previous saved delay: raising the idle delay from 30s to 300s still condensed at 30s. Cancel the armed countdown before re-evaluating so the re-arm honours the newly saved wait, and a save that disables the feature or tightens thresholds immediately disarms the stale countdown. Reworks the re-evaluation spec that encoded the stale keep-untouched behavior and adds regression tests for a longer saved delay (no condense at the old 30s deadline, condense after the full 300s), a shorter saved delay (fires at 30s, not 300s), and a disable-save cancelling the armed countdown. --- src/core/task/Task.ts | 10 ++- .../task/__tests__/Task.idle-condense.spec.ts | 62 +++++++++++++++++-- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 69e7f3c26d..8f8f6a5fd6 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2648,13 +2648,19 @@ export class Task extends EventEmitter implements TaskLike { * countdown armed, and nothing else arms one for it; this gives it a fresh * evaluation. A task with API work in flight stays ineligible, and every * other existing gate (abort, active task, enabled flags, thresholds, - * in-flight condense, already-armed countdown) is re-checked by the shared - * arming path. + * in-flight condense) is re-checked by the shared arming path. + * + * An already-armed countdown is cancelled first: otherwise the shared + * arming path would no-op and the countdown could fire on a stale deadline + * saved before the user increased the idle delay (or condense at a delay + * the user just shortened/disabled). Re-arming applies the newly saved + * wait from this point on. */ public reevaluateIdleCondenseAfterSettingsSave(): void { if (this.activeApiWork > 0) { return } + this.cancelIdleCondenseTimer() void this.maybeStartIdleCondenseTimer() } diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index 5b8731c9d7..c56d7e7e17 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -1052,7 +1052,9 @@ describe("Task idle condensing — history barrier serializes ask responses", () describe("Task idle condensing — re-evaluation after settings save", () => { // Saving idle-condense settings re-evaluates the waiting task: enabling // the feature (or loosening a threshold) while the task is already idle - // above the threshold must start a countdown that nothing else armed. + // above the threshold must start a countdown that nothing else armed, and + // an already-armed countdown must be replaced so it honours the newly + // saved wait instead of firing on the stale deadline. beforeEach(() => { vi.useFakeTimers() }) @@ -1089,17 +1091,65 @@ describe("Task idle condensing — re-evaluation after settings save", () => { expect(vi.getTimerCount()).toBe(0) }) - test("keeps an already-armed countdown untouched", async () => { - const { task } = buildTask() - task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) + test("re-arms an already-armed countdown with the newly saved longer delay", async () => { + const state = baseState() + const { task, condense } = buildTask({ state }) + await task["maybeStartIdleCondenseTimer"]() + const originalRef = task["idleCondenseTimeoutRef"] + expect(originalRef).toBeDefined() + // The user saves a longer idle delay while the countdown is armed. + state.idleCondenseTimeInSeconds = 300 task.reevaluateIdleCondenseAfterSettingsSave() + // Flush the re-evaluation's promise chain so the new countdown is armed. await vi.advanceTimersByTimeAsync(0) - // maybeStartIdleCondenseTimer no-ops while a timer is armed: still one, - // and the fake clock never reached its deadline. expect(task["idleCondenseTimeoutRef"]).toBeDefined() + expect(task["idleCondenseTimeoutRef"]).not.toBe(originalRef) + expect(vi.getTimerCount()).toBe(1) + + // The stale 30s deadline no longer fires. + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).not.toHaveBeenCalled() + // The full newly saved 300s wait elapses. + await vi.advanceTimersByTimeAsync(270_000) + expect(condense).toHaveBeenCalledTimes(1) + }) + + test("re-arms an already-armed countdown with the newly saved shorter delay", async () => { + const state = baseState({ idleCondenseTimeInSeconds: 300 }) + const { task, condense } = buildTask({ state }) + await task["maybeStartIdleCondenseTimer"]() + + // The user saves a shorter idle delay while the countdown is armed. + state.idleCondenseTimeInSeconds = 30 + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + expect(vi.getTimerCount()).toBe(1) + + await vi.advanceTimersByTimeAsync(29_999) + expect(condense).not.toHaveBeenCalled() + // The shortened saved wait fires well before the stale 300s deadline. + await vi.advanceTimersByTimeAsync(1) + expect(condense).toHaveBeenCalledTimes(1) + }) + + test("a save that disables the feature cancels an already-armed countdown", async () => { + const state = baseState() + const { task, condense } = buildTask({ state }) + await task["maybeStartIdleCondenseTimer"]() expect(vi.getTimerCount()).toBe(1) + + state.idleCondenseContext = false + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + + await vi.advanceTimersByTimeAsync(300_000) + expect(condense).not.toHaveBeenCalled() }) test("a save that disables the feature does not arm a countdown", async () => { From 7137625b3d80a80d3629e70d4a47377812c481c2 Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Mon, 9 Nov 2026 11:11:55 -0800 Subject: [PATCH 16/20] fix(context): address CodeRabbit review feedback for idle condensing - Redact non-serializable values from condense-context payload logging and hold the queued-message drain while a condense holds the history - Reconcile stale condense cues in ChatView and lastActionWasCondense when history is replaced - Validate idle-condense settings payloads: reject invalid updateSettings values instead of persisting them, re-evaluate after partial save - Idle slider min 5, aria-label, register idle-time label in settings search even when disabled, show clamped idle display on initial render - Signal idleCondenseReset from every user-driven prompt mutation in ChatTextArea (URL paste, dropped paths, history recall, menu inserts) - Harden tests: unclaimed-queue assertion, forwarded-event checkbox guard, regression coverage per review threads --- src/core/task/Task.ts | 328 +++++++++--- .../task/__tests__/Task.idle-condense.spec.ts | 473 +++++++++++++++++- src/core/task/__tests__/Task.spec.ts | 35 ++ .../ask-queued-message-drain.spec.ts | 31 ++ .../webview/__tests__/ClineProvider.spec.ts | 41 +- src/core/webview/webviewMessageHandler.ts | 151 +++--- .../src/components/chat/ChatTextArea.tsx | 53 +- webview-ui/src/components/chat/ChatView.tsx | 22 +- .../chat/__tests__/ChatTextArea.spec.tsx | 56 +++ .../chat/__tests__/ChatView.spec.tsx | 46 ++ .../settings/ContextManagementSettings.tsx | 97 ++-- .../ContextManagementSettings.spec.tsx | 161 +++++- 12 files changed, 1283 insertions(+), 211 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 8f8f6a5fd6..f8c08210b6 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -519,6 +519,22 @@ export class Task extends EventEmitter implements TaskLike { * summarizing over and overwriting the conversation updates it missed. */ private idleCondenseActivitySeq = 0 + /** + * True while an expired idle-condense timer is awaiting its async + * re-checks. The countdown itself is already consumed, so + * `resetIdleCondenseTimer` needs this flag to know the task is still + * mid-evaluation: user activity then invalidates the evaluation (via the + * activity sequence) and restarts the countdown from the beginning. + */ + private idleCondenseExpiryEvaluating = false + /** + * Set while the idle-triggered summarization request is in flight. An idle + * condense runs without the request loop, so its summarization call has no + * request-scoped controller: this task-owned one lets `cancelCurrentRequest` + * (user cancel and disposal) abort the in-flight HTTP call. The idle run + * that created it clears it when the lease finishes. + */ + private idleCondenseAbortController?: AbortController /** * Set while a condense (idle or manual) replaces the API history. `ask()` * treats a landing response as still pending and the queue drain stays @@ -528,6 +544,17 @@ export class Task extends EventEmitter implements TaskLike { * remain blocked. */ private condenseHistoryBarrier?: Promise + /** + * FIFO tail serializing condense leases per task. Every condense (manual + * or idle) chains behind this promise, so only one summary can be in + * flight at a time: a finishing lease cannot clear the barrier while + * another condense still holds a pre-condense snapshot that would + * overwrite turns appended in between. `undefined` means no condense is + * in flight: an uncontended lease then runs straight into claiming its + * API work synchronously, because yielding even a microtask first would + * let a profile switch dispose the handler the condense is about to use. + */ + private condenseLeaseTail?: Promise // Tool Use consecutiveMistakeCount: number = 0 @@ -1442,12 +1469,16 @@ export class Task extends EventEmitter implements TaskLike { * flipping those would re-enable interactive prompt timers whenever a claim * is outstanding. The condense barrier blocks draining while a condense is * replacing the API history, so the queued message's follow-up request cannot - * append turns the in-flight summary would then overwrite. + * append turns the in-flight summary would then overwrite. A landed response + * held pending by the barrier must be delivered as-is: draining now would + * overwrite it with the queued message, so the drain waits and the message + * stays unclaimed for a later turn. */ private mayDrainQueuedMessageForAsk(): boolean { return ( !this.blanketDeniedCommandThisTurn && !this.condenseHistoryBarrier && + this.askResponse === undefined && this.messageQueueService.hasUnclaimed() ) } @@ -1812,6 +1843,14 @@ export class Task extends EventEmitter implements TaskLike { private hydrateApiConversationHistory(messages: ApiMessage[]) { this.apiConversationHistory = ensureMessageIdentifiers(messages) + + // The condense suppression flag tracks whether the conversation still + // ends in a condense summary. Reconcile it on every wholesale history + // replacement: a condense persists its summary as the last entry (so + // reopen and post-condense writes keep the flag set), while rewinds, + // deletes, and edits that truncate past the summary clear it so idle + // condensing can arm again without waiting for a new prompt. + this.lastActionWasCondense = messages.at(-1)?.isSummary === true } /** @@ -2629,14 +2668,22 @@ export class Task extends EventEmitter implements TaskLike { /** * Restart the idle-condense countdown. Called when the user types in the - * prompt area. Only acts while a timer is currently armed (i.e. the task is - * waiting on the user with context above the idle threshold); a typing - * signal during active work must not start condensing. + * prompt area. Only acts while the task is waiting with an armed countdown + * — or while an expired countdown is still awaiting its async re-checks, + * where the timer itself has already been consumed; a typing signal during + * active work must not start condensing. In the evaluating case the + * pending evaluation is invalidated and replaced by a fresh countdown, + * instead of typing silently no-opping while a stale evaluation proceeds + * to condense over the conversation being edited. */ public resetIdleCondenseTimer(): void { - if (!this.idleCondenseTimeoutRef) { + if (!this.idleCondenseTimeoutRef && !this.idleCondenseExpiryEvaluating) { return } + // Invalidate any expiry evaluation already in flight before restarting: + // without this the evaluation would finish its stale gate check and + // condense over the conversation the user is currently editing. + this.idleCondenseActivitySeq++ this.cancelIdleCondenseTimer() void this.maybeStartIdleCondenseTimer() } @@ -2648,7 +2695,8 @@ export class Task extends EventEmitter implements TaskLike { * countdown armed, and nothing else arms one for it; this gives it a fresh * evaluation. A task with API work in flight stays ineligible, and every * other existing gate (abort, active task, enabled flags, thresholds, - * in-flight condense) is re-checked by the shared arming path. + * in-flight condense, pending idle-eligible ask) is re-checked by the + * shared arming path. * * An already-armed countdown is cancelled first: otherwise the shared * arming path would no-op and the countdown could fire on a stale deadline @@ -2660,6 +2708,11 @@ export class Task extends EventEmitter implements TaskLike { if (this.activeApiWork > 0) { return } + // Any arming or expiry evaluation already in flight measured against + // the pre-save settings: invalidate it so it cannot condense under + // thresholds the user just replaced. The re-armed evaluation below + // captures the bumped sequence and proceeds normally. + this.idleCondenseActivitySeq++ this.cancelIdleCondenseTimer() void this.maybeStartIdleCondenseTimer() } @@ -2791,12 +2844,27 @@ export class Task extends EventEmitter implements TaskLike { if (this.idleCondenseTimeoutRef || this.idleCondenseInFlight) { return } + // Idle condensing only makes sense while the task genuinely waits + // on the user: never arm when nothing is pending, or while an + // approval ask that must not be condensed around is pending. + if (!this.hasPendingIdleEligibleAsk()) { + return + } + const activitySeq = this.idleCondenseActivitySeq const gate = await this.evaluateIdleCondense() if (!gate || gate.contextPercent < gate.idlePercent) { return } // Re-check after the async gate evaluation: a prompt may have landed. - if (this.abort || this.abandoned || this.idleCondenseTimeoutRef) { + // The activity sequence catches the answer case specifically: the + // user answered the pending ask while the gate ran, so arming now + // would start a countdown for a task that is no longer waiting. + if ( + this.abort || + this.abandoned || + this.idleCondenseTimeoutRef || + this.idleCondenseActivitySeq !== activitySeq + ) { return } this.armIdleCondenseTimeout(gate.idleSeconds) @@ -2852,64 +2920,98 @@ export class Task extends EventEmitter implements TaskLike { return } const activitySeq = this.idleCondenseActivitySeq - const gate = await this.evaluateIdleCondense() - if (!gate || gate.contextPercent < gate.idlePercent) { - return - } - // The gate is an async evaluation: the user may have answered (bumping - // the activity sequence) or a new request may have started (incrementing - // `activeApiWork`) while it ran. Condensing now would summarize and - // overwrite history without those updates, so discard the stale - // evaluation; the idle transition after the response re-arms the timer. - if ( - this.abort || - this.abandoned || - this.activeApiWork > 0 || - this.idleCondenseActivitySeq !== activitySeq - ) { - return - } - - this.idleCondenseInFlight = true - let result: CondenseContextResult + // Publish that an expiry evaluation is mid-flight: the countdown has + // already been consumed here, so without this flag a prompt or typing + // signal arriving during the awaits below would find no timer armed + // and silently do nothing (see `resetIdleCondenseTimer`). + this.idleCondenseExpiryEvaluating = true try { - // Give the user the same in-progress cue a manual condense shows: - // the "Condensing context..." row with its busy icon. The chat box - // keeps the normal press-to-send state, like a manual condense. - await this.providerRef - .deref() - ?.postMessageToWebview({ type: "condenseTaskContextStarted", text: this.taskId }) - result = await this.condenseContextWithLease() - } finally { - this.idleCondenseInFlight = false - // Always clear the cue, even when the lease or the condense throws. - await this.providerRef - .deref() - ?.postMessageToWebview({ type: "condenseTaskContextResponse", text: this.taskId }) - } + const gate = await this.evaluateIdleCondense() + if (!gate || gate.contextPercent < gate.idlePercent) { + return + } + // The gate is an async evaluation: the user may have answered (bumping + // the activity sequence) or a new request may have started (incrementing + // `activeApiWork`) while it ran. Condensing now would summarize and + // overwrite history without those updates, so discard the stale + // evaluation; the idle transition after the response re-arms the timer. + if ( + this.abort || + this.abandoned || + this.activeApiWork > 0 || + this.idleCondenseActivitySeq !== activitySeq + ) { + return + } - if (!result.condensed) { - return + this.idleCondenseInFlight = true + // The summarization request gets a task-owned controller: the idle + // path runs without the request loop, so without this the call could + // not be aborted by a cancel or disposal (see `cancelCurrentRequest`). + const abortController = new AbortController() + this.idleCondenseAbortController = abortController + let result: CondenseContextResult + try { + result = await this.condenseContextWithLease(async () => { + // Give the user the same in-progress cue a manual condense shows: + // the "Condensing context..." row with its busy icon. The chat box + // keeps the normal press-to-send state, like a manual condense. + // Posted under the installed history barrier: a response landing + // during the notification's await is held pending by `ask()` + // instead of resuming the task mid-condense. + await this.providerRef + .deref() + ?.postMessageToWebview({ type: "condenseTaskContextStarted", text: this.taskId }) + // The notification is an await: re-check that nothing engaged in + // the meantime before issuing the summarization request. + return !( + this.abort || + this.abandoned || + this.activeApiWork > 0 || + this.idleCondenseActivitySeq !== activitySeq + ) + }, abortController.signal) + } finally { + this.idleCondenseInFlight = false + this.idleCondenseAbortController = undefined + // Always clear the cue, even when the lease or the condense throws. + await this.providerRef + .deref() + ?.postMessageToWebview({ type: "condenseTaskContextResponse", text: this.taskId }) + } + + if (!result.condensed) { + return + } + // Do not re-arm: the condense is now the last task action + // (`condenseContextWithLease` set `lastActionWasCondense`), so another + // idle condense must not trigger until the task does something else. + } finally { + this.idleCondenseExpiryEvaluating = false } - // Do not re-arm: the condense is now the last task action - // (`condenseContextWithLease` set `lastActionWasCondense`), so another - // idle condense must not trigger until the task does something else. } catch (error) { console.error("[Task#onIdleCondenseTimerFired] error:", error) } } /** - * True while the task is still waiting on a follow-up ask: no response has - * arrived and the last ask message is a complete follow-up at the current - * `lastMessageTs`. Mirrors the pending-ask check used when arming the timer. + * True while the task waits on an ask idle condensing may act on: no + * response has arrived and the last ask message is a complete follow-up, + * idle, or resumable ask at the current `lastMessageTs`. Command, tool and + * MCP approval asks are excluded — they wait mid-request, and replacing + * the history around a pending approval could drop its context — as are + * partial asks and any ask the user has already answered. */ - private hasPendingFollowupAsk(): boolean { + private hasPendingIdleEligibleAsk(): boolean { if (this.askResponse !== undefined) { return false } const lastAsk = findLast(this.clineMessages, (message) => message.type === "ask") - return lastAsk?.ask === "followup" && lastAsk.ts === this.lastMessageTs && lastAsk.partial !== true + if (!lastAsk || lastAsk.ts !== this.lastMessageTs || lastAsk.partial === true) { + return false + } + const ask = lastAsk.ask + return ask !== undefined && (ask === "followup" || isIdleAsk(ask) || isResumableAsk(ask)) } public approveAsk({ text, images }: { text?: string; images?: string[] } = {}) { @@ -2973,11 +3075,11 @@ export class Task extends EventEmitter implements TaskLike { } // The idle condense timer may have expired and been discarded while this // request was in flight (see `onIdleCondenseTimerFired`). Re-arm it now - // that the task is idle again, but only while a follow-up ask is still - // pending; any other idle transition re-arms the timer as usual. + // that the task is idle again, but only while an idle-eligible ask is + // still pending; any other idle transition re-arms the timer as usual. if (this.idleCondenseRearmAfterApiWork) { this.idleCondenseRearmAfterApiWork = false - if (this.hasPendingFollowupAsk()) { + if (this.hasPendingIdleEligibleAsk()) { void this.maybeStartIdleCondenseTimer() } } @@ -3071,18 +3173,81 @@ export class Task extends EventEmitter implements TaskLike { await this.condenseContextWithLease() } - private async condenseContextWithLease(): Promise { + /** + * `summaryAbortSignal` is forwarded to the summarization call so the idle + * condense's task-owned controller can abort the in-flight request; a manual + * condense forwards none and keeps the current request's signal semantics. + */ + private async condenseContextWithLease( + onLeaseAcquired?: () => Promise, + summaryAbortSignal?: AbortSignal, + ): Promise { + // Serialize condense work per task: chain behind the previous lease so a + // manual and an idle condense can never overlap. Clearing the barrier at + // the end of the first lease while a second summary still ran would let a + // resumed request append turns the second summary then overwrites. When no + // condense is in flight (`condenseLeaseTail` undefined) the lease is + // uncontended, so skip the await: yielding even a microtask before + // `beginApiWork` would let a synchronous profile switch dispose the + // handler this condense is about to call. + const priorLease = this.condenseLeaseTail + let releaseLease: () => void = () => {} + const lease = new Promise((resolve) => { + releaseLease = resolve + }) + this.condenseLeaseTail = lease + // Hold ask responses while the summary below replaces the API history, so // a resuming request cannot append turns the summary would overwrite. The // barrier settles in `finally`, releasing waiting responses on both the - // success and the failure path. + // success and the failure path. `onLeaseAcquired` runs under the barrier + // so an idle condense's webview cue cannot open a window where a landed + // response resumes the task before history protection is installed. let settleBarrier: () => void = () => {} - this.condenseHistoryBarrier = new Promise((resolve) => { - settleBarrier = resolve - }) - const endApiWork = this.beginApiWork() + const installBarrier = (): void => { + this.condenseHistoryBarrier = new Promise((resolve) => { + settleBarrier = resolve + }) + } + // Install the barrier synchronously only when no other condense holds + // the lease: a queued condense must wait until the previous lease's + // `finally` clears the barrier it owns, or it would clobber that + // barrier and have it cleared out from under the running summary. + let endApiWork: () => void = () => {} + if (!priorLease) { + installBarrier() + // Uncontended manual condense (no staleness callback): also claim + // the API-work lease synchronously, before any await. Yielding even + // a microtask first would let a profile switch in the same turn + // dispose the handler this condense is about to call (see + // `retireApi`). An idle condense defers its claim until after the + // staleness re-check below, which must not see this lease's own + // count as engaging work and cancel itself. + if (!onLeaseAcquired) { + endApiWork = this.beginApiWork() + } + } try { - const result = await this.condenseContextWithActiveApi() + if (priorLease) { + await priorLease + // The lease is actually held now: the previous condense's + // `finally` has released (and disposed) its handler and cleared + // the barrier it owned, so install this lease's guards now. + installBarrier() + } + if (onLeaseAcquired && !(await onLeaseAcquired())) { + // The caller invalidated this condense under the barrier (the user + // engaged or work started during the cue's await): release without + // touching history and without marking the condense as the last action. + return { condensed: false, prevContextTokens: this.getTokenUsage().contextTokens } + } + // Deferred claim for every path that did not install above: the + // staleness re-check has passed, so counting this condense as API + // work now cannot cancel it. + if (priorLease || onLeaseAcquired) { + endApiWork = this.beginApiWork() + } + const result = await this.condenseContextWithActiveApi(summaryAbortSignal) if (result.condensed) { // Covers the manual condense button and the idle-triggered condense. this.lastActionWasCondense = true @@ -3092,10 +3257,17 @@ export class Task extends EventEmitter implements TaskLike { this.condenseHistoryBarrier = undefined settleBarrier() endApiWork() + // Return the FIFO slot to "no condense in flight" when this was the + // last queued lease, so a later uncontended condense still takes the + // synchronous (no-await) lease path. + if (this.condenseLeaseTail === lease) { + this.condenseLeaseTail = undefined + } + releaseLease() } } - private async condenseContextWithActiveApi(): Promise { + private async condenseContextWithActiveApi(idleSummaryAbortSignal?: AbortSignal): Promise { // CRITICAL: Flush any pending tool results before condensing // to ensure tool_use/tool_result pairs are complete in history await this.flushPendingToolResultsToHistory() @@ -3146,13 +3318,17 @@ export class Task extends EventEmitter implements TaskLike { allTools = toolsResult.tools } - // Build metadata with tools and taskId for the condensing API call + // Build metadata with tools and taskId for the condensing API call. The + // idle condense forwards its own task-owned signal (no request loop runs + // while the task waits on the user, so the request controller is absent); + // a manual condense keeps using the current request's signal when present. + const abortSignal = idleSummaryAbortSignal ?? this.currentRequestAbortController?.signal const metadata: ApiHandlerCreateMessageMetadata = { mode, taskId: this.taskId, - ...(this.currentRequestAbortController?.signal + ...(abortSignal ? { - abortSignal: this.currentRequestAbortController.signal, + abortSignal, } : {}), ...(allTools.length > 0 @@ -3209,6 +3385,11 @@ export class Task extends EventEmitter implements TaskLike { undefined /* progressStatus */, { isNonInteractive: true } /* options */, ) + // A failed summary must not strand messages queued while the + // condense ran: drain the queue like the success path below, or the + // user's queued prompt sits in the queue with nothing left to + // trigger a submit (the condense was the resumed action). + this.processQueuedMessages() return { condensed: false, error, prevContextTokens } } await this.overwriteApiConversationHistory(messages) @@ -3675,11 +3856,10 @@ export class Task extends EventEmitter implements TaskLike { // the task first. this.hydrateApiConversationHistory(savedApiConversationHistory) - // A condense persists its summary as the last API-history entry. Restore - // the in-memory suppression flag before the resume ask arms the idle - // condense timer, so a task closed right after a condense does not arm - // another idle condense on reopen. - this.lastActionWasCondense = savedApiConversationHistory.at(-1)?.isSummary === true + // hydrateApiConversationHistory restored the in-memory condense + // suppression flag from the saved history before the resume ask arms + // the idle condense timer, so a task closed right after a condense + // does not arm another idle condense on reopen. await this.settleInterruptedCreateSubtaskBeforeReplay() if ( @@ -3954,6 +4134,14 @@ export class Task extends EventEmitter implements TaskLike { this.metadataFetchAbortController.abort() this.metadataFetchAbortController = undefined } + // An idle condense's summarization call is an HTTP request too: abort it + // with the rest (user cancel via ClineProvider, or disposal) so a task + // that no longer serves requests cannot finish a summary that would then + // replace history from a stale snapshot. + if (this.idleCondenseAbortController) { + this.idleCondenseAbortController.abort() + this.idleCondenseAbortController = undefined + } } /** diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index c56d7e7e17..c4852802ad 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -54,6 +54,9 @@ type CondenseStubResult = { prevContextTokens: number } +// Timestamp of the follow-up ask buildTask seeds so the task is idle-eligible. +const PENDING_ASK_TS = 1 + function buildTask({ state = baseState(), contextTokens = 600, @@ -70,11 +73,15 @@ function buildTask({ const task = Object.create(Task.prototype) as Task // Context window is 1_000, so contextTokens 600 => 60% full. - const condense = vi.fn(async (): Promise => ({ - condensed: true, - newContextTokens: 100, - prevContextTokens: contextTokens, - })) + // Mirrors condenseContextWithLease: the idle caller passes an + // onLeaseAcquired callback (it posts the in-progress cue and re-checks + // staleness), and a false verdict aborts before any summarization. + const condense = vi.fn(async (onLeaseAcquired?: () => Promise): Promise => { + if (onLeaseAcquired && !(await onLeaseAcquired())) { + return { condensed: false, prevContextTokens: contextTokens } + } + return { condensed: true, newContextTokens: 100, prevContextTokens: contextTokens } + }) const postMessageToWebview = vi.fn(async (_message: { type: string; text?: string }) => {}) const getState = vi.fn(async () => state) @@ -86,9 +93,22 @@ function buildTask({ Object.defineProperty(task, "abort", { value: false, configurable: true, writable: true }) task["abandoned"] = false task["activeApiWork"] = 0 - // Object.create skips constructor field initialisers; mirror the default. + // Object.create skips constructor field initialisers; mirror the defaults. task["lastActionWasCondense"] = false - task["clineMessages"] = [] + task["idleCondenseActivitySeq"] = 0 + task["idleCondenseExpiryEvaluating"] = false + // The shared arming path only arms while an idle-eligible ask is pending, + // so every task defaults to waiting on a complete follow-up. Tests that + // need a different waiting state replace clineMessages/askResponse. + task["lastMessageTs"] = PENDING_ASK_TS + task["askResponse"] = undefined + task["clineMessages"] = [ + { ts: PENDING_ASK_TS, type: "ask", ask: "followup", text: "What should I do next?" } as ClineMessage, + ] + // handleWebviewAskResponse marks the seeded follow-up answered and + // persists; the harness must never touch real storage. + task["saveClineMessages"] = vi.fn(async () => true) + task["updateClineMessage"] = vi.fn(async () => {}) Object.defineProperty(task, "taskId", { value: "task-1" }) // Double providing only the provider members the idle-condense gate touches // (getCurrentTask and getState); the real ClineProvider surface is irrelevant here. @@ -111,6 +131,16 @@ const postedCueTypes = (postMessageToWebview: { mock: { calls: Array<[{ type: string; text?: string }]> } }): string[] => postMessageToWebview.mock.calls.map(([message]) => message.type) +// Lease stub override: honors the onLeaseAcquired gate before returning `result`. +const leaseGated = + (result: CondenseStubResult) => + async (onLeaseAcquired?: () => Promise): Promise => { + if (onLeaseAcquired && !(await onLeaseAcquired())) { + return { condensed: false, prevContextTokens: 600 } + } + return result + } + describe("Task idle condensing — evaluateIdleCondense", () => { test("builds the gate and clamps the idle threshold to the main threshold", async () => { const { task } = buildTask({ @@ -341,6 +371,53 @@ describe("Task idle condensing — arming the timer", () => { expect(vi.getTimerCount()).toBe(0) }) + // Idle condensing only makes sense while the task genuinely waits on the + // user: the shared arming path rejects tasks with nothing pending, tasks + // mid-approval (command/tool/MCP asks), and answered asks. + test("does not arm when no ask is pending", async () => { + const { task } = buildTask() + task["clineMessages"] = [] + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) + + test.each(["command", "tool", "use_mcp_server"] as const)( + "does not arm while a %s approval ask is pending", + async (ask) => { + const { task } = buildTask() + task["clineMessages"] = [{ ts: PENDING_ASK_TS, type: "ask", ask } as ClineMessage] + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }, + ) + + test("does not arm once the pending ask has been answered", async () => { + const { task } = buildTask() + task["askResponse"] = "messageResponse" + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(0) + }) + + // The eligible set mirrors the ask categories that arm on a status + // transition: follow-up plus the idle and resumable asks. + test.each(["followup", "completion_result", "resume_task"] as const)( + "arms while a %s ask is pending", + async (ask) => { + const { task } = buildTask() + task["clineMessages"] = [{ ts: PENDING_ASK_TS, type: "ask", ask } as ClineMessage] + + await task["maybeStartIdleCondenseTimer"]() + + expect(vi.getTimerCount()).toBe(1) + }, + ) + // The tests above call the scheduler directly; these drive the real ask() // so the two-second status-transition hooks — the only places a waiting // ask schedules idle condensing — are covered end to end. @@ -574,7 +651,7 @@ describe("Task idle condensing — timer expiry", () => { test("a condense that did not shrink the context does not re-arm", async () => { const { task, condense, postMessageToWebview } = buildTask() - condense.mockResolvedValue({ condensed: false, prevContextTokens: 600, error: "summarize failed" }) + condense.mockImplementation(leaseGated({ condensed: false, prevContextTokens: 600, error: "summarize failed" })) await task["maybeStartIdleCondenseTimer"]() await vi.advanceTimersByTimeAsync(30_000) @@ -590,7 +667,12 @@ describe("Task idle condensing — timer expiry", () => { test("a condense that throws still closes the in-progress cue", async () => { const { task, condense, postMessageToWebview } = buildTask() - condense.mockRejectedValue(new Error("summarize exploded")) + condense.mockImplementation(async (onLeaseAcquired?: () => Promise) => { + if (onLeaseAcquired && !(await onLeaseAcquired())) { + return { condensed: false, prevContextTokens: 600 } + } + throw new Error("summarize exploded") + }) const consoleError = vi.spyOn(console, "error").mockImplementation(() => {}) try { @@ -611,12 +693,14 @@ describe("Task idle condensing — timer expiry", () => { test("an in-flight condense blocks a second expiry pass", async () => { const { task, condense, postMessageToWebview } = buildTask() let release: (result: CondenseStubResult) => void = () => {} - condense.mockImplementation( - () => - new Promise((resolve) => { - release = resolve - }), - ) + condense.mockImplementation(async (onLeaseAcquired?: () => Promise) => { + if (onLeaseAcquired && !(await onLeaseAcquired())) { + return { condensed: false, prevContextTokens: 600 } + } + return new Promise((resolve) => { + release = resolve + }) + }) await task["maybeStartIdleCondenseTimer"]() await vi.advanceTimersByTimeAsync(30_000) @@ -638,6 +722,43 @@ describe("Task idle condensing — timer expiry", () => { ]) }) + test("a cancel aborts the in-flight idle summarization request", async () => { + // The idle path runs without the request loop, so its summarization call + // has no request-scoped controller: the expiry run hands the lease a + // task-owned signal, and `cancelCurrentRequest` (user cancel or disposal) + // aborts the in-flight HTTP call through it. + const { task } = buildTask() + let summarySignal: AbortSignal | undefined + let release: (result: CondenseStubResult) => void = () => {} + task["condenseContextWithLease"] = vi.fn( + async (onLeaseAcquired?: () => Promise, signal?: AbortSignal): Promise => { + summarySignal = signal + if (onLeaseAcquired && !(await onLeaseAcquired())) { + return { condensed: false, prevContextTokens: 600 } + } + return new Promise((resolve) => { + release = resolve + }) + }, + ) + + await task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(30_000) + expect(task["idleCondenseInFlight"]).toBe(true) + expect(summarySignal).toBeDefined() + expect(summarySignal?.aborted).toBe(false) + + task.cancelCurrentRequest() + expect(summarySignal?.aborted).toBe(true) + // The cancel owns the abort; the finishing run just finds the field clear. + expect(task["idleCondenseAbortController"]).toBeUndefined() + + release({ condensed: false, prevContextTokens: 600 }) + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseInFlight"]).toBe(false) + expect(task["idleCondenseAbortController"]).toBeUndefined() + }) + test("an idle wait beyond the maximum timer delay waits the full duration", async () => { const { task, condense } = buildTask({ state: baseState({ idleCondenseTimeInSeconds: 2_147_484 }), @@ -753,6 +874,107 @@ describe("Task idle condensing — activity invalidates a pending expiry evaluat expect(condense).toHaveBeenCalledTimes(1) }) + + // A typing signal arrives after the countdown expired but while its + // evaluation still awaits: no timer is armed, so without the + // expiry-evaluating flag the reset would silently no-op and the stale + // evaluation would condense over the conversation being edited. + test("typing during the gate evaluation discards it and restarts the countdown", async () => { + const { task, condense, settleGate, postMessageToWebview } = buildPendingGateTask() + + await expireIntoPendingGate(task) + expect(task["idleCondenseExpiryEvaluating"]).toBe(true) + + // The user types in the prompt area while the expiry is evaluating. + task.resetIdleCondenseTimer() + settleGate() + await vi.advanceTimersByTimeAsync(0) + + // The stale evaluation was discarded: no condense, no in-progress cue. + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + // A fresh countdown replaced it, and the evaluation flag was cleared. + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + expect(task["idleCondenseExpiryEvaluating"]).toBe(false) + + // The restarted countdown runs the condense normally. + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + }) + + // A settings save during the expiry evaluation means the evaluation + // measured against pre-save settings: it must be discarded, and the + // re-armed evaluation must apply the newly saved thresholds instead. + test("a settings save during the gate evaluation discards it and re-arms", async () => { + const { task, condense, settleGate, postMessageToWebview } = buildPendingGateTask() + + await expireIntoPendingGate(task) + + task.reevaluateIdleCondenseAfterSettingsSave() + settleGate() + await vi.advanceTimersByTimeAsync(0) + + // The pre-save evaluation was discarded: no condense, no cue. + expect(condense).not.toHaveBeenCalled() + expect(postMessageToWebview).not.toHaveBeenCalled() + // The post-save evaluation armed a fresh countdown. + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + expect(task["idleCondenseExpiryEvaluating"]).toBe(false) + task["cancelIdleCondenseTimer"]() + }) +}) + +describe("Task idle condensing — activity invalidates a pending arming evaluation", () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + // Defers the arming gate's provider state read so activity can land while + // maybeStartIdleCondenseTimer is still awaiting evaluateIdleCondense. + function buildPendingArmTask() { + const built = buildTask() + let resolveState: (state: StateStub) => void = () => {} + const pendingGate = new Promise((resolve) => { + resolveState = resolve + }) + built.getState.mockImplementation(() => pendingGate) + return { ...built, settleGate: () => resolveState(baseState()) } + } + + test("an answer landing during the arming evaluation discards the pending arm", async () => { + const { task, settleGate } = buildPendingArmTask() + task["checkpointSave"] = vi.fn(async () => {}) + + const arming = task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(0) + + // The user answers the pending ask while the arming gate still runs. + task.handleWebviewAskResponse("messageResponse", "new prompt") + settleGate() + await arming + + // The stale evaluation was discarded: no countdown for a task that is + // no longer waiting on the user. + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + }) + + test("arming proceeds when no activity lands during the gate evaluation", async () => { + const { task, settleGate } = buildPendingArmTask() + + const arming = task["maybeStartIdleCondenseTimer"]() + await vi.advanceTimersByTimeAsync(0) + + // The gate resolves while the task is still idle: the countdown arms. + settleGate() + await arming + + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + task["cancelIdleCondenseTimer"]() + }) }) describe("Task idle condensing — last-action-was-a-condense suppression", () => { @@ -846,6 +1068,15 @@ describe("Task idle condensing — last-action-was-a-condense suppression", () = // The user sends a prompt: idle condensing becomes eligible again. task["checkpointSave"] = vi.fn(async () => {}) task.handleWebviewAskResponse("messageResponse", "new prompt") + // The prompt is consumed by a new request cycle that ends with a + // fresh follow-up ask, so the task is waiting on the user again. + task["askResponse"] = undefined + task["lastMessageTs"] = PENDING_ASK_TS + 1 + task["clineMessages"].push({ + ts: PENDING_ASK_TS + 1, + type: "ask", + ask: "followup", + } as ClineMessage) await task["maybeStartIdleCondenseTimer"]() expect(vi.getTimerCount()).toBe(1) } finally { @@ -915,6 +1146,56 @@ describe("Task idle condensing — restoring last-action-was-a-condense on reope }) }) +describe("Task idle condensing — reconciling last-action-was-a-condense on history replacement", () => { + // Rewinds, checkpoint restores, and message deletes/edits replace the API + // history wholesale via overwriteApiConversationHistory. The suppression + // flag must follow the new history: without reconciliation a rewind that + // truncates past the condense summary would keep suppressing idle + // condensing until the next prompt, even though the last action is gone. + function buildFlaggedTask() { + const { task } = buildTask() + const history: ApiMessage[] = [ + { role: "user", content: [{ type: "text", text: "do the thing" }] }, + { role: "assistant", content: [{ type: "text", text: "all set" }] }, + { + role: "user", + content: [{ type: "text", text: "Summary of the condensed conversation..." }], + isSummary: true, + condenseId: "condense-1", + }, + ] + task["apiConversationHistory"] = history + task["lastActionWasCondense"] = true + return { task, history } + } + + test("a rewind that truncates past the summary clears the flag", async () => { + const { task, history } = buildFlaggedTask() + + // Checkpoint restore keeps only the messages before the rewind point, + // dropping the trailing condense summary. + await task.overwriteApiConversationHistory(history.slice(0, 2), false) + + expect(task["lastActionWasCondense"]).toBe(false) + }) + + test("a replacement that keeps the trailing summary keeps the flag", async () => { + const { task, history } = buildFlaggedTask() + + await task.overwriteApiConversationHistory(history, false) + + expect(task["lastActionWasCondense"]).toBe(true) + }) + + test("replacing history with an empty list clears the flag", async () => { + const { task } = buildFlaggedTask() + + await task.overwriteApiConversationHistory([], false) + + expect(task["lastActionWasCondense"]).toBe(false) + }) +}) + describe("Task idle condensing — re-arm after API work discards the timer", () => { beforeEach(() => { vi.useFakeTimers() @@ -940,11 +1221,13 @@ describe("Task idle condensing — re-arm after API work discards the timer", () return built } - // Arm the timer for the pending follow-up, then let it expire while the - // task still has a request in flight, so the expiry discards the timer. + // Arm the countdown directly, then let it expire while the task still has + // a request in flight, so the expiry discards the timer. Direct arming + // (bypassing the eligibility-gated shared path, covered by its own tests) + // keeps the helper usable for asks that must not arm on their own. async function discardTimerDuringApiWork(task: Task) { const endApiWork = task["beginApiWork"]() - await task["maybeStartIdleCondenseTimer"]() + task["armIdleCondenseTimeout"](30) await vi.advanceTimersByTimeAsync(30_000) expect(vi.getTimerCount()).toBe(0) expect(task["idleCondenseRearmAfterApiWork"]).toBe(true) @@ -986,7 +1269,7 @@ describe("Task idle condensing — re-arm after API work discards the timer", () }) test.each([ - ["a different pending ask", () => "resume_task" as ClineAsk], + ["an approval ask", () => "command" as ClineAsk], ["a partial follow-up ask", () => "followup" as ClineAsk], ])("does not re-arm when the stream ends with %s", async (_label, pickAsk) => { const ask = pickAsk() @@ -1006,6 +1289,27 @@ describe("Task idle condensing — re-arm after API work discards the timer", () await vi.advanceTimersByTimeAsync(60_000) expect(condense).not.toHaveBeenCalled() }) + + // The idle-eligible set (idle and resumable asks) re-arms too: they wait + // on the user just like a follow-up, so a discarded timer must return. + test.each(["completion_result", "resume_task"] as const)( + "re-arms the timer when the last request finishes with a %s ask still pending", + async (ask) => { + const { task, condense } = buildApiWorkTask(ask) + const endApiWork = await discardTimerDuringApiWork(task) + expect(condense).not.toHaveBeenCalled() + + endApiWork() + // Flush the microtasks of the re-arm kicked off by the completion. + await vi.advanceTimersByTimeAsync(0) + + expect(task["idleCondenseRearmAfterApiWork"]).toBe(false) + expect(vi.getTimerCount()).toBe(1) + + await vi.advanceTimersByTimeAsync(30_000) + expect(condense).toHaveBeenCalledTimes(1) + }, + ) }) describe("Task idle condensing — history barrier serializes ask responses", () => { @@ -1047,6 +1351,137 @@ describe("Task idle condensing — history barrier serializes ask responses", () expect(barrierDuringSummarize).toBeInstanceOf(Promise) expect(task["condenseHistoryBarrier"]).toBeUndefined() }) + + test("concurrent leases serialize: the second summary waits for the first", async () => { + // A manual condense and an idle condense must never overlap: the second + // lease chains behind the first via condenseLeaseTail, so it cannot + // install its barrier or summarize while the first still holds history. + let releaseFirst!: () => void + const firstSummaryDone = new Promise((resolve) => { + releaseFirst = resolve + }) + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + task["beginApiWork"] = vi.fn(() => vi.fn()) + const seenBarriers: Array | undefined> = [] + let calls = 0 + const summarize = vi.fn(async () => { + calls += 1 + seenBarriers.push(task["condenseHistoryBarrier"]) + if (calls === 1) { + await firstSummaryDone + } + return { condensed: true, newContextTokens: 100, prevContextTokens: 600 } + }) + task["condenseContextWithActiveApi"] = summarize + + const first = task["condenseContextWithLease"]() + const second = task["condenseContextWithLease"]() + + // The first summary is in flight while the second must still be chained + // behind it: no second summarize, and the field still holds the first barrier. + await new Promise((resolve) => setTimeout(resolve, 0)) + expect(summarize).toHaveBeenCalledTimes(1) + expect(task["condenseHistoryBarrier"]).toBe(seenBarriers[0]) + + releaseFirst() + await Promise.all([first, second]) + + expect(summarize).toHaveBeenCalledTimes(2) + // Each lease ran under its own barrier, and both settled. + expect(seenBarriers[0]).toBeInstanceOf(Promise) + expect(seenBarriers[1]).toBeInstanceOf(Promise) + expect(seenBarriers[1]).not.toBe(seenBarriers[0]) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + }) + + test("the idle callback runs under the barrier before the condense counts as API work", async () => { + // The in-progress cue and the staleness re-check run inside the lease's + // barrier: a response landing while the cue is posted must stay held. + // beginApiWork runs only after the callback passes, so the lease's own + // API-work count cannot make the callback see activeApiWork > 0 and + // cancel every idle condense. + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + const beginApiWork = vi.fn(() => vi.fn()) + task["beginApiWork"] = beginApiWork + task["condenseContextWithActiveApi"] = vi.fn(async () => ({ + condensed: true, + newContextTokens: 100, + prevContextTokens: 600, + })) + + let barrierDuringCue: Promise | undefined + let apiWorkDuringCue = -1 + const result = await task["condenseContextWithLease"](async () => { + barrierDuringCue = task["condenseHistoryBarrier"] + apiWorkDuringCue = task["activeApiWork"] + return true + }) + + expect(result.condensed).toBe(true) + expect(barrierDuringCue).toBeInstanceOf(Promise) + expect(apiWorkDuringCue).toBe(0) + expect(beginApiWork).toHaveBeenCalledTimes(1) + expect(task["lastActionWasCondense"]).toBe(true) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + }) + + test("the lease forwards the summary signal to the summarization call", async () => { + // The idle run's task-owned controller signal must reach the summarize + // call, which threads it into the API metadata as `abortSignal`. + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + task["beginApiWork"] = vi.fn(() => vi.fn()) + let summarySignal: AbortSignal | undefined + task["condenseContextWithActiveApi"] = vi.fn(async (signal?: AbortSignal) => { + summarySignal = signal + return { condensed: true, newContextTokens: 100, prevContextTokens: 600 } + }) + const controller = new AbortController() + + const result = await task["condenseContextWithLease"](async () => true, controller.signal) + + expect(result.condensed).toBe(true) + expect(summarySignal).toBe(controller.signal) + }) + + test("a manual condense forwards no summary signal", async () => { + // Manual condensing keeps the current request's signal semantics inside + // condenseContextWithActiveApi; the lease passes no idle signal through. + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + task["beginApiWork"] = vi.fn(() => vi.fn()) + let summarySignal: AbortSignal | undefined + task["condenseContextWithActiveApi"] = vi.fn(async (signal?: AbortSignal) => { + summarySignal = signal + return { condensed: true, newContextTokens: 100, prevContextTokens: 600 } + }) + + await task["condenseContextWithLease"]() + + expect(summarySignal).toBeUndefined() + }) + + test("a false onLeaseAcquired verdict aborts without touching history", async () => { + // The idle caller aborts when the user engaged during the cue's await: + // no summarize call, no API-work count, and the last action is not + // marked as a condense, so the next idle wait can re-arm normally. + const { task } = buildTask() + task["condenseContextWithLease"] = Task.prototype["condenseContextWithLease"].bind(task) + const beginApiWork = vi.fn(() => vi.fn()) + task["beginApiWork"] = beginApiWork + const summarize = vi.fn() + task["condenseContextWithActiveApi"] = summarize + + const result = await task["condenseContextWithLease"](async () => false) + + expect(result).toEqual({ condensed: false, prevContextTokens: 600 }) + expect(summarize).not.toHaveBeenCalled() + expect(beginApiWork).not.toHaveBeenCalled() + expect(task["lastActionWasCondense"]).toBe(false) + expect(task["condenseHistoryBarrier"]).toBeUndefined() + }) }) describe("Task idle condensing — re-evaluation after settings save", () => { diff --git a/src/core/task/__tests__/Task.spec.ts b/src/core/task/__tests__/Task.spec.ts index 9e0f22057c..183d0a18e7 100644 --- a/src/core/task/__tests__/Task.spec.ts +++ b/src/core/task/__tests__/Task.spec.ts @@ -8093,6 +8093,41 @@ describe("Queued message processing after condense", () => { expect(task.messageQueueService.isEmpty()).toBe(true) }) + it("drains the queue after a condense whose summarization failed", async () => { + const provider = createProvider() + const task = new Task({ + provider, + apiConfiguration: apiConfig, + task: "initial task", + startTask: false, + }) + + vi.spyOn(getTaskTestAccess(task), "getSystemPrompt").mockResolvedValue("system") + const submitSpy = vi.spyOn(task, "submitUserMessage").mockResolvedValue(undefined) + // The summarize request fails, so the condense reports the error and + // returns without replacing the history. + vi.mocked(summarizeConversation).mockResolvedValueOnce({ + messages: [{ role: "user", content: [{ type: "text", text: "unchanged" }], ts: Date.now() }], + summary: "", + cost: 0, + error: "Condensing failed: rate limited", + }) + + // Queue a message while the (failing) condense runs. + task.messageQueueService.addMessage("queued after failure") + + vi.useFakeTimers() + await task.condenseContext() + + vi.runAllTimers() + vi.useRealTimers() + + // The failure path must still deliver the queued message: nothing else + // will trigger a submit, so skipping the drain strands the user's prompt. + expect(submitSpy).toHaveBeenCalledWith("queued after failure", undefined) + expect(task.messageQueueService.isEmpty()).toBe(true) + }) + it("does not cross-drain queues between separate tasks", async () => { const providerA = createProvider() const providerB = createProvider() diff --git a/src/core/task/__tests__/ask-queued-message-drain.spec.ts b/src/core/task/__tests__/ask-queued-message-drain.spec.ts index b9cb8fba08..368206d9b9 100644 --- a/src/core/task/__tests__/ask-queued-message-drain.spec.ts +++ b/src/core/task/__tests__/ask-queued-message-drain.spec.ts @@ -80,6 +80,7 @@ describe("Task.ask queued message drain", () => { expect(premature).toBe("pending") // Not even claimed: the message is intact for the post-settle drain. expect(task.messageQueueService.messages[0]?.text).toBe("picked answer") + expect(task.messageQueueService.hasUnclaimed()).toBe(true) releaseBarrier() const result = await askPromise @@ -113,6 +114,36 @@ describe("Task.ask queued message drain", () => { expect(result).toMatchObject({ response: "messageResponse", text: "answered mid-condense" }) }) + it("delivers a held direct response instead of draining a queued message", async () => { + const task = await createTask() + + const releaseBarrier = installCondenseBarrier(task) + // A queued message lands while the condense holds the history. + task.messageQueueService.addMessage("queued while condensing") + + const askPromise = task.ask("followup", "Q?", false) + + // The user resumes directly mid-summarize. The drain gate must prefer + // the landed response: claiming the queued message now would overwrite + // the pending direct response the user is waiting on. + await new Promise((resolve) => setTimeout(resolve, 50)) + task.handleWebviewAskResponse("messageResponse", "answered mid-condense") + + const premature = await Promise.race([ + askPromise, + new Promise<"pending">((resolve) => setTimeout(() => resolve("pending"), 250)), + ]) + expect(premature).toBe("pending") + expect(task["askResponse"]).toBe("messageResponse") + + releaseBarrier() + const result = await askPromise + // The direct response wins the ask... + expect(result).toMatchObject({ response: "messageResponse", text: "answered mid-condense" }) + // ...and the queued message survives unclaimed for a later turn. + expect(task.messageQueueService.claimNextMessage()?.text).toBe("queued while condensing") + }) + it("does not consume queued messages for command_output asks", async () => { const task = await createTask() diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 292f8833d9..f763d98fdd 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4687,11 +4687,13 @@ describe("ClineProvider", () => { expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { raised: 80 }) }) - test("persists non-numeric idle-condense values unchanged when their guards reject them", async () => { + test("rejects invalid idle-condense payloads instead of persisting them", async () => { await provider.resolveWebviewView(mockWebviewView) - // A hand-crafted message can carry payloads the webview controls never produce; the - // normalization guards reject them and the raw value is stored unchanged. + // A hand-crafted message can carry payloads the webview controls never produce; + // storing them unchanged would surface as NaN at the runtime (e.g. idle + // condensing below the configured threshold), so the handler must reject them + // without persisting, while valid values in the same save still persist. await getMessageHandler()({ type: "updateSettings", updatedSettings: { @@ -4699,13 +4701,17 @@ describe("ClineProvider", () => { profileIdleThresholds: null as unknown as Record, idleCondenseTimeInSeconds: "180" as unknown as number, profileIdleCondenseTimes: "180" as unknown as Record, + idleCondenseContext: true, }, }) - expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", "40") - expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", null) - expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseTimeInSeconds", "180") - expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleCondenseTimes", "180") + const persistedKeys: unknown[] = updateGlobalStateSpy.mock.calls.map(([key]: [unknown]) => key) + expect(persistedKeys).not.toContain("idleCondenseContextPercent") + expect(persistedKeys).not.toContain("profileIdleThresholds") + expect(persistedKeys).not.toContain("idleCondenseTimeInSeconds") + expect(persistedKeys).not.toContain("profileIdleCondenseTimes") + // A valid sibling still persists. + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContext", true) }) test("clamps a negative idleCondenseTimeInSeconds message to zero", async () => { @@ -4775,6 +4781,27 @@ describe("ClineProvider", () => { expect(reevaluateIdleCondenseAfterSettingsSave).toHaveBeenCalledTimes(1) }) + test("re-evaluates the active task when a later write fails after an idle setting was stored", async () => { + await provider.resolveWebviewView(mockWebviewView) + const reevaluateIdleCondenseAfterSettingsSave = vi.fn() + vi.spyOn(provider, "getCurrentTask").mockReturnValue({ + reevaluateIdleCondenseAfterSettingsSave, + } as unknown as Task) + // The writes are not a transaction: idleCondenseContext stores, then + // the next key's write fails. The stored key still changed the task's + // idle-condense eligibility, so the re-evaluation must still run. + updateGlobalStateSpy.mockResolvedValueOnce(undefined).mockRejectedValueOnce(new Error("write failed")) + + await expect( + getMessageHandler()({ + type: "updateSettings", + updatedSettings: { idleCondenseContext: true, soundEnabled: true }, + }), + ).rejects.toThrow("write failed") + + expect(reevaluateIdleCondenseAfterSettingsSave).toHaveBeenCalledTimes(1) + }) + test.each([ ["idleCondenseContextPercent", 60], ["idleCondenseTimeInSeconds", 60], diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 01c6174efc..8547b556f4 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -917,78 +917,88 @@ export const webviewMessageHandler = async ( continue } } else if (key === "idleCondenseContextPercent") { - if (typeof value === "number") { - const mainPercent = - (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - getGlobalState("autoCondenseContextPercent") ?? - 100 - newValue = clampIdleCondensePercent(value, mainPercent) + // A hand-crafted message can carry payloads the webview controls + // never produce; storing them unchanged surfaces as NaN at the + // runtime (e.g. idle condensing below the configured threshold), + // so invalid values are rejected instead of persisted. + if (typeof value !== "number" || !Number.isFinite(value)) { + provider.log(`[updateSettings] Rejected an invalid value for ${key}`) + continue } + const mainPercent = + (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? + getGlobalState("autoCondenseContextPercent") ?? + 100 + newValue = clampIdleCondensePercent(value, mainPercent) } else if (key === "profileIdleThresholds") { - if (value && typeof value === "object") { - const globalMainPercent = - (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - getGlobalState("autoCondenseContextPercent") ?? - 100 - // Each profile's idle override may only be clamped against that - // profile's own effective main threshold, since that is what the - // runtime resolves per profile; clamping against the global - // threshold could silently lower a profile's idle trigger below - // what the user selected. - const profileMainThresholds = - (message.updatedSettings.profileThresholds as Record | undefined) ?? - getGlobalState("profileThresholds") ?? - {} - newValue = Object.fromEntries( - Object.entries(value as Record).map(([id, percent]) => { - // Mirror computeEffectiveCondenseThreshold's resolve semantics: - // -1 inherits and a value within the shared bounds is a valid - // override; anything else (e.g. 1%) must preserve global - // inheritance instead of becoming a valid override through - // clamping (which would silently condense below the global - // idle threshold). - if ( - percent === -1 || - !Number.isFinite(percent) || - percent < MIN_CONDENSE_THRESHOLD || - percent > MAX_CONDENSE_THRESHOLD - ) { - return [id, -1] - } - return [ - id, - clampIdleCondensePercent( - percent, - computeEffectiveCondenseThreshold({ - globalPercent: globalMainPercent, - profileThresholds: profileMainThresholds, - currentProfileId: id, - }), - ), - ] - }), - ) + if (!value || typeof value !== "object") { + provider.log(`[updateSettings] Rejected an invalid value for ${key}`) + continue } + const globalMainPercent = + (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? + getGlobalState("autoCondenseContextPercent") ?? + 100 + // Each profile's idle override may only be clamped against that + // profile's own effective main threshold, since that is what the + // runtime resolves per profile; clamping against the global + // threshold could silently lower a profile's idle trigger below + // what the user selected. + const profileMainThresholds = + (message.updatedSettings.profileThresholds as Record | undefined) ?? + getGlobalState("profileThresholds") ?? + {} + newValue = Object.fromEntries( + Object.entries(value as Record).map(([id, percent]) => { + // Mirror computeEffectiveCondenseThreshold's resolve semantics: + // -1 inherits and a value within the shared bounds is a valid + // override; anything else (e.g. 1%) must preserve global + // inheritance instead of becoming a valid override through + // clamping (which would silently condense below the global + // idle threshold). + if ( + percent === -1 || + !Number.isFinite(percent) || + percent < MIN_CONDENSE_THRESHOLD || + percent > MAX_CONDENSE_THRESHOLD + ) { + return [id, -1] + } + return [ + id, + clampIdleCondensePercent( + percent, + computeEffectiveCondenseThreshold({ + globalPercent: globalMainPercent, + profileThresholds: profileMainThresholds, + currentProfileId: id, + }), + ), + ] + }), + ) } else if (key === "idleCondenseTimeInSeconds") { - if (typeof value === "number") { - newValue = Math.max(0, Math.round(value)) + if (typeof value !== "number" || !Number.isFinite(value)) { + provider.log(`[updateSettings] Rejected an invalid value for ${key}`) + continue } + newValue = Math.max(0, Math.round(value)) } else if (key === "profileIdleCondenseTimes") { - if (value && typeof value === "object") { - newValue = Object.fromEntries( - Object.entries(value as Record).map(([id, seconds]) => [ - id, - // Mirror resolveIdleCondenseTimeInSeconds' resolve semantics: - // -1 inherits the global wait and any other non-negative number - // is a valid override; anything else (e.g. -7s) must preserve - // global inheritance instead of clamping into a valid override - // (which would silently condense on an immediate 0s trigger). - seconds === -1 || !Number.isFinite(seconds) || seconds < 0 - ? -1 - : Math.round(seconds), - ]), - ) + if (!value || typeof value !== "object") { + provider.log(`[updateSettings] Rejected an invalid value for ${key}`) + continue } + newValue = Object.fromEntries( + Object.entries(value as Record).map(([id, seconds]) => [ + id, + // Mirror resolveIdleCondenseTimeInSeconds' resolve semantics: + // -1 inherits the global wait and any other non-negative number + // is a valid override; anything else (e.g. -7s) must preserve + // global inheritance instead of clamping into a valid override + // (which would silently condense on an immediate 0s trigger). + seconds === -1 || !Number.isFinite(seconds) || seconds < 0 ? -1 : Math.round(seconds), + ]), + ) } await provider.contextProxy.setValue(key as keyof RooCodeSettings, newValue) @@ -997,19 +1007,22 @@ export const webviewMessageHandler = async ( idleCondenseSettingsChanged = true } } - + } catch (error) { + failed = true + failure = error + } finally { // Saving these settings can change idle-condense eligibility: a // task waiting on the user above the idle threshold has no // countdown armed (and nothing else arms one) when the feature is // only just enabled or its thresholds loosened. Let the active // task re-run the full eligibility check; tasks with API work in // flight stay ineligible and an already-armed countdown is kept. + // The writes are not a transaction, so re-run even when a later + // write failed after an idle key was already stored: that stored + // key still changed the task's eligibility. if (idleCondenseSettingsChanged) { provider.getCurrentTask()?.reevaluateIdleCondenseAfterSettingsSave() } - } catch (error) { - failed = true - failure = error } // A failed refresh must neither undo a stored save nor keep the webview from getting the result. diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index a0b080a43d..90e07b0711 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -110,6 +110,17 @@ export const ChatTextArea = forwardRef( const normalizedInputValue = typeof inputValue === "string" ? inputValue : "" const { t } = useAppTranslation() + + // Every user-driven prompt mutation must restart the idle-condense + // countdown. Programmatic setInputValue calls (URL paste, dropped + // paths, menu selections, history recall) never fire the textarea's + // onChange, so each mutation site signals the reset itself. The host + // ignores the signal unless a timer is armed, so extra signals are + // harmless. + const signalIdleCondenseReset = useCallback(() => { + vscode.postMessage({ type: "idleCondenseReset" }) + }, []) + const { filePaths, openedTabs, @@ -180,6 +191,11 @@ export const ChatTextArea = forwardRef( } catch { setInputValue(message.text) } + + // execCommand fires a native input event (and thus the + // textarea onChange) only in real browsers, and the + // setInputValue fallback never does; signal unconditionally. + signalIdleCondenseReset() } setIsEnhancingPrompt(false) @@ -203,6 +219,7 @@ export const ChatTextArea = forwardRef( " " + currentValue.slice(cursorPos) setInputValue(newValue) + signalIdleCondenseReset() // Set cursor position after the inserted text const newCursorPos = cursorPos + prefix.length + message.text.length + 1 @@ -233,7 +250,7 @@ export const ChatTextArea = forwardRef( window.addEventListener("message", messageHandler) return () => window.removeEventListener("message", messageHandler) - }, [setInputValue, searchRequestId, normalizedInputValue]) + }, [setInputValue, signalIdleCondenseReset, searchRequestId, normalizedInputValue]) const [isDraggingOver, setIsDraggingOver] = useState(false) const [textAreaBaseHeight, setTextAreaBaseHeight] = useState(undefined) @@ -350,6 +367,7 @@ export const ChatTextArea = forwardRef( // Handle mode selection. setMode(value) setInputValue("") + signalIdleCondenseReset() setShowContextMenu(false) vscode.postMessage({ type: "mode", text: value }) return @@ -364,6 +382,7 @@ export const ChatTextArea = forwardRef( // Insert the command mention into the textarea const commandMention = `/${value}` setInputValue(commandMention + " ") + signalIdleCondenseReset() setCursorPosition(commandMention.length + 1) setIntendedCursorPosition(commandMention.length + 1) @@ -420,6 +439,7 @@ export const ChatTextArea = forwardRef( ) setInputValue(newValue) + signalIdleCondenseReset() const newCursorPosition = newValue.indexOf(" ", mentionIndex + insertValue.length) + 1 setCursorPosition(newCursorPosition) setIntendedCursorPosition(newCursorPosition) @@ -434,7 +454,7 @@ export const ChatTextArea = forwardRef( } }, // eslint-disable-next-line react-hooks/exhaustive-deps - [setInputValue, cursorPosition], + [setInputValue, cursorPosition, signalIdleCondenseReset], ) const handleKeyDown = useCallback( @@ -512,6 +532,8 @@ export const ChatTextArea = forwardRef( // Handle prompt history navigation using custom hook if (handleHistoryNavigation(event, showContextMenu, isComposing)) { + // Recalling a prompt rewrites the input without an onChange. + signalIdleCondenseReset() return } @@ -569,6 +591,7 @@ export const ChatTextArea = forwardRef( if (newText !== normalizedInputValue) { event.preventDefault() setInputValue(newText) + signalIdleCondenseReset() setIntendedCursorPosition(newPosition) // Store the new cursor position in state } @@ -597,6 +620,7 @@ export const ChatTextArea = forwardRef( resetHistoryNavigation, commands, enterBehavior, + signalIdleCondenseReset, ], ) @@ -621,8 +645,7 @@ export const ChatTextArea = forwardRef( // Typing in the prompt area resets the idle-condense timer. // Signal on every edit: a throttled signal can let condensing // start less than one idle window after a suppressed keystroke. - // The host ignores the signal unless a timer is armed. - vscode.postMessage({ type: "idleCondenseReset" }) + signalIdleCondenseReset() const newCursorPosition = e.target.selectionStart setCursorPosition(newCursorPosition) @@ -681,7 +704,14 @@ export const ChatTextArea = forwardRef( setFileSearchResults([]) // Clear file search results. } }, - [setInputValue, setSearchRequestId, setFileSearchResults, setSearchLoading, resetOnInputChange], + [ + setInputValue, + setSearchRequestId, + setFileSearchResults, + setSearchLoading, + resetOnInputChange, + signalIdleCondenseReset, + ], ) useEffect(() => { @@ -716,6 +746,7 @@ export const ChatTextArea = forwardRef( " " + normalizedInputValue.slice(cursorPosition) setInputValue(newValue) + signalIdleCondenseReset() const newCursorPosition = cursorPosition + trimmedUrl.length + 1 setCursorPosition(newCursorPosition) setIntendedCursorPosition(newCursorPosition) @@ -777,7 +808,15 @@ export const ChatTextArea = forwardRef( } } }, - [shouldDisableImages, setSelectedImages, cursorPosition, setInputValue, normalizedInputValue, t], + [ + shouldDisableImages, + setSelectedImages, + cursorPosition, + setInputValue, + normalizedInputValue, + t, + signalIdleCondenseReset, + ], ) const handleMenuMouseDown = useCallback(() => { @@ -885,6 +924,7 @@ export const ChatTextArea = forwardRef( const newCursorPosition = cursorPosition + totalLength setCursorPosition(newCursorPosition) setIntendedCursorPosition(newCursorPosition) + signalIdleCondenseReset() } return @@ -946,6 +986,7 @@ export const ChatTextArea = forwardRef( shouldDisableImages, setSelectedImages, t, + signalIdleCondenseReset, ], ) diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index e69ebcf030..3fbab17aa5 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -666,7 +666,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction { fireEvent.change(textarea, { target: { value: "hel", selectionStart: 3 } }) expect(idleSignals()).toHaveLength(3) }) + + it("posts idleCondenseReset when a URL paste rewrites the prompt", () => { + // A URL paste preventDefaults the native paste and sets the input + // programmatically, so no onChange fires; the mutation itself must + // restart the armed idle countdown. + const { container } = render() + const textarea = getTextarea(container) + + const pasteEvent = new window.Event("paste", { bubbles: true, cancelable: true }) + Object.defineProperty(pasteEvent, "clipboardData", { + value: { items: [], getData: () => "https://example.com" }, + }) + + act(() => { + textarea.dispatchEvent(pasteEvent) + }) + + expect(defaultProps.setInputValue).toHaveBeenCalledWith("https://example.com visit ") + expect(idleSignals()).toHaveLength(1) + }) + + it("posts idleCondenseReset when a dropped path rewrites the prompt", () => { + const { container } = render() + const textarea = getTextarea(container) + textarea.setSelectionRange(3, 3) + fireEvent.mouseUp(textarea) + + fireEvent.drop(container.querySelector(".chat-text-area") as HTMLElement, { + dataTransfer: { getData: () => "/some/path", files: [] }, + preventDefault: vi.fn(), + }) + + expect(defaultProps.setInputValue).toHaveBeenCalledWith("abc/some/path def") + expect(idleSignals()).toHaveLength(1) + }) + + it("posts idleCondenseReset when history navigation recalls a prompt", () => { + ;(useExtensionState as ReturnType).mockReturnValue({ + filePaths: [], + openedTabs: [], + apiConfiguration: { apiProvider: providerIdentifiers.anthropic }, + taskHistory: [], + clineMessages: [{ type: "say", say: "user_feedback", text: "First prompt", ts: 1000 }], + cwd: "/test/workspace", + }) + + const { container } = render() + const textarea = getTextarea(container) + textarea.setSelectionRange(0, 0) + + fireEvent.keyDown(textarea, { key: "ArrowUp" }) + + // Recalling a prompt replaces the input without an onChange event. + expect(defaultProps.setInputValue).toHaveBeenCalledWith("First prompt") + expect(idleSignals()).toHaveLength(1) + }) }) }) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index cc6d14003b..d6cf8c7e2c 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -1767,6 +1767,7 @@ describe("ChatView - Context Condensing Indicator Tests", () => { // First hydrate state with an active task mockPostMessage({ + currentTaskId: "test-task-id", clineMessages: [ { type: "say", @@ -1831,6 +1832,7 @@ describe("ChatView - Context Condensing Indicator Tests", () => { // Hydrate with a completed API request so sending is enabled and not streaming mockPostMessage({ + currentTaskId: "test-task-id", clineMessages: [ { type: "say", @@ -1899,4 +1901,48 @@ describe("ChatView - Context Condensing Indicator Tests", () => { }), ) }) + + it("ignores condense cues tagged with another task's id", async () => { + // The started/response cues carry the task they belong to. A cue from + // a different (e.g. previously condensing) task must not toggle the + // current view's indicator; the current task's cue still must. + const { container, getByTestId } = renderChatView() + + await dispatchTaskState("task-a", 5_000) + await waitFor(() => { + expect(getByTestId("task-header")).toHaveAttribute("data-task-id", "task-a") + }) + + const findCondensingRow = () => + Array.from(container.querySelectorAll('[data-testid="chat-row"]')).find((row) => { + const text = row.textContent || "" + return text.includes('"say":"condense_context"') && text.includes('"partial":true') + }) + + // Reject path: a stale started cue for another task stays ignored. + await dispatchExtensionMessage({ type: "condenseTaskContextStarted", text: "task-b" }) + await act(async () => { + await new Promise((resolve) => setTimeout(resolve, 0)) + }) + expect(findCondensingRow()).toBeUndefined() + + // Accept path: the current task's cue shows the indicator. + await dispatchExtensionMessage({ type: "condenseTaskContextStarted", text: "task-a" }) + await waitFor(() => { + expect(findCondensingRow()).toBeTruthy() + }) + + // Reject path: a stale response for another task does not clear it. + await dispatchExtensionMessage({ type: "condenseTaskContextResponse", text: "task-b" }) + await act(async () => { + await new Promise((resolve) => setTimeout(resolve, 0)) + }) + expect(findCondensingRow()).toBeTruthy() + + // Accept path: the current task's response clears it. + await dispatchExtensionMessage({ type: "condenseTaskContextResponse", text: "task-a" }) + await waitFor(() => { + expect(findCondensingRow()).toBeUndefined() + }) + }) }) diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 4b4cb64fe8..3dad68fc3e 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -1,4 +1,4 @@ -import { FormEvent, HTMLAttributes } from "react" +import { FormEvent, HTMLAttributes, useEffect } from "react" import React from "react" import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox, VSCodeTextArea } from "@vscode/webview-ui-toolkit/react" @@ -24,6 +24,7 @@ import { SetCachedStateField } from "./types" import { SectionHeader } from "./SectionHeader" import { Section } from "./Section" import { SearchableSetting } from "./SearchableSetting" +import { useSearchIndexContext } from "./useSettingsSearch" type ContextManagementSettingsProps = HTMLAttributes & { autoCondenseContext: boolean @@ -115,6 +116,27 @@ export const ContextManagementSettings = ({ const [selectedThresholdProfile, setSelectedThresholdProfile] = React.useState("default") const [selectedIdleProfile, setSelectedIdleProfile] = React.useState("default") + const idleTimeLabel = t("settings:contextManagement.idleCondensing.idleTime.label") + + // Settings search indexes each tab once during an initial cycling phase, + // before the user has a chance to enable idle condensing. The idle time + // control only renders when idle condensing is enabled, so registering it + // only through the rendered SearchableSetting would leave "Idle time" + // unsearchable whenever the feature starts out disabled. Register the + // label unconditionally here (like SearchableSetting, we never unregister) + // so the result is always in the index; the rendered control below still + // carries the matching data-setting-id for navigation when it is visible. + const searchContext = useSearchIndexContext() + useEffect(() => { + if (searchContext) { + searchContext.registerSetting({ + settingId: "context-idle-time", + section: "contextManagement", + label: idleTimeLabel, + }) + } + }, [searchContext, idleTimeLabel]) + // Helper function to get the CONDENSE prompt value const getCondensePromptValue = (): string => { return supportPrompt.get(customSupportPrompts, "CONDENSE") @@ -138,16 +160,29 @@ export const ContextManagementSettings = ({ setCustomSupportPrompts(updatedPrompts) } + // Mirrors computeEffectiveCondenseThreshold in src/core/context-management + // (and the MIN/MAX_CONDENSE_THRESHOLD constants in src/core/condense, which + // the webview cannot import): -1/undefined inherit the global value, a value + // inside [5, 100] overrides it, and anything else (e.g. an invalid imported + // override) falls back to the global value, exactly as the runtime does. + const MIN_CONDENSE_THRESHOLD = 5 + const MAX_CONDENSE_THRESHOLD = 100 + const resolveCondensePercent = (globalPercent: number, profileValue: number | undefined): number => { + if (profileValue === undefined || profileValue === -1) { + return globalPercent + } + if (profileValue >= MIN_CONDENSE_THRESHOLD && profileValue <= MAX_CONDENSE_THRESHOLD) { + return profileValue + } + return globalPercent + } + // Helper function to get the current threshold value based on selected profile const getCurrentThresholdValue = () => { if (selectedThresholdProfile === "default") { return autoCondenseContextPercent } - const profileThreshold = profileThresholds[selectedThresholdProfile] - if (profileThreshold === undefined || profileThreshold === -1) { - return autoCondenseContextPercent // Use default if profile not configured or set to -1 - } - return profileThreshold + return resolveCondensePercent(autoCondenseContextPercent, profileThresholds[selectedThresholdProfile]) } // Lowering the condensing trigger threshold lowers the current idle thresholds @@ -203,31 +238,28 @@ export const ContextManagementSettings = ({ // Effective main condense threshold for the profile currently selected in // the idle-threshold UI: the idle threshold value may never exceed it, - // though the slider's max stays at 100%. + // though the slider's max stays at 100%. Invalid profile overrides resolve + // to the global threshold, matching the runtime fallback. const getMainThresholdForIdleProfile = () => { if (selectedIdleProfile === "default") { return autoCondenseContextPercent } - const profileThreshold = profileThresholds[selectedIdleProfile] - if (profileThreshold === undefined || profileThreshold === -1) { - return autoCondenseContextPercent - } - return profileThreshold + return resolveCondensePercent(autoCondenseContextPercent, profileThresholds[selectedIdleProfile]) } // Helper function to get the current idle threshold value based on selected profile. // The displayed value is capped at the profile's effective main threshold to match // the runtime behavior (Task.ts resolves idlePercent = Math.min(idlePercentSetting, - // mainPercent)); the inherited setting itself is left unchanged. + // mainPercent)); the inherited setting itself is left unchanged. Invalid profile + // overrides display the global idle threshold they fall back to at runtime. const getCurrentIdleThresholdValue = () => { if (selectedIdleProfile === "default") { - return idleCondenseContextPercent - } - const profileThreshold = profileIdleThresholds[selectedIdleProfile] - if (profileThreshold === undefined || profileThreshold === -1) { return Math.min(idleCondenseContextPercent, getMainThresholdForIdleProfile()) } - return Math.min(profileThreshold, getMainThresholdForIdleProfile()) + return Math.min( + resolveCondensePercent(idleCondenseContextPercent, profileIdleThresholds[selectedIdleProfile]), + getMainThresholdForIdleProfile(), + ) } // Helper function to handle idle threshold changes (value clamped to the main threshold) @@ -243,7 +275,9 @@ export const ContextManagementSettings = ({ } } - // Helper function to get the current idle time value based on selected profile + // Helper function to get the current idle time value based on selected profile. + // Mirrors resolveIdleCondenseTimeInSeconds in Task.ts: only -1/undefined inherit + // and values >= 0 override; anything else falls back to the global value. const getCurrentIdleTimeValue = () => { if (selectedIdleProfile === "default") { return idleCondenseTimeInSeconds @@ -252,7 +286,10 @@ export const ContextManagementSettings = ({ if (profileSeconds === undefined || profileSeconds === -1) { return idleCondenseTimeInSeconds } - return profileSeconds + if (profileSeconds >= 0) { + return profileSeconds + } + return idleCondenseTimeInSeconds } // Helper function to handle idle time changes @@ -790,12 +827,13 @@ export const ContextManagementSettings = ({

    handleIdleThresholdChange(value)} data-testid="idle-condense-threshold-slider" + aria-label={t("settings:contextManagement.idleCondensing.name")} /> {getCurrentIdleThresholdValue()}%
    @@ -809,19 +847,22 @@ export const ContextManagementSettings = ({
    {/* Idle Time Input */} -
    +
    - - {t("settings:contextManagement.idleCondensing.idleTime.label")} - + {idleTimeLabel} - handleIdleTimeChange(parseInt((e.target as HTMLInputElement).value, 10)) + // Number (not parseInt) so a pasted value like "1e3" + // is read as 1000 instead of stopping at "1". + handleIdleTimeChange(Number((e.target as HTMLInputElement).value)) } className="w-24" data-testid="idle-condense-time-input" @@ -831,7 +872,7 @@ export const ContextManagementSettings = ({
    {t("settings:contextManagement.idleCondensing.idleTime.description")}
    -
    +
    {selectedIdleProfile !== "default" && (
    diff --git a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx index aed3eb01b6..9b8b5ead6b 100644 --- a/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ContextManagementSettings.spec.tsx @@ -2,6 +2,7 @@ import { render, screen, fireEvent, waitFor, within } from "@/utils/test-utils" import { ContextManagementSettings } from "../ContextManagementSettings" +import { SearchIndexProvider } from "../useSettingsSearch" import { vscode } from "@/utils/vscode" // Mock the translation hook @@ -20,7 +21,7 @@ vi.mock("@/hooks/useAppTranslation", () => ({ // Mock the UI components vi.mock("@/components/ui", () => ({ ...vi.importActual("@/components/ui"), - Slider: ({ value, onValueChange, "data-testid": dataTestId, disabled, min, max }: any) => ( + Slider: ({ value, onValueChange, "data-testid": dataTestId, disabled, min, max, "aria-label": ariaLabel }: any) => ( ({ data-testid={dataTestId} disabled={disabled} role="slider" + aria-label={ariaLabel} /> ), Input: ({ value, onChange, "data-testid": dataTestId, ...props }: any) => ( @@ -76,6 +78,10 @@ vi.mock("@/utils/vscode", () => ({ }, })) +// Records every event the mocked toolkit forwards to a checkbox onChange, keyed by +// data-testid, so tests can assert the component's handler actually received the event. +const forwardedCheckboxChanges = vi.hoisted(() => vi.fn()) + // Mock VSCode components to behave like standard HTML elements vi.mock("@vscode/webview-ui-toolkit/react", () => ({ VSCodeCheckbox: ({ checked, onChange, children, "data-testid": dataTestId, ...props }: any) => ( @@ -85,7 +91,11 @@ vi.mock("@vscode/webview-ui-toolkit/react", () => ({ role="checkbox" checked={checked || false} aria-checked={checked || false} - onChange={(e: any) => onChange?.({ target: { checked: e.target.checked } })} + onChange={(e: any) => { + const event = { target: { checked: e.target.checked } } + forwardedCheckboxChanges(dataTestId, event) + onChange?.(event) + }} /> {children} @@ -588,6 +598,37 @@ describe("ContextManagementSettings", () => { expect(screen.queryByTestId("idle-condense-time-input")).not.toBeInTheDocument() }) + it("registers the idle time label for settings search even when idle condensing is disabled", () => { + // Settings search indexes each tab once during the initial cycling + // phase, when idle condensing is still off. The idle time label must + // already be searchable at that point even though its control is + // hidden until the feature is enabled. + const registerSetting = vi.fn() + render( + + + , + ) + + expect(registerSetting).toHaveBeenCalledWith({ + settingId: "context-idle-time", + section: "contextManagement", + label: "settings:contextManagement.idleCondensing.idleTime.label", + }) + // The control itself stays hidden while the feature is off. + expect(screen.queryByTestId("idle-condense-time-input")).not.toBeInTheDocument() + }) + + it("marks the rendered idle time control with the registered search id", () => { + // Search navigation finds the control via [data-setting-id], so the + // rendered control must carry the same id the label was registered with. + render() + + const setting = document.querySelector('[data-setting-id="context-idle-time"]') + expect(setting).not.toBeNull() + expect(within(setting as HTMLElement).getByTestId("idle-condense-time-input")).toBeInTheDocument() + }) + it("toggles idle condensing setting", () => { const setCachedStateField = vi.fn() render() @@ -624,6 +665,65 @@ describe("ContextManagementSettings", () => { expect(slider).toHaveAttribute("max", "100") }) + it("shows the effective clamped idle threshold on initial render", () => { + // A 50% idle threshold under a 40% main threshold runs at 40%, so the + // initial display must agree with the runtime instead of showing 50%. + // Read-only: no interaction, and nothing may be written to cached state. + const setCachedStateField = vi.fn() + render( + , + ) + + const slider = screen.getByTestId("idle-condense-threshold-slider") + expect(slider).toHaveValue("40") + // The percentage shown beside the idle slider (scoped so the main + // threshold slider's own 40% label cannot satisfy the assertion). + expect(within(slider.parentElement as HTMLElement).getByText("40%")).toBeInTheDocument() + expect(setCachedStateField).not.toHaveBeenCalled() + }) + + it("allows idle thresholds down to the shared minimum threshold", () => { + render() + + // The runtime accepts idle overrides as low as MIN_CONDENSE_THRESHOLD (5), + // so the slider must not floor the user at 10. + const slider = screen.getByTestId("idle-condense-threshold-slider") + expect(slider).toHaveAttribute("min", "5") + }) + + it("gives the idle slider an accessible name", () => { + render() + + // The mocked t() returns the key itself, so this asserts the translated + // idle-condensing label is wired to the slider as its aria-label. + const slider = screen.getByTestId("idle-condense-threshold-slider") + expect(slider).toHaveAttribute("aria-label", "settings:contextManagement.idleCondensing.name") + }) + + it("parses an exponent idle time pasted into the idle time input as a full number", () => { + const setCachedStateField = vi.fn() + render() + + // parseInt stops at "e", turning a pasted "1e3" into 1 second; Number + // reads it as 1000. + fireEvent.change(screen.getByTestId("idle-condense-time-input"), { target: { value: "1e3" } }) + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 1000) + + setCachedStateField.mockClear() + fireEvent.change(screen.getByTestId("idle-condense-time-input"), { target: { value: "90.4" } }) + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 90) + + // Empty input still falls back to zero rather than NaN. + setCachedStateField.mockClear() + fireEvent.change(screen.getByTestId("idle-condense-time-input"), { target: { value: "" } }) + expect(setCachedStateField).toHaveBeenCalledWith("idleCondenseTimeInSeconds", 0) + }) + it("clamps the idle threshold value to the main condense threshold", () => { const setCachedStateField = vi.fn() render( @@ -812,6 +912,56 @@ describe("ContextManagementSettings", () => { expect(screen.getByText("20%")).toBeInTheDocument() }) + it("caps the displayed global idle threshold at the main condense threshold", () => { + // Runtime resolves idlePercent = Math.min(idlePercent, mainPercent), so a + // saved 50% idle threshold against a 40% main threshold must display 40% + // the moment idle condensing is shown, not only after a save. + render() + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("40") + }) + + it("displays the global main threshold for an invalid profile main override", () => { + // An imported profile main override outside [5, 100] is ignored at + // runtime, which falls back to the global threshold. Displaying the raw + // value would both misreport the threshold and cap idle edits to it. + render( + , + ) + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("50") + expect(screen.getByTestId("condense-threshold-slider")).toHaveValue("100") + }) + + it("displays the global idle threshold for an invalid profile idle override", () => { + render( + , + ) + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-threshold-slider")).toHaveValue("50") + }) + + it("displays the global idle time for an invalid profile idle time override", () => { + render() + + selectIdleProfile("config-1") + + expect(screen.getByTestId("idle-condense-time-input")).toHaveValue(180) + }) + it("clamps inheriting profile idle overrides when the default trigger threshold is reduced", () => { const setCachedStateField = vi.fn() render( @@ -865,7 +1015,12 @@ describe("ContextManagementSettings", () => { Object.defineProperty(input, "checked", { get: () => undefined, set: () => {}, configurable: true }) fireEvent.click(input) - expect(setCachedStateField).not.toHaveBeenCalledWith("idleCondenseContext", expect.anything()) + // expect.anything() would not match an `undefined` value, so also verify the + // handler did receive the malformed event before asserting nothing was written. + expect(forwardedCheckboxChanges).toHaveBeenCalledWith("idle-condense-context-checkbox", { + target: { checked: undefined }, + }) + expect(setCachedStateField).not.toHaveBeenCalled() }) }) }) From 019af5732074a25741f7ee19989f3b753ce09d7d Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Mon, 9 Nov 2026 11:27:20 -0800 Subject: [PATCH 17/20] test(webview): regenerate idle condensing visual baselines Idle panel UI changes from the CodeRabbit remediation (idle slider min 10->5, aria-label, clamped threshold display) shift rendered pixels; regenerate the five ContextManagementSettings snapshot baselines in the pinned playwright:v1.64.1-noble CI container so webview-visual matches. --- .../context-management-settings-320.png | Bin 182022 -> 182021 bytes .../context-management-settings-dark.png | Bin 180569 -> 180568 bytes ...anagement-settings-high-contrast-light.png | Bin 184117 -> 184118 bytes ...text-management-settings-high-contrast.png | Bin 184421 -> 184418 bytes .../context-management-settings-light.png | Bin 182841 -> 182842 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-320.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-320.png index c9ad758342f226cc489b2548d97fffb5a7b28aa8..ee60fa0707a3aef8b269b16dd78ad96955b9a8b2 100644 GIT binary patch delta 14233 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 AqyPW_ delta 14245 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 V=rjJq75oW;s-mXC7di9b{{sQh6%_yg diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-dark.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-dark.png index 48b067711648b1904121c998fc9779d94d3876f4..4a47361b8e4404c61afe79883bb812043670dfb0 100644 GIT binary patch delta 13077 zcmYkDbzD?m)b5oM1Vlo*OAzUl6hul1DQS?dAp{1=qcC)-bazWhw{!{8-QC@JH}CJg zpL_os=5uD|oW1v2>sjAtG2w+d?uGdk@vscZIRv_n67{&$aaoDP#l_Xh&d9KyEVI}c z%#?eILiKckFfg8!*HZZAc!v^)U>v0Yqo5=0$ zS!1Q;NcZ*8kfNB!QV4%lj%w~8)$P9DWVw}@v9a}d@i)Gf-a_5l)4e${e*UvIBK=|c z^$ExzzhilVN4+cW1GCnEl(#YOne zq|-)D#S7kM-3sf87ixK`kDtIJqf1H~-hWdkKViqI?_MkUpmDCe(9c4FRwkjm zM`PRX$LrmkBUg3l{CYX|{3I)^zRdli;NE*TQ3Jntp4?itx4+RHDaZ7zUxWokEl0D| z(ABkuXh$l@?Rb3vtmx)QzU^FtM|&{IbHya<*}7M7M^n?RC#A3{K2Z~0lrx$4@86f2 z_QqsllW;9Bg^BUC=+H*^+D57tDrZ8Ux5ww#che?46)uVt6pxccAW zY|l|q%t&BlqPAWR$8uM%^{M4*jl3()Q_Ej0P2%{}TxGvh++XsmI^eyTnOXcNbi3siOufJ<(W?m$x!H-SjbKRAm$d)$y+iRD~Ph4DF#pzUT+a*sZ1gAaDW>DgVUAWk+MFYda z8h2~9q=JbD>fO%X_&w=O6493C0%1nwdH(5WwKrQKQKHq*$Vjs=0R%WSQEH}U;YXAA z-qDdKzcR0CoY(x-9lyqSDf*kdJ5P#Y%glMXL#NkbYwXZP4~V!%hqb=$-kRZ>gQmyj zaXAiVCFMivjc~)BNvROh5ElN>COz~ErvFZ(G+LD#&N!~HDb zNl682`GiqylhY3#JbeJkN{XxEstWKN~MGGW#1-V%swr zu05(HmiMuUa�#<(N@NDD%RgckbP2f%c52<8mkN-akFTyaL=SRVMWq_QvzYAVrar z;SMS&Au6h(#V&xydi-fnu6CsjbayrPwj7m4A0(7T-vACNXPUj)`U5T6iD~f$e%K@; zToS`;9+`GpqN{lLHHMdx-LhM>xCjz2lqp`dSARCkC?B`JCA3?W?s0W`S@SNM4K`Uu zB4B4ADT%1z5OmtiU>9^;e_gh@Xw)!3q*ZRIR`2ShHY|L(p1#?f^RY@Qh3mv<>UfgOdroE-UVvu?@d>$ zJVPDR)1H35O|Txqs#R7@L9qB-3005a6G-F-2M66^`$?+d;I^k7{)sd-y{&ND&o63l zUGJx%LMHkYKr{VO*D3M^fv1{1r1!*x%(8_ozYI03W>LE zh#h?`+!Mw6PG0_P`o>%IN8d2^L9x-8>l}9g#id4v&D!$w*~yr`zC$lBmO>CAYqK#r z2F61A<;m93MwWbh!^JA}NRHz|Moy0QuUWDO{B&EBk#=HYg4j7@f4M6>LblQKMrQM1 zsRJZx`N;%XhM%BJK)Rq1qNJxX*V}FS5fC$jsD`q|H}4Vbyo$qZkU7& zhf=_fnug|Ez=y5Tf`5rZ(UFlS3w~5u{QlX-o#@|WU*R+y^$Eqs#?sG5QCOKW3+Bb^ zeCPEbRc{#4Ej5+5QjTq!b{vuiC2Q%~9EfVL<8gd2IWkDdei4NvS;UQR!!fJrJ$G9b zbmw{a){~iJF+1+^c;n550NFoK{&KrjvK3;(rsT#ahkNmif@wqu+6L04VKb@9nR2bK zPX{PA2MTs1@;F|(pu(&dntg1p{Moxws$5UEW#OIdCR=V?IZw1HK%#RBA>+@|@83VB zFpGA)f&{e%U3Ay_5(8qR-e2@5E_=MR2I!Za-;- z?VLhpniY>Eo8yBTaD40EB4>t14oC^Xx2xPQKEL2)WtA6Vc%ho}dM^Hz!zz)!`=?U) zoaYtH<4KZ@yT(}%5qlCyrM9V-Gwr6$$*R}!kZnVN>VR4Vr}R{f6HCd!)YaKuQMTLh zo7uy5GTY$-Z6cG(23+w}9QVtO?2Kf7Jy7KxS(|k{PDcDGa&{snfTaX%clh|H$yn^0ftcLP^+MciNr zNiy|sCHMF5!^xhPviTLvi#OhnN)GGlLhZc{bo_p4mA}v(Ac-f5p{F6y=@%%o z@E#msj2LiP=U!M?&>6}PKwx5hw;ajSbfZ&vqfALg*25cxs`a{I-3hE%vKZ8G*1G{+ ztPtHuX+2jjXvihwSN5suhu&FqWW+`bhRenF!y`+`ezW158G2qHNJso=HDID~9~Vf% zTMF()2pP2przX?6Ob%8`#I9pJjbhjBfx-X&<+5-3If%BsmJBJ#f9if#Rx_};+8ckw zCWR|P@S)F@wk>(w5NyMzsu54UW{&SE0X(nhDRE19DYNUhD{5e$pf5r{CAq3rRoZR0 zvd0S~^TW&}7cC4L$WhI<=o;v~xiSuvn03PCwMX1!eM>``Eb|okS6f>pmtzKI)TM3o z*WN!T`Sf~F#Q#-zq0S|#0~g-w5d-q^&!4O?Dr(d{Wtk@^zP}K!B0=OTNZS4R`Y
  • %sW2Hq)hRfgvdAi-vI$EtR>MsZXIxa^dVt&7Qs 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 Pod>dS6(kEK47~miQ*@Ia delta 13000 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 W@n0-bBul|xo=Cly7cUVt4ER5T-D{-) diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast-light.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast-light.png index c4024640e3b83adf484e0d71224f3ddf5a74c198..6d91cfc9511ee1faeee67af0c523255fed64492a 100644 GIT binary patch delta 38093 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 delta 38126 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 diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-high-contrast.png index a613dd1e8ad36928cec926bd9001b9eddb7bdce3..da1bf8c6caca7dcc0fd03fb89eba865cb7631ecd 100644 GIT binary patch delta 13635 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 r3$nVN|N diff --git a/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-light.png b/webview-ui/src/components/settings/__tests__/__screenshots__/context-management-settings-light.png index b251878becf3b4c4c683f9b33cbd8e29750530db..d9b5193fc4f4c305fd4e953c85e24a389f75a5e4 100644 GIT binary patch delta 13518 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 delta 13571 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 a1h^}%cKX0)OrzimoSc-BWTm)a!2bbS_D~oA From bd5c1bdd0b66a354c6c0abe8b59e678836d52ddf Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Mon, 9 Nov 2026 12:15:00 -0800 Subject: [PATCH 18/20] fix(task): resolve condense profile thresholds from the task's own provider profile CodeRabbit follow-up on PR #2340: the normal context-management path (willManageContext/manageContext in attemptApiRequest, and the emergency handleContextWindowExceededError path) resolved profile threshold overrides via the provider-global getCurrentProfileId(state), while idle condensing already used the task-local getTaskProfileId. A delegated child or reopened task pinned to a different provider profile could therefore skip idle condensing at its own threshold yet condense (or fail to) at the provider's current profile threshold on the next request. - Switch both normal-path call sites to `await this.getTaskProfileId(state)` - Widen getTaskProfileId's state param to accept the possibly-undefined snapshot from providerRef.deref()?.getState() - Delete the now-unused provider-global getCurrentProfileId helper (drops two no-explicit-any suppressions: core/task/Task.ts 17 -> 15) - Add regression tests in Task.spec.ts proving the normal request path condenses under the task's own profile threshold when it keeps another profile, and still falls back to the provider's current profile threshold when the task has none --- src/core/task/Task.ts | 34 +++++------ src/core/task/__tests__/Task.spec.ts | 84 ++++++++++++++++++++++++++++ src/eslint-suppressions.json | 2 +- 3 files changed, 102 insertions(+), 18 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index f8c08210b6..c206da9bce 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -2745,13 +2745,16 @@ export class Task extends EventEmitter implements TaskLike { * reopened tasks keep a task-local profile that may differ from the * provider's current profile, so profile-scoped overrides must be selected * for the task, not the global selection. Falls back to the provider's - * current profile, then to "default" (same semantics as - * `getCurrentProfileId`). + * current profile, then to "default". */ - private async getTaskProfileId(state: { - currentApiConfigName?: string - listApiConfigMeta?: Array<{ id: string; name: string }> - }): Promise { + private async getTaskProfileId( + state: + | { + currentApiConfigName?: string + listApiConfigMeta?: Array<{ id: string; name: string }> + } + | undefined, + ): Promise { const apiConfigName = (await this.getTaskApiConfigName()) ?? state?.currentApiConfigName return state?.listApiConfigMeta?.find((profile) => profile.name === apiConfigName)?.id ?? "default" } @@ -6032,13 +6035,6 @@ export class Task extends EventEmitter implements TaskLike { })() } - private getCurrentProfileId(state: any): string { - return ( - state?.listApiConfigMeta?.find((profile: any) => profile.name === state?.currentApiConfigName)?.id ?? - "default" - ) - } - /** * Ensures router-provider model metadata is loaded before getModel() is used for * context management or streaming. Failures fall back to hardcoded defaults rather @@ -6180,8 +6176,10 @@ export class Task extends EventEmitter implements TaskLike { const contextWindow = this.api.getCondenseContextWindow?.() ?? modelInfo.contextWindow const useAvailableInputForContextPercent = typeof this.api.getCondenseContextWindow === "function" - // Get the current profile ID using the helper method - const currentProfileId = this.getCurrentProfileId(state) + // Profile overrides follow the task's own provider profile, matching the + // idle-condense gate: a delegated child or reopened task may condense + // under a different profile than the provider's current selection. + const currentProfileId = await this.getTaskProfileId(state) // Log the context window error for debugging console.warn( @@ -6405,8 +6403,10 @@ export class Task extends EventEmitter implements TaskLike { const contextWindow = this.api.getCondenseContextWindow?.() ?? modelInfo.contextWindow const useAvailableInputForContextPercent = typeof this.api.getCondenseContextWindow === "function" - // Get the current profile ID using the helper method - const currentProfileId = this.getCurrentProfileId(state) + // Profile overrides follow the task's own provider profile, matching + // the idle-condense gate: a delegated child or reopened task may use + // a different profile than the provider's current selection. + const currentProfileId = await this.getTaskProfileId(state) // Check if context management will likely run (threshold check) // This allows us to show an in-progress indicator to the user // We use the centralized willManageContext helper to avoid duplicating threshold logic diff --git a/src/core/task/__tests__/Task.spec.ts b/src/core/task/__tests__/Task.spec.ts index 183d0a18e7..6dabcca8f0 100644 --- a/src/core/task/__tests__/Task.spec.ts +++ b/src/core/task/__tests__/Task.spec.ts @@ -2689,6 +2689,90 @@ describe("Cline", () => { expect(metadata?.mode).toBe("ask") }) + // Regression: a delegated task that keeps a provider profile different from + // the provider's current selection must resolve profile-scoped condense + // thresholds for the task, not for the global selection. A 55k/128k context + // sits above the child profile's 40% threshold and below the global + // profile's 90% threshold, so whether the normal request path condenses + // reveals which profile's threshold the threshold check used. + async function createProfileSplitCondenseTask() { + vi.spyOn(mockProvider, "getState").mockResolvedValue( + providerStateWith({ + mode: "code", + autoApprovalEnabled: true, + requestDelaySeconds: 0, + autoCondenseContext: true, + autoCondenseContextPercent: 100, + profileThresholds: { "profile-global": 90, "profile-child": 40 }, + currentApiConfigName: "global-profile", + listApiConfigMeta: [ + { id: "profile-global", name: "global-profile" }, + { id: "profile-child", name: "child-profile" }, + ], + }), + ) + const task = new Task({ + provider: mockProvider, + apiConfiguration: mockApiConfig, + task: "test task", + startTask: false, + }) + await task.getTaskMode() + vi.spyOn(getTaskTestAccess(task), "getSystemPrompt").mockResolvedValue("mock system prompt") + vi.spyOn(task, "getTokenUsage").mockReturnValue({ + totalCost: 0, + totalTokensIn: 0, + totalTokensOut: 0, + contextTokens: 55_000, + }) + vi.spyOn(task.api, "getModel").mockReturnValue({ + id: mockApiConfig.apiModelId!, + info: { + supportsImages: false, + supportsPromptCache: true, + contextWindow: 128_000, + maxTokens: 4096, + inputPrice: 0.3, + outputPrice: 1.5, + } as ModelInfo, + }) + task.apiConversationHistory = [ + { role: "user", content: [{ type: "text", text: "test message" }], ts: Date.now() }, + ] + vi.spyOn(task, "overwriteApiConversationHistory").mockResolvedValue(undefined) + const stream = (async function* () { + yield { type: "text", text: "response" } as ApiStreamChunk + })() + vi.spyOn(task.api, "createMessage").mockReturnValue(stream) + // The summarizeConversation module mock is never cleared, so pin the + // call count this request starts from. + const summarizeCallsBefore = vi.mocked(summarizeConversation).mock.calls.length + return { task, summarizeCallsBefore } + } + + it("condenses the normal request path with the task's own profile threshold when it keeps another profile", async () => { + const { task, summarizeCallsBefore } = await createProfileSplitCondenseTask() + // A delegated child kept a different provider profile than the + // provider's current selection: its 40% threshold must win. + task["taskApiConfigReady"] = Promise.resolve() + task["_taskApiConfigName"] = "child-profile" + + await task.attemptApiRequest(0).next() + + expect(summarizeConversation).toHaveBeenCalledTimes(summarizeCallsBefore + 1) + }) + + it("keeps the provider's current profile threshold for the normal request path when the task has no own profile", async () => { + const { task, summarizeCallsBefore } = await createProfileSplitCondenseTask() + + // Accept path for the fallback: the task initializes to the provider's + // current profile ("profile-global", 90%), so the ~43% context stays + // below the threshold and no condense runs. + await task.attemptApiRequest(0).next() + + expect(summarizeConversation).toHaveBeenCalledTimes(summarizeCallsBefore) + }) + it("condenses with an undefined state snapshot when the provider is gone", async () => { const task = new Task({ provider: mockProvider, diff --git a/src/eslint-suppressions.json b/src/eslint-suppressions.json index ae3d504003..7fe9d439eb 100644 --- a/src/eslint-suppressions.json +++ b/src/eslint-suppressions.json @@ -686,7 +686,7 @@ }, "core/task/Task.ts": { "@typescript-eslint/no-explicit-any": { - "count": 17 + "count": 15 } }, "core/task/__tests__/Task.dispose.test.ts": { From 537eed31dd019bd55072d945825cfcb739465adb Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Mon, 9 Nov 2026 13:45:03 -0800 Subject: [PATCH 19/20] fix(context): address idle-condense review findings (reset signals, validation, gate retry) CodeRabbit follow-ups on PR #2340: - ChatView: post idleCondenseReset when a followup suggestion is shift-clicked into the input and when handleSetChatBoxMessage replaces the draft; both mutate inputValue without a textarea onChange, so the idle countdown kept running against a prompt the user is editing. - webviewMessageHandler: only finite numbers count when resolving the main auto-condense percent that idle thresholds clamp against (a hand-crafted non-numeric message value poisoned every clamp with NaN), and reject a non-finite autoCondenseContextPercent before persisting it so garbage never reaches storage. - Task: retry the idle-condense gate after a settings-save re-evaluation throws (e.g. transient provider getState failure) on a bounded backoff (1s/5s/15s), respecting later cancellation, settings changes, abort, and active API work. A failed re-eval leaves no countdown armed; the retry uses a separate timer ref cleared by cancelIdleCondenseTimer. maybeStartIdleCondenseTimer now returns "armed" | "declined" | "failed". Tests: - Task.idle-condense.spec: transient/persisting state-read failure, cancel-during-retry, later-save-supersedes-retry; outcome-typed stubs. - ClineProvider.spec: non-numeric autoCondenseContextPercent message is ignored when clamping idle thresholds (and not persisted). - ChatTextArea.spec: idleCondenseReset on enhanced-prompt replacement and on command/mode/mention context-menu selections. - ChatView.spec: shift-click suggestion posts idleCondenseReset. --- src/core/task/Task.ts | 81 ++++++++++++++-- .../task/__tests__/Task.idle-condense.spec.ts | 96 ++++++++++++++++++- .../webview/__tests__/ClineProvider.spec.ts | 23 +++++ src/core/webview/webviewMessageHandler.ts | 43 +++++++-- webview-ui/src/components/chat/ChatView.tsx | 6 ++ .../chat/__tests__/ChatTextArea.spec.tsx | 88 +++++++++++++++++ .../chat/__tests__/ChatView.spec.tsx | 2 + 7 files changed, 321 insertions(+), 18 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index c206da9bce..0af60bd983 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -312,6 +312,20 @@ type IdleCondenseGate = { idleSeconds: number } +/** + * Result of an idle-condense arming pass. Only a throw (e.g. a transient + * provider `getState` rejection) is a `failed` outcome worth retrying; + * `declined` means a gate intentionally kept this task from condensing. + */ +type IdleCondenseArmingOutcome = "armed" | "declined" | "failed" + +/** + * Backoff schedule (ms) for retrying the idle-condense gate after the + * settings-save re-evaluation throws, e.g. because provider state was + * transiently unreadable. Bounded so a persistent failure cannot spin. + */ +const IDLE_CONDENSE_SETTINGS_RETRY_DELAYS_MS = [1_000, 5_000, 15_000] as const + export class Task extends EventEmitter implements TaskLike { readonly taskId: string readonly rootTaskId?: string @@ -497,6 +511,13 @@ export class Task extends EventEmitter implements TaskLike { private autoApprovalTimeoutRef?: NodeJS.Timeout /** Timer for opportunistic idle condensing; armed only while the task waits on the user. */ private idleCondenseTimeoutRef?: NodeJS.Timeout + /** + * Pending retry of a failed settings-save gate re-evaluation. Kept separate + * from `idleCondenseTimeoutRef` so a failed re-evaluation never leaves a + * countdown armed; cleared whenever the countdown is cancelled (a later + * settings save, a reset, or disposal supersedes the retry). + */ + private idleCondenseSettingsRetryRef?: NodeJS.Timeout /** True while an idle-triggered condense is running, to prevent overlapping runs/re-arms. */ private idleCondenseInFlight = false /** @@ -2664,6 +2685,13 @@ export class Task extends EventEmitter implements TaskLike { clearTimeout(this.idleCondenseTimeoutRef) this.idleCondenseTimeoutRef = undefined } + // A pending settings-retry evaluates the gate against the settings that + // are current when it fires; any cancel means those settings (or the + // task itself) changed, so the retry must not proceed on its own. + if (this.idleCondenseSettingsRetryRef) { + clearTimeout(this.idleCondenseSettingsRetryRef) + this.idleCondenseSettingsRetryRef = undefined + } } /** @@ -2714,7 +2742,39 @@ export class Task extends EventEmitter implements TaskLike { // captures the bumped sequence and proceeds normally. this.idleCondenseActivitySeq++ this.cancelIdleCondenseTimer() - void this.maybeStartIdleCondenseTimer() + void this.reevaluateIdleCondenseGate(0) + } + + /** + * Run the arming gate for a settings-save re-evaluation, retrying briefly + * when the gate itself throws. A transient provider-state read failure + * would otherwise leave a task that is idle above the newly saved + * threshold with no countdown — the cancel above already consumed the old + * one — and nothing else arms one until the next user activity. Retries + * are bounded, stop if any newer activity or save invalidates this pass + * (activity sequence), and respect abort/abandon/active-work at fire time. + */ + private async reevaluateIdleCondenseGate(attempt: number): Promise { + const activitySeq = this.idleCondenseActivitySeq + const outcome = await this.maybeStartIdleCondenseTimer() + if (outcome !== "failed" || attempt >= IDLE_CONDENSE_SETTINGS_RETRY_DELAYS_MS.length) { + return + } + // A newer save or user activity bumped the sequence: that pass owns + // the re-evaluation (and cleared this retry slot if it cancelled). + if (activitySeq !== this.idleCondenseActivitySeq || this.abort || this.abandoned) { + return + } + const delayMs = IDLE_CONDENSE_SETTINGS_RETRY_DELAYS_MS[attempt] + this.idleCondenseSettingsRetryRef = setTimeout(() => { + this.idleCondenseSettingsRetryRef = undefined + // New API work makes the task ineligible anyway; the teardown of + // that work re-arms through the shared path. + if (this.abort || this.abandoned || this.activeApiWork > 0) { + return + } + void this.reevaluateIdleCondenseGate(attempt + 1) + }, delayMs) } /** @@ -2837,26 +2897,29 @@ export class Task extends EventEmitter implements TaskLike { /** * Arm the idle-condense timer if the gate allows. No-op when a timer is - * already armed or an idle condense is in flight. + * already armed or an idle condense is in flight. Returns a discriminable + * outcome so callers that need to distinguish a declined gate from a + * thrown failure (the settings-save retry) can; every other caller + * discards it. */ - private async maybeStartIdleCondenseTimer(): Promise { + private async maybeStartIdleCondenseTimer(): Promise { try { if (this.abort || this.abandoned) { - return + return "declined" } if (this.idleCondenseTimeoutRef || this.idleCondenseInFlight) { - return + return "declined" } // Idle condensing only makes sense while the task genuinely waits // on the user: never arm when nothing is pending, or while an // approval ask that must not be condensed around is pending. if (!this.hasPendingIdleEligibleAsk()) { - return + return "declined" } const activitySeq = this.idleCondenseActivitySeq const gate = await this.evaluateIdleCondense() if (!gate || gate.contextPercent < gate.idlePercent) { - return + return "declined" } // Re-check after the async gate evaluation: a prompt may have landed. // The activity sequence catches the answer case specifically: the @@ -2868,11 +2931,13 @@ export class Task extends EventEmitter implements TaskLike { this.idleCondenseTimeoutRef || this.idleCondenseActivitySeq !== activitySeq ) { - return + return "declined" } this.armIdleCondenseTimeout(gate.idleSeconds) + return "armed" } catch (error) { console.error("[Task#maybeStartIdleCondenseTimer] error:", error) + return "failed" } } diff --git a/src/core/task/__tests__/Task.idle-condense.spec.ts b/src/core/task/__tests__/Task.idle-condense.spec.ts index c4852802ad..3b475df611 100644 --- a/src/core/task/__tests__/Task.idle-condense.spec.ts +++ b/src/core/task/__tests__/Task.idle-condense.spec.ts @@ -522,7 +522,9 @@ describe("Task idle condensing — reset and cancel", () => { test("reset is a no-op while no timer is armed", () => { const { task } = buildTask() - const maybeStart = vi.fn(async () => {}) + // "declined" keeps the stub compatible with the arming-outcome + // signature without arming anything. + const maybeStart = vi.fn(async (): Promise<"declined"> => "declined") task["maybeStartIdleCondenseTimer"] = maybeStart task.resetIdleCondenseTimer() @@ -533,7 +535,7 @@ describe("Task idle condensing — reset and cancel", () => { test("reset re-arms the countdown only while a timer is armed", async () => { const { task } = buildTask() task["idleCondenseTimeoutRef"] = setTimeout(() => {}, 30_000) - const maybeStart = vi.fn(async () => {}) + const maybeStart = vi.fn(async (): Promise<"declined"> => "declined") task["maybeStartIdleCondenseTimer"] = maybeStart task.resetIdleCondenseTimer() @@ -1596,4 +1598,94 @@ describe("Task idle condensing — re-evaluation after settings save", () => { expect(task["idleCondenseTimeoutRef"]).toBeUndefined() expect(vi.getTimerCount()).toBe(0) }) + + test("a transient state-read failure arms no countdown, then retries and condenses", async () => { + // The settings-save re-evaluation races a provider whose state is + // transiently unreadable. The failed pass must leave no countdown + // armed (the save's cancel already consumed the old one), but it must + // not strand an eligible task forever either: the gate is retried + // briefly, and once the read recovers the full saved delay still + // applies before condensing. + const { task, getState, condense } = buildTask() + getState.mockRejectedValueOnce(new Error("storage unavailable")) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + + // No countdown armed; only the bounded retry is pending. + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(task["idleCondenseSettingsRetryRef"]).toBeDefined() + + // The first retry fires once the state read works again and arms the + // countdown from scratch. + await vi.advanceTimersByTimeAsync(1_000) + expect(task["idleCondenseSettingsRetryRef"]).toBeUndefined() + expect(task["idleCondenseTimeoutRef"]).toBeDefined() + + // Condensing still waits out the full saved idle delay. + await vi.advanceTimersByTimeAsync(29_999) + expect(condense).not.toHaveBeenCalled() + await vi.advanceTimersByTimeAsync(1) + expect(condense).toHaveBeenCalledTimes(1) + }) + + test("a persisting state-read failure retries a bounded number of times", async () => { + const { task, getState, condense } = buildTask() + getState.mockRejectedValue(new Error("storage unavailable")) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseSettingsRetryRef"]).toBeDefined() + + // 1s + 5s + 15s of backoff; the fourth attempt is out of retries and + // the chain stops instead of spinning forever. + await vi.advanceTimersByTimeAsync(1_000 + 5_000 + 15_000) + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(task["idleCondenseSettingsRetryRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + + await vi.advanceTimersByTimeAsync(600_000) + expect(condense).not.toHaveBeenCalled() + }) + + test("a cancel while a retry is pending stops the retry", async () => { + const { task, getState, condense } = buildTask() + getState.mockRejectedValueOnce(new Error("storage unavailable")) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseSettingsRetryRef"]).toBeDefined() + + // The task is cancelled before the retry fires: the retry must not + // resurrect a countdown for a dead task. + task.cancelIdleCondenseTimer() + await vi.advanceTimersByTimeAsync(60_000) + + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + expect(condense).not.toHaveBeenCalled() + }) + + test("a later settings save supersedes a pending retry", async () => { + const state = baseState() + const { task, getState, condense } = buildTask({ state }) + getState.mockRejectedValueOnce(new Error("storage unavailable")) + + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseSettingsRetryRef"]).toBeDefined() + + // A second save lands while the first pass' retry is pending, this + // one disabling the feature. It clears the stale retry and runs its + // own (now declined) evaluation; the superseded pass must never arm. + state.idleCondenseContext = false + task.reevaluateIdleCondenseAfterSettingsSave() + await vi.advanceTimersByTimeAsync(0) + expect(task["idleCondenseSettingsRetryRef"]).toBeUndefined() + expect(vi.getTimerCount()).toBe(0) + + await vi.advanceTimersByTimeAsync(600_000) + expect(task["idleCondenseTimeoutRef"]).toBeUndefined() + expect(condense).not.toHaveBeenCalled() + }) }) diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index f763d98fdd..d2bf74d7e3 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4687,6 +4687,29 @@ describe("ClineProvider", () => { expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { raised: 80 }) }) + test("ignores a non-numeric autoCondenseContextPercent message when clamping idle thresholds", async () => { + await provider.resolveWebviewView(mockWebviewView) + + // The stored main percent is the clamp bound... + await provider.contextProxy.setValue("autoCondenseContextPercent", 70) + + // ...but a hand-crafted message rides a garbage main percent alongside + // otherwise valid idle settings. Feeding it to the clamp unchanged + // poisons every bound (NaN comparisons silently pass), so only a + // finite number from the message may count; here the stored 70 wins. + await getMessageHandler()({ + type: "updateSettings", + updatedSettings: { + autoCondenseContextPercent: "oops" as unknown as number, + idleCondenseContextPercent: 90, + profileIdleThresholds: { lowered: 80 }, + }, + }) + + expect(updateGlobalStateSpy).toHaveBeenCalledWith("idleCondenseContextPercent", 70) + expect(updateGlobalStateSpy).toHaveBeenCalledWith("profileIdleThresholds", { lowered: 70 }) + }) + test("rejects invalid idle-condense payloads instead of persisting them", async () => { await provider.resolveWebviewView(mockWebviewView) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 8547b556f4..76d98e79fa 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -107,6 +107,24 @@ import { computeEffectiveCondenseThreshold } from "../context-management" const ALLOWED_VSCODE_SETTINGS = new Set(["terminal.integrated.inheritEnv"]) +/** + * Resolve the main auto-condense threshold that idle thresholds clamp + * against. A hand-crafted message can carry a non-numeric + * autoCondenseContextPercent alongside an otherwise valid idle setting; using + * it unchanged would poison every clamp computed against it (NaN bounds make + * comparisons silently pass). Only finite numbers count — the message value + * first, then the stored value (which the generic persist loop may have just + * written from this same garbage message), and finally the default. + */ +function resolveMainCondensePercent( + updatedSettings: { autoCondenseContextPercent?: unknown } | undefined, + storedPercent: number | undefined, +): number { + const finiteNumber = (candidate: unknown): number | undefined => + typeof candidate === "number" && Number.isFinite(candidate) ? candidate : undefined + return finiteNumber(updatedSettings?.autoCondenseContextPercent) ?? finiteNumber(storedPercent) ?? 100 +} + /** * Clamp an idle-condense trigger threshold: within the shared condense * threshold bounds and never above the main auto-condense threshold (the idle @@ -916,6 +934,15 @@ export const webviewMessageHandler = async ( if (!value) { continue } + } else if (key === "autoCondenseContextPercent") { + // Idle thresholds clamp against this value (from the message or + // from storage), and the runtime does the same. Persisting a + // non-numeric one would poison every clamp computed against the + // stored value, so reject it instead of storing it unchanged. + if (value !== undefined && (typeof value !== "number" || !Number.isFinite(value))) { + provider.log(`[updateSettings] Rejected an invalid value for ${key}`) + continue + } } else if (key === "idleCondenseContextPercent") { // A hand-crafted message can carry payloads the webview controls // never produce; storing them unchanged surfaces as NaN at the @@ -925,20 +952,20 @@ export const webviewMessageHandler = async ( provider.log(`[updateSettings] Rejected an invalid value for ${key}`) continue } - const mainPercent = - (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - getGlobalState("autoCondenseContextPercent") ?? - 100 + const mainPercent = resolveMainCondensePercent( + message.updatedSettings, + getGlobalState("autoCondenseContextPercent"), + ) newValue = clampIdleCondensePercent(value, mainPercent) } else if (key === "profileIdleThresholds") { if (!value || typeof value !== "object") { provider.log(`[updateSettings] Rejected an invalid value for ${key}`) continue } - const globalMainPercent = - (message.updatedSettings.autoCondenseContextPercent as number | undefined) ?? - getGlobalState("autoCondenseContextPercent") ?? - 100 + const globalMainPercent = resolveMainCondensePercent( + message.updatedSettings, + getGlobalState("autoCondenseContextPercent"), + ) // Each profile's idle override may only be clamped against that // profile's own effective main threshold, since that is what the // runtime resolves per profile; clamping against the global diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 3fbab17aa5..5d77510b88 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -741,6 +741,9 @@ const ChatViewComponent: React.ForwardRefRenderFunction { return currentValue !== "" ? `${currentValue} \n${answer}` : answer }) + // "Copy to input" rewrites the prompt without a textarea onChange, + // so the armed idle-condense countdown must be restarted here. + vscode.postMessage({ type: "idleCondenseReset" }) } else { // Don't clear the input value when sending a follow-up choice // The message should be sent but the text area should preserve what the user typed diff --git a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx index 6d5206338c..44f691de76 100644 --- a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx @@ -5,6 +5,7 @@ import { render, fireEvent, screen, act } from "@src/utils/test-utils" import { useExtensionState } from "@src/context/ExtensionStateContext" import { vscode } from "@src/utils/vscode" import * as pathMentions from "@src/utils/path-mentions" +import { ContextMenuOptionType } from "@src/utils/context-mentions" import { ChatTextArea } from "../ChatTextArea" @@ -16,6 +17,20 @@ vi.mock("@src/utils/vscode", () => ({ vi.mock("@src/components/common/CodeBlock") vi.mock("@src/components/common/MarkdownBlock") + +// Capture the ContextMenu's onSelect so tests can invoke menu selections +// directly. The real ContextMenu only renders option rows; stubbing it keeps +// the ChatTextArea signal tests focused on what a selection does. +const contextMenuHarness = vi.hoisted(() => ({ + onSelect: undefined as ((type: string, value?: string) => void) | undefined, +})) + +vi.mock("../ContextMenu", () => ({ + default: (props: { onSelect: (type: string, value?: string) => void }) => { + contextMenuHarness.onSelect = props.onSelect + return null + }, +})) vi.mock("@src/utils/path-mentions", () => ({ convertToMentionPath: vi.fn((path, cwd) => { // Simple mock implementation that mimics the real function's behavior @@ -1699,5 +1714,78 @@ describe("ChatTextArea", () => { expect(defaultProps.setInputValue).toHaveBeenCalledWith("First prompt") expect(idleSignals()).toHaveLength(1) }) + + it("posts idleCondenseReset when an enhanced prompt replaces the input", () => { + // The enhancedPrompt response rewrites the input programmatically; + // in jsdom there is no execCommand, so the setInputValue fallback + // runs and never fires the textarea onChange. The handler must + // signal unconditionally. + const { container } = render() + const textarea = getTextarea(container) + // The typing signal proves the baseline before the enhancement lands. + fireEvent.change(textarea, { target: { value: "write unit tests", selectionStart: 16 } }) + expect(idleSignals()).toHaveLength(1) + + act(() => { + window.dispatchEvent( + new MessageEvent("message", { data: { type: "enhancedPrompt", text: "improved prompt" } }), + ) + }) + + expect(defaultProps.setInputValue).toHaveBeenCalledWith("improved prompt") + expect(idleSignals()).toHaveLength(2) + }) + + it("posts idleCondenseReset when a command is selected from the context menu", () => { + const { container } = render() + const textarea = getTextarea(container) + + // Typing "/" opens the slash-command context menu and signals once. + fireEvent.change(textarea, { target: { value: "/", selectionStart: 1 } }) + expect(contextMenuHarness.onSelect).toBeDefined() + + // Selecting a command rewrites the input programmatically (no + // onChange), so the selection itself must restart the countdown. + act(() => { + contextMenuHarness.onSelect!(ContextMenuOptionType.Command, "test-command") + }) + + expect(defaultProps.setInputValue).toHaveBeenCalledWith("/test-command ") + expect(idleSignals()).toHaveLength(2) + }) + + it("posts idleCondenseReset when a mode is selected from the context menu", () => { + const { container } = render() + const textarea = getTextarea(container) + + fireEvent.change(textarea, { target: { value: "/", selectionStart: 1 } }) + expect(idleSignals()).toHaveLength(1) + + act(() => { + contextMenuHarness.onSelect!(ContextMenuOptionType.Mode, "architect") + }) + + // A mode selection clears the input and switches modes without an + // onChange event. + expect(defaultProps.setMode).toHaveBeenCalledWith("architect") + expect(idleSignals()).toHaveLength(2) + }) + + it("posts idleCondenseReset when a mention is inserted from the context menu", () => { + const { container } = render() + const textarea = getTextarea(container) + + // Typing "@" opens the mention context menu and signals once. + fireEvent.change(textarea, { target: { value: "@", selectionStart: 1 } }) + expect(contextMenuHarness.onSelect).toBeDefined() + + act(() => { + contextMenuHarness.onSelect!(ContextMenuOptionType.Problems) + }) + + // The generic insertMention path rewrites the input programmatically. + expect(defaultProps.setInputValue).toHaveBeenCalled() + expect(idleSignals()).toHaveLength(2) + }) }) }) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index d6cf8c7e2c..3ab608dde4 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -1704,6 +1704,8 @@ describe("ChatView - Follow-up Suggestions", () => { // so the appended "\n" is absent from the DOM value. await waitFor(() => expect(input.value).toBe("Draft text Copy me")) expect(vscode.postMessage).not.toHaveBeenCalledWith(expect.objectContaining({ type: "askResponse" })) + // The draft changed programmatically, so the idle countdown must restart. + expect(vscode.postMessage).toHaveBeenCalledWith({ type: "idleCondenseReset" }) // With an empty draft the answer is set as-is (no dangling "\n" prefix). fireEvent.change(input, { target: { value: "" } }) From e2e074067f3c85f282e80cf2286da6d5c910921d Mon Sep 17 00:00:00 2001 From: AllWashedOut <40281893+AllWashedOut@users.noreply.github.com> Date: Mon, 9 Nov 2026 16:08:22 -0800 Subject: [PATCH 20/20] test(webview): assert idleCondenseReset on setChatBoxMessage invoke path CodeRabbit flagged a mutation gap at ChatView.tsx L746: the idleCondenseReset post inside handleSetChatBoxMessage was untested. Add a ChatView.spec.tsx case that dispatches a window message event with type "invoke" / invoke "setChatBoxMessage", verifies the draft input is rewritten programmatically, and asserts vscode.postMessage receives { type: "idleCondenseReset" }. --- .../chat/__tests__/ChatView.spec.tsx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index 3ab608dde4..fc68d12bab 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -1754,6 +1754,33 @@ describe("ChatView - Follow-up Suggestions", () => { await waitFor(() => expect(input.value).toBe("Padded")) expect(vscode.postMessage).not.toHaveBeenCalledWith(expect.objectContaining({ type: "askResponse" })) }) + + it("posts idleCondenseReset when a setChatBoxMessage invoke rewrites the input", async () => { + const { getByTestId } = renderChatView() + + mockPostMessage({ mode: "ask", customModes: [] }) + + const input = getByTestId("chat-textarea").querySelector("input") + if (!input) { + throw new Error("expected the chat input to be rendered") + } + // Pre-fill a draft so the invoke appends to it, then clear the calls + // made while setting up so only the invoke path is asserted on. + fireEvent.change(input, { target: { value: "Draft" } }) + vscodePostMessageMock.cleanup() + + await dispatchExtensionMessage({ + type: "invoke", + invoke: "setChatBoxMessage", + text: "from invoke", + images: [], + }) + + await waitFor(() => expect(input.value).toBe("Draft from invoke")) + // The invoke path changes the prompt programmatically without a + // textarea onChange, so the armed idle countdown must restart. + expect(vscode.postMessage).toHaveBeenCalledWith({ type: "idleCondenseReset" }) + }) }) describe("ChatView - Context Condensing Indicator Tests", () => {

    UvkyTQpH2Ie^C;mq>a?xGD=9yahdg*W=^6Pe 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