fix(coding-agent): refresh thinking border from extensions

closes #3888
This commit is contained in:
Mario Zechner
2026-04-30 22:49:31 +02:00
parent f7df474084
commit 95ae590279
5 changed files with 47 additions and 2 deletions

View File

@@ -120,6 +120,7 @@ export type AgentSessionEvent =
}
| { type: "compaction_start"; reason: "manual" | "threshold" | "overflow" }
| { type: "session_info_changed"; name: string | undefined }
| { type: "thinking_level_changed"; level: ThinkingLevel }
| {
type: "compaction_end";
reason: "manual" | "threshold" | "overflow";
@@ -1505,7 +1506,8 @@ export class AgentSession {
const effectiveLevel = availableLevels.includes(level) ? level : this._clampThinkingLevel(level, availableLevels);
// Only persist if actually changing
const isChanging = effectiveLevel !== this.agent.state.thinkingLevel;
const previousLevel = this.agent.state.thinkingLevel;
const isChanging = effectiveLevel !== previousLevel;
this.agent.state.thinkingLevel = effectiveLevel;
@@ -1514,6 +1516,12 @@ export class AgentSession {
if (this.supportsThinking() || effectiveLevel !== "off") {
this.settingsManager.setDefaultThinkingLevel(effectiveLevel);
}
this._emit({ type: "thinking_level_changed", level: effectiveLevel });
void this._extensionRunner.emit({
type: "thinking_level_select",
level: effectiveLevel,
previousLevel,
});
}
}

View File

@@ -718,6 +718,13 @@ export interface ModelSelectEvent {
source: ModelSelectSource;
}
/** Fired when a new thinking level is selected */
export interface ThinkingLevelSelectEvent {
type: "thinking_level_select";
level: ThinkingLevel;
previousLevel: ThinkingLevel;
}
// ============================================================================
// User Bash Events
// ============================================================================
@@ -958,6 +965,7 @@ export type ExtensionEvent =
| ToolExecutionUpdateEvent
| ToolExecutionEndEvent
| ModelSelectEvent
| ThinkingLevelSelectEvent
| UserBashEvent
| InputEvent
| ToolCallEvent
@@ -1111,6 +1119,7 @@ export interface ExtensionAPI {
on(event: "tool_execution_update", handler: ExtensionHandler<ToolExecutionUpdateEvent>): void;
on(event: "tool_execution_end", handler: ExtensionHandler<ToolExecutionEndEvent>): void;
on(event: "model_select", handler: ExtensionHandler<ModelSelectEvent>): void;
on(event: "thinking_level_select", handler: ExtensionHandler<ThinkingLevelSelectEvent>): void;
on(event: "tool_call", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): void;
on(event: "tool_result", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): void;
on(event: "user_bash", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): void;

View File

@@ -2658,6 +2658,11 @@ export class InteractiveMode {
this.ui.requestRender();
break;
case "thinking_level_changed":
this.footer.invalidate();
this.updateEditorBorderColor();
break;
case "message_start":
if (event.message.role === "custom") {
this.addMessageToChat(event.message);