feat: add thinkingBudgets option to customize token budgets

This commit is contained in:
Melih Mucuk 2026-01-07 15:13:26 +03:00
parent 10e651f99b
commit 0f27eae77e
8 changed files with 75 additions and 7 deletions

View file

@ -662,6 +662,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
: undefined,
steeringMode: settingsManager.getSteeringMode(),
followUpMode: settingsManager.getFollowUpMode(),
thinkingBudgets: settingsManager.getThinkingBudgets(),
getApiKey: async () => {
const currentModel = agent.state.model;
if (!currentModel) {

View file

@ -39,6 +39,13 @@ export interface ImageSettings {
blockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers
}
export interface ThinkingBudgetsSettings {
minimal?: number;
low?: number;
medium?: number;
high?: number;
}
export interface Settings {
lastChangelogVersion?: string;
defaultProvider?: string;
@ -59,6 +66,7 @@ export interface Settings {
images?: ImageSettings;
enabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)
doubleEscapeAction?: "branch" | "tree"; // Action for double-escape with empty editor (default: "tree")
thinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels
}
/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */
@ -381,6 +389,10 @@ export class SettingsManager {
};
}
getThinkingBudgets(): ThinkingBudgetsSettings | undefined {
return this.settings.thinkingBudgets;
}
getShowImages(): boolean {
return this.settings.terminal?.showImages ?? true;
}