@dreb/coding-agent 2.25.3 → 2.25.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ import * as crypto from "node:crypto";
6
6
  import * as fs from "node:fs";
7
7
  import * as os from "node:os";
8
8
  import * as path from "node:path";
9
+ import { supportsAdaptiveThinking } from "@dreb/ai";
9
10
  import { CombinedAutocompleteProvider, Container, fuzzyFilter, Loader, Markdown, matchesKey, ProcessTerminal, Spacer, setKeybindings, Text, TruncatedText, TUI, visibleWidth, } from "@dreb/tui";
10
11
  import { spawn, spawnSync } from "child_process";
11
12
  import { APP_NAME, getAgentDir, getAuthPath, getDebugLogPath, getUpdateInstruction, VERSION } from "../../config.js";
@@ -22,6 +23,7 @@ import { DefaultPackageManager } from "../../core/package-manager.js";
22
23
  import { SessionManager } from "../../core/session-manager.js";
23
24
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
24
25
  import { restoreStderr, takeOverStderr } from "../../core/stderr-guard.js";
26
+ import { resolveThinkingDisplay } from "../../core/thinking.js";
25
27
  import { resolveToCwd } from "../../core/tools/path-utils.js";
26
28
  import { abortBackgroundAgents, discoverAgentTypes, getRunningBackgroundAgents } from "../../core/tools/subagent.js";
27
29
  import { getChangelogPath, getNewEntries, parseChangelog } from "../../utils/changelog.js";
@@ -2975,6 +2977,12 @@ export class InteractiveMode {
2975
2977
  const agentNames = Array.from(agentTypes.keys()).sort();
2976
2978
  const availableModels = this.session.modelRegistry.getAvailable();
2977
2979
  const availableModelIds = availableModels.map((m) => `${m.provider}/${m.id}`);
2980
+ const currentModel = this.session.model;
2981
+ const thinkingDisplaySupported = currentModel ? supportsAdaptiveThinking(currentModel) : false;
2982
+ const thinkingDisplay = currentModel
2983
+ ? (resolveThinkingDisplay(currentModel, this.settingsManager.getModelThinkingDisplay(currentModel.id)) ??
2984
+ "summarized")
2985
+ : "summarized";
2978
2986
  const selector = new SettingsSelectorComponent({
2979
2987
  autoCompact: this.session.autoCompactionEnabled,
2980
2988
  showImages: this.settingsManager.getShowImages(),
@@ -2989,6 +2997,8 @@ export class InteractiveMode {
2989
2997
  currentTheme: this.settingsManager.getTheme() || "dark",
2990
2998
  availableThemes: getAvailableThemes(),
2991
2999
  hideThinkingBlock: this.hideThinkingBlock,
3000
+ thinkingDisplaySupported,
3001
+ thinkingDisplay,
2992
3002
  collapseChangelog: this.settingsManager.getCollapseChangelog(),
2993
3003
  doubleEscapeAction: this.settingsManager.getDoubleEscapeAction(),
2994
3004
  treeFilterMode: this.settingsManager.getTreeFilterMode(),
@@ -3063,6 +3073,22 @@ export class InteractiveMode {
3063
3073
  this.chatContainer.clear();
3064
3074
  this.rebuildChatFromMessages();
3065
3075
  },
3076
+ onThinkingDisplayChange: (display) => {
3077
+ const model = this.session.model;
3078
+ if (!model)
3079
+ return;
3080
+ this.settingsManager.setModelThinkingDisplay(model.id, display);
3081
+ // Refresh the live agent so the change takes effect this session.
3082
+ const effective = resolveThinkingDisplay(model, this.settingsManager.getModelThinkingDisplay(model.id));
3083
+ this.session.agent.thinkingDisplay = effective;
3084
+ // The toggle writes to GLOBAL settings, but getModelThinkingDisplay
3085
+ // resolves project-over-global. If a project-level modelSettings
3086
+ // override exists in .dreb/settings.json, it shadows the toggle and
3087
+ // the change silently has no effect. Fail loudly instead.
3088
+ if (supportsAdaptiveThinking(model) && effective !== display) {
3089
+ this.showWarning(`Thinking display for "${model.id}" was not changed: a project-level "modelSettings" override in .dreb/settings.json takes precedence (effective: "${effective}"). Remove or edit that override to use this toggle.`);
3090
+ }
3091
+ },
3066
3092
  onCollapseChangelogChange: (collapsed) => {
3067
3093
  this.settingsManager.setCollapseChangelog(collapsed);
3068
3094
  },