iosm-cli 0.2.17 → 0.3.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +7 -4
  3. package/dist/core/agent-session.d.ts.map +1 -1
  4. package/dist/core/agent-session.js +3 -0
  5. package/dist/core/agent-session.js.map +1 -1
  6. package/dist/core/settings-manager.d.ts +3 -0
  7. package/dist/core/settings-manager.d.ts.map +1 -1
  8. package/dist/core/settings-manager.js +11 -0
  9. package/dist/core/settings-manager.js.map +1 -1
  10. package/dist/core/settings.schema.json +21 -0
  11. package/dist/core/subagents.d.ts.map +1 -1
  12. package/dist/core/subagents.js +4 -0
  13. package/dist/core/subagents.js.map +1 -1
  14. package/dist/core/tools/task.d.ts.map +1 -1
  15. package/dist/core/tools/task.js +48 -26
  16. package/dist/core/tools/task.js.map +1 -1
  17. package/dist/modes/interactive/components/assistant-message.d.ts +7 -0
  18. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  19. package/dist/modes/interactive/components/assistant-message.js +77 -5
  20. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  21. package/dist/modes/interactive/components/custom-editor.d.ts +7 -0
  22. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  23. package/dist/modes/interactive/components/custom-editor.js +95 -10
  24. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  25. package/dist/modes/interactive/components/footer.d.ts +2 -0
  26. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  27. package/dist/modes/interactive/components/footer.js +49 -32
  28. package/dist/modes/interactive/components/footer.js.map +1 -1
  29. package/dist/modes/interactive/components/message-frame-border.d.ts +22 -0
  30. package/dist/modes/interactive/components/message-frame-border.d.ts.map +1 -0
  31. package/dist/modes/interactive/components/message-frame-border.js +51 -0
  32. package/dist/modes/interactive/components/message-frame-border.js.map +1 -0
  33. package/dist/modes/interactive/components/message-window.d.ts +25 -0
  34. package/dist/modes/interactive/components/message-window.d.ts.map +1 -0
  35. package/dist/modes/interactive/components/message-window.js +66 -0
  36. package/dist/modes/interactive/components/message-window.js.map +1 -0
  37. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  38. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  39. package/dist/modes/interactive/components/settings-selector.js +12 -0
  40. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  41. package/dist/modes/interactive/components/subagent-message.d.ts +12 -9
  42. package/dist/modes/interactive/components/subagent-message.d.ts.map +1 -1
  43. package/dist/modes/interactive/components/subagent-message.js +138 -136
  44. package/dist/modes/interactive/components/subagent-message.js.map +1 -1
  45. package/dist/modes/interactive/components/tool-execution.d.ts +2 -0
  46. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  47. package/dist/modes/interactive/components/tool-execution.js +33 -28
  48. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  49. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  50. package/dist/modes/interactive/components/user-message.js +10 -3
  51. package/dist/modes/interactive/components/user-message.js.map +1 -1
  52. package/dist/modes/interactive/interactive-mode.d.ts +11 -1
  53. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  54. package/dist/modes/interactive/interactive-mode.js +509 -155
  55. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  56. package/package.json +1 -1
@@ -17,6 +17,7 @@ export interface RetrySettings {
17
17
  export interface TerminalSettings {
18
18
  showImages?: boolean;
19
19
  clearOnShrink?: boolean;
20
+ compactFooter?: boolean;
20
21
  }
21
22
  export interface ImageSettings {
22
23
  autoResize?: boolean;
@@ -294,6 +295,8 @@ export declare class SettingsManager {
294
295
  setShowImages(show: boolean): void;
295
296
  getClearOnShrink(): boolean;
296
297
  setClearOnShrink(enabled: boolean): void;
298
+ getCompactFooter(): boolean;
299
+ setCompactFooter(enabled: boolean): void;
297
300
  getImageAutoResize(): boolean;
298
301
  setImageAutoResize(enabled: boolean): void;
299
302
  getBlockImages(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
@@ -700,6 +700,17 @@ export class SettingsManager {
700
700
  this.markModified("terminal", "clearOnShrink");
701
701
  this.save();
702
702
  }
703
+ getCompactFooter() {
704
+ return this.settings.terminal?.compactFooter ?? false;
705
+ }
706
+ setCompactFooter(enabled) {
707
+ if (!this.globalSettings.terminal) {
708
+ this.globalSettings.terminal = {};
709
+ }
710
+ this.globalSettings.terminal.compactFooter = enabled;
711
+ this.markModified("terminal", "compactFooter");
712
+ this.save();
713
+ }
703
714
  getImageAutoResize() {
704
715
  return this.settings.images?.autoResize ?? true;
705
716
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transport } from \"@mariozechner/pi-ai\";\nimport AjvModule from \"ajv\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getAgentDir } from \"../config.js\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tmaxDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n}\n\nexport interface WebSearchSettings {\n\tenabled?: boolean; // default: true\n\tproviderMode?: \"auto\" | \"tavily\"; // default: auto\n\tfallbackMode?: \"searxng_ddg\" | \"searxng_only\" | \"none\"; // default: searxng_ddg\n\tsafeSearch?: \"off\" | \"moderate\" | \"strict\"; // default: moderate\n\tmaxResults?: number; // default: 8\n\ttimeoutSeconds?: number; // default: 20\n\ttavilyApiKey?: string; // optional Tavily API key (can also come from env)\n\tsearxngUrl?: string; // optional SearXNG base URL (can also come from env)\n}\n\nexport interface GithubToolsSettings {\n\tnetworkEnabled?: boolean; // default: false\n\ttoken?: string; // optional GitHub token used for git network operations\n}\n\nexport interface DbToolsMigrateSettings {\n\tscript?: string;\n\tcwd?: string;\n\targs?: string[];\n}\n\nexport interface DbToolsConnectionSettings {\n\tadapter?: \"postgres\" | \"mysql\" | \"sqlite\" | \"mongodb\" | \"redis\";\n\tdsnEnv?: string; // required for network adapters\n\tsqlitePath?: string; // required for sqlite adapter\n\tclientArgs?: string[]; // additional adapter CLI arguments\n\tmigrate?: DbToolsMigrateSettings;\n}\n\nexport interface DbToolsSettings {\n\tdefaultConnection?: string;\n\tconnections?: Record<string, DbToolsConnectionSettings>;\n}\n\nexport interface PromptContextSettings {\n\tenableContextDedupe?: boolean; // default: true\n\tmaxContextCharsPerFile?: number; // default: 4000\n\tmaxTotalContextChars?: number; // default: 12000\n\tenableGitSnapshotContext?: boolean; // default: false\n\tgitSnapshotMaxChars?: number; // default: 2000\n}\n\nexport interface PermissionsSettings {\n\textensionToolEnforcement?: boolean; // default: false\n}\n\nexport interface SandboxSettings {\n\tenabled?: boolean; // default: false\n}\n\nexport interface TelegramChatDefaultsSettings {\n\t/** Minimum milliseconds between live status edits in Telegram */\n\tstatusEditThrottleMs?: number; // default: 1200\n\t/** Max characters to keep in chat summary before attaching full output as file */\n\tmaxSummaryChars?: number; // default: 3000\n}\n\nexport interface TelegramSettings {\n\tenabled?: boolean; // default: false\n\tbotToken?: string;\n\tallowedUserIds?: number[];\n\ttransport?: \"long-polling\"; // default: long-polling\n\tchatDefaults?: TelegramChatDefaultsSettings;\n}\n\nexport type TransportSetting = Transport;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t };\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\ttransport?: TransportSetting; // default: \"sse\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\tstreamInputMode?: \"steer\" | \"followUp\" | \"meta\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows)\n\tquietStartup?: boolean;\n\tpermissionMode?: \"ask\" | \"auto\" | \"yolo\";\n\tpermissionAllow?: string[]; // Rule format: \"tool:match\", e.g. \"write:README.md\"\n\tpermissionDeny?: string[]; // Rule format: \"tool:match\", e.g. \"bash:rm -rf\"\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twebSearch?: WebSearchSettings;\n\tgithubTools?: GithubToolsSettings;\n\tdbTools?: DbToolsSettings;\n\tpromptContext?: PromptContextSettings;\n\tpermissions?: PermissionsSettings;\n\tsandbox?: SandboxSettings;\n\ttelegram?: TelegramSettings;\n}\n\nconst WEB_SEARCH_PROVIDER_MODES = [\"auto\", \"tavily\"] as const;\nconst WEB_SEARCH_FALLBACK_MODES = [\"searxng_ddg\", \"searxng_only\", \"none\"] as const;\nconst WEB_SEARCH_SAFE_SEARCH_MODES = [\"off\", \"moderate\", \"strict\"] as const;\nconst WEB_SEARCH_MAX_RESULTS_VALUES = [3, 5, 8, 10, 15] as const;\nconst WEB_SEARCH_TIMEOUT_VALUES = [10, 20, 30, 45, 60] as const;\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst FALLBACK_SETTINGS_SCHEMA: Record<string, unknown> = {\n\ttype: \"object\",\n\tadditionalProperties: true,\n};\n\nfunction loadSettingsSchema(): Record<string, unknown> {\n\ttry {\n\t\treturn JSON.parse(readFileSync(new URL(\"./settings.schema.json\", import.meta.url), \"utf8\")) as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.warn(`[iosm] settings schema is missing or unreadable, using fallback validator: ${message}`);\n\t\treturn FALLBACK_SETTINGS_SCHEMA;\n\t}\n}\n\nconst settingsSchema = loadSettingsSchema();\nconst SETTINGS_SCHEMA_VALIDATOR = new Ajv({ allErrors: true, allowUnionTypes: true }).compile(settingsSchema);\n\nfunction nearestAllowedValue(value: number, allowed: readonly number[], fallback: number): number {\n\tif (!Number.isFinite(value)) return fallback;\n\tlet best = allowed[0] ?? fallback;\n\tlet bestDistance = Math.abs(best - value);\n\tfor (const candidate of allowed) {\n\t\tconst distance = Math.abs(candidate - value);\n\t\tif (distance < bestDistance) {\n\t\t\tbest = candidate;\n\t\t\tbestDistance = distance;\n\t\t}\n\t}\n\treturn best;\n}\n\n/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */\nfunction deepMergeSettings(base: Settings, overrides: Settings): Settings {\n\tconst result: Settings = { ...base };\n\n\tfor (const key of Object.keys(overrides) as (keyof Settings)[]) {\n\t\tconst overrideValue = overrides[key];\n\t\tconst baseValue = base[key];\n\n\t\tif (overrideValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// For nested objects, merge recursively\n\t\tif (\n\t\t\ttypeof overrideValue === \"object\" &&\n\t\t\toverrideValue !== null &&\n\t\t\t!Array.isArray(overrideValue) &&\n\t\t\ttypeof baseValue === \"object\" &&\n\t\t\tbaseValue !== null &&\n\t\t\t!Array.isArray(baseValue)\n\t\t) {\n\t\t\t(result as Record<string, unknown>)[key] = { ...baseValue, ...overrideValue };\n\t\t} else {\n\t\t\t// For primitives and arrays, override value wins\n\t\t\t(result as Record<string, unknown>)[key] = overrideValue;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\terror: Error;\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\n\tconstructor(cwd: string = process.cwd(), agentDir: string = getAgentDir()) {\n\t\tthis.globalSettingsPath = join(agentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(cwd, CONFIG_DIR_NAME, \"settings.json\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path = scope === \"global\" ? this.globalSettingsPath : this.projectSettingsPath;\n\t\tconst dir = dirname(path);\n\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\t// Only create directory and lock if file exists or we need to write\n\t\t\tconst fileExists = existsSync(path);\n\t\t\tif (fileExists) {\n\t\t\t\trelease = lockfile.lockSync(path, { realpath: false });\n\t\t\t}\n\t\t\tconst current = fileExists ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\tconst next = fn(current);\n\t\t\tif (next !== undefined) {\n\t\t\t\t// Only create directory when we actually need to write\n\t\t\t\tif (!existsSync(dir)) {\n\t\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t\t}\n\t\t\t\tif (!release) {\n\t\t\t\t\trelease = lockfile.lockSync(path, { realpath: false });\n\t\t\t\t}\n\t\t\t\twriteFileSync(path, next, \"utf-8\");\n\t\t\t}\n\t\t} finally {\n\t\t\tif (release) {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class InMemorySettingsStorage implements SettingsStorage {\n\tprivate global: string | undefined;\n\tprivate project: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : this.project;\n\t\tconst next = fn(current);\n\t\tif (next !== undefined) {\n\t\t\tif (scope === \"global\") {\n\t\t\t\tthis.global = next;\n\t\t\t} else {\n\t\t\t\tthis.project = next;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate settings: Settings;\n\tprivate modifiedFields = new Set<keyof Settings>(); // Track global fields modified during session\n\tprivate modifiedNestedFields = new Map<keyof Settings, Set<string>>(); // Track global nested field modifications\n\tprivate modifiedProjectFields = new Set<keyof Settings>(); // Track project fields modified during session\n\tprivate modifiedProjectNestedFields = new Map<keyof Settings, Set<string>>(); // Track project nested field modifications\n\tprivate globalSettingsLoadError: Error | null = null; // Track if global settings file had parse errors\n\tprivate projectSettingsLoadError: Error | null = null; // Track if project settings file had parse errors\n\tprivate writeQueue: Promise<void> = Promise.resolve();\n\tprivate errors: SettingsError[];\n\n\tprivate constructor(\n\t\tstorage: SettingsStorage,\n\t\tinitialGlobal: Settings,\n\t\tinitialProject: Settings,\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(cwd: string = process.cwd(), agentDir: string = getAgentDir()): SettingsManager {\n\t\tconst storage = new FileSettingsStorage(cwd, agentDir);\n\t\treturn SettingsManager.fromStorage(storage);\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage): SettingsManager {\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\");\n\t\tconst initialErrors: SettingsError[] = [];\n\t\tif (globalLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"global\", error: globalLoad.error });\n\t\t}\n\t\tif (projectLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"project\", error: projectLoad.error });\n\t\t}\n\n\t\treturn new SettingsManager(\n\t\t\tstorage,\n\t\t\tglobalLoad.settings,\n\t\t\tprojectLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t);\n\t}\n\n\t/** Create an in-memory SettingsManager (no file I/O) */\n\tstatic inMemory(settings: Partial<Settings> = {}): SettingsManager {\n\t\tconst storage = new InMemorySettingsStorage();\n\t\treturn new SettingsManager(storage, settings, {});\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope): Settings {\n\t\tlet content: string | undefined;\n\t\tstorage.withLock(scope, (current) => {\n\t\t\tcontent = current;\n\t\t\treturn undefined;\n\t\t});\n\n\t\tif (!content) {\n\t\t\treturn {};\n\t\t}\n\t\tconst settings = JSON.parse(content);\n\t\tconst migrated = SettingsManager.migrateSettings(settings);\n\t\tif (!SETTINGS_SCHEMA_VALIDATOR(migrated)) {\n\t\t\tconst issue = SETTINGS_SCHEMA_VALIDATOR.errors?.[0];\n\t\t\tconst location = issue?.instancePath || issue?.schemaPath || \"(unknown path)\";\n\t\t\tthrow new Error(`Invalid settings schema at ${location}: ${issue?.message ?? \"validation failed\"}`);\n\t\t}\n\t\treturn migrated;\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\t/** Migrate old settings format to new format */\n\tprivate static migrateSettings(settings: Record<string, unknown>): Settings {\n\t\t// Migrate queueMode -> steeringMode\n\t\tif (\"queueMode\" in settings && !(\"steeringMode\" in settings)) {\n\t\t\tsettings.steeringMode = settings.queueMode;\n\t\t\tdelete settings.queueMode;\n\t\t}\n\n\t\t// Migrate legacy websockets boolean -> transport enum\n\t\tif (!(\"transport\" in settings) && typeof settings.websockets === \"boolean\") {\n\t\t\tsettings.transport = settings.websockets ? \"websocket\" : \"sse\";\n\t\t\tdelete settings.websockets;\n\t\t}\n\n\t\t// Migrate old skills object format to new array format\n\t\tif (\n\t\t\t\"skills\" in settings &&\n\t\t\ttypeof settings.skills === \"object\" &&\n\t\t\tsettings.skills !== null &&\n\t\t\t!Array.isArray(settings.skills)\n\t\t) {\n\t\t\tconst skillsSettings = settings.skills as {\n\t\t\t\tenableSkillCommands?: boolean;\n\t\t\t\tcustomDirectories?: unknown;\n\t\t\t};\n\t\t\tif (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {\n\t\t\t\tsettings.enableSkillCommands = skillsSettings.enableSkillCommands;\n\t\t\t}\n\t\t\tif (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {\n\t\t\t\tsettings.skills = skillsSettings.customDirectories;\n\t\t\t} else {\n\t\t\t\tdelete settings.skills;\n\t\t\t}\n\t\t}\n\n\t\treturn settings as Settings;\n\t}\n\n\tgetGlobalSettings(): Settings {\n\t\treturn structuredClone(this.globalSettings);\n\t}\n\n\tgetProjectSettings(): Settings {\n\t\treturn structuredClone(this.projectSettings);\n\t}\n\n\treload(): void {\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(this.storage, \"global\");\n\t\tif (!globalLoad.error) {\n\t\t\tthis.globalSettings = globalLoad.settings;\n\t\t\tthis.globalSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.globalSettingsLoadError = globalLoad.error;\n\t\t\tthis.recordError(\"global\", globalLoad.error);\n\t\t}\n\n\t\tthis.modifiedFields.clear();\n\t\tthis.modifiedNestedFields.clear();\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\");\n\t\tif (!projectLoad.error) {\n\t\t\tthis.projectSettings = projectLoad.settings;\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Apply additional overrides on top of current settings */\n\tapplyOverrides(overrides: Partial<Settings>): void {\n\t\tthis.settings = deepMergeSettings(this.settings, overrides);\n\t}\n\n\t/** Mark a global field as modified during this session */\n\tprivate markModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedNestedFields.has(field)) {\n\t\t\t\tthis.modifiedNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\t/** Mark a project field as modified during this session */\n\tprivate markProjectModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedProjectFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedProjectNestedFields.has(field)) {\n\t\t\t\tthis.modifiedProjectNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedProjectNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsScope, error: unknown): void {\n\t\tconst normalizedError = error instanceof Error ? error : new Error(String(error));\n\t\tthis.errors.push({ scope, error: normalizedError });\n\t}\n\n\tprivate clearModifiedScope(scope: SettingsScope): void {\n\t\tif (scope === \"global\") {\n\t\t\tthis.modifiedFields.clear();\n\t\t\tthis.modifiedNestedFields.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\t}\n\n\tprivate enqueueWrite(scope: SettingsScope, task: () => void): void {\n\t\tthis.writeQueue = this.writeQueue\n\t\t\t.then(() => {\n\t\t\t\ttask();\n\t\t\t\tthis.clearModifiedScope(scope);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.recordError(scope, error);\n\t\t\t});\n\t}\n\n\tprivate cloneModifiedNestedFields(source: Map<keyof Settings, Set<string>>): Map<keyof Settings, Set<string>> {\n\t\tconst snapshot = new Map<keyof Settings, Set<string>>();\n\t\tfor (const [key, value] of source.entries()) {\n\t\t\tsnapshot.set(key, new Set(value));\n\t\t}\n\t\treturn snapshot;\n\t}\n\n\tprivate persistScopedSettings(\n\t\tscope: SettingsScope,\n\t\tsnapshotSettings: Settings,\n\t\tmodifiedFields: Set<keyof Settings>,\n\t\tmodifiedNestedFields: Map<keyof Settings, Set<string>>,\n\t): void {\n\t\tthis.storage.withLock(scope, (current) => {\n\t\t\tconst currentFileSettings = current\n\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(current) as Record<string, unknown>)\n\t\t\t\t: {};\n\t\t\tconst mergedSettings: Settings = { ...currentFileSettings };\n\t\t\tfor (const field of modifiedFields) {\n\t\t\t\tconst value = snapshotSettings[field];\n\t\t\t\tif (modifiedNestedFields.has(field) && typeof value === \"object\" && value !== null) {\n\t\t\t\t\tconst nestedModified = modifiedNestedFields.get(field)!;\n\t\t\t\t\tconst baseNested = (currentFileSettings[field] as Record<string, unknown>) ?? {};\n\t\t\t\t\tconst inMemoryNested = value as Record<string, unknown>;\n\t\t\t\t\tconst mergedNested = { ...baseNested };\n\t\t\t\t\tfor (const nestedKey of nestedModified) {\n\t\t\t\t\t\tmergedNested[nestedKey] = inMemoryNested[nestedKey];\n\t\t\t\t\t}\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = mergedNested;\n\t\t\t\t} else {\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn JSON.stringify(mergedSettings, null, 2);\n\t\t});\n\t}\n\n\tprivate save(): void {\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.globalSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotGlobalSettings = structuredClone(this.globalSettings);\n\t\tconst modifiedFields = new Set(this.modifiedFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedNestedFields);\n\n\t\tthis.enqueueWrite(\"global\", () => {\n\t\t\tthis.persistScopedSettings(\"global\", snapshotGlobalSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate saveProjectSettings(settings: Settings): void {\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.projectSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotProjectSettings = structuredClone(this.projectSettings);\n\t\tconst modifiedFields = new Set(this.modifiedProjectFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);\n\t\tthis.enqueueWrite(\"project\", () => {\n\t\t\tthis.persistScopedSettings(\"project\", snapshotProjectSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tasync flush(): Promise<void> {\n\t\tawait this.writeQueue;\n\t}\n\n\tdrainErrors(): SettingsError[] {\n\t\tconst drained = [...this.errors];\n\t\tthis.errors = [];\n\t\treturn drained;\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn this.settings.lastChangelogVersion;\n\t}\n\n\tsetLastChangelogVersion(version: string): void {\n\t\tthis.globalSettings.lastChangelogVersion = version;\n\t\tthis.markModified(\"lastChangelogVersion\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tsetDefaultProvider(provider: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModel(modelId: string): void {\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.steeringMode || \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.steeringMode = mode;\n\t\tthis.markModified(\"steeringMode\");\n\t\tthis.save();\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.followUpMode || \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.followUpMode = mode;\n\t\tthis.markModified(\"followUpMode\");\n\t\tthis.save();\n\t}\n\n\tgetStreamInputMode(): \"steer\" | \"followUp\" | \"meta\" {\n\t\treturn this.settings.streamInputMode || \"meta\";\n\t}\n\n\tsetStreamInputMode(mode: \"steer\" | \"followUp\" | \"meta\"): void {\n\t\tthis.globalSettings.streamInputMode = mode;\n\t\tthis.markModified(\"streamInputMode\");\n\t\tthis.save();\n\t}\n\n\tgetTheme(): string | undefined {\n\t\treturn this.settings.theme;\n\t}\n\n\tsetTheme(theme: string): void {\n\t\tthis.globalSettings.theme = theme;\n\t\tthis.markModified(\"theme\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | undefined {\n\t\treturn this.settings.defaultThinkingLevel;\n\t}\n\n\tsetDefaultThinkingLevel(level: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\"): void {\n\t\tthis.globalSettings.defaultThinkingLevel = level;\n\t\tthis.markModified(\"defaultThinkingLevel\");\n\t\tthis.save();\n\t}\n\n\tgetTransport(): TransportSetting {\n\t\treturn this.settings.transport ?? \"sse\";\n\t}\n\n\tsetTransport(transport: TransportSetting): void {\n\t\tthis.globalSettings.transport = transport;\n\t\tthis.markModified(\"transport\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? true;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.compaction) {\n\t\t\tthis.globalSettings.compaction = {};\n\t\t}\n\t\tthis.globalSettings.compaction.enabled = enabled;\n\t\tthis.markModified(\"compaction\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionReserveTokens(): number {\n\t\treturn this.settings.compaction?.reserveTokens ?? 16384;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn this.settings.compaction?.keepRecentTokens ?? 20000;\n\t}\n\n\tgetCompactionSettings(): { enabled: boolean; reserveTokens: number; keepRecentTokens: number } {\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tkeepRecentTokens: this.getCompactionKeepRecentTokens(),\n\t\t};\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean } {\n\t\treturn {\n\t\t\treserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: this.settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t}\n\n\tgetBranchSummarySkipPrompt(): boolean {\n\t\treturn this.settings.branchSummary?.skipPrompt ?? false;\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? true;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.retry) {\n\t\t\tthis.globalSettings.retry = {};\n\t\t}\n\t\tthis.globalSettings.retry.enabled = enabled;\n\t\tthis.markModified(\"retry\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number; maxDelayMs: number } {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: this.settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,\n\t\t\tmaxDelayMs: this.settings.retry?.maxDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetHideThinkingBlock(): boolean {\n\t\treturn this.settings.hideThinkingBlock ?? false;\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tthis.globalSettings.hideThinkingBlock = hide;\n\t\tthis.markModified(\"hideThinkingBlock\");\n\t\tthis.save();\n\t}\n\n\tgetShellPath(): string | undefined {\n\t\treturn this.settings.shellPath;\n\t}\n\n\tsetShellPath(path: string | undefined): void {\n\t\tthis.globalSettings.shellPath = path;\n\t\tthis.markModified(\"shellPath\");\n\t\tthis.save();\n\t}\n\n\tgetQuietStartup(): boolean {\n\t\treturn this.settings.quietStartup ?? false;\n\t}\n\n\tsetQuietStartup(quiet: boolean): void {\n\t\tthis.globalSettings.quietStartup = quiet;\n\t\tthis.markModified(\"quietStartup\");\n\t\tthis.save();\n\t}\n\n\tgetPermissionMode(): \"ask\" | \"auto\" | \"yolo\" {\n\t\treturn this.settings.permissionMode ?? \"ask\";\n\t}\n\n\tsetPermissionMode(mode: \"ask\" | \"auto\" | \"yolo\"): void {\n\t\tthis.globalSettings.permissionMode = mode;\n\t\tthis.markModified(\"permissionMode\");\n\t\tthis.save();\n\t}\n\n\tgetPermissionDenyRules(): string[] {\n\t\treturn [...(this.settings.permissionDeny ?? [])];\n\t}\n\n\tgetPermissionAllowRules(): string[] {\n\t\treturn [...(this.settings.permissionAllow ?? [])];\n\t}\n\n\tgetPermissionExtensionToolEnforcement(): boolean {\n\t\treturn this.settings.permissions?.extensionToolEnforcement ?? false;\n\t}\n\n\tgetSandboxEnabled(): boolean {\n\t\treturn this.settings.sandbox?.enabled ?? false;\n\t}\n\n\tsetSandboxEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.sandbox) {\n\t\t\tthis.globalSettings.sandbox = {};\n\t\t}\n\t\tthis.globalSettings.sandbox.enabled = enabled;\n\t\tthis.markModified(\"sandbox\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionExtensionToolEnforcement(enabled: boolean): void {\n\t\tif (!this.globalSettings.permissions) {\n\t\t\tthis.globalSettings.permissions = {};\n\t\t}\n\t\tthis.globalSettings.permissions.extensionToolEnforcement = enabled;\n\t\tthis.markModified(\"permissions\", \"extensionToolEnforcement\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionDenyRules(rules: string[]): void {\n\t\tthis.globalSettings.permissionDeny = [...rules];\n\t\tthis.markModified(\"permissionDeny\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionAllowRules(rules: string[]): void {\n\t\tthis.globalSettings.permissionAllow = [...rules];\n\t\tthis.markModified(\"permissionAllow\");\n\t\tthis.save();\n\t}\n\n\tgetPromptContextEnableDedupe(): boolean {\n\t\treturn this.settings.promptContext?.enableContextDedupe ?? true;\n\t}\n\n\tgetPromptContextMaxCharsPerFile(): number {\n\t\tconst value = this.settings.promptContext?.maxContextCharsPerFile;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 4000;\n\t\treturn Math.max(1, Math.floor(value));\n\t}\n\n\tgetPromptContextMaxTotalChars(): number {\n\t\tconst value = this.settings.promptContext?.maxTotalContextChars;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 12000;\n\t\treturn Math.max(1, Math.floor(value));\n\t}\n\n\tgetPromptContextEnableGitSnapshotContext(): boolean {\n\t\treturn this.settings.promptContext?.enableGitSnapshotContext ?? false;\n\t}\n\n\tgetPromptContextGitSnapshotMaxChars(): number {\n\t\tconst value = this.settings.promptContext?.gitSnapshotMaxChars;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 2000;\n\t\treturn Math.max(256, Math.floor(value));\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn this.settings.shellCommandPrefix;\n\t}\n\n\tsetShellCommandPrefix(prefix: string | undefined): void {\n\t\tthis.globalSettings.shellCommandPrefix = prefix;\n\t\tthis.markModified(\"shellCommandPrefix\");\n\t\tthis.save();\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn this.settings.collapseChangelog ?? false;\n\t}\n\n\tsetCollapseChangelog(collapse: boolean): void {\n\t\tthis.globalSettings.collapseChangelog = collapse;\n\t\tthis.markModified(\"collapseChangelog\");\n\t\tthis.save();\n\t}\n\n\tgetPackages(): PackageSource[] {\n\t\treturn [...(this.settings.packages ?? [])];\n\t}\n\n\tsetPackages(packages: PackageSource[]): void {\n\t\tthis.globalSettings.packages = packages;\n\t\tthis.markModified(\"packages\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPackages(packages: PackageSource[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tthis.markProjectModified(\"packages\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [...(this.settings.extensions ?? [])];\n\t}\n\n\tsetExtensionPaths(paths: string[]): void {\n\t\tthis.globalSettings.extensions = paths;\n\t\tthis.markModified(\"extensions\");\n\t\tthis.save();\n\t}\n\n\tsetProjectExtensionPaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tthis.markProjectModified(\"extensions\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [...(this.settings.skills ?? [])];\n\t}\n\n\tsetSkillPaths(paths: string[]): void {\n\t\tthis.globalSettings.skills = paths;\n\t\tthis.markModified(\"skills\");\n\t\tthis.save();\n\t}\n\n\tsetProjectSkillPaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tthis.markProjectModified(\"skills\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [...(this.settings.prompts ?? [])];\n\t}\n\n\tsetPromptTemplatePaths(paths: string[]): void {\n\t\tthis.globalSettings.prompts = paths;\n\t\tthis.markModified(\"prompts\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPromptTemplatePaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tthis.markProjectModified(\"prompts\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [...(this.settings.themes ?? [])];\n\t}\n\n\tsetThemePaths(paths: string[]): void {\n\t\tthis.globalSettings.themes = paths;\n\t\tthis.markModified(\"themes\");\n\t\tthis.save();\n\t}\n\n\tsetProjectThemePaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tthis.markProjectModified(\"themes\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn this.settings.enableSkillCommands ?? true;\n\t}\n\n\tsetEnableSkillCommands(enabled: boolean): void {\n\t\tthis.globalSettings.enableSkillCommands = enabled;\n\t\tthis.markModified(\"enableSkillCommands\");\n\t\tthis.save();\n\t}\n\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined {\n\t\treturn this.settings.thinkingBudgets;\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn this.settings.terminal?.showImages ?? true;\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showImages = show;\n\t\tthis.markModified(\"terminal\", \"showImages\");\n\t\tthis.save();\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tif (this.settings.terminal?.clearOnShrink !== undefined) {\n\t\t\treturn this.settings.terminal.clearOnShrink;\n\t\t}\n\t\treturn process.env[ENV_CLEAR_ON_SHRINK] === \"1\" || process.env.PI_CLEAR_ON_SHRINK === \"1\";\n\t}\n\n\tsetClearOnShrink(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.clearOnShrink = enabled;\n\t\tthis.markModified(\"terminal\", \"clearOnShrink\");\n\t\tthis.save();\n\t}\n\n\tgetImageAutoResize(): boolean {\n\t\treturn this.settings.images?.autoResize ?? true;\n\t}\n\n\tsetImageAutoResize(enabled: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.autoResize = enabled;\n\t\tthis.markModified(\"images\", \"autoResize\");\n\t\tthis.save();\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn this.settings.images?.blockImages ?? false;\n\t}\n\n\tsetBlockImages(blocked: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.blockImages = blocked;\n\t\tthis.markModified(\"images\", \"blockImages\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchEnabled(): boolean {\n\t\treturn this.settings.webSearch?.enabled ?? true;\n\t}\n\n\tsetWebSearchEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.enabled = enabled;\n\t\tthis.markModified(\"webSearch\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchProviderMode(): \"auto\" | \"tavily\" {\n\t\tconst mode = this.settings.webSearch?.providerMode;\n\t\treturn WEB_SEARCH_PROVIDER_MODES.includes(mode as (typeof WEB_SEARCH_PROVIDER_MODES)[number]) ? mode! : \"auto\";\n\t}\n\n\tsetWebSearchProviderMode(mode: \"auto\" | \"tavily\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.providerMode = mode;\n\t\tthis.markModified(\"webSearch\", \"providerMode\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchFallbackMode(): \"searxng_ddg\" | \"searxng_only\" | \"none\" {\n\t\tconst mode = this.settings.webSearch?.fallbackMode;\n\t\treturn WEB_SEARCH_FALLBACK_MODES.includes(mode as (typeof WEB_SEARCH_FALLBACK_MODES)[number]) ? mode! : \"searxng_ddg\";\n\t}\n\n\tsetWebSearchFallbackMode(mode: \"searxng_ddg\" | \"searxng_only\" | \"none\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.fallbackMode = mode;\n\t\tthis.markModified(\"webSearch\", \"fallbackMode\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchSafeSearch(): \"off\" | \"moderate\" | \"strict\" {\n\t\tconst mode = this.settings.webSearch?.safeSearch;\n\t\treturn WEB_SEARCH_SAFE_SEARCH_MODES.includes(mode as (typeof WEB_SEARCH_SAFE_SEARCH_MODES)[number]) ? mode! : \"moderate\";\n\t}\n\n\tsetWebSearchSafeSearch(mode: \"off\" | \"moderate\" | \"strict\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.safeSearch = mode;\n\t\tthis.markModified(\"webSearch\", \"safeSearch\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchMaxResults(): 3 | 5 | 8 | 10 | 15 {\n\t\tconst value = this.settings.webSearch?.maxResults;\n\t\tif (typeof value !== \"number\") return 8;\n\t\tif (WEB_SEARCH_MAX_RESULTS_VALUES.includes(value as (typeof WEB_SEARCH_MAX_RESULTS_VALUES)[number])) {\n\t\t\treturn value as 3 | 5 | 8 | 10 | 15;\n\t\t}\n\t\treturn nearestAllowedValue(value, WEB_SEARCH_MAX_RESULTS_VALUES, 8) as 3 | 5 | 8 | 10 | 15;\n\t}\n\n\tsetWebSearchMaxResults(maxResults: number): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.maxResults = nearestAllowedValue(maxResults, WEB_SEARCH_MAX_RESULTS_VALUES, 8);\n\t\tthis.markModified(\"webSearch\", \"maxResults\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchTimeoutSeconds(): 10 | 20 | 30 | 45 | 60 {\n\t\tconst value = this.settings.webSearch?.timeoutSeconds;\n\t\tif (typeof value !== \"number\") return 20;\n\t\tif (WEB_SEARCH_TIMEOUT_VALUES.includes(value as (typeof WEB_SEARCH_TIMEOUT_VALUES)[number])) {\n\t\t\treturn value as 10 | 20 | 30 | 45 | 60;\n\t\t}\n\t\treturn nearestAllowedValue(value, WEB_SEARCH_TIMEOUT_VALUES, 20) as 10 | 20 | 30 | 45 | 60;\n\t}\n\n\tsetWebSearchTimeoutSeconds(timeoutSeconds: number): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.timeoutSeconds = nearestAllowedValue(timeoutSeconds, WEB_SEARCH_TIMEOUT_VALUES, 20);\n\t\tthis.markModified(\"webSearch\", \"timeoutSeconds\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchTavilyApiKey(): string | undefined {\n\t\tconst key = this.settings.webSearch?.tavilyApiKey;\n\t\tif (typeof key !== \"string\") return undefined;\n\t\tconst normalized = key.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisWebSearchTavilyApiKeyConfigured(): boolean {\n\t\treturn this.getWebSearchTavilyApiKey() !== undefined;\n\t}\n\n\tsetWebSearchTavilyApiKey(apiKey: string | undefined): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tconst normalized = apiKey?.trim();\n\t\tthis.globalSettings.webSearch.tavilyApiKey = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"webSearch\", \"tavilyApiKey\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchSearxngUrl(): string | undefined {\n\t\tconst url = this.settings.webSearch?.searxngUrl;\n\t\tif (typeof url !== \"string\") return undefined;\n\t\tconst normalized = url.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisWebSearchSearxngUrlConfigured(): boolean {\n\t\treturn this.getWebSearchSearxngUrl() !== undefined;\n\t}\n\n\tsetWebSearchSearxngUrl(url: string | undefined): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tconst normalized = url?.trim();\n\t\tthis.globalSettings.webSearch.searxngUrl = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"webSearch\", \"searxngUrl\");\n\t\tthis.save();\n\t}\n\n\tgetGithubToolsNetworkEnabled(): boolean {\n\t\treturn this.settings.githubTools?.networkEnabled ?? false;\n\t}\n\n\tgetDbToolsSettings(): DbToolsSettings {\n\t\tconst dbTools = this.settings.dbTools;\n\t\tif (!dbTools) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst connections: Record<string, DbToolsConnectionSettings> = {};\n\t\tfor (const [name, connection] of Object.entries(dbTools.connections ?? {})) {\n\t\t\tconst normalizedName = name.trim();\n\t\t\tif (!normalizedName || !connection) continue;\n\t\t\tconnections[normalizedName] = {\n\t\t\t\tadapter: connection.adapter,\n\t\t\t\tdsnEnv: connection.dsnEnv?.trim() || undefined,\n\t\t\t\tsqlitePath: connection.sqlitePath?.trim() || undefined,\n\t\t\t\tclientArgs: Array.isArray(connection.clientArgs) ? [...connection.clientArgs] : undefined,\n\t\t\t\tmigrate: connection.migrate\n\t\t\t\t\t? {\n\t\t\t\t\t\tscript: connection.migrate.script?.trim() || undefined,\n\t\t\t\t\t\tcwd: connection.migrate.cwd?.trim() || undefined,\n\t\t\t\t\t\targs: Array.isArray(connection.migrate.args) ? [...connection.migrate.args] : undefined,\n\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tdefaultConnection: dbTools.defaultConnection?.trim() || undefined,\n\t\t\tconnections,\n\t\t};\n\t}\n\n\tsetGithubToolsNetworkEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.githubTools) {\n\t\t\tthis.globalSettings.githubTools = {};\n\t\t}\n\t\tthis.globalSettings.githubTools.networkEnabled = enabled;\n\t\tthis.markModified(\"githubTools\", \"networkEnabled\");\n\t\tthis.save();\n\t}\n\n\tgetGithubToolsToken(): string | undefined {\n\t\tconst token = this.settings.githubTools?.token;\n\t\tif (typeof token !== \"string\") return undefined;\n\t\tconst normalized = token.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisGithubToolsTokenConfigured(): boolean {\n\t\treturn this.getGithubToolsToken() !== undefined;\n\t}\n\n\tsetGithubToolsToken(token: string | undefined): void {\n\t\tif (!this.globalSettings.githubTools) {\n\t\t\tthis.globalSettings.githubTools = {};\n\t\t}\n\t\tconst normalized = token?.trim();\n\t\tthis.globalSettings.githubTools.token = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"githubTools\", \"token\");\n\t\tthis.save();\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn this.settings.enabledModels;\n\t}\n\n\tsetEnabledModels(patterns: string[] | undefined): void {\n\t\tthis.globalSettings.enabledModels = patterns;\n\t\tthis.markModified(\"enabledModels\");\n\t\tthis.save();\n\t}\n\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\" {\n\t\treturn this.settings.doubleEscapeAction ?? \"tree\";\n\t}\n\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void {\n\t\tthis.globalSettings.doubleEscapeAction = action;\n\t\tthis.markModified(\"doubleEscapeAction\");\n\t\tthis.save();\n\t}\n\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\" {\n\t\tconst mode = this.settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t}\n\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void {\n\t\tthis.globalSettings.treeFilterMode = mode;\n\t\tthis.markModified(\"treeFilterMode\");\n\t\tthis.save();\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\tconst envValue = process.env[ENV_HARDWARE_CURSOR] ?? process.env.PI_HARDWARE_CURSOR;\n\t\treturn this.settings.showHardwareCursor ?? envValue === \"1\";\n\t}\n\n\tsetShowHardwareCursor(enabled: boolean): void {\n\t\tthis.globalSettings.showHardwareCursor = enabled;\n\t\tthis.markModified(\"showHardwareCursor\");\n\t\tthis.save();\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn this.settings.editorPaddingX ?? 0;\n\t}\n\n\tsetEditorPaddingX(padding: number): void {\n\t\tthis.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tthis.markModified(\"editorPaddingX\");\n\t\tthis.save();\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn this.settings.autocompleteMaxVisible ?? 5;\n\t}\n\n\tsetAutocompleteMaxVisible(maxVisible: number): void {\n\t\tthis.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tthis.markModified(\"autocompleteMaxVisible\");\n\t\tthis.save();\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn this.settings.markdown?.codeBlockIndent ?? \" \";\n\t}\n\n\tgetTelegramSettings(): {\n\t\tenabled: boolean;\n\t\tbotToken?: string;\n\t\tallowedUserIds: number[];\n\t\ttransport: \"long-polling\";\n\t\tchatDefaults: {\n\t\t\tstatusEditThrottleMs: number;\n\t\t\tmaxSummaryChars: number;\n\t\t};\n\t} {\n\t\tconst raw = this.settings.telegram;\n\t\tconst allowedUserIds = Array.isArray(raw?.allowedUserIds)\n\t\t\t? raw.allowedUserIds\n\t\t\t\t.filter((value): value is number => typeof value === \"number\" && Number.isFinite(value))\n\t\t\t\t.map((value) => Math.trunc(value))\n\t\t\t: [];\n\t\tconst transport = raw?.transport === \"long-polling\" ? \"long-polling\" : \"long-polling\";\n\t\tconst statusEditThrottleRaw = raw?.chatDefaults?.statusEditThrottleMs;\n\t\tconst maxSummaryCharsRaw = raw?.chatDefaults?.maxSummaryChars;\n\t\tconst statusEditThrottleMs =\n\t\t\ttypeof statusEditThrottleRaw === \"number\" && Number.isFinite(statusEditThrottleRaw)\n\t\t\t\t? Math.max(300, Math.trunc(statusEditThrottleRaw))\n\t\t\t\t: 1200;\n\t\tconst maxSummaryChars =\n\t\t\ttypeof maxSummaryCharsRaw === \"number\" && Number.isFinite(maxSummaryCharsRaw)\n\t\t\t\t? Math.max(256, Math.trunc(maxSummaryCharsRaw))\n\t\t\t\t: 3000;\n\n\t\treturn {\n\t\t\tenabled: raw?.enabled ?? false,\n\t\t\tbotToken: raw?.botToken?.trim() || undefined,\n\t\t\tallowedUserIds,\n\t\t\ttransport,\n\t\t\tchatDefaults: {\n\t\t\t\tstatusEditThrottleMs,\n\t\t\t\tmaxSummaryChars,\n\t\t\t},\n\t\t};\n\t}\n\n\tsetTelegramSettings(settings: TelegramSettings): void {\n\t\tthis.globalSettings.telegram = structuredClone(settings);\n\t\tthis.markModified(\"telegram\");\n\t\tthis.save();\n\t}\n}\n"]}
1
+ {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transport } from \"@mariozechner/pi-ai\";\nimport AjvModule from \"ajv\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getAgentDir } from \"../config.js\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tmaxDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tcompactFooter?: boolean; // default: false (render footer in single-line compact mode)\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n}\n\nexport interface WebSearchSettings {\n\tenabled?: boolean; // default: true\n\tproviderMode?: \"auto\" | \"tavily\"; // default: auto\n\tfallbackMode?: \"searxng_ddg\" | \"searxng_only\" | \"none\"; // default: searxng_ddg\n\tsafeSearch?: \"off\" | \"moderate\" | \"strict\"; // default: moderate\n\tmaxResults?: number; // default: 8\n\ttimeoutSeconds?: number; // default: 20\n\ttavilyApiKey?: string; // optional Tavily API key (can also come from env)\n\tsearxngUrl?: string; // optional SearXNG base URL (can also come from env)\n}\n\nexport interface GithubToolsSettings {\n\tnetworkEnabled?: boolean; // default: false\n\ttoken?: string; // optional GitHub token used for git network operations\n}\n\nexport interface DbToolsMigrateSettings {\n\tscript?: string;\n\tcwd?: string;\n\targs?: string[];\n}\n\nexport interface DbToolsConnectionSettings {\n\tadapter?: \"postgres\" | \"mysql\" | \"sqlite\" | \"mongodb\" | \"redis\";\n\tdsnEnv?: string; // required for network adapters\n\tsqlitePath?: string; // required for sqlite adapter\n\tclientArgs?: string[]; // additional adapter CLI arguments\n\tmigrate?: DbToolsMigrateSettings;\n}\n\nexport interface DbToolsSettings {\n\tdefaultConnection?: string;\n\tconnections?: Record<string, DbToolsConnectionSettings>;\n}\n\nexport interface PromptContextSettings {\n\tenableContextDedupe?: boolean; // default: true\n\tmaxContextCharsPerFile?: number; // default: 4000\n\tmaxTotalContextChars?: number; // default: 12000\n\tenableGitSnapshotContext?: boolean; // default: false\n\tgitSnapshotMaxChars?: number; // default: 2000\n}\n\nexport interface PermissionsSettings {\n\textensionToolEnforcement?: boolean; // default: false\n}\n\nexport interface SandboxSettings {\n\tenabled?: boolean; // default: false\n}\n\nexport interface TelegramChatDefaultsSettings {\n\t/** Minimum milliseconds between live status edits in Telegram */\n\tstatusEditThrottleMs?: number; // default: 1200\n\t/** Max characters to keep in chat summary before attaching full output as file */\n\tmaxSummaryChars?: number; // default: 3000\n}\n\nexport interface TelegramSettings {\n\tenabled?: boolean; // default: false\n\tbotToken?: string;\n\tallowedUserIds?: number[];\n\ttransport?: \"long-polling\"; // default: long-polling\n\tchatDefaults?: TelegramChatDefaultsSettings;\n}\n\nexport type TransportSetting = Transport;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t };\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\ttransport?: TransportSetting; // default: \"sse\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\tstreamInputMode?: \"steer\" | \"followUp\" | \"meta\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows)\n\tquietStartup?: boolean;\n\tpermissionMode?: \"ask\" | \"auto\" | \"yolo\";\n\tpermissionAllow?: string[]; // Rule format: \"tool:match\", e.g. \"write:README.md\"\n\tpermissionDeny?: string[]; // Rule format: \"tool:match\", e.g. \"bash:rm -rf\"\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twebSearch?: WebSearchSettings;\n\tgithubTools?: GithubToolsSettings;\n\tdbTools?: DbToolsSettings;\n\tpromptContext?: PromptContextSettings;\n\tpermissions?: PermissionsSettings;\n\tsandbox?: SandboxSettings;\n\ttelegram?: TelegramSettings;\n}\n\nconst WEB_SEARCH_PROVIDER_MODES = [\"auto\", \"tavily\"] as const;\nconst WEB_SEARCH_FALLBACK_MODES = [\"searxng_ddg\", \"searxng_only\", \"none\"] as const;\nconst WEB_SEARCH_SAFE_SEARCH_MODES = [\"off\", \"moderate\", \"strict\"] as const;\nconst WEB_SEARCH_MAX_RESULTS_VALUES = [3, 5, 8, 10, 15] as const;\nconst WEB_SEARCH_TIMEOUT_VALUES = [10, 20, 30, 45, 60] as const;\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst FALLBACK_SETTINGS_SCHEMA: Record<string, unknown> = {\n\ttype: \"object\",\n\tadditionalProperties: true,\n};\n\nfunction loadSettingsSchema(): Record<string, unknown> {\n\ttry {\n\t\treturn JSON.parse(readFileSync(new URL(\"./settings.schema.json\", import.meta.url), \"utf8\")) as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.warn(`[iosm] settings schema is missing or unreadable, using fallback validator: ${message}`);\n\t\treturn FALLBACK_SETTINGS_SCHEMA;\n\t}\n}\n\nconst settingsSchema = loadSettingsSchema();\nconst SETTINGS_SCHEMA_VALIDATOR = new Ajv({ allErrors: true, allowUnionTypes: true }).compile(settingsSchema);\n\nfunction nearestAllowedValue(value: number, allowed: readonly number[], fallback: number): number {\n\tif (!Number.isFinite(value)) return fallback;\n\tlet best = allowed[0] ?? fallback;\n\tlet bestDistance = Math.abs(best - value);\n\tfor (const candidate of allowed) {\n\t\tconst distance = Math.abs(candidate - value);\n\t\tif (distance < bestDistance) {\n\t\t\tbest = candidate;\n\t\t\tbestDistance = distance;\n\t\t}\n\t}\n\treturn best;\n}\n\n/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */\nfunction deepMergeSettings(base: Settings, overrides: Settings): Settings {\n\tconst result: Settings = { ...base };\n\n\tfor (const key of Object.keys(overrides) as (keyof Settings)[]) {\n\t\tconst overrideValue = overrides[key];\n\t\tconst baseValue = base[key];\n\n\t\tif (overrideValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// For nested objects, merge recursively\n\t\tif (\n\t\t\ttypeof overrideValue === \"object\" &&\n\t\t\toverrideValue !== null &&\n\t\t\t!Array.isArray(overrideValue) &&\n\t\t\ttypeof baseValue === \"object\" &&\n\t\t\tbaseValue !== null &&\n\t\t\t!Array.isArray(baseValue)\n\t\t) {\n\t\t\t(result as Record<string, unknown>)[key] = { ...baseValue, ...overrideValue };\n\t\t} else {\n\t\t\t// For primitives and arrays, override value wins\n\t\t\t(result as Record<string, unknown>)[key] = overrideValue;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\terror: Error;\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\n\tconstructor(cwd: string = process.cwd(), agentDir: string = getAgentDir()) {\n\t\tthis.globalSettingsPath = join(agentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(cwd, CONFIG_DIR_NAME, \"settings.json\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path = scope === \"global\" ? this.globalSettingsPath : this.projectSettingsPath;\n\t\tconst dir = dirname(path);\n\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\t// Only create directory and lock if file exists or we need to write\n\t\t\tconst fileExists = existsSync(path);\n\t\t\tif (fileExists) {\n\t\t\t\trelease = lockfile.lockSync(path, { realpath: false });\n\t\t\t}\n\t\t\tconst current = fileExists ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\tconst next = fn(current);\n\t\t\tif (next !== undefined) {\n\t\t\t\t// Only create directory when we actually need to write\n\t\t\t\tif (!existsSync(dir)) {\n\t\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t\t}\n\t\t\t\tif (!release) {\n\t\t\t\t\trelease = lockfile.lockSync(path, { realpath: false });\n\t\t\t\t}\n\t\t\t\twriteFileSync(path, next, \"utf-8\");\n\t\t\t}\n\t\t} finally {\n\t\t\tif (release) {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class InMemorySettingsStorage implements SettingsStorage {\n\tprivate global: string | undefined;\n\tprivate project: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : this.project;\n\t\tconst next = fn(current);\n\t\tif (next !== undefined) {\n\t\t\tif (scope === \"global\") {\n\t\t\t\tthis.global = next;\n\t\t\t} else {\n\t\t\t\tthis.project = next;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate settings: Settings;\n\tprivate modifiedFields = new Set<keyof Settings>(); // Track global fields modified during session\n\tprivate modifiedNestedFields = new Map<keyof Settings, Set<string>>(); // Track global nested field modifications\n\tprivate modifiedProjectFields = new Set<keyof Settings>(); // Track project fields modified during session\n\tprivate modifiedProjectNestedFields = new Map<keyof Settings, Set<string>>(); // Track project nested field modifications\n\tprivate globalSettingsLoadError: Error | null = null; // Track if global settings file had parse errors\n\tprivate projectSettingsLoadError: Error | null = null; // Track if project settings file had parse errors\n\tprivate writeQueue: Promise<void> = Promise.resolve();\n\tprivate errors: SettingsError[];\n\n\tprivate constructor(\n\t\tstorage: SettingsStorage,\n\t\tinitialGlobal: Settings,\n\t\tinitialProject: Settings,\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(cwd: string = process.cwd(), agentDir: string = getAgentDir()): SettingsManager {\n\t\tconst storage = new FileSettingsStorage(cwd, agentDir);\n\t\treturn SettingsManager.fromStorage(storage);\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage): SettingsManager {\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\");\n\t\tconst initialErrors: SettingsError[] = [];\n\t\tif (globalLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"global\", error: globalLoad.error });\n\t\t}\n\t\tif (projectLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"project\", error: projectLoad.error });\n\t\t}\n\n\t\treturn new SettingsManager(\n\t\t\tstorage,\n\t\t\tglobalLoad.settings,\n\t\t\tprojectLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t);\n\t}\n\n\t/** Create an in-memory SettingsManager (no file I/O) */\n\tstatic inMemory(settings: Partial<Settings> = {}): SettingsManager {\n\t\tconst storage = new InMemorySettingsStorage();\n\t\treturn new SettingsManager(storage, settings, {});\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope): Settings {\n\t\tlet content: string | undefined;\n\t\tstorage.withLock(scope, (current) => {\n\t\t\tcontent = current;\n\t\t\treturn undefined;\n\t\t});\n\n\t\tif (!content) {\n\t\t\treturn {};\n\t\t}\n\t\tconst settings = JSON.parse(content);\n\t\tconst migrated = SettingsManager.migrateSettings(settings);\n\t\tif (!SETTINGS_SCHEMA_VALIDATOR(migrated)) {\n\t\t\tconst issue = SETTINGS_SCHEMA_VALIDATOR.errors?.[0];\n\t\t\tconst location = issue?.instancePath || issue?.schemaPath || \"(unknown path)\";\n\t\t\tthrow new Error(`Invalid settings schema at ${location}: ${issue?.message ?? \"validation failed\"}`);\n\t\t}\n\t\treturn migrated;\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\t/** Migrate old settings format to new format */\n\tprivate static migrateSettings(settings: Record<string, unknown>): Settings {\n\t\t// Migrate queueMode -> steeringMode\n\t\tif (\"queueMode\" in settings && !(\"steeringMode\" in settings)) {\n\t\t\tsettings.steeringMode = settings.queueMode;\n\t\t\tdelete settings.queueMode;\n\t\t}\n\n\t\t// Migrate legacy websockets boolean -> transport enum\n\t\tif (!(\"transport\" in settings) && typeof settings.websockets === \"boolean\") {\n\t\t\tsettings.transport = settings.websockets ? \"websocket\" : \"sse\";\n\t\t\tdelete settings.websockets;\n\t\t}\n\n\t\t// Migrate old skills object format to new array format\n\t\tif (\n\t\t\t\"skills\" in settings &&\n\t\t\ttypeof settings.skills === \"object\" &&\n\t\t\tsettings.skills !== null &&\n\t\t\t!Array.isArray(settings.skills)\n\t\t) {\n\t\t\tconst skillsSettings = settings.skills as {\n\t\t\t\tenableSkillCommands?: boolean;\n\t\t\t\tcustomDirectories?: unknown;\n\t\t\t};\n\t\t\tif (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {\n\t\t\t\tsettings.enableSkillCommands = skillsSettings.enableSkillCommands;\n\t\t\t}\n\t\t\tif (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {\n\t\t\t\tsettings.skills = skillsSettings.customDirectories;\n\t\t\t} else {\n\t\t\t\tdelete settings.skills;\n\t\t\t}\n\t\t}\n\n\t\treturn settings as Settings;\n\t}\n\n\tgetGlobalSettings(): Settings {\n\t\treturn structuredClone(this.globalSettings);\n\t}\n\n\tgetProjectSettings(): Settings {\n\t\treturn structuredClone(this.projectSettings);\n\t}\n\n\treload(): void {\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(this.storage, \"global\");\n\t\tif (!globalLoad.error) {\n\t\t\tthis.globalSettings = globalLoad.settings;\n\t\t\tthis.globalSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.globalSettingsLoadError = globalLoad.error;\n\t\t\tthis.recordError(\"global\", globalLoad.error);\n\t\t}\n\n\t\tthis.modifiedFields.clear();\n\t\tthis.modifiedNestedFields.clear();\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\");\n\t\tif (!projectLoad.error) {\n\t\t\tthis.projectSettings = projectLoad.settings;\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Apply additional overrides on top of current settings */\n\tapplyOverrides(overrides: Partial<Settings>): void {\n\t\tthis.settings = deepMergeSettings(this.settings, overrides);\n\t}\n\n\t/** Mark a global field as modified during this session */\n\tprivate markModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedNestedFields.has(field)) {\n\t\t\t\tthis.modifiedNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\t/** Mark a project field as modified during this session */\n\tprivate markProjectModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedProjectFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedProjectNestedFields.has(field)) {\n\t\t\t\tthis.modifiedProjectNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedProjectNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsScope, error: unknown): void {\n\t\tconst normalizedError = error instanceof Error ? error : new Error(String(error));\n\t\tthis.errors.push({ scope, error: normalizedError });\n\t}\n\n\tprivate clearModifiedScope(scope: SettingsScope): void {\n\t\tif (scope === \"global\") {\n\t\t\tthis.modifiedFields.clear();\n\t\t\tthis.modifiedNestedFields.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\t}\n\n\tprivate enqueueWrite(scope: SettingsScope, task: () => void): void {\n\t\tthis.writeQueue = this.writeQueue\n\t\t\t.then(() => {\n\t\t\t\ttask();\n\t\t\t\tthis.clearModifiedScope(scope);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.recordError(scope, error);\n\t\t\t});\n\t}\n\n\tprivate cloneModifiedNestedFields(source: Map<keyof Settings, Set<string>>): Map<keyof Settings, Set<string>> {\n\t\tconst snapshot = new Map<keyof Settings, Set<string>>();\n\t\tfor (const [key, value] of source.entries()) {\n\t\t\tsnapshot.set(key, new Set(value));\n\t\t}\n\t\treturn snapshot;\n\t}\n\n\tprivate persistScopedSettings(\n\t\tscope: SettingsScope,\n\t\tsnapshotSettings: Settings,\n\t\tmodifiedFields: Set<keyof Settings>,\n\t\tmodifiedNestedFields: Map<keyof Settings, Set<string>>,\n\t): void {\n\t\tthis.storage.withLock(scope, (current) => {\n\t\t\tconst currentFileSettings = current\n\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(current) as Record<string, unknown>)\n\t\t\t\t: {};\n\t\t\tconst mergedSettings: Settings = { ...currentFileSettings };\n\t\t\tfor (const field of modifiedFields) {\n\t\t\t\tconst value = snapshotSettings[field];\n\t\t\t\tif (modifiedNestedFields.has(field) && typeof value === \"object\" && value !== null) {\n\t\t\t\t\tconst nestedModified = modifiedNestedFields.get(field)!;\n\t\t\t\t\tconst baseNested = (currentFileSettings[field] as Record<string, unknown>) ?? {};\n\t\t\t\t\tconst inMemoryNested = value as Record<string, unknown>;\n\t\t\t\t\tconst mergedNested = { ...baseNested };\n\t\t\t\t\tfor (const nestedKey of nestedModified) {\n\t\t\t\t\t\tmergedNested[nestedKey] = inMemoryNested[nestedKey];\n\t\t\t\t\t}\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = mergedNested;\n\t\t\t\t} else {\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn JSON.stringify(mergedSettings, null, 2);\n\t\t});\n\t}\n\n\tprivate save(): void {\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.globalSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotGlobalSettings = structuredClone(this.globalSettings);\n\t\tconst modifiedFields = new Set(this.modifiedFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedNestedFields);\n\n\t\tthis.enqueueWrite(\"global\", () => {\n\t\t\tthis.persistScopedSettings(\"global\", snapshotGlobalSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate saveProjectSettings(settings: Settings): void {\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.projectSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotProjectSettings = structuredClone(this.projectSettings);\n\t\tconst modifiedFields = new Set(this.modifiedProjectFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);\n\t\tthis.enqueueWrite(\"project\", () => {\n\t\t\tthis.persistScopedSettings(\"project\", snapshotProjectSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tasync flush(): Promise<void> {\n\t\tawait this.writeQueue;\n\t}\n\n\tdrainErrors(): SettingsError[] {\n\t\tconst drained = [...this.errors];\n\t\tthis.errors = [];\n\t\treturn drained;\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn this.settings.lastChangelogVersion;\n\t}\n\n\tsetLastChangelogVersion(version: string): void {\n\t\tthis.globalSettings.lastChangelogVersion = version;\n\t\tthis.markModified(\"lastChangelogVersion\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tsetDefaultProvider(provider: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModel(modelId: string): void {\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.steeringMode || \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.steeringMode = mode;\n\t\tthis.markModified(\"steeringMode\");\n\t\tthis.save();\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.followUpMode || \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.followUpMode = mode;\n\t\tthis.markModified(\"followUpMode\");\n\t\tthis.save();\n\t}\n\n\tgetStreamInputMode(): \"steer\" | \"followUp\" | \"meta\" {\n\t\treturn this.settings.streamInputMode || \"meta\";\n\t}\n\n\tsetStreamInputMode(mode: \"steer\" | \"followUp\" | \"meta\"): void {\n\t\tthis.globalSettings.streamInputMode = mode;\n\t\tthis.markModified(\"streamInputMode\");\n\t\tthis.save();\n\t}\n\n\tgetTheme(): string | undefined {\n\t\treturn this.settings.theme;\n\t}\n\n\tsetTheme(theme: string): void {\n\t\tthis.globalSettings.theme = theme;\n\t\tthis.markModified(\"theme\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | undefined {\n\t\treturn this.settings.defaultThinkingLevel;\n\t}\n\n\tsetDefaultThinkingLevel(level: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\"): void {\n\t\tthis.globalSettings.defaultThinkingLevel = level;\n\t\tthis.markModified(\"defaultThinkingLevel\");\n\t\tthis.save();\n\t}\n\n\tgetTransport(): TransportSetting {\n\t\treturn this.settings.transport ?? \"sse\";\n\t}\n\n\tsetTransport(transport: TransportSetting): void {\n\t\tthis.globalSettings.transport = transport;\n\t\tthis.markModified(\"transport\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? true;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.compaction) {\n\t\t\tthis.globalSettings.compaction = {};\n\t\t}\n\t\tthis.globalSettings.compaction.enabled = enabled;\n\t\tthis.markModified(\"compaction\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionReserveTokens(): number {\n\t\treturn this.settings.compaction?.reserveTokens ?? 16384;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn this.settings.compaction?.keepRecentTokens ?? 20000;\n\t}\n\n\tgetCompactionSettings(): { enabled: boolean; reserveTokens: number; keepRecentTokens: number } {\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tkeepRecentTokens: this.getCompactionKeepRecentTokens(),\n\t\t};\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean } {\n\t\treturn {\n\t\t\treserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: this.settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t}\n\n\tgetBranchSummarySkipPrompt(): boolean {\n\t\treturn this.settings.branchSummary?.skipPrompt ?? false;\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? true;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.retry) {\n\t\t\tthis.globalSettings.retry = {};\n\t\t}\n\t\tthis.globalSettings.retry.enabled = enabled;\n\t\tthis.markModified(\"retry\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number; maxDelayMs: number } {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: this.settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,\n\t\t\tmaxDelayMs: this.settings.retry?.maxDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetHideThinkingBlock(): boolean {\n\t\treturn this.settings.hideThinkingBlock ?? false;\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tthis.globalSettings.hideThinkingBlock = hide;\n\t\tthis.markModified(\"hideThinkingBlock\");\n\t\tthis.save();\n\t}\n\n\tgetShellPath(): string | undefined {\n\t\treturn this.settings.shellPath;\n\t}\n\n\tsetShellPath(path: string | undefined): void {\n\t\tthis.globalSettings.shellPath = path;\n\t\tthis.markModified(\"shellPath\");\n\t\tthis.save();\n\t}\n\n\tgetQuietStartup(): boolean {\n\t\treturn this.settings.quietStartup ?? false;\n\t}\n\n\tsetQuietStartup(quiet: boolean): void {\n\t\tthis.globalSettings.quietStartup = quiet;\n\t\tthis.markModified(\"quietStartup\");\n\t\tthis.save();\n\t}\n\n\tgetPermissionMode(): \"ask\" | \"auto\" | \"yolo\" {\n\t\treturn this.settings.permissionMode ?? \"ask\";\n\t}\n\n\tsetPermissionMode(mode: \"ask\" | \"auto\" | \"yolo\"): void {\n\t\tthis.globalSettings.permissionMode = mode;\n\t\tthis.markModified(\"permissionMode\");\n\t\tthis.save();\n\t}\n\n\tgetPermissionDenyRules(): string[] {\n\t\treturn [...(this.settings.permissionDeny ?? [])];\n\t}\n\n\tgetPermissionAllowRules(): string[] {\n\t\treturn [...(this.settings.permissionAllow ?? [])];\n\t}\n\n\tgetPermissionExtensionToolEnforcement(): boolean {\n\t\treturn this.settings.permissions?.extensionToolEnforcement ?? false;\n\t}\n\n\tgetSandboxEnabled(): boolean {\n\t\treturn this.settings.sandbox?.enabled ?? false;\n\t}\n\n\tsetSandboxEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.sandbox) {\n\t\t\tthis.globalSettings.sandbox = {};\n\t\t}\n\t\tthis.globalSettings.sandbox.enabled = enabled;\n\t\tthis.markModified(\"sandbox\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionExtensionToolEnforcement(enabled: boolean): void {\n\t\tif (!this.globalSettings.permissions) {\n\t\t\tthis.globalSettings.permissions = {};\n\t\t}\n\t\tthis.globalSettings.permissions.extensionToolEnforcement = enabled;\n\t\tthis.markModified(\"permissions\", \"extensionToolEnforcement\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionDenyRules(rules: string[]): void {\n\t\tthis.globalSettings.permissionDeny = [...rules];\n\t\tthis.markModified(\"permissionDeny\");\n\t\tthis.save();\n\t}\n\n\tsetPermissionAllowRules(rules: string[]): void {\n\t\tthis.globalSettings.permissionAllow = [...rules];\n\t\tthis.markModified(\"permissionAllow\");\n\t\tthis.save();\n\t}\n\n\tgetPromptContextEnableDedupe(): boolean {\n\t\treturn this.settings.promptContext?.enableContextDedupe ?? true;\n\t}\n\n\tgetPromptContextMaxCharsPerFile(): number {\n\t\tconst value = this.settings.promptContext?.maxContextCharsPerFile;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 4000;\n\t\treturn Math.max(1, Math.floor(value));\n\t}\n\n\tgetPromptContextMaxTotalChars(): number {\n\t\tconst value = this.settings.promptContext?.maxTotalContextChars;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 12000;\n\t\treturn Math.max(1, Math.floor(value));\n\t}\n\n\tgetPromptContextEnableGitSnapshotContext(): boolean {\n\t\treturn this.settings.promptContext?.enableGitSnapshotContext ?? false;\n\t}\n\n\tgetPromptContextGitSnapshotMaxChars(): number {\n\t\tconst value = this.settings.promptContext?.gitSnapshotMaxChars;\n\t\tif (typeof value !== \"number\" || !Number.isFinite(value)) return 2000;\n\t\treturn Math.max(256, Math.floor(value));\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn this.settings.shellCommandPrefix;\n\t}\n\n\tsetShellCommandPrefix(prefix: string | undefined): void {\n\t\tthis.globalSettings.shellCommandPrefix = prefix;\n\t\tthis.markModified(\"shellCommandPrefix\");\n\t\tthis.save();\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn this.settings.collapseChangelog ?? false;\n\t}\n\n\tsetCollapseChangelog(collapse: boolean): void {\n\t\tthis.globalSettings.collapseChangelog = collapse;\n\t\tthis.markModified(\"collapseChangelog\");\n\t\tthis.save();\n\t}\n\n\tgetPackages(): PackageSource[] {\n\t\treturn [...(this.settings.packages ?? [])];\n\t}\n\n\tsetPackages(packages: PackageSource[]): void {\n\t\tthis.globalSettings.packages = packages;\n\t\tthis.markModified(\"packages\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPackages(packages: PackageSource[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tthis.markProjectModified(\"packages\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [...(this.settings.extensions ?? [])];\n\t}\n\n\tsetExtensionPaths(paths: string[]): void {\n\t\tthis.globalSettings.extensions = paths;\n\t\tthis.markModified(\"extensions\");\n\t\tthis.save();\n\t}\n\n\tsetProjectExtensionPaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tthis.markProjectModified(\"extensions\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [...(this.settings.skills ?? [])];\n\t}\n\n\tsetSkillPaths(paths: string[]): void {\n\t\tthis.globalSettings.skills = paths;\n\t\tthis.markModified(\"skills\");\n\t\tthis.save();\n\t}\n\n\tsetProjectSkillPaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tthis.markProjectModified(\"skills\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [...(this.settings.prompts ?? [])];\n\t}\n\n\tsetPromptTemplatePaths(paths: string[]): void {\n\t\tthis.globalSettings.prompts = paths;\n\t\tthis.markModified(\"prompts\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPromptTemplatePaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tthis.markProjectModified(\"prompts\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [...(this.settings.themes ?? [])];\n\t}\n\n\tsetThemePaths(paths: string[]): void {\n\t\tthis.globalSettings.themes = paths;\n\t\tthis.markModified(\"themes\");\n\t\tthis.save();\n\t}\n\n\tsetProjectThemePaths(paths: string[]): void {\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tthis.markProjectModified(\"themes\");\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn this.settings.enableSkillCommands ?? true;\n\t}\n\n\tsetEnableSkillCommands(enabled: boolean): void {\n\t\tthis.globalSettings.enableSkillCommands = enabled;\n\t\tthis.markModified(\"enableSkillCommands\");\n\t\tthis.save();\n\t}\n\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined {\n\t\treturn this.settings.thinkingBudgets;\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn this.settings.terminal?.showImages ?? true;\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showImages = show;\n\t\tthis.markModified(\"terminal\", \"showImages\");\n\t\tthis.save();\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tif (this.settings.terminal?.clearOnShrink !== undefined) {\n\t\t\treturn this.settings.terminal.clearOnShrink;\n\t\t}\n\t\treturn process.env[ENV_CLEAR_ON_SHRINK] === \"1\" || process.env.PI_CLEAR_ON_SHRINK === \"1\";\n\t}\n\n\tsetClearOnShrink(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.clearOnShrink = enabled;\n\t\tthis.markModified(\"terminal\", \"clearOnShrink\");\n\t\tthis.save();\n\t}\n\n\tgetCompactFooter(): boolean {\n\t\treturn this.settings.terminal?.compactFooter ?? false;\n\t}\n\n\tsetCompactFooter(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.compactFooter = enabled;\n\t\tthis.markModified(\"terminal\", \"compactFooter\");\n\t\tthis.save();\n\t}\n\n\tgetImageAutoResize(): boolean {\n\t\treturn this.settings.images?.autoResize ?? true;\n\t}\n\n\tsetImageAutoResize(enabled: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.autoResize = enabled;\n\t\tthis.markModified(\"images\", \"autoResize\");\n\t\tthis.save();\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn this.settings.images?.blockImages ?? false;\n\t}\n\n\tsetBlockImages(blocked: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.blockImages = blocked;\n\t\tthis.markModified(\"images\", \"blockImages\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchEnabled(): boolean {\n\t\treturn this.settings.webSearch?.enabled ?? true;\n\t}\n\n\tsetWebSearchEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.enabled = enabled;\n\t\tthis.markModified(\"webSearch\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchProviderMode(): \"auto\" | \"tavily\" {\n\t\tconst mode = this.settings.webSearch?.providerMode;\n\t\treturn WEB_SEARCH_PROVIDER_MODES.includes(mode as (typeof WEB_SEARCH_PROVIDER_MODES)[number]) ? mode! : \"auto\";\n\t}\n\n\tsetWebSearchProviderMode(mode: \"auto\" | \"tavily\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.providerMode = mode;\n\t\tthis.markModified(\"webSearch\", \"providerMode\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchFallbackMode(): \"searxng_ddg\" | \"searxng_only\" | \"none\" {\n\t\tconst mode = this.settings.webSearch?.fallbackMode;\n\t\treturn WEB_SEARCH_FALLBACK_MODES.includes(mode as (typeof WEB_SEARCH_FALLBACK_MODES)[number]) ? mode! : \"searxng_ddg\";\n\t}\n\n\tsetWebSearchFallbackMode(mode: \"searxng_ddg\" | \"searxng_only\" | \"none\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.fallbackMode = mode;\n\t\tthis.markModified(\"webSearch\", \"fallbackMode\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchSafeSearch(): \"off\" | \"moderate\" | \"strict\" {\n\t\tconst mode = this.settings.webSearch?.safeSearch;\n\t\treturn WEB_SEARCH_SAFE_SEARCH_MODES.includes(mode as (typeof WEB_SEARCH_SAFE_SEARCH_MODES)[number]) ? mode! : \"moderate\";\n\t}\n\n\tsetWebSearchSafeSearch(mode: \"off\" | \"moderate\" | \"strict\"): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.safeSearch = mode;\n\t\tthis.markModified(\"webSearch\", \"safeSearch\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchMaxResults(): 3 | 5 | 8 | 10 | 15 {\n\t\tconst value = this.settings.webSearch?.maxResults;\n\t\tif (typeof value !== \"number\") return 8;\n\t\tif (WEB_SEARCH_MAX_RESULTS_VALUES.includes(value as (typeof WEB_SEARCH_MAX_RESULTS_VALUES)[number])) {\n\t\t\treturn value as 3 | 5 | 8 | 10 | 15;\n\t\t}\n\t\treturn nearestAllowedValue(value, WEB_SEARCH_MAX_RESULTS_VALUES, 8) as 3 | 5 | 8 | 10 | 15;\n\t}\n\n\tsetWebSearchMaxResults(maxResults: number): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.maxResults = nearestAllowedValue(maxResults, WEB_SEARCH_MAX_RESULTS_VALUES, 8);\n\t\tthis.markModified(\"webSearch\", \"maxResults\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchTimeoutSeconds(): 10 | 20 | 30 | 45 | 60 {\n\t\tconst value = this.settings.webSearch?.timeoutSeconds;\n\t\tif (typeof value !== \"number\") return 20;\n\t\tif (WEB_SEARCH_TIMEOUT_VALUES.includes(value as (typeof WEB_SEARCH_TIMEOUT_VALUES)[number])) {\n\t\t\treturn value as 10 | 20 | 30 | 45 | 60;\n\t\t}\n\t\treturn nearestAllowedValue(value, WEB_SEARCH_TIMEOUT_VALUES, 20) as 10 | 20 | 30 | 45 | 60;\n\t}\n\n\tsetWebSearchTimeoutSeconds(timeoutSeconds: number): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tthis.globalSettings.webSearch.timeoutSeconds = nearestAllowedValue(timeoutSeconds, WEB_SEARCH_TIMEOUT_VALUES, 20);\n\t\tthis.markModified(\"webSearch\", \"timeoutSeconds\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchTavilyApiKey(): string | undefined {\n\t\tconst key = this.settings.webSearch?.tavilyApiKey;\n\t\tif (typeof key !== \"string\") return undefined;\n\t\tconst normalized = key.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisWebSearchTavilyApiKeyConfigured(): boolean {\n\t\treturn this.getWebSearchTavilyApiKey() !== undefined;\n\t}\n\n\tsetWebSearchTavilyApiKey(apiKey: string | undefined): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tconst normalized = apiKey?.trim();\n\t\tthis.globalSettings.webSearch.tavilyApiKey = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"webSearch\", \"tavilyApiKey\");\n\t\tthis.save();\n\t}\n\n\tgetWebSearchSearxngUrl(): string | undefined {\n\t\tconst url = this.settings.webSearch?.searxngUrl;\n\t\tif (typeof url !== \"string\") return undefined;\n\t\tconst normalized = url.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisWebSearchSearxngUrlConfigured(): boolean {\n\t\treturn this.getWebSearchSearxngUrl() !== undefined;\n\t}\n\n\tsetWebSearchSearxngUrl(url: string | undefined): void {\n\t\tif (!this.globalSettings.webSearch) {\n\t\t\tthis.globalSettings.webSearch = {};\n\t\t}\n\t\tconst normalized = url?.trim();\n\t\tthis.globalSettings.webSearch.searxngUrl = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"webSearch\", \"searxngUrl\");\n\t\tthis.save();\n\t}\n\n\tgetGithubToolsNetworkEnabled(): boolean {\n\t\treturn this.settings.githubTools?.networkEnabled ?? false;\n\t}\n\n\tgetDbToolsSettings(): DbToolsSettings {\n\t\tconst dbTools = this.settings.dbTools;\n\t\tif (!dbTools) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst connections: Record<string, DbToolsConnectionSettings> = {};\n\t\tfor (const [name, connection] of Object.entries(dbTools.connections ?? {})) {\n\t\t\tconst normalizedName = name.trim();\n\t\t\tif (!normalizedName || !connection) continue;\n\t\t\tconnections[normalizedName] = {\n\t\t\t\tadapter: connection.adapter,\n\t\t\t\tdsnEnv: connection.dsnEnv?.trim() || undefined,\n\t\t\t\tsqlitePath: connection.sqlitePath?.trim() || undefined,\n\t\t\t\tclientArgs: Array.isArray(connection.clientArgs) ? [...connection.clientArgs] : undefined,\n\t\t\t\tmigrate: connection.migrate\n\t\t\t\t\t? {\n\t\t\t\t\t\tscript: connection.migrate.script?.trim() || undefined,\n\t\t\t\t\t\tcwd: connection.migrate.cwd?.trim() || undefined,\n\t\t\t\t\t\targs: Array.isArray(connection.migrate.args) ? [...connection.migrate.args] : undefined,\n\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tdefaultConnection: dbTools.defaultConnection?.trim() || undefined,\n\t\t\tconnections,\n\t\t};\n\t}\n\n\tsetGithubToolsNetworkEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.githubTools) {\n\t\t\tthis.globalSettings.githubTools = {};\n\t\t}\n\t\tthis.globalSettings.githubTools.networkEnabled = enabled;\n\t\tthis.markModified(\"githubTools\", \"networkEnabled\");\n\t\tthis.save();\n\t}\n\n\tgetGithubToolsToken(): string | undefined {\n\t\tconst token = this.settings.githubTools?.token;\n\t\tif (typeof token !== \"string\") return undefined;\n\t\tconst normalized = token.trim();\n\t\treturn normalized.length > 0 ? normalized : undefined;\n\t}\n\n\tisGithubToolsTokenConfigured(): boolean {\n\t\treturn this.getGithubToolsToken() !== undefined;\n\t}\n\n\tsetGithubToolsToken(token: string | undefined): void {\n\t\tif (!this.globalSettings.githubTools) {\n\t\t\tthis.globalSettings.githubTools = {};\n\t\t}\n\t\tconst normalized = token?.trim();\n\t\tthis.globalSettings.githubTools.token = normalized && normalized.length > 0 ? normalized : undefined;\n\t\tthis.markModified(\"githubTools\", \"token\");\n\t\tthis.save();\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn this.settings.enabledModels;\n\t}\n\n\tsetEnabledModels(patterns: string[] | undefined): void {\n\t\tthis.globalSettings.enabledModels = patterns;\n\t\tthis.markModified(\"enabledModels\");\n\t\tthis.save();\n\t}\n\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\" {\n\t\treturn this.settings.doubleEscapeAction ?? \"tree\";\n\t}\n\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void {\n\t\tthis.globalSettings.doubleEscapeAction = action;\n\t\tthis.markModified(\"doubleEscapeAction\");\n\t\tthis.save();\n\t}\n\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\" {\n\t\tconst mode = this.settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t}\n\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void {\n\t\tthis.globalSettings.treeFilterMode = mode;\n\t\tthis.markModified(\"treeFilterMode\");\n\t\tthis.save();\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\tconst envValue = process.env[ENV_HARDWARE_CURSOR] ?? process.env.PI_HARDWARE_CURSOR;\n\t\treturn this.settings.showHardwareCursor ?? envValue === \"1\";\n\t}\n\n\tsetShowHardwareCursor(enabled: boolean): void {\n\t\tthis.globalSettings.showHardwareCursor = enabled;\n\t\tthis.markModified(\"showHardwareCursor\");\n\t\tthis.save();\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn this.settings.editorPaddingX ?? 0;\n\t}\n\n\tsetEditorPaddingX(padding: number): void {\n\t\tthis.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tthis.markModified(\"editorPaddingX\");\n\t\tthis.save();\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn this.settings.autocompleteMaxVisible ?? 5;\n\t}\n\n\tsetAutocompleteMaxVisible(maxVisible: number): void {\n\t\tthis.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tthis.markModified(\"autocompleteMaxVisible\");\n\t\tthis.save();\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn this.settings.markdown?.codeBlockIndent ?? \" \";\n\t}\n\n\tgetTelegramSettings(): {\n\t\tenabled: boolean;\n\t\tbotToken?: string;\n\t\tallowedUserIds: number[];\n\t\ttransport: \"long-polling\";\n\t\tchatDefaults: {\n\t\t\tstatusEditThrottleMs: number;\n\t\t\tmaxSummaryChars: number;\n\t\t};\n\t} {\n\t\tconst raw = this.settings.telegram;\n\t\tconst allowedUserIds = Array.isArray(raw?.allowedUserIds)\n\t\t\t? raw.allowedUserIds\n\t\t\t\t.filter((value): value is number => typeof value === \"number\" && Number.isFinite(value))\n\t\t\t\t.map((value) => Math.trunc(value))\n\t\t\t: [];\n\t\tconst transport = raw?.transport === \"long-polling\" ? \"long-polling\" : \"long-polling\";\n\t\tconst statusEditThrottleRaw = raw?.chatDefaults?.statusEditThrottleMs;\n\t\tconst maxSummaryCharsRaw = raw?.chatDefaults?.maxSummaryChars;\n\t\tconst statusEditThrottleMs =\n\t\t\ttypeof statusEditThrottleRaw === \"number\" && Number.isFinite(statusEditThrottleRaw)\n\t\t\t\t? Math.max(300, Math.trunc(statusEditThrottleRaw))\n\t\t\t\t: 1200;\n\t\tconst maxSummaryChars =\n\t\t\ttypeof maxSummaryCharsRaw === \"number\" && Number.isFinite(maxSummaryCharsRaw)\n\t\t\t\t? Math.max(256, Math.trunc(maxSummaryCharsRaw))\n\t\t\t\t: 3000;\n\n\t\treturn {\n\t\t\tenabled: raw?.enabled ?? false,\n\t\t\tbotToken: raw?.botToken?.trim() || undefined,\n\t\t\tallowedUserIds,\n\t\t\ttransport,\n\t\t\tchatDefaults: {\n\t\t\t\tstatusEditThrottleMs,\n\t\t\t\tmaxSummaryChars,\n\t\t\t},\n\t\t};\n\t}\n\n\tsetTelegramSettings(settings: TelegramSettings): void {\n\t\tthis.globalSettings.telegram = structuredClone(settings);\n\t\tthis.markModified(\"telegram\");\n\t\tthis.save();\n\t}\n}\n"]}
@@ -44,6 +44,27 @@
44
44
  }
45
45
  }
46
46
  },
47
+ "terminal": {
48
+ "type": "object",
49
+ "additionalProperties": true,
50
+ "properties": {
51
+ "showImages": {
52
+ "type": "boolean",
53
+ "default": true,
54
+ "description": "Render images inline when the terminal supports it."
55
+ },
56
+ "clearOnShrink": {
57
+ "type": "boolean",
58
+ "default": false,
59
+ "description": "Clear trailing rows when content shrinks to avoid stale artifacts."
60
+ },
61
+ "compactFooter": {
62
+ "type": "boolean",
63
+ "default": false,
64
+ "description": "Use a compact single-line footer layout."
65
+ }
66
+ }
67
+ },
47
68
  "webSearch": {
48
69
  "type": "object",
49
70
  "additionalProperties": true,
@@ -1 +1 @@
1
- {"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../../src/core/subagents.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACpE,WAAW,EAAE,yBAAyB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,yBAAyB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,WAAW,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAkOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAKnD;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAmB7C;AAiBD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BvE;AAED,wBAAgB,8BAA8B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,GAC1E,MAAM,GAAG,SAAS,CAuCpB;AAgJD,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CA+FlG"}
1
+ {"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../../src/core/subagents.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACpE,WAAW,EAAE,yBAAyB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,yBAAyB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,yBAAyB,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,WAAW,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAsOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAKnD;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACrC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAmB7C;AAiBD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BvE;AAED,wBAAgB,8BAA8B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,GAC1E,MAAM,GAAG,SAAS,CAuCpB;AAgJD,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CA+FlG"}
@@ -192,6 +192,9 @@ const BUILTIN_SUBAGENTS = [
192
192
  "- Decide number of delegates based on task complexity (usually 1-10), and prefer higher fan-out when the work naturally splits.",
193
193
  "- For medium/complex work, target aggressive safe parallel fan-out (commonly >=3 delegates) when independent slices exist.",
194
194
  "- If the user asked for N parallel agents, match that fan-out when feasible or explain the exact blocker.",
195
+ "- Delegates are child task calls only; do not count plain tool invocations (read/bash/grep/etc.) as delegated agents.",
196
+ "- Assign explicit ownership domains per delegate before execution to reduce duplicate findings and overlap.",
197
+ "- If overlap is unavoidable, declare a primary owner and a secondary verifier for that overlap zone.",
195
198
  "- If a delegate owns a task that still contains multiple independent slices, that delegate should split again with nested delegates instead of executing everything alone.",
196
199
  "- Run independent read-heavy work in parallel by emitting multiple delegate blocks.",
197
200
  "- For write-capable delegates touching overlapping areas, provide lock_key to avoid edit collisions.",
@@ -218,6 +221,7 @@ const BUILTIN_SUBAGENTS = [
218
221
  "- concise execution summary",
219
222
  "- delegated work breakdown",
220
223
  "- verification status",
224
+ "- observed-vs-estimated metrics (mark unknown when evidence is missing)",
221
225
  "- residual risks/assumptions",
222
226
  ].join("\n"),
223
227
  },