@caupulican/pi-adaptative 0.80.70 → 0.80.71
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.
- package/CHANGELOG.md +9 -0
- package/dist/core/catalog-manager.d.ts +1 -1
- package/dist/core/catalog-manager.d.ts.map +1 -1
- package/dist/core/catalog-manager.js +0 -0
- package/dist/core/catalog-manager.js.map +1 -1
- package/dist/core/gateways/channel-provider.d.ts.map +1 -1
- package/dist/core/gateways/channel-provider.js +7 -0
- package/dist/core/gateways/channel-provider.js.map +1 -1
- package/dist/core/memory/effectiveness-tracker.d.ts.map +1 -1
- package/dist/core/memory/effectiveness-tracker.js +11 -2
- package/dist/core/memory/effectiveness-tracker.js.map +1 -1
- package/dist/core/memory/providers/file-store.d.ts.map +1 -1
- package/dist/core/memory/providers/file-store.js +4 -0
- package/dist/core/memory/providers/file-store.js.map +1 -1
- package/dist/core/memory/providers/transcript-recall.d.ts.map +1 -1
- package/dist/core/memory/providers/transcript-recall.js +12 -2
- package/dist/core/memory/providers/transcript-recall.js.map +1 -1
- package/dist/core/security/untrusted-boundary.d.ts.map +1 -1
- package/dist/core/security/untrusted-boundary.js +5 -3
- package/dist/core/security/untrusted-boundary.js.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +4 -3
- package/dist/core/settings-manager.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -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 \"@caupulican/pi-ai\";\nimport { createHash } from \"crypto\";\nimport { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync } from \"fs\";\nimport { minimatch } from \"minimatch\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join, relative, resolve, sep } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, getAgentDir, getProfilesDir } from \"../config.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\nimport { ProfileRegistry } from \"./profile-registry.ts\";\nimport { mergeResourceProfileMap } from \"./resource-profile-blocks.ts\";\nimport { validateSkillName } from \"./skills.ts\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface SemanticMemoryGcSettings {\n\tenabled?: boolean; // default: true\n\tpreserveRecentPages?: number; // default: 2\n\tminChars?: number; // default: 1200\n\tmarkers?: string[]; // default: Automata/Mind XML-ish response tags\n}\n\nexport interface ContextGcSettings {\n\tenabled?: boolean; // default: true\n\tpreserveRecentMessages?: number; // default: 12\n\tminToolResultChars?: number; // default: 2500\n\ttools?: string[]; // default: read,bash,rg,grep,context_headroom_retrieve,headroom_retrieve\n\tsemanticMemory?: SemanticMemoryGcSettings;\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 ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\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\tprovider?: ProviderRetrySettings;\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\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 WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport interface SelfModificationSettings {\n\tenabled?: boolean; // default: false\n\tsourcePath?: string; // Single pi-adaptative source tree path (legacy; still honored)\n\tsourcePaths?: string[]; // Ordered candidate source trees; first existing wins. Enables portable WSL/Termux switching from settings alone.\n}\n\nexport type AutoLearnThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\nexport interface AutoLearnSettings {\n\tenabled?: boolean; // default: false - autonomously trigger background history scavenging for long sessions\n\tmodel?: string; // \"active\" or omitted uses the current session model; otherwise a pi --model pattern\n\tthinkingLevel?: AutoLearnThinkingLevel; // default: low for background learner subprocesses\n\tlongSessionMessages?: number; // default: 64\n\tlongSessionContextPercent?: number; // default: 85\n\tcooldownMinutes?: number; // default: 1440 per session tenant (manual /auto-learn run bypasses)\n\tleaseMinutes?: number; // default: 90 for background learner state leases\n\tmaxConcurrentLearners?: number; // default: 2 per session tenant\n\tapplyHighConfidence?: boolean; // default: false unless the learning extension config opts in\n\treflectionReview?: boolean; // default: true when Auto Learn is enabled - post-turn review after corrective/complex turns\n\treflectionMinToolCalls?: number; // default: 12 tool calls in a turn before reflection review triggers\n\treflectionCooldownMinutes?: number; // default: 1440 per session tenant for reflection reviews\n\tcomplexTaskToolCalls?: number; // default: 12 tool calls before bypassing reflection cooldown as a complex task\n}\n\nexport type AutonomyMode = \"off\" | \"safe\" | \"balanced\" | \"full\";\n\nexport interface AutonomySettings {\n\tmode?: AutonomyMode; // default: off; presets drive Auto Learn/reflection without many knobs\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 type ResourceProfileKind = \"extensions\" | \"skills\" | \"prompts\" | \"themes\" | \"agents\" | \"tools\";\n\nexport interface ResourceProfileFilterSettings {\n\t/** Allowlist patterns. When non-empty, only matching resources stay available. */\n\tallow?: string[];\n\t/** Blocklist patterns. Applied after allow. */\n\tblock?: string[];\n}\n\nexport type ResourceProfileSettings = Partial<Record<ResourceProfileKind, ResourceProfileFilterSettings>>;\n\nexport interface DisabledResourcesSettings {\n\textensions?: string[];\n\tskills?: string[];\n\tprompts?: string[];\n\tthemes?: string[];\n\tagents?: string[];\n\ttools?: string[];\n}\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: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\t/** Resource catalog directory (round resource management): the folder pi installs/updates/backs up from. */\n\tcatalogDir?: string;\n\tcompaction?: CompactionSettings;\n\tcontextGc?: ContextGcSettings;\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\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths/directories or include/exclude patterns\n\tskills?: string[]; // Array of local skill file paths/directories or include/exclude patterns\n\tprompts?: string[]; // Array of local prompt template paths/directories or include/exclude patterns\n\tthemes?: string[]; // Array of local theme file paths/directories or include/exclude patterns\n\texternalResourceRoots?: string[]; // External directory roots to scan for resources\n\ttrustedResourceRoots?: string[]; // Explicitly trusted external directory roots (canonical absolute paths)\n\tdisabledResources?: DisabledResourcesSettings; // Legacy reversible block filters for extensions/skills/prompts/themes/agents/tools\n\tresourceProfiles?: Record<string, ResourceProfileSettings>; // Named resource allow/block filters\n\tactiveResourceProfile?: string | string[]; // Active profile name(s), applied after global/project/directory settings merge\n\tactiveResourceProfiles?: string[]; // Active profile names, equivalent to activeResourceProfile array\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\twarnings?: WarningSettings;\n\tselfModification?: SelfModificationSettings; // Local guardrails for modifying the pi-adaptative source/harness\n\tautonomy?: AutonomySettings; // Low-config autonomy preset controlling background learning/reflection defaults\n\tautoLearn?: AutoLearnSettings; // Setting-gated autonomous background learning for long sessions\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\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\nfunction toPosixPath(p: string): string {\n\treturn p.split(sep).join(\"/\");\n}\n\nfunction findDirectoryProfileRoot(cwd: string): string {\n\tlet current = resolvePath(cwd);\n\twhile (true) {\n\t\tfor (const marker of [\".git\", \".hg\", \".svn\"]) {\n\t\t\ttry {\n\t\t\t\tstatSync(join(current, marker));\n\t\t\t\treturn current;\n\t\t\t} catch {}\n\t\t}\n\t\tconst parent = resolve(current, \"..\");\n\t\tif (parent === current) return resolvePath(cwd);\n\t\tcurrent = parent;\n\t}\n}\n\nexport interface DirectoryResourceProfileInfo {\n\troot: string;\n\thash: string;\n\tpath: string;\n}\n\nexport function getDirectoryResourceProfileInfo(\n\tcwd: string,\n\tagentDir: string = getAgentDir(),\n): DirectoryResourceProfileInfo {\n\tconst root = findDirectoryProfileRoot(cwd);\n\tconst hash = createHash(\"sha256\").update(root).digest(\"hex\").slice(0, 16);\n\treturn {\n\t\troot,\n\t\thash,\n\t\tpath: join(resolvePath(agentDir), \"resource-profiles\", hash, \"settings.json\"),\n\t};\n}\n\nexport function matchesResourceProfilePattern(resourcePath: string, patterns: string[], baseDir = \"\"): boolean {\n\tif (patterns.length === 0) return false;\n\tconst resolvedBase = baseDir ? resolvePath(baseDir) : \"\";\n\tconst rel = resolvedBase ? toPosixPath(relative(resolvedBase, resourcePath)) : toPosixPath(resourcePath);\n\tconst name = basename(resourcePath);\n\tconst filePathPosix = toPosixPath(resourcePath);\n\tconst parentDir = dirname(resourcePath);\n\tconst parentRel = resolvedBase ? toPosixPath(relative(resolvedBase, parentDir)) : toPosixPath(parentDir);\n\tconst parentName = basename(parentDir);\n\tconst parentDirPosix = toPosixPath(parentDir);\n\n\treturn patterns.some((pattern) => {\n\t\tconst normalizedPattern = toPosixPath(pattern);\n\t\treturn (\n\t\t\tminimatch(rel, normalizedPattern) ||\n\t\t\tminimatch(name, normalizedPattern) ||\n\t\t\tminimatch(filePathPosix, normalizedPattern) ||\n\t\t\tminimatch(parentRel, normalizedPattern) ||\n\t\t\tminimatch(parentName, normalizedPattern) ||\n\t\t\tminimatch(parentDirPosix, normalizedPattern)\n\t\t);\n\t});\n}\n\nfunction normalizeResourceProfileNames(value: unknown): string[] {\n\tconst values: string[] = [];\n\tconst add = (candidate: unknown) => {\n\t\tif (Array.isArray(candidate)) {\n\t\t\tfor (const item of candidate) add(item);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof candidate === \"string\") {\n\t\t\tfor (const part of candidate.split(\",\")) {\n\t\t\t\tconst trimmed = part.trim();\n\t\t\t\tif (trimmed) values.push(trimmed);\n\t\t\t}\n\t\t}\n\t};\n\tadd(value);\n\treturn [...new Set(values)];\n}\n\nfunction normalizeActiveResourceProfiles(settings: Settings): string[] {\n\tconst explicitProfiles = normalizeResourceProfileNames(settings.activeResourceProfiles);\n\tconst values =\n\t\texplicitProfiles.length > 0 ? explicitProfiles : normalizeResourceProfileNames(settings.activeResourceProfile);\n\tif (values.length === 0 && settings.resourceProfiles?.default) {\n\t\tvalues.push(\"default\");\n\t}\n\treturn [...new Set(values)];\n}\n\nfunction appendFilter(target: ResourceProfileFilterSettings, source?: ResourceProfileFilterSettings): void {\n\tif (!source) return;\n\tif (Array.isArray(source.allow)) target.allow = [...(target.allow ?? []), ...source.allow];\n\tif (Array.isArray(source.block)) target.block = [...(target.block ?? []), ...source.block];\n}\n\nfunction collectLegacyDisabledFilterFromSettings(\n\tsettings: Settings,\n\tkind: ResourceProfileKind,\n): ResourceProfileFilterSettings {\n\tconst legacyDisabled = settings.disabledResources?.[kind];\n\treturn Array.isArray(legacyDisabled) ? { block: legacyDisabled } : {};\n}\n\nfunction mergeResourceProfileFilters(...filters: ResourceProfileFilterSettings[]): ResourceProfileFilterSettings {\n\tconst result: ResourceProfileFilterSettings = {};\n\tfor (const filter of filters) appendFilter(result, filter);\n\treturn result;\n}\n\nfunction parseTimeoutSetting(value: unknown, settingName: string): number | undefined {\n\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\tif (timeoutMs !== undefined) {\n\t\treturn timeoutMs;\n\t}\n\tif (value !== undefined) {\n\t\tthrow new Error(`Invalid ${settingName} setting: ${String(value)}`);\n\t}\n\treturn undefined;\n}\n\nexport type ThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\nexport interface ProfileDefinitionInput {\n\tname?: string;\n\tdescription?: string;\n\tmodel?: string;\n\tthinking?: ThinkingLevel;\n\t/**\n\t * Situational identity (R6): a system-prompt prefix injected while this profile is active, so a\n\t * profile becomes a full \"situation\" = soul + capabilities + model/thinking, switched atomically.\n\t */\n\tsoul?: string;\n\tresources: ResourceProfileSettings;\n}\n\nexport type ProfilePersistenceScope = \"session\" | \"directory\" | \"project\" | \"global\" | \"reusable-file\";\n\nconst VALID_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"] as const;\nfunction isThinkingLevel(value: unknown): value is ThinkingLevel {\n\treturn typeof value === \"string\" && VALID_THINKING_LEVELS.includes(value as ThinkingLevel);\n}\n\nfunction asStringArrayWithPattern(value: unknown): string[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\tconst values = value.filter((item): item is string => typeof item === \"string\" && item.trim().length > 0);\n\treturn values.length > 0 ? values : undefined;\n}\n\nfunction normalizeProfileFilterResource(value: unknown): ResourceProfileFilterSettings {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new Error(\"resource profile filter must be an object\");\n\t}\n\tconst filter = value as Record<string, unknown>;\n\treturn {\n\t\tallow: asStringArrayWithPattern(filter.allow),\n\t\tblock: asStringArrayWithPattern(filter.block),\n\t};\n}\n\nfunction normalizeProfileResources(value: unknown): ResourceProfileSettings {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new Error(\"resources must be an object\");\n\t}\n\tconst input = value as Record<string, unknown>;\n\tconst result: ResourceProfileSettings = {};\n\tfor (const kind of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"agents\", \"tools\"] as const) {\n\t\tif (input[kind] === undefined) continue;\n\t\tresult[kind] = normalizeProfileFilterResource(input[kind]);\n\t}\n\treturn result;\n}\n\nfunction parseProfileFileDefinition(content: string): ProfileDefinitionInput {\n\tconst parsed = JSON.parse(content) as Record<string, unknown>;\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(\"profile file must contain a JSON object\");\n\t}\n\tconst name = typeof parsed.name === \"string\" ? parsed.name.trim() : undefined;\n\tif (!name) {\n\t\tthrow new Error(\"profile name is required\");\n\t}\n\tconst resourceSection = parsed.resources ?? {};\n\treturn {\n\t\tname,\n\t\tdescription: typeof parsed.description === \"string\" ? parsed.description.trim() || undefined : undefined,\n\t\tmodel: typeof parsed.model === \"string\" ? parsed.model.trim() || undefined : undefined,\n\t\tthinking: isThinkingLevel(parsed.thinking) ? parsed.thinking : undefined,\n\t\tsoul: typeof parsed.soul === \"string\" ? parsed.soul.trim() || undefined : undefined,\n\t\tresources: normalizeProfileResources(resourceSection),\n\t};\n}\n\nexport type SettingsScope = \"global\" | \"project\" | \"directoryProfile\";\nexport type SettingsErrorScope = SettingsScope;\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n\tgetProfilesDir?(): string;\n}\n\nexport interface SettingsError {\n\tscope: SettingsErrorScope;\n\terror: Error;\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\tprivate directoryProfileInfo: DirectoryResourceProfileInfo;\n\tprivate profilesDir: string;\n\n\tconstructor(cwd: string, agentDir: string) {\n\t\tconst resolvedCwd = resolvePath(cwd);\n\t\tconst resolvedAgentDir = resolvePath(agentDir);\n\t\tthis.globalSettingsPath = join(resolvedAgentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(resolvedCwd, CONFIG_DIR_NAME, \"settings.json\");\n\t\tthis.directoryProfileInfo = getDirectoryResourceProfileInfo(resolvedCwd, resolvedAgentDir);\n\t\tthis.profilesDir = getProfilesDir(resolvedAgentDir);\n\t}\n\n\tgetDirectoryResourceProfileInfo(): DirectoryResourceProfileInfo {\n\t\treturn { ...this.directoryProfileInfo };\n\t}\n\n\tgetProfilesDir(): string {\n\t\treturn this.profilesDir;\n\t}\n\n\treadDirectoryResourceProfile(): string | undefined {\n\t\tconst path = this.directoryProfileInfo.path;\n\t\treturn existsSync(path) ? readFileSync(path, \"utf-8\") : undefined;\n\t}\n\n\tprivate acquireLockSyncWithRetry(path: string): () => void {\n\t\tconst maxAttempts = 10;\n\t\tconst delayMs = 20;\n\t\tlet lastError: unknown;\n\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(path, { realpath: false });\n\t\t\t} catch (error) {\n\t\t\t\tconst code =\n\t\t\t\t\ttypeof error === \"object\" && error !== null && \"code\" in error\n\t\t\t\t\t\t? String((error as { code?: unknown }).code)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Sleep synchronously to avoid changing callers to async.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow (lastError as Error) ?? new Error(\"Failed to acquire settings lock\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path =\n\t\t\tscope === \"global\"\n\t\t\t\t? this.globalSettingsPath\n\t\t\t\t: scope === \"project\"\n\t\t\t\t\t? this.projectSettingsPath\n\t\t\t\t\t: this.directoryProfileInfo.path;\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 = this.acquireLockSyncWithRetry(path);\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 = this.acquireLockSyncWithRetry(path);\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\tprivate directoryProfile: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : scope === \"project\" ? this.project : this.directoryProfile;\n\t\tconst next = fn(current);\n\t\tif (next === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (scope === \"global\") {\n\t\t\tthis.global = next;\n\t\t\treturn;\n\t\t}\n\t\tif (scope === \"project\") {\n\t\t\tthis.project = next;\n\t\t\treturn;\n\t\t}\n\t\tthis.directoryProfile = next;\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate directoryProfileSettings: Settings;\n\tprivate runtimeResourceProfiles: string[] | undefined;\n\tprivate inlineResourceProfileDefinitions: Record<string, ResourceProfileSettings> = {};\n\tprivate discoveredResourceProfileDefinitions: Record<string, ResourceProfileSettings> = {};\n\tsettings: Settings;\n\tprivate projectTrusted: boolean;\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 directoryProfileInfo: DirectoryResourceProfileInfo | null = null;\n\tprivate profileRegistry!: ProfileRegistry;\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\tinitialDirectoryProfile: Settings = {},\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t\tprojectTrusted = true,\n\t\tdirectoryProfileInfo: DirectoryResourceProfileInfo | null = null,\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.directoryProfileSettings = initialDirectoryProfile;\n\t\tthis.projectTrusted = projectTrusted;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.directoryProfileInfo = directoryProfileInfo;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settings = this.mergeEffectiveSettings();\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\tprivate createProfileRegistry(): ProfileRegistry {\n\t\treturn new ProfileRegistry({\n\t\t\tglobalSettings: this.globalSettings,\n\t\t\tprojectSettings: this.projectSettings,\n\t\t\tdirectoryProfileSettings: this.directoryProfileSettings,\n\t\t\tinlineResourceProfileDefinitions: this.inlineResourceProfileDefinitions,\n\t\t\tdiscoveredResourceProfileDefinitions: this.discoveredResourceProfileDefinitions,\n\t\t\tprofilesDir: this.storage.getProfilesDir?.(),\n\t\t\texternalResourceRoots: this.getEffectiveExternalResourceRoots(),\n\t\t});\n\t}\n\n\tprivate profileDiagnosticKeys = new Set<string>();\n\tprivate reportProfileDiagnostic(scope: SettingsErrorScope, message: string): void {\n\t\tconst key = `${scope}:${message}`;\n\t\tif (this.profileDiagnosticKeys.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.profileDiagnosticKeys.add(key);\n\t\tthis.errors.push({ scope, error: new Error(message) });\n\t}\n\n\tprivate getActiveProfileNamesForDiagnostics(): string[] {\n\t\t// Mirror getActiveResourceProfileNames()'s source precedence (runtime profiles from\n\t\t// --resource-profile take priority) so a bad runtime profile name still surfaces a\n\t\t// \"profile not found\" diagnostic instead of silently applying zero filtering.\n\t\tif (this.runtimeResourceProfiles && this.runtimeResourceProfiles.length > 0) {\n\t\t\treturn normalizeResourceProfileNames(this.runtimeResourceProfiles);\n\t\t}\n\t\tconst explicitProfiles =\n\t\t\tthis.settings.activeResourceProfiles && this.settings.activeResourceProfiles.length > 0\n\t\t\t\t? this.settings.activeResourceProfiles\n\t\t\t\t: this.settings.activeResourceProfile\n\t\t\t\t\t? [this.settings.activeResourceProfile]\n\t\t\t\t\t: [];\n\t\treturn normalizeResourceProfileNames(explicitProfiles);\n\t}\n\n\tprivate refreshProfileRegistry(): void {\n\t\tthis.profileDiagnosticKeys.clear();\n\t\tthis.profileRegistry = this.createProfileRegistry();\n\t\tconst registryDiagnostics = this.profileRegistry.listDiagnostics();\n\t\tfor (const diagnostic of registryDiagnostics) {\n\t\t\tconst path = diagnostic.path ? ` (${diagnostic.path})` : \"\";\n\t\t\tthis.reportProfileDiagnostic(\"global\", `Profile diagnostic${path}: ${diagnostic.message}`);\n\t\t}\n\t\tfor (const profileName of this.getActiveProfileNamesForDiagnostics()) {\n\t\t\tif (!this.profileRegistry.getProfile(profileName)) {\n\t\t\t\tthis.reportProfileDiagnostic(\"global\", `Active profile not found: ${profileName}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate mergeEffectiveSettings(): Settings {\n\t\tlet merged = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t\tmerged = deepMergeSettings(merged, this.directoryProfileSettings);\n\t\tif (this.runtimeResourceProfiles) {\n\t\t\tmerged = deepMergeSettings(merged, { activeResourceProfiles: this.runtimeResourceProfiles });\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate recomputeSettings(): void {\n\t\tthis.settings = this.mergeEffectiveSettings();\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(\n\t\tcwd: string,\n\t\tagentDir: string = getAgentDir(),\n\t\toptions: SettingsManagerCreateOptions = {},\n\t): SettingsManager {\n\t\tconst storage = new FileSettingsStorage(cwd, agentDir);\n\t\treturn SettingsManager.fromStorage(storage, options);\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\tconst projectTrusted = options.projectTrusted ?? true;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\", projectTrusted);\n\t\tconst directoryProfileLoad = SettingsManager.tryLoadDirectoryProfileFromStorage(storage);\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\t\tif (directoryProfileLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"directoryProfile\", error: directoryProfileLoad.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\tdirectoryProfileLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t\tprojectTrusted,\n\t\t\tdirectoryProfileLoad.info,\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\tconst initialSettings = SettingsManager.migrateSettings(structuredClone(settings) as Record<string, unknown>);\n\t\tstorage.withLock(\"global\", () => JSON.stringify(initialSettings, null, 2));\n\t\treturn SettingsManager.fromStorage(storage);\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope, projectTrusted = true): Settings {\n\t\tif (scope === \"project\" && !projectTrusted) {\n\t\t\treturn {};\n\t\t}\n\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\treturn SettingsManager.migrateSettings(settings);\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t\tprojectTrusted = true,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope, projectTrusted), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\tprivate static tryLoadDirectoryProfileFromStorage(storage: SettingsStorage): {\n\t\tsettings: Settings;\n\t\terror: Error | null;\n\t\tinfo: DirectoryResourceProfileInfo | null;\n\t} {\n\t\tif (!(storage instanceof FileSettingsStorage)) {\n\t\t\treturn { settings: {}, error: null, info: null };\n\t\t}\n\t\tconst info = storage.getDirectoryResourceProfileInfo();\n\t\ttry {\n\t\t\tconst content = storage.readDirectoryResourceProfile();\n\t\t\tif (!content) return { settings: {}, error: null, info };\n\t\t\tconst settings = JSON.parse(content);\n\t\t\treturn { settings: SettingsManager.migrateSettings(settings), error: null, info };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error, info };\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\t// Migrate retry.maxDelayMs -> retry.provider.maxRetryDelayMs\n\t\tif (\n\t\t\t\"retry\" in settings &&\n\t\t\ttypeof settings.retry === \"object\" &&\n\t\t\tsettings.retry !== null &&\n\t\t\t!Array.isArray(settings.retry)\n\t\t) {\n\t\t\tconst retrySettings = settings.retry as Record<string, unknown>;\n\t\t\tconst providerSettings =\n\t\t\t\ttypeof retrySettings.provider === \"object\" && retrySettings.provider !== null\n\t\t\t\t\t? (retrySettings.provider as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tif (\n\t\t\t\ttypeof retrySettings.maxDelayMs === \"number\" &&\n\t\t\t\t(providerSettings?.maxRetryDelayMs === undefined || providerSettings?.maxRetryDelayMs === null)\n\t\t\t) {\n\t\t\t\tretrySettings.provider = {\n\t\t\t\t\t...(providerSettings ?? {}),\n\t\t\t\t\tmaxRetryDelayMs: retrySettings.maxDelayMs,\n\t\t\t\t};\n\t\t\t}\n\t\t\tdelete retrySettings.maxDelayMs;\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\tgetDirectoryResourceProfileSettings(): Settings {\n\t\treturn structuredClone(this.directoryProfileSettings);\n\t}\n\n\tgetDirectoryResourceProfileInfo(): DirectoryResourceProfileInfo | null {\n\t\treturn this.directoryProfileInfo ? { ...this.directoryProfileInfo } : null;\n\t}\n\n\tgetProfileRegistry(): ProfileRegistry {\n\t\tthis.refreshProfileRegistry();\n\t\treturn this.profileRegistry;\n\t}\n\n\tgetActiveResourceProfileNames(): string[] {\n\t\tif (this.runtimeResourceProfiles && this.runtimeResourceProfiles.length > 0) {\n\t\t\treturn [...this.runtimeResourceProfiles];\n\t\t}\n\t\treturn normalizeActiveResourceProfiles(this.settings);\n\t}\n\n\tgetResourceProfileFilter(kind: ResourceProfileKind): Required<ResourceProfileFilterSettings> {\n\t\tconst legacyFilter = mergeResourceProfileFilters(\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.globalSettings, kind),\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.projectSettings, kind),\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.directoryProfileSettings, kind),\n\t\t);\n\t\tconst profileFilter: ResourceProfileFilterSettings = {};\n\t\tconst seenProfiles = new Set<string>();\n\t\tconst registry = this.getProfileRegistry();\n\t\tfor (const profileName of this.getActiveResourceProfileNames()) {\n\t\t\tif (seenProfiles.has(profileName)) continue;\n\t\t\tseenProfiles.add(profileName);\n\t\t\tappendFilter(profileFilter, registry.getProfile(profileName)?.resources[kind]);\n\t\t}\n\t\tconst filter = mergeResourceProfileFilters(legacyFilter, profileFilter);\n\t\treturn {\n\t\t\tallow: [...new Set(filter.allow ?? [])],\n\t\t\tblock: [...new Set(filter.block ?? [])],\n\t\t};\n\t}\n\n\tisResourceAllowedByProfile(kind: ResourceProfileKind, resourcePath: string, baseDir = \"\"): boolean {\n\t\tconst filter = this.getResourceProfileFilter(kind);\n\t\tif (filter.allow.length > 0 && !matchesResourceProfilePattern(resourcePath, filter.allow, baseDir)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (matchesResourceProfilePattern(resourcePath, filter.block, baseDir)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Situational soul(s) of the currently active profile(s) (R6): a system-prompt identity prefix\n\t * injected while the profile is active. Multiple active profiles' souls are concatenated.\n\t */\n\tgetActiveProfileSoul(): string | undefined {\n\t\tconst registry = this.getProfileRegistry();\n\t\tconst souls: string[] = [];\n\t\tconst seen = new Set<string>();\n\t\tfor (const profileName of this.getActiveResourceProfileNames()) {\n\t\t\tif (seen.has(profileName)) continue;\n\t\t\tseen.add(profileName);\n\t\t\tconst soul = registry.getProfile(profileName)?.soul?.trim();\n\t\t\tif (soul) souls.push(soul);\n\t\t}\n\t\treturn souls.length > 0 ? souls.join(\"\\n\\n\") : undefined;\n\t}\n\n\tisProjectTrusted(): boolean {\n\t\treturn this.projectTrusted;\n\t}\n\n\tsetProjectTrusted(trusted: boolean): void {\n\t\tif (this.projectTrusted === trusted) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.projectTrusted = trusted;\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tif (!trusted) {\n\t\t\tthis.projectSettings = {};\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t\tthis.recomputeSettings();\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", trusted);\n\t\tthis.projectSettings = projectLoad.settings;\n\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\tif (projectLoad.error) {\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\t\tthis.recomputeSettings();\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tawait this.writeQueue;\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\", this.projectTrusted);\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\tconst directoryProfileLoad = SettingsManager.tryLoadDirectoryProfileFromStorage(this.storage);\n\t\tthis.directoryProfileInfo = directoryProfileLoad.info;\n\t\tif (!directoryProfileLoad.error) {\n\t\t\tthis.directoryProfileSettings = directoryProfileLoad.settings;\n\t\t} else {\n\t\t\tthis.recordError(\"directoryProfile\", directoryProfileLoad.error);\n\t\t}\n\n\t\tthis.recomputeSettings();\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/** Select runtime-only resource profiles, e.g. from CLI/subagent launch options. */\n\tsetRuntimeResourceProfiles(profileNames: string[]): void {\n\t\tthis.runtimeResourceProfiles = profileNames.length > 0 ? [...profileNames] : undefined;\n\t\tthis.recomputeSettings();\n\t}\n\n\t/** Add one-shot profile definitions from CLI/SDK/ephemeral agent launch input. Never writes to disk. */\n\taddInlineResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.inlineResourceProfileDefinitions = mergeResourceProfileMap(this.inlineResourceProfileDefinitions, profiles);\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Replace profile definitions discovered inside loaded resource files. Never writes to disk. */\n\treplaceDiscoveredResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.discoveredResourceProfileDefinitions = { ...profiles };\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Add profile definitions discovered after resource resolution, e.g. context agent files. Never writes to disk. */\n\taddDiscoveredResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.discoveredResourceProfileDefinitions = mergeResourceProfileMap(\n\t\t\tthis.discoveredResourceProfileDefinitions,\n\t\t\tprofiles,\n\t\t);\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\tprivate normalizeProfileName(profileName: string): string {\n\t\tconst trimmed = profileName.trim();\n\t\tif (!trimmed) {\n\t\t\tthrow new Error(\"Profile name is required\");\n\t\t}\n\t\tconst errors = validateSkillName(trimmed);\n\t\tif (errors.length > 0) {\n\t\t\tthrow new Error(`Invalid profile name \"${trimmed}\": ${errors.join(\", \")}`);\n\t\t}\n\t\treturn trimmed;\n\t}\n\n\tprivate sanitizeProfileResources(resources: ResourceProfileSettings): ResourceProfileSettings {\n\t\tconst result: ResourceProfileSettings = {};\n\t\tfor (const kind of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"agents\", \"tools\"] as const) {\n\t\t\tconst filter = resources[kind];\n\t\t\tif (!filter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult[kind] = {\n\t\t\t\tallow: filter.allow ? [...filter.allow] : undefined,\n\t\t\t\tblock: filter.block ? [...filter.block] : undefined,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate setActiveProfileInSettings(settings: Settings, profileName: string | undefined): void {\n\t\tif (profileName) {\n\t\t\tsettings.activeResourceProfile = profileName;\n\t\t\tsettings.activeResourceProfiles = [profileName];\n\t\t\treturn;\n\t\t}\n\t\tdelete settings.activeResourceProfiles;\n\t\tdelete settings.activeResourceProfile;\n\t}\n\n\tprivate persistDirectoryProfiles(update: (settings: Settings) => void): void {\n\t\tconst next = structuredClone(this.directoryProfileSettings);\n\t\tupdate(next);\n\t\tthis.directoryProfileSettings = next;\n\t\tthis.recomputeSettings();\n\n\t\tif (!this.directoryProfileInfo) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.enqueueWrite(\"directoryProfile\", () => {\n\t\t\tthis.storage.withLock(\"directoryProfile\", (current) => {\n\t\t\t\tconst currentSettings = current\n\t\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(current) as Record<string, unknown>)\n\t\t\t\t\t: {};\n\t\t\t\tconst merged: Settings = {\n\t\t\t\t\t...currentSettings,\n\t\t\t\t\t...next,\n\t\t\t\t\tresourceProfiles: next.resourceProfiles,\n\t\t\t\t\tactiveResourceProfiles: next.activeResourceProfiles,\n\t\t\t\t\tactiveResourceProfile: next.activeResourceProfile,\n\t\t\t\t};\n\t\t\t\tif (!next.resourceProfiles) {\n\t\t\t\t\tdelete merged.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (!next.activeResourceProfiles && next.activeResourceProfile === undefined) {\n\t\t\t\t\tdelete merged.activeResourceProfiles;\n\t\t\t\t\tdelete merged.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\treturn JSON.stringify(merged, null, 2);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate getProfileFilePath(profileName: string): string {\n\t\tconst normalized = this.normalizeProfileName(profileName);\n\t\tconst profilesDir = this.storage.getProfilesDir?.();\n\t\tif (!profilesDir) {\n\t\t\tthrow new Error(\"Profiles directory is not configured\");\n\t\t}\n\t\treturn join(resolve(profilesDir), `${normalized}.json`);\n\t}\n\n\t/**\n\t * Create or update a profile definition in the selected persistence scope.\n\t */\n\tsetProfileDefinition(profileName: string, definition: ProfileDefinitionInput, scope: ProfilePersistenceScope): void {\n\t\tconst name = this.normalizeProfileName(profileName);\n\t\tconst resources = this.sanitizeProfileResources(definition.resources);\n\n\t\tif (scope === \"session\") {\n\t\t\tconst next = { ...this.inlineResourceProfileDefinitions };\n\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\tnext[name] = resources;\n\t\t\t} else {\n\t\t\t\tdelete next[name];\n\t\t\t}\n\t\t\tthis.inlineResourceProfileDefinitions = next;\n\t\t\tthis.refreshProfileRegistry();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = structuredClone(this.globalSettings);\n\t\t\tnext.resourceProfiles = { ...(next.resourceProfiles ?? {}) };\n\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\tnext.resourceProfiles[name] = resources;\n\t\t\t} else {\n\t\t\t\tdelete next.resourceProfiles[name];\n\t\t\t}\n\t\t\tif (Object.keys(next.resourceProfiles).length === 0) {\n\t\t\t\tdelete next.resourceProfiles;\n\t\t\t}\n\t\t\tthis.globalSettings = next;\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = structuredClone(settings.resourceProfiles ?? {});\n\t\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\t\tnext[name] = resources;\n\t\t\t\t} else {\n\t\t\t\t\tdelete next[name];\n\t\t\t\t}\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete settings.resourceProfiles;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tconst next = { ...(current.resourceProfiles ?? {}) };\n\t\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\t\tnext[name] = resources;\n\t\t\t\t} else {\n\t\t\t\t\tdelete next[name];\n\t\t\t\t}\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete current.resourceProfiles;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst path = this.getProfileFilePath(name);\n\t\tconst existing = existsSync(path)\n\t\t\t? parseProfileFileDefinition(readFileSync(path, \"utf-8\"))\n\t\t\t: { name, resources: {} };\n\t\tconst payload: ProfileDefinitionInput = {\n\t\t\t...existing,\n\t\t\tname,\n\t\t\tresources,\n\t\t\tdescription: definition.description ?? existing.description,\n\t\t\tmodel: definition.model ?? existing.model,\n\t\t\tthinking: definition.thinking ?? existing.thinking,\n\t\t};\n\t\tmkdirSync(dirname(path), { recursive: true });\n\t\twriteFileSync(path, JSON.stringify(payload, null, 2), \"utf-8\");\n\t}\n\n\t/**\n\t * Delete a profile from the selected scope.\n\t */\n\tdeleteProfile(profileName: string, scope: ProfilePersistenceScope): void {\n\t\tconst name = this.normalizeProfileName(profileName);\n\n\t\tif (scope === \"session\") {\n\t\t\tconst next = { ...this.inlineResourceProfileDefinitions };\n\t\t\tdelete next[name];\n\t\t\tthis.inlineResourceProfileDefinitions = next;\n\t\t\tthis.refreshProfileRegistry();\n\t\t\tif (this.runtimeResourceProfiles) {\n\t\t\t\tthis.setRuntimeResourceProfiles(this.runtimeResourceProfiles.filter((profile) => profile !== name));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = { ...(this.globalSettings.resourceProfiles ?? {}) };\n\t\t\tdelete next[name];\n\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\tthis.globalSettings.resourceProfiles = next;\n\t\t\t} else {\n\t\t\t\tdelete this.globalSettings.resourceProfiles;\n\t\t\t}\n\t\t\tif (this.globalSettings.activeResourceProfile === name) {\n\t\t\t\tdelete this.globalSettings.activeResourceProfile;\n\t\t\t}\n\t\t\tif (this.globalSettings.activeResourceProfiles) {\n\t\t\t\tthis.globalSettings.activeResourceProfiles = this.globalSettings.activeResourceProfiles.filter(\n\t\t\t\t\t(profile) => profile !== name,\n\t\t\t\t);\n\t\t\t\tif (this.globalSettings.activeResourceProfiles.length === 0) {\n\t\t\t\t\tdelete this.globalSettings.activeResourceProfiles;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = { ...(settings.resourceProfiles ?? {}) };\n\t\t\t\tdelete next[name];\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete settings.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfile === name) {\n\t\t\t\t\tdelete settings.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfiles) {\n\t\t\t\t\tsettings.activeResourceProfiles = settings.activeResourceProfiles.filter((profile) => profile !== name);\n\t\t\t\t\tif (settings.activeResourceProfiles.length === 0) {\n\t\t\t\t\t\tdelete settings.activeResourceProfiles;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tconst next = { ...(current.resourceProfiles ?? {}) };\n\t\t\t\tdelete next[name];\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete current.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfile === name) {\n\t\t\t\t\tdelete current.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfiles) {\n\t\t\t\t\tcurrent.activeResourceProfiles = current.activeResourceProfiles.filter((profile) => profile !== name);\n\t\t\t\t\tif (current.activeResourceProfiles.length === 0) {\n\t\t\t\t\t\tdelete current.activeResourceProfiles;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst profilePath = this.getProfileFilePath(name);\n\t\tif (!existsSync(profilePath)) {\n\t\t\tthrow new Error(`Profile not found: ${name}`);\n\t\t}\n\t\trmSync(profilePath, { force: true });\n\t}\n\n\trenameProfile(profileName: string, newProfileName: string, scope: ProfilePersistenceScope): void {\n\t\tconst oldName = this.normalizeProfileName(profileName);\n\t\tconst newName = this.normalizeProfileName(newProfileName);\n\t\tif (oldName === newName) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"session\") {\n\t\t\tconst profile = this.inlineResourceProfileDefinitions[oldName];\n\t\t\tif (!profile) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tdelete this.inlineResourceProfileDefinitions[oldName];\n\t\t\tthis.inlineResourceProfileDefinitions[newName] = profile;\n\t\t\tif (this.runtimeResourceProfiles) {\n\t\t\t\tthis.runtimeResourceProfiles = this.runtimeResourceProfiles.map((name) =>\n\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t);\n\t\t\t\tthis.setRuntimeResourceProfiles(this.runtimeResourceProfiles);\n\t\t\t}\n\t\t\tthis.refreshProfileRegistry();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = structuredClone(this.globalSettings);\n\t\t\tif (!next.resourceProfiles?.[oldName]) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tif (next.resourceProfiles[newName]) {\n\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t}\n\t\t\tnext.resourceProfiles[newName] = next.resourceProfiles[oldName]!;\n\t\t\tdelete next.resourceProfiles[oldName];\n\t\t\tif (next.activeResourceProfile === oldName) {\n\t\t\t\tnext.activeResourceProfile = newName;\n\t\t\t}\n\t\t\tif (next.activeResourceProfiles) {\n\t\t\t\tnext.activeResourceProfiles = next.activeResourceProfiles.map((name) =>\n\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.globalSettings = next;\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.markModified(\"activeResourceProfile\");\n\t\t\tthis.markModified(\"activeResourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = structuredClone(settings.resourceProfiles ?? {});\n\t\t\t\tif (!next[oldName]) {\n\t\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t\t}\n\t\t\t\tif (next[newName]) {\n\t\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t\t}\n\t\t\t\tnext[newName] = next[oldName]!;\n\t\t\t\tdelete next[oldName];\n\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\tif (settings.activeResourceProfile === oldName) {\n\t\t\t\t\tsettings.activeResourceProfile = newName;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfiles) {\n\t\t\t\t\tsettings.activeResourceProfiles = settings.activeResourceProfiles.map((name) =>\n\t\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tconst next = structuredClone(this.directoryProfileSettings.resourceProfiles ?? {});\n\t\t\tif (!next[oldName]) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tif (next[newName]) {\n\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t}\n\t\t\tnext[newName] = next[oldName]!;\n\t\t\tdelete next[oldName];\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\tif (current.activeResourceProfile === oldName) {\n\t\t\t\t\tcurrent.activeResourceProfile = newName;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfiles) {\n\t\t\t\t\tcurrent.activeResourceProfiles = current.activeResourceProfiles.map((name) =>\n\t\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst oldPath = this.getProfileFilePath(oldName);\n\t\tconst newPath = this.getProfileFilePath(newName);\n\t\tif (!existsSync(oldPath)) {\n\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t}\n\t\tif (existsSync(newPath)) {\n\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t}\n\t\tconst parsed = parseProfileFileDefinition(readFileSync(oldPath, \"utf-8\"));\n\t\tparsed.name = newName;\n\t\twriteFileSync(newPath, JSON.stringify(parsed, null, 2), \"utf-8\");\n\t\trmSync(oldPath, { force: true });\n\t}\n\n\t/**\n\t * Set active profile selection in the selected scope.\n\t */\n\tsetActiveProfile(profileName: string | undefined, scope: Exclude<ProfilePersistenceScope, \"reusable-file\">): void {\n\t\tconst name = profileName ? this.normalizeProfileName(profileName) : undefined;\n\t\tif (scope === \"session\") {\n\t\t\tif (name) {\n\t\t\t\tthis.setRuntimeResourceProfiles([name]);\n\t\t\t} else {\n\t\t\t\tthis.setRuntimeResourceProfiles([]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tif (name) {\n\t\t\t\tthis.globalSettings.activeResourceProfile = name;\n\t\t\t\tthis.globalSettings.activeResourceProfiles = [name];\n\t\t\t} else {\n\t\t\t\tdelete this.globalSettings.activeResourceProfile;\n\t\t\t\tdelete this.globalSettings.activeResourceProfiles;\n\t\t\t}\n\t\t\tthis.markModified(\"activeResourceProfile\");\n\t\t\tthis.markModified(\"activeResourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"activeResourceProfile\", (settings) => {\n\t\t\t\tthis.setActiveProfileInSettings(settings, name);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\tthis.setActiveProfileInSettings(current, name);\n\t\t});\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 assertProjectTrustedForWrite(): void {\n\t\tif (!this.projectTrusted) {\n\t\t\tthrow new Error(\"Project is not trusted; refusing to write project settings\");\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsErrorScope, 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\tif (scope === \"project\") {\n\t\t\t\t\tthis.assertProjectTrustedForWrite();\n\t\t\t\t}\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.recomputeSettings();\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.assertProjectTrustedForWrite();\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.recomputeSettings();\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\tprivate updateProjectSettings(field: keyof Settings, update: (settings: Settings) => void): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tupdate(projectSettings);\n\t\tthis.markProjectModified(field);\n\t\tthis.saveProjectSettings(projectSettings);\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\tgetSessionDir(): string | undefined {\n\t\tconst sessionDir = this.settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\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\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\t/** The configured resource catalog directory, if any (round resource management). */\n\tgetCatalogDir(): string | undefined {\n\t\treturn this.settings.catalogDir;\n\t}\n\n\tsetCatalogDir(dir: string | undefined): void {\n\t\tif (dir) {\n\t\t\tthis.globalSettings.catalogDir = dir;\n\t\t} else {\n\t\t\tdelete this.globalSettings.catalogDir;\n\t\t}\n\t\tthis.markModified(\"catalogDir\");\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 ?? \"auto\";\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\tgetContextGcSettings(): {\n\t\tenabled: boolean;\n\t\tpreserveRecentMessages: number;\n\t\tminToolResultChars: number;\n\t\ttools: string[];\n\t\tsemanticMemory: {\n\t\t\tenabled: boolean;\n\t\t\tpreserveRecentPages: number;\n\t\t\tminChars: number;\n\t\t\tmarkers: string[];\n\t\t};\n\t} {\n\t\treturn {\n\t\t\tenabled: this.settings.contextGc?.enabled ?? true,\n\t\t\tpreserveRecentMessages: this.settings.contextGc?.preserveRecentMessages ?? 8,\n\t\t\tminToolResultChars: this.settings.contextGc?.minToolResultChars ?? 1200,\n\t\t\ttools: this.settings.contextGc?.tools ?? [\n\t\t\t\t\"read\",\n\t\t\t\t\"bash\",\n\t\t\t\t\"rg\",\n\t\t\t\t\"grep\",\n\t\t\t\t\"find\",\n\t\t\t\t\"ls\",\n\t\t\t\t\"skill_open\",\n\t\t\t\t\"automata_graph_status\",\n\t\t\t\t\"automata_graph_search\",\n\t\t\t\t\"automata_graph_query\",\n\t\t\t\t\"automata_graph_neighbors\",\n\t\t\t\t\"automata_graph_path\",\n\t\t\t\t\"automata_graph_pointer_pack\",\n\t\t\t\t\"learning_query_memory\",\n\t\t\t\t\"subagent\",\n\t\t\t\t\"task_steps\",\n\t\t\t\t\"task_background\",\n\t\t\t\t\"task_goal\",\n\t\t\t\t\"run_ledger\",\n\t\t\t\t\"context_headroom_retrieve\",\n\t\t\t\t\"headroom_retrieve\",\n\t\t\t],\n\t\t\tsemanticMemory: {\n\t\t\t\tenabled: this.settings.contextGc?.semanticMemory?.enabled ?? true,\n\t\t\t\tpreserveRecentPages: this.settings.contextGc?.semanticMemory?.preserveRecentPages ?? 1,\n\t\t\t\tminChars: this.settings.contextGc?.semanticMemory?.minChars ?? 900,\n\t\t\t\tmarkers: this.settings.contextGc?.semanticMemory?.markers ?? [\n\t\t\t\t\t\"<automata_context\",\n\t\t\t\t\t\"<automata_response\",\n\t\t\t\t\t\"<automata_query\",\n\t\t\t\t\t\"<automata_fetch\",\n\t\t\t\t\t\"<memory_lifecycle_audit\",\n\t\t\t\t\t\"<memory_lifecycle_purge\",\n\t\t\t\t\t\"<automata_doctor\",\n\t\t\t\t\t\"<automata_optimizer\",\n\t\t\t\t\t\"<automata_mesh\",\n\t\t\t\t],\n\t\t\t},\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 } {\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};\n\t}\n\n\tgetHttpIdleTimeoutMs(): number {\n\t\treturn parseTimeoutSetting(this.settings.httpIdleTimeoutMs, \"httpIdleTimeoutMs\") ?? DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t}\n\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void {\n\t\tif (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tthis.globalSettings.httpIdleTimeoutMs = Math.floor(timeoutMs);\n\t\tthis.markModified(\"httpIdleTimeoutMs\");\n\t\tthis.save();\n\t}\n\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number } {\n\t\treturn {\n\t\t\ttimeoutMs: this.settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: this.settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: this.settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetWebSocketConnectTimeoutMs(): number | undefined {\n\t\treturn parseTimeoutSetting(this.settings.websocketConnectTimeoutMs, \"websocketConnectTimeoutMs\");\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\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\tgetNpmCommand(): string[] | undefined {\n\t\treturn this.settings.npmCommand ? [...this.settings.npmCommand] : undefined;\n\t}\n\n\tsetNpmCommand(command: string[] | undefined): void {\n\t\tthis.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tthis.markModified(\"npmCommand\");\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\tgetEnableInstallTelemetry(): boolean {\n\t\treturn this.settings.enableInstallTelemetry ?? true;\n\t}\n\n\tsetEnableInstallTelemetry(enabled: boolean): void {\n\t\tthis.globalSettings.enableInstallTelemetry = enabled;\n\t\tthis.markModified(\"enableInstallTelemetry\");\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\tthis.updateProjectSettings(\"packages\", (settings) => {\n\t\t\tsettings.packages = packages;\n\t\t});\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\tthis.updateProjectSettings(\"extensions\", (settings) => {\n\t\t\tsettings.extensions = paths;\n\t\t});\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\tthis.updateProjectSettings(\"skills\", (settings) => {\n\t\t\tsettings.skills = paths;\n\t\t});\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\tthis.updateProjectSettings(\"prompts\", (settings) => {\n\t\t\tsettings.prompts = paths;\n\t\t});\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\tthis.updateProjectSettings(\"themes\", (settings) => {\n\t\t\tsettings.themes = paths;\n\t\t});\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\tgetImageWidthCells(): number {\n\t\tconst width = this.settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t}\n\n\tsetImageWidthCells(width: number): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.markModified(\"terminal\", \"imageWidthCells\");\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.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\tgetShowTerminalProgress(): boolean {\n\t\treturn this.settings.terminal?.showTerminalProgress ?? false;\n\t}\n\n\tsetShowTerminalProgress(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tthis.markModified(\"terminal\", \"showTerminalProgress\");\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\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\treturn this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === \"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\tgetWarnings(): WarningSettings {\n\t\treturn { ...(this.settings.warnings ?? {}) };\n\t}\n\n\tsetWarnings(warnings: WarningSettings): void {\n\t\tthis.globalSettings.warnings = { ...warnings };\n\t\tthis.markModified(\"warnings\");\n\t\tthis.save();\n\t}\n\n\tgetSelfModificationSettings(): { enabled: boolean; sourcePath?: string; sourcePaths?: string[] } {\n\t\treturn {\n\t\t\tenabled: this.settings.selfModification?.enabled ?? false,\n\t\t\tsourcePath: this.settings.selfModification?.sourcePath,\n\t\t\tsourcePaths: this.settings.selfModification?.sourcePaths,\n\t\t};\n\t}\n\n\tsetSelfModificationSettings(settings: SelfModificationSettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tconst existing = projectSettings.selfModification;\n\t\t\tprojectSettings.selfModification = {\n\t\t\t\t...existing,\n\t\t\t\t...settings,\n\t\t\t\tsourcePaths: settings.sourcePaths ?? existing?.sourcePaths,\n\t\t\t};\n\t\t\tthis.markProjectModified(\"selfModification\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tconst existing = this.globalSettings.selfModification;\n\t\tthis.globalSettings.selfModification = {\n\t\t\t...existing,\n\t\t\t...settings,\n\t\t\tsourcePaths: settings.sourcePaths ?? existing?.sourcePaths,\n\t\t};\n\t\tthis.markModified(\"selfModification\");\n\t\tthis.save();\n\t}\n\n\tgetAutonomySettings(): { mode: AutonomyMode } {\n\t\tconst mode = this.settings.autonomy?.mode;\n\t\treturn { mode: mode === \"safe\" || mode === \"balanced\" || mode === \"full\" ? mode : \"off\" };\n\t}\n\n\tsetAutonomySettings(settings: AutonomySettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.autonomy = { ...settings };\n\t\t\tthis.markProjectModified(\"autonomy\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.autonomy = { ...settings };\n\t\tthis.markModified(\"autonomy\");\n\t\tthis.save();\n\t}\n\n\tgetAutoLearnSettings(): AutoLearnSettings {\n\t\tconst settings = this.settings.autoLearn ?? {};\n\t\treturn {\n\t\t\t...settings,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? \"low\",\n\t\t\tcomplexTaskToolCalls: settings.complexTaskToolCalls ?? 12,\n\t\t};\n\t}\n\n\tsetAutoLearnSettings(settings: AutoLearnSettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.autoLearn = { ...settings };\n\t\t\tthis.markProjectModified(\"autoLearn\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.autoLearn = { ...settings };\n\t\tthis.markModified(\"autoLearn\");\n\t\tthis.save();\n\t}\n\n\tgetExternalResourceRoots(): string[] {\n\t\treturn this.settings.externalResourceRoots ?? [];\n\t}\n\n\tsetExternalResourceRoots(roots: string[], scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.externalResourceRoots = [...roots];\n\t\t\tthis.markProjectModified(\"externalResourceRoots\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.externalResourceRoots = [...roots];\n\t\tthis.markModified(\"externalResourceRoots\");\n\t\tthis.save();\n\t}\n\n\tgetTrustedResourceRoots(): string[] {\n\t\treturn this.settings.trustedResourceRoots ?? [];\n\t}\n\n\tsetTrustedResourceRoots(roots: string[], scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.trustedResourceRoots = [...roots];\n\t\t\tthis.markProjectModified(\"trustedResourceRoots\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.trustedResourceRoots = [...roots];\n\t\tthis.markModified(\"trustedResourceRoots\");\n\t\tthis.save();\n\t}\n\n\taddTrustedResourceRoot(path: string, scope: SettingsScope = \"global\"): void {\n\t\tconst canonicalPath = this.canonicalizePath(path);\n\t\tif (!canonicalPath) return;\n\n\t\tconst current = this.getTrustedResourceRoots();\n\t\tif (!current.includes(canonicalPath)) {\n\t\t\tthis.setTrustedResourceRoots([...current, canonicalPath], scope);\n\t\t}\n\t}\n\n\tcanonicalizePath(p: string): string | null {\n\t\ttry {\n\t\t\tconst resolved = resolve(p.replace(/^~/, homedir()));\n\t\t\tif (existsSync(resolved)) {\n\t\t\t\treturn realpathSync(resolved);\n\t\t\t}\n\t\t\treturn resolved;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetEffectiveExternalResourceRoots(): string[] {\n\t\tconst roots = this.getExternalResourceRoots();\n\t\tconst trusted = this.getTrustedResourceRoots();\n\n\t\tconst canonicalTrusted = new Set(\n\t\t\ttrusted.map((t) => this.canonicalizePath(t)).filter((t): t is string => t !== null),\n\t\t);\n\n\t\tconst effective: string[] = [];\n\t\tfor (const r of roots) {\n\t\t\tconst canonicalR = this.canonicalizePath(r);\n\t\t\tif (canonicalR && canonicalR.trim() !== \"\" && canonicalTrusted.has(canonicalR) && existsSync(canonicalR)) {\n\t\t\t\teffective.push(canonicalR);\n\t\t\t}\n\t\t}\n\t\treturn effective;\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 \"@caupulican/pi-ai\";\nimport { createHash } from \"crypto\";\nimport { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync } from \"fs\";\nimport { minimatch } from \"minimatch\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join, relative, resolve, sep } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, getAgentDir, getProfilesDir } from \"../config.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\nimport { ProfileRegistry } from \"./profile-registry.ts\";\nimport { mergeResourceProfileMap } from \"./resource-profile-blocks.ts\";\nimport { validateSkillName } from \"./skills.ts\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface SemanticMemoryGcSettings {\n\tenabled?: boolean; // default: true\n\tpreserveRecentPages?: number; // default: 2\n\tminChars?: number; // default: 1200\n\tmarkers?: string[]; // default: Automata/Mind XML-ish response tags\n}\n\nexport interface ContextGcSettings {\n\tenabled?: boolean; // default: true\n\tpreserveRecentMessages?: number; // default: 12\n\tminToolResultChars?: number; // default: 2500\n\ttools?: string[]; // default: read,bash,rg,grep,context_headroom_retrieve,headroom_retrieve\n\tsemanticMemory?: SemanticMemoryGcSettings;\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 ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\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\tprovider?: ProviderRetrySettings;\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\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 WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport interface SelfModificationSettings {\n\tenabled?: boolean; // default: false\n\tsourcePath?: string; // Single pi-adaptative source tree path (legacy; still honored)\n\tsourcePaths?: string[]; // Ordered candidate source trees; first existing wins. Enables portable WSL/Termux switching from settings alone.\n}\n\nexport type AutoLearnThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\nexport interface AutoLearnSettings {\n\tenabled?: boolean; // default: false - autonomously trigger background history scavenging for long sessions\n\tmodel?: string; // \"active\" or omitted uses the current session model; otherwise a pi --model pattern\n\tthinkingLevel?: AutoLearnThinkingLevel; // default: low for background learner subprocesses\n\tlongSessionMessages?: number; // default: 64\n\tlongSessionContextPercent?: number; // default: 85\n\tcooldownMinutes?: number; // default: 1440 per session tenant (manual /auto-learn run bypasses)\n\tleaseMinutes?: number; // default: 90 for background learner state leases\n\tmaxConcurrentLearners?: number; // default: 2 per session tenant\n\tapplyHighConfidence?: boolean; // default: false unless the learning extension config opts in\n\treflectionReview?: boolean; // default: true when Auto Learn is enabled - post-turn review after corrective/complex turns\n\treflectionMinToolCalls?: number; // default: 12 tool calls in a turn before reflection review triggers\n\treflectionCooldownMinutes?: number; // default: 1440 per session tenant for reflection reviews\n\tcomplexTaskToolCalls?: number; // default: 12 tool calls before bypassing reflection cooldown as a complex task\n}\n\nexport type AutonomyMode = \"off\" | \"safe\" | \"balanced\" | \"full\";\n\nexport interface AutonomySettings {\n\tmode?: AutonomyMode; // default: off; presets drive Auto Learn/reflection without many knobs\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 type ResourceProfileKind = \"extensions\" | \"skills\" | \"prompts\" | \"themes\" | \"agents\" | \"tools\";\n\nexport interface ResourceProfileFilterSettings {\n\t/** Allowlist patterns. When non-empty, only matching resources stay available. */\n\tallow?: string[];\n\t/** Blocklist patterns. Applied after allow. */\n\tblock?: string[];\n}\n\nexport type ResourceProfileSettings = Partial<Record<ResourceProfileKind, ResourceProfileFilterSettings>>;\n\nexport interface DisabledResourcesSettings {\n\textensions?: string[];\n\tskills?: string[];\n\tprompts?: string[];\n\tthemes?: string[];\n\tagents?: string[];\n\ttools?: string[];\n}\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: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\t/** Resource catalog directory (round resource management): the folder pi installs/updates/backs up from. */\n\tcatalogDir?: string;\n\tcompaction?: CompactionSettings;\n\tcontextGc?: ContextGcSettings;\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\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths/directories or include/exclude patterns\n\tskills?: string[]; // Array of local skill file paths/directories or include/exclude patterns\n\tprompts?: string[]; // Array of local prompt template paths/directories or include/exclude patterns\n\tthemes?: string[]; // Array of local theme file paths/directories or include/exclude patterns\n\texternalResourceRoots?: string[]; // External directory roots to scan for resources\n\ttrustedResourceRoots?: string[]; // Explicitly trusted external directory roots (canonical absolute paths)\n\tdisabledResources?: DisabledResourcesSettings; // Legacy reversible block filters for extensions/skills/prompts/themes/agents/tools\n\tresourceProfiles?: Record<string, ResourceProfileSettings>; // Named resource allow/block filters\n\tactiveResourceProfile?: string | string[]; // Active profile name(s), applied after global/project/directory settings merge\n\tactiveResourceProfiles?: string[]; // Active profile names, equivalent to activeResourceProfile array\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\twarnings?: WarningSettings;\n\tselfModification?: SelfModificationSettings; // Local guardrails for modifying the pi-adaptative source/harness\n\tautonomy?: AutonomySettings; // Low-config autonomy preset controlling background learning/reflection defaults\n\tautoLearn?: AutoLearnSettings; // Setting-gated autonomous background learning for long sessions\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\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\nfunction toPosixPath(p: string): string {\n\treturn p.split(sep).join(\"/\");\n}\n\nfunction findDirectoryProfileRoot(cwd: string): string {\n\tlet current = resolvePath(cwd);\n\twhile (true) {\n\t\tfor (const marker of [\".git\", \".hg\", \".svn\"]) {\n\t\t\ttry {\n\t\t\t\tstatSync(join(current, marker));\n\t\t\t\treturn current;\n\t\t\t} catch {}\n\t\t}\n\t\tconst parent = resolve(current, \"..\");\n\t\tif (parent === current) return resolvePath(cwd);\n\t\tcurrent = parent;\n\t}\n}\n\nexport interface DirectoryResourceProfileInfo {\n\troot: string;\n\thash: string;\n\tpath: string;\n}\n\nexport function getDirectoryResourceProfileInfo(\n\tcwd: string,\n\tagentDir: string = getAgentDir(),\n): DirectoryResourceProfileInfo {\n\tconst root = findDirectoryProfileRoot(cwd);\n\tconst hash = createHash(\"sha256\").update(root).digest(\"hex\").slice(0, 16);\n\treturn {\n\t\troot,\n\t\thash,\n\t\tpath: join(resolvePath(agentDir), \"resource-profiles\", hash, \"settings.json\"),\n\t};\n}\n\nexport function matchesResourceProfilePattern(resourcePath: string, patterns: string[], baseDir = \"\"): boolean {\n\tif (patterns.length === 0) return false;\n\tconst resolvedBase = baseDir ? resolvePath(baseDir) : \"\";\n\tconst rel = resolvedBase ? toPosixPath(relative(resolvedBase, resourcePath)) : toPosixPath(resourcePath);\n\tconst name = basename(resourcePath);\n\tconst filePathPosix = toPosixPath(resourcePath);\n\tconst parentDir = dirname(resourcePath);\n\tconst parentRel = resolvedBase ? toPosixPath(relative(resolvedBase, parentDir)) : toPosixPath(parentDir);\n\tconst parentName = basename(parentDir);\n\tconst parentDirPosix = toPosixPath(parentDir);\n\n\treturn patterns.some((pattern) => {\n\t\tconst normalizedPattern = toPosixPath(pattern);\n\t\treturn (\n\t\t\tminimatch(rel, normalizedPattern) ||\n\t\t\tminimatch(name, normalizedPattern) ||\n\t\t\tminimatch(filePathPosix, normalizedPattern) ||\n\t\t\tminimatch(parentRel, normalizedPattern) ||\n\t\t\tminimatch(parentName, normalizedPattern) ||\n\t\t\tminimatch(parentDirPosix, normalizedPattern)\n\t\t);\n\t});\n}\n\nfunction normalizeResourceProfileNames(value: unknown): string[] {\n\tconst values: string[] = [];\n\tconst add = (candidate: unknown) => {\n\t\tif (Array.isArray(candidate)) {\n\t\t\tfor (const item of candidate) add(item);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof candidate === \"string\") {\n\t\t\tfor (const part of candidate.split(\",\")) {\n\t\t\t\tconst trimmed = part.trim();\n\t\t\t\tif (trimmed) values.push(trimmed);\n\t\t\t}\n\t\t}\n\t};\n\tadd(value);\n\treturn [...new Set(values)];\n}\n\nfunction normalizeActiveResourceProfiles(settings: Settings): string[] {\n\tconst explicitProfiles = normalizeResourceProfileNames(settings.activeResourceProfiles);\n\tconst values =\n\t\texplicitProfiles.length > 0 ? explicitProfiles : normalizeResourceProfileNames(settings.activeResourceProfile);\n\tif (values.length === 0 && settings.resourceProfiles?.default) {\n\t\tvalues.push(\"default\");\n\t}\n\treturn [...new Set(values)];\n}\n\nfunction appendFilter(target: ResourceProfileFilterSettings, source?: ResourceProfileFilterSettings): void {\n\tif (!source) return;\n\tif (Array.isArray(source.allow)) target.allow = [...(target.allow ?? []), ...source.allow];\n\tif (Array.isArray(source.block)) target.block = [...(target.block ?? []), ...source.block];\n}\n\nfunction collectLegacyDisabledFilterFromSettings(\n\tsettings: Settings,\n\tkind: ResourceProfileKind,\n): ResourceProfileFilterSettings {\n\tconst legacyDisabled = settings.disabledResources?.[kind];\n\treturn Array.isArray(legacyDisabled) ? { block: legacyDisabled } : {};\n}\n\nfunction mergeResourceProfileFilters(...filters: ResourceProfileFilterSettings[]): ResourceProfileFilterSettings {\n\tconst result: ResourceProfileFilterSettings = {};\n\tfor (const filter of filters) appendFilter(result, filter);\n\treturn result;\n}\n\nfunction parseTimeoutSetting(value: unknown, settingName: string): number | undefined {\n\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\tif (timeoutMs !== undefined) {\n\t\treturn timeoutMs;\n\t}\n\tif (value !== undefined) {\n\t\tthrow new Error(`Invalid ${settingName} setting: ${String(value)}`);\n\t}\n\treturn undefined;\n}\n\nexport type ThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\nexport interface ProfileDefinitionInput {\n\tname?: string;\n\tdescription?: string;\n\tmodel?: string;\n\tthinking?: ThinkingLevel;\n\t/**\n\t * Situational identity (R6): a system-prompt prefix injected while this profile is active, so a\n\t * profile becomes a full \"situation\" = soul + capabilities + model/thinking, switched atomically.\n\t */\n\tsoul?: string;\n\tresources: ResourceProfileSettings;\n}\n\nexport type ProfilePersistenceScope = \"session\" | \"directory\" | \"project\" | \"global\" | \"reusable-file\";\n\nconst VALID_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"] as const;\nfunction isThinkingLevel(value: unknown): value is ThinkingLevel {\n\treturn typeof value === \"string\" && VALID_THINKING_LEVELS.includes(value as ThinkingLevel);\n}\n\nfunction asStringArrayWithPattern(value: unknown): string[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\tconst values = value.filter((item): item is string => typeof item === \"string\" && item.trim().length > 0);\n\treturn values.length > 0 ? values : undefined;\n}\n\nfunction normalizeProfileFilterResource(value: unknown): ResourceProfileFilterSettings {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new Error(\"resource profile filter must be an object\");\n\t}\n\tconst filter = value as Record<string, unknown>;\n\treturn {\n\t\tallow: asStringArrayWithPattern(filter.allow),\n\t\tblock: asStringArrayWithPattern(filter.block),\n\t};\n}\n\nfunction normalizeProfileResources(value: unknown): ResourceProfileSettings {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new Error(\"resources must be an object\");\n\t}\n\tconst input = value as Record<string, unknown>;\n\tconst result: ResourceProfileSettings = {};\n\tfor (const kind of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"agents\", \"tools\"] as const) {\n\t\tif (input[kind] === undefined) continue;\n\t\tresult[kind] = normalizeProfileFilterResource(input[kind]);\n\t}\n\treturn result;\n}\n\nfunction parseProfileFileDefinition(content: string): ProfileDefinitionInput {\n\tconst parsed = JSON.parse(content) as Record<string, unknown>;\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(\"profile file must contain a JSON object\");\n\t}\n\tconst name = typeof parsed.name === \"string\" ? parsed.name.trim() : undefined;\n\tif (!name) {\n\t\tthrow new Error(\"profile name is required\");\n\t}\n\tconst resourceSection = parsed.resources ?? {};\n\treturn {\n\t\tname,\n\t\tdescription: typeof parsed.description === \"string\" ? parsed.description.trim() || undefined : undefined,\n\t\tmodel: typeof parsed.model === \"string\" ? parsed.model.trim() || undefined : undefined,\n\t\tthinking: isThinkingLevel(parsed.thinking) ? parsed.thinking : undefined,\n\t\tsoul: typeof parsed.soul === \"string\" ? parsed.soul.trim() || undefined : undefined,\n\t\tresources: normalizeProfileResources(resourceSection),\n\t};\n}\n\nexport type SettingsScope = \"global\" | \"project\" | \"directoryProfile\";\nexport type SettingsErrorScope = SettingsScope;\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n\tgetProfilesDir?(): string;\n}\n\nexport interface SettingsError {\n\tscope: SettingsErrorScope;\n\terror: Error;\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\tprivate directoryProfileInfo: DirectoryResourceProfileInfo;\n\tprivate profilesDir: string;\n\n\tconstructor(cwd: string, agentDir: string) {\n\t\tconst resolvedCwd = resolvePath(cwd);\n\t\tconst resolvedAgentDir = resolvePath(agentDir);\n\t\tthis.globalSettingsPath = join(resolvedAgentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(resolvedCwd, CONFIG_DIR_NAME, \"settings.json\");\n\t\tthis.directoryProfileInfo = getDirectoryResourceProfileInfo(resolvedCwd, resolvedAgentDir);\n\t\tthis.profilesDir = getProfilesDir(resolvedAgentDir);\n\t}\n\n\tgetDirectoryResourceProfileInfo(): DirectoryResourceProfileInfo {\n\t\treturn { ...this.directoryProfileInfo };\n\t}\n\n\tgetProfilesDir(): string {\n\t\treturn this.profilesDir;\n\t}\n\n\treadDirectoryResourceProfile(): string | undefined {\n\t\tconst path = this.directoryProfileInfo.path;\n\t\treturn existsSync(path) ? readFileSync(path, \"utf-8\") : undefined;\n\t}\n\n\tprivate acquireLockSyncWithRetry(path: string): () => void {\n\t\tconst maxAttempts = 10;\n\t\tconst delayMs = 20;\n\t\tlet lastError: unknown;\n\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(path, { realpath: false });\n\t\t\t} catch (error) {\n\t\t\t\tconst code =\n\t\t\t\t\ttypeof error === \"object\" && error !== null && \"code\" in error\n\t\t\t\t\t\t? String((error as { code?: unknown }).code)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Sleep synchronously to avoid changing callers to async.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow (lastError as Error) ?? new Error(\"Failed to acquire settings lock\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path =\n\t\t\tscope === \"global\"\n\t\t\t\t? this.globalSettingsPath\n\t\t\t\t: scope === \"project\"\n\t\t\t\t\t? this.projectSettingsPath\n\t\t\t\t\t: this.directoryProfileInfo.path;\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 = this.acquireLockSyncWithRetry(path);\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 = this.acquireLockSyncWithRetry(path);\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\tprivate directoryProfile: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : scope === \"project\" ? this.project : this.directoryProfile;\n\t\tconst next = fn(current);\n\t\tif (next === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (scope === \"global\") {\n\t\t\tthis.global = next;\n\t\t\treturn;\n\t\t}\n\t\tif (scope === \"project\") {\n\t\t\tthis.project = next;\n\t\t\treturn;\n\t\t}\n\t\tthis.directoryProfile = next;\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate directoryProfileSettings: Settings;\n\tprivate runtimeResourceProfiles: string[] | undefined;\n\tprivate inlineResourceProfileDefinitions: Record<string, ResourceProfileSettings> = {};\n\tprivate discoveredResourceProfileDefinitions: Record<string, ResourceProfileSettings> = {};\n\tsettings: Settings;\n\tprivate projectTrusted: boolean;\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 directoryProfileInfo: DirectoryResourceProfileInfo | null = null;\n\tprivate profileRegistry!: ProfileRegistry;\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\tinitialDirectoryProfile: Settings = {},\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t\tprojectTrusted = true,\n\t\tdirectoryProfileInfo: DirectoryResourceProfileInfo | null = null,\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.directoryProfileSettings = initialDirectoryProfile;\n\t\tthis.projectTrusted = projectTrusted;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.directoryProfileInfo = directoryProfileInfo;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settings = this.mergeEffectiveSettings();\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\tprivate createProfileRegistry(): ProfileRegistry {\n\t\treturn new ProfileRegistry({\n\t\t\tglobalSettings: this.globalSettings,\n\t\t\tprojectSettings: this.projectSettings,\n\t\t\tdirectoryProfileSettings: this.directoryProfileSettings,\n\t\t\tinlineResourceProfileDefinitions: this.inlineResourceProfileDefinitions,\n\t\t\tdiscoveredResourceProfileDefinitions: this.discoveredResourceProfileDefinitions,\n\t\t\tprofilesDir: this.storage.getProfilesDir?.(),\n\t\t\texternalResourceRoots: this.getEffectiveExternalResourceRoots(),\n\t\t});\n\t}\n\n\tprivate profileDiagnosticKeys = new Set<string>();\n\tprivate reportProfileDiagnostic(scope: SettingsErrorScope, message: string): void {\n\t\tconst key = `${scope}:${message}`;\n\t\tif (this.profileDiagnosticKeys.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.profileDiagnosticKeys.add(key);\n\t\tthis.errors.push({ scope, error: new Error(message) });\n\t}\n\n\tprivate getActiveProfileNamesForDiagnostics(): string[] {\n\t\t// Mirror getActiveResourceProfileNames()'s source precedence (runtime profiles from\n\t\t// --resource-profile take priority) so a bad runtime profile name still surfaces a\n\t\t// \"profile not found\" diagnostic instead of silently applying zero filtering.\n\t\tif (this.runtimeResourceProfiles && this.runtimeResourceProfiles.length > 0) {\n\t\t\treturn normalizeResourceProfileNames(this.runtimeResourceProfiles);\n\t\t}\n\t\tconst explicitProfiles =\n\t\t\tthis.settings.activeResourceProfiles && this.settings.activeResourceProfiles.length > 0\n\t\t\t\t? this.settings.activeResourceProfiles\n\t\t\t\t: this.settings.activeResourceProfile\n\t\t\t\t\t? [this.settings.activeResourceProfile]\n\t\t\t\t\t: [];\n\t\treturn normalizeResourceProfileNames(explicitProfiles);\n\t}\n\n\tprivate refreshProfileRegistry(): void {\n\t\tthis.profileDiagnosticKeys.clear();\n\t\tthis.profileRegistry = this.createProfileRegistry();\n\t\tconst registryDiagnostics = this.profileRegistry.listDiagnostics();\n\t\tfor (const diagnostic of registryDiagnostics) {\n\t\t\tconst path = diagnostic.path ? ` (${diagnostic.path})` : \"\";\n\t\t\tthis.reportProfileDiagnostic(\"global\", `Profile diagnostic${path}: ${diagnostic.message}`);\n\t\t}\n\t\tfor (const profileName of this.getActiveProfileNamesForDiagnostics()) {\n\t\t\tif (!this.profileRegistry.getProfile(profileName)) {\n\t\t\t\tthis.reportProfileDiagnostic(\"global\", `Active profile not found: ${profileName}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate mergeEffectiveSettings(): Settings {\n\t\tlet merged = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t\tmerged = deepMergeSettings(merged, this.directoryProfileSettings);\n\t\tif (this.runtimeResourceProfiles) {\n\t\t\tmerged = deepMergeSettings(merged, { activeResourceProfiles: this.runtimeResourceProfiles });\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate recomputeSettings(): void {\n\t\tthis.settings = this.mergeEffectiveSettings();\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(\n\t\tcwd: string,\n\t\tagentDir: string = getAgentDir(),\n\t\toptions: SettingsManagerCreateOptions = {},\n\t): SettingsManager {\n\t\tconst storage = new FileSettingsStorage(cwd, agentDir);\n\t\treturn SettingsManager.fromStorage(storage, options);\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\tconst projectTrusted = options.projectTrusted ?? true;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\", projectTrusted);\n\t\tconst directoryProfileLoad = SettingsManager.tryLoadDirectoryProfileFromStorage(storage);\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\t\tif (directoryProfileLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"directoryProfile\", error: directoryProfileLoad.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\tdirectoryProfileLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t\tprojectTrusted,\n\t\t\tdirectoryProfileLoad.info,\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\tconst initialSettings = SettingsManager.migrateSettings(structuredClone(settings) as Record<string, unknown>);\n\t\tstorage.withLock(\"global\", () => JSON.stringify(initialSettings, null, 2));\n\t\treturn SettingsManager.fromStorage(storage);\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope, projectTrusted = true): Settings {\n\t\tif (scope === \"project\" && !projectTrusted) {\n\t\t\treturn {};\n\t\t}\n\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\treturn SettingsManager.migrateSettings(settings);\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t\tprojectTrusted = true,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope, projectTrusted), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\tprivate static tryLoadDirectoryProfileFromStorage(storage: SettingsStorage): {\n\t\tsettings: Settings;\n\t\terror: Error | null;\n\t\tinfo: DirectoryResourceProfileInfo | null;\n\t} {\n\t\tif (!(storage instanceof FileSettingsStorage)) {\n\t\t\treturn { settings: {}, error: null, info: null };\n\t\t}\n\t\tconst info = storage.getDirectoryResourceProfileInfo();\n\t\ttry {\n\t\t\tconst content = storage.readDirectoryResourceProfile();\n\t\t\tif (!content) return { settings: {}, error: null, info };\n\t\t\tconst settings = JSON.parse(content);\n\t\t\treturn { settings: SettingsManager.migrateSettings(settings), error: null, info };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error, info };\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\t// Migrate retry.maxDelayMs -> retry.provider.maxRetryDelayMs\n\t\tif (\n\t\t\t\"retry\" in settings &&\n\t\t\ttypeof settings.retry === \"object\" &&\n\t\t\tsettings.retry !== null &&\n\t\t\t!Array.isArray(settings.retry)\n\t\t) {\n\t\t\tconst retrySettings = settings.retry as Record<string, unknown>;\n\t\t\tconst providerSettings =\n\t\t\t\ttypeof retrySettings.provider === \"object\" && retrySettings.provider !== null\n\t\t\t\t\t? (retrySettings.provider as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tif (\n\t\t\t\ttypeof retrySettings.maxDelayMs === \"number\" &&\n\t\t\t\t(providerSettings?.maxRetryDelayMs === undefined || providerSettings?.maxRetryDelayMs === null)\n\t\t\t) {\n\t\t\t\tretrySettings.provider = {\n\t\t\t\t\t...(providerSettings ?? {}),\n\t\t\t\t\tmaxRetryDelayMs: retrySettings.maxDelayMs,\n\t\t\t\t};\n\t\t\t}\n\t\t\tdelete retrySettings.maxDelayMs;\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\tgetDirectoryResourceProfileSettings(): Settings {\n\t\treturn structuredClone(this.directoryProfileSettings);\n\t}\n\n\tgetDirectoryResourceProfileInfo(): DirectoryResourceProfileInfo | null {\n\t\treturn this.directoryProfileInfo ? { ...this.directoryProfileInfo } : null;\n\t}\n\n\tgetProfileRegistry(): ProfileRegistry {\n\t\tthis.refreshProfileRegistry();\n\t\treturn this.profileRegistry;\n\t}\n\n\tgetActiveResourceProfileNames(): string[] {\n\t\tif (this.runtimeResourceProfiles && this.runtimeResourceProfiles.length > 0) {\n\t\t\treturn [...this.runtimeResourceProfiles];\n\t\t}\n\t\treturn normalizeActiveResourceProfiles(this.settings);\n\t}\n\n\tgetResourceProfileFilter(kind: ResourceProfileKind): Required<ResourceProfileFilterSettings> {\n\t\tconst legacyFilter = mergeResourceProfileFilters(\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.globalSettings, kind),\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.projectSettings, kind),\n\t\t\tcollectLegacyDisabledFilterFromSettings(this.directoryProfileSettings, kind),\n\t\t);\n\t\tconst profileFilter: ResourceProfileFilterSettings = {};\n\t\tconst seenProfiles = new Set<string>();\n\t\tconst registry = this.getProfileRegistry();\n\t\tfor (const profileName of this.getActiveResourceProfileNames()) {\n\t\t\tif (seenProfiles.has(profileName)) continue;\n\t\t\tseenProfiles.add(profileName);\n\t\t\tappendFilter(profileFilter, registry.getProfile(profileName)?.resources[kind]);\n\t\t}\n\t\tconst filter = mergeResourceProfileFilters(legacyFilter, profileFilter);\n\t\treturn {\n\t\t\tallow: [...new Set(filter.allow ?? [])],\n\t\t\tblock: [...new Set(filter.block ?? [])],\n\t\t};\n\t}\n\n\tisResourceAllowedByProfile(kind: ResourceProfileKind, resourcePath: string, baseDir = \"\"): boolean {\n\t\tconst filter = this.getResourceProfileFilter(kind);\n\t\tif (filter.allow.length > 0 && !matchesResourceProfilePattern(resourcePath, filter.allow, baseDir)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (matchesResourceProfilePattern(resourcePath, filter.block, baseDir)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Situational soul(s) of the currently active profile(s) (R6): a system-prompt identity prefix\n\t * injected while the profile is active. Multiple active profiles' souls are concatenated.\n\t */\n\tgetActiveProfileSoul(): string | undefined {\n\t\t// First-wins precedence (like profile model/thinking): the most-specific active profile's soul\n\t\t// is the identity — concatenating multiple souls would inject contradictory identities (Bug #16).\n\t\tconst registry = this.getProfileRegistry();\n\t\tconst seen = new Set<string>();\n\t\tfor (const profileName of this.getActiveResourceProfileNames()) {\n\t\t\tif (seen.has(profileName)) continue;\n\t\t\tseen.add(profileName);\n\t\t\tconst soul = registry.getProfile(profileName)?.soul?.trim();\n\t\t\tif (soul) return soul;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tisProjectTrusted(): boolean {\n\t\treturn this.projectTrusted;\n\t}\n\n\tsetProjectTrusted(trusted: boolean): void {\n\t\tif (this.projectTrusted === trusted) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.projectTrusted = trusted;\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tif (!trusted) {\n\t\t\tthis.projectSettings = {};\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t\tthis.recomputeSettings();\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", trusted);\n\t\tthis.projectSettings = projectLoad.settings;\n\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\tif (projectLoad.error) {\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\t\tthis.recomputeSettings();\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tawait this.writeQueue;\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\", this.projectTrusted);\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\tconst directoryProfileLoad = SettingsManager.tryLoadDirectoryProfileFromStorage(this.storage);\n\t\tthis.directoryProfileInfo = directoryProfileLoad.info;\n\t\tif (!directoryProfileLoad.error) {\n\t\t\tthis.directoryProfileSettings = directoryProfileLoad.settings;\n\t\t} else {\n\t\t\tthis.recordError(\"directoryProfile\", directoryProfileLoad.error);\n\t\t}\n\n\t\tthis.recomputeSettings();\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/** Select runtime-only resource profiles, e.g. from CLI/subagent launch options. */\n\tsetRuntimeResourceProfiles(profileNames: string[]): void {\n\t\tthis.runtimeResourceProfiles = profileNames.length > 0 ? [...profileNames] : undefined;\n\t\tthis.recomputeSettings();\n\t}\n\n\t/** Add one-shot profile definitions from CLI/SDK/ephemeral agent launch input. Never writes to disk. */\n\taddInlineResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.inlineResourceProfileDefinitions = mergeResourceProfileMap(this.inlineResourceProfileDefinitions, profiles);\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Replace profile definitions discovered inside loaded resource files. Never writes to disk. */\n\treplaceDiscoveredResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.discoveredResourceProfileDefinitions = { ...profiles };\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\t/** Add profile definitions discovered after resource resolution, e.g. context agent files. Never writes to disk. */\n\taddDiscoveredResourceProfileDefinitions(profiles: Record<string, ResourceProfileSettings>): void {\n\t\tthis.discoveredResourceProfileDefinitions = mergeResourceProfileMap(\n\t\t\tthis.discoveredResourceProfileDefinitions,\n\t\t\tprofiles,\n\t\t);\n\t\tthis.refreshProfileRegistry();\n\t}\n\n\tprivate normalizeProfileName(profileName: string): string {\n\t\tconst trimmed = profileName.trim();\n\t\tif (!trimmed) {\n\t\t\tthrow new Error(\"Profile name is required\");\n\t\t}\n\t\tconst errors = validateSkillName(trimmed);\n\t\tif (errors.length > 0) {\n\t\t\tthrow new Error(`Invalid profile name \"${trimmed}\": ${errors.join(\", \")}`);\n\t\t}\n\t\treturn trimmed;\n\t}\n\n\tprivate sanitizeProfileResources(resources: ResourceProfileSettings): ResourceProfileSettings {\n\t\tconst result: ResourceProfileSettings = {};\n\t\tfor (const kind of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"agents\", \"tools\"] as const) {\n\t\t\tconst filter = resources[kind];\n\t\t\tif (!filter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult[kind] = {\n\t\t\t\tallow: filter.allow ? [...filter.allow] : undefined,\n\t\t\t\tblock: filter.block ? [...filter.block] : undefined,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate setActiveProfileInSettings(settings: Settings, profileName: string | undefined): void {\n\t\tif (profileName) {\n\t\t\tsettings.activeResourceProfile = profileName;\n\t\t\tsettings.activeResourceProfiles = [profileName];\n\t\t\treturn;\n\t\t}\n\t\tdelete settings.activeResourceProfiles;\n\t\tdelete settings.activeResourceProfile;\n\t}\n\n\tprivate persistDirectoryProfiles(update: (settings: Settings) => void): void {\n\t\tconst next = structuredClone(this.directoryProfileSettings);\n\t\tupdate(next);\n\t\tthis.directoryProfileSettings = next;\n\t\tthis.recomputeSettings();\n\n\t\tif (!this.directoryProfileInfo) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.enqueueWrite(\"directoryProfile\", () => {\n\t\t\tthis.storage.withLock(\"directoryProfile\", (current) => {\n\t\t\t\tconst currentSettings = current\n\t\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(current) as Record<string, unknown>)\n\t\t\t\t\t: {};\n\t\t\t\tconst merged: Settings = {\n\t\t\t\t\t...currentSettings,\n\t\t\t\t\t...next,\n\t\t\t\t\tresourceProfiles: next.resourceProfiles,\n\t\t\t\t\tactiveResourceProfiles: next.activeResourceProfiles,\n\t\t\t\t\tactiveResourceProfile: next.activeResourceProfile,\n\t\t\t\t};\n\t\t\t\tif (!next.resourceProfiles) {\n\t\t\t\t\tdelete merged.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (!next.activeResourceProfiles && next.activeResourceProfile === undefined) {\n\t\t\t\t\tdelete merged.activeResourceProfiles;\n\t\t\t\t\tdelete merged.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\treturn JSON.stringify(merged, null, 2);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate getProfileFilePath(profileName: string): string {\n\t\tconst normalized = this.normalizeProfileName(profileName);\n\t\tconst profilesDir = this.storage.getProfilesDir?.();\n\t\tif (!profilesDir) {\n\t\t\tthrow new Error(\"Profiles directory is not configured\");\n\t\t}\n\t\treturn join(resolve(profilesDir), `${normalized}.json`);\n\t}\n\n\t/**\n\t * Create or update a profile definition in the selected persistence scope.\n\t */\n\tsetProfileDefinition(profileName: string, definition: ProfileDefinitionInput, scope: ProfilePersistenceScope): void {\n\t\tconst name = this.normalizeProfileName(profileName);\n\t\tconst resources = this.sanitizeProfileResources(definition.resources);\n\n\t\tif (scope === \"session\") {\n\t\t\tconst next = { ...this.inlineResourceProfileDefinitions };\n\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\tnext[name] = resources;\n\t\t\t} else {\n\t\t\t\tdelete next[name];\n\t\t\t}\n\t\t\tthis.inlineResourceProfileDefinitions = next;\n\t\t\tthis.refreshProfileRegistry();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = structuredClone(this.globalSettings);\n\t\t\tnext.resourceProfiles = { ...(next.resourceProfiles ?? {}) };\n\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\tnext.resourceProfiles[name] = resources;\n\t\t\t} else {\n\t\t\t\tdelete next.resourceProfiles[name];\n\t\t\t}\n\t\t\tif (Object.keys(next.resourceProfiles).length === 0) {\n\t\t\t\tdelete next.resourceProfiles;\n\t\t\t}\n\t\t\tthis.globalSettings = next;\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = structuredClone(settings.resourceProfiles ?? {});\n\t\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\t\tnext[name] = resources;\n\t\t\t\t} else {\n\t\t\t\t\tdelete next[name];\n\t\t\t\t}\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete settings.resourceProfiles;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tconst next = { ...(current.resourceProfiles ?? {}) };\n\t\t\t\tif (Object.keys(resources).length > 0) {\n\t\t\t\t\tnext[name] = resources;\n\t\t\t\t} else {\n\t\t\t\t\tdelete next[name];\n\t\t\t\t}\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete current.resourceProfiles;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst path = this.getProfileFilePath(name);\n\t\tconst existing = existsSync(path)\n\t\t\t? parseProfileFileDefinition(readFileSync(path, \"utf-8\"))\n\t\t\t: { name, resources: {} };\n\t\tconst payload: ProfileDefinitionInput = {\n\t\t\t...existing,\n\t\t\tname,\n\t\t\tresources,\n\t\t\tdescription: definition.description ?? existing.description,\n\t\t\tmodel: definition.model ?? existing.model,\n\t\t\tthinking: definition.thinking ?? existing.thinking,\n\t\t};\n\t\tmkdirSync(dirname(path), { recursive: true });\n\t\twriteFileSync(path, JSON.stringify(payload, null, 2), \"utf-8\");\n\t}\n\n\t/**\n\t * Delete a profile from the selected scope.\n\t */\n\tdeleteProfile(profileName: string, scope: ProfilePersistenceScope): void {\n\t\tconst name = this.normalizeProfileName(profileName);\n\n\t\tif (scope === \"session\") {\n\t\t\tconst next = { ...this.inlineResourceProfileDefinitions };\n\t\t\tdelete next[name];\n\t\t\tthis.inlineResourceProfileDefinitions = next;\n\t\t\tthis.refreshProfileRegistry();\n\t\t\tif (this.runtimeResourceProfiles) {\n\t\t\t\tthis.setRuntimeResourceProfiles(this.runtimeResourceProfiles.filter((profile) => profile !== name));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = { ...(this.globalSettings.resourceProfiles ?? {}) };\n\t\t\tdelete next[name];\n\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\tthis.globalSettings.resourceProfiles = next;\n\t\t\t} else {\n\t\t\t\tdelete this.globalSettings.resourceProfiles;\n\t\t\t}\n\t\t\tif (this.globalSettings.activeResourceProfile === name) {\n\t\t\t\tdelete this.globalSettings.activeResourceProfile;\n\t\t\t}\n\t\t\tif (this.globalSettings.activeResourceProfiles) {\n\t\t\t\tthis.globalSettings.activeResourceProfiles = this.globalSettings.activeResourceProfiles.filter(\n\t\t\t\t\t(profile) => profile !== name,\n\t\t\t\t);\n\t\t\t\tif (this.globalSettings.activeResourceProfiles.length === 0) {\n\t\t\t\t\tdelete this.globalSettings.activeResourceProfiles;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = { ...(settings.resourceProfiles ?? {}) };\n\t\t\t\tdelete next[name];\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete settings.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfile === name) {\n\t\t\t\t\tdelete settings.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfiles) {\n\t\t\t\t\tsettings.activeResourceProfiles = settings.activeResourceProfiles.filter((profile) => profile !== name);\n\t\t\t\t\tif (settings.activeResourceProfiles.length === 0) {\n\t\t\t\t\t\tdelete settings.activeResourceProfiles;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tconst next = { ...(current.resourceProfiles ?? {}) };\n\t\t\t\tdelete next[name];\n\t\t\t\tif (Object.keys(next).length > 0) {\n\t\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\t} else {\n\t\t\t\t\tdelete current.resourceProfiles;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfile === name) {\n\t\t\t\t\tdelete current.activeResourceProfile;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfiles) {\n\t\t\t\t\tcurrent.activeResourceProfiles = current.activeResourceProfiles.filter((profile) => profile !== name);\n\t\t\t\t\tif (current.activeResourceProfiles.length === 0) {\n\t\t\t\t\t\tdelete current.activeResourceProfiles;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst profilePath = this.getProfileFilePath(name);\n\t\tif (!existsSync(profilePath)) {\n\t\t\tthrow new Error(`Profile not found: ${name}`);\n\t\t}\n\t\trmSync(profilePath, { force: true });\n\t}\n\n\trenameProfile(profileName: string, newProfileName: string, scope: ProfilePersistenceScope): void {\n\t\tconst oldName = this.normalizeProfileName(profileName);\n\t\tconst newName = this.normalizeProfileName(newProfileName);\n\t\tif (oldName === newName) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"session\") {\n\t\t\tconst profile = this.inlineResourceProfileDefinitions[oldName];\n\t\t\tif (!profile) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tdelete this.inlineResourceProfileDefinitions[oldName];\n\t\t\tthis.inlineResourceProfileDefinitions[newName] = profile;\n\t\t\tif (this.runtimeResourceProfiles) {\n\t\t\t\tthis.runtimeResourceProfiles = this.runtimeResourceProfiles.map((name) =>\n\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t);\n\t\t\t\tthis.setRuntimeResourceProfiles(this.runtimeResourceProfiles);\n\t\t\t}\n\t\t\tthis.refreshProfileRegistry();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tconst next = structuredClone(this.globalSettings);\n\t\t\tif (!next.resourceProfiles?.[oldName]) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tif (next.resourceProfiles[newName]) {\n\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t}\n\t\t\tnext.resourceProfiles[newName] = next.resourceProfiles[oldName]!;\n\t\t\tdelete next.resourceProfiles[oldName];\n\t\t\tif (next.activeResourceProfile === oldName) {\n\t\t\t\tnext.activeResourceProfile = newName;\n\t\t\t}\n\t\t\tif (next.activeResourceProfiles) {\n\t\t\t\tnext.activeResourceProfiles = next.activeResourceProfiles.map((name) =>\n\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.globalSettings = next;\n\t\t\tthis.markModified(\"resourceProfiles\");\n\t\t\tthis.markModified(\"activeResourceProfile\");\n\t\t\tthis.markModified(\"activeResourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"resourceProfiles\", (settings) => {\n\t\t\t\tconst next = structuredClone(settings.resourceProfiles ?? {});\n\t\t\t\tif (!next[oldName]) {\n\t\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t\t}\n\t\t\t\tif (next[newName]) {\n\t\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t\t}\n\t\t\t\tnext[newName] = next[oldName]!;\n\t\t\t\tdelete next[oldName];\n\t\t\t\tsettings.resourceProfiles = next;\n\t\t\t\tif (settings.activeResourceProfile === oldName) {\n\t\t\t\t\tsettings.activeResourceProfile = newName;\n\t\t\t\t}\n\t\t\t\tif (settings.activeResourceProfiles) {\n\t\t\t\t\tsettings.activeResourceProfiles = settings.activeResourceProfiles.map((name) =>\n\t\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"directory\") {\n\t\t\tconst next = structuredClone(this.directoryProfileSettings.resourceProfiles ?? {});\n\t\t\tif (!next[oldName]) {\n\t\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t\t}\n\t\t\tif (next[newName]) {\n\t\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t\t}\n\t\t\tnext[newName] = next[oldName]!;\n\t\t\tdelete next[oldName];\n\t\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\t\tcurrent.resourceProfiles = next;\n\t\t\t\tif (current.activeResourceProfile === oldName) {\n\t\t\t\t\tcurrent.activeResourceProfile = newName;\n\t\t\t\t}\n\t\t\t\tif (current.activeResourceProfiles) {\n\t\t\t\t\tcurrent.activeResourceProfiles = current.activeResourceProfiles.map((name) =>\n\t\t\t\t\t\tname === oldName ? newName : name,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst oldPath = this.getProfileFilePath(oldName);\n\t\tconst newPath = this.getProfileFilePath(newName);\n\t\tif (!existsSync(oldPath)) {\n\t\t\tthrow new Error(`Profile not found: ${oldName}`);\n\t\t}\n\t\tif (existsSync(newPath)) {\n\t\t\tthrow new Error(`Profile already exists: ${newName}`);\n\t\t}\n\t\tconst parsed = parseProfileFileDefinition(readFileSync(oldPath, \"utf-8\"));\n\t\tparsed.name = newName;\n\t\twriteFileSync(newPath, JSON.stringify(parsed, null, 2), \"utf-8\");\n\t\trmSync(oldPath, { force: true });\n\t}\n\n\t/**\n\t * Set active profile selection in the selected scope.\n\t */\n\tsetActiveProfile(profileName: string | undefined, scope: Exclude<ProfilePersistenceScope, \"reusable-file\">): void {\n\t\tconst name = profileName ? this.normalizeProfileName(profileName) : undefined;\n\t\tif (scope === \"session\") {\n\t\t\tif (name) {\n\t\t\t\tthis.setRuntimeResourceProfiles([name]);\n\t\t\t} else {\n\t\t\t\tthis.setRuntimeResourceProfiles([]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"global\") {\n\t\t\tif (name) {\n\t\t\t\tthis.globalSettings.activeResourceProfile = name;\n\t\t\t\tthis.globalSettings.activeResourceProfiles = [name];\n\t\t\t} else {\n\t\t\t\tdelete this.globalSettings.activeResourceProfile;\n\t\t\t\tdelete this.globalSettings.activeResourceProfiles;\n\t\t\t}\n\t\t\tthis.markModified(\"activeResourceProfile\");\n\t\t\tthis.markModified(\"activeResourceProfiles\");\n\t\t\tthis.save();\n\t\t\treturn;\n\t\t}\n\n\t\tif (scope === \"project\") {\n\t\t\tthis.updateProjectSettings(\"activeResourceProfile\", (settings) => {\n\t\t\t\tthis.setActiveProfileInSettings(settings, name);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.persistDirectoryProfiles((current) => {\n\t\t\tthis.setActiveProfileInSettings(current, name);\n\t\t});\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 assertProjectTrustedForWrite(): void {\n\t\tif (!this.projectTrusted) {\n\t\t\tthrow new Error(\"Project is not trusted; refusing to write project settings\");\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsErrorScope, 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\tif (scope === \"project\") {\n\t\t\t\t\tthis.assertProjectTrustedForWrite();\n\t\t\t\t}\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.recomputeSettings();\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.assertProjectTrustedForWrite();\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.recomputeSettings();\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\tprivate updateProjectSettings(field: keyof Settings, update: (settings: Settings) => void): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tupdate(projectSettings);\n\t\tthis.markProjectModified(field);\n\t\tthis.saveProjectSettings(projectSettings);\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\tgetSessionDir(): string | undefined {\n\t\tconst sessionDir = this.settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\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\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\t/** The configured resource catalog directory, if any (round resource management). */\n\tgetCatalogDir(): string | undefined {\n\t\treturn this.settings.catalogDir;\n\t}\n\n\tsetCatalogDir(dir: string | undefined): void {\n\t\tif (dir) {\n\t\t\tthis.globalSettings.catalogDir = dir;\n\t\t} else {\n\t\t\tdelete this.globalSettings.catalogDir;\n\t\t}\n\t\tthis.markModified(\"catalogDir\");\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 ?? \"auto\";\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\tgetContextGcSettings(): {\n\t\tenabled: boolean;\n\t\tpreserveRecentMessages: number;\n\t\tminToolResultChars: number;\n\t\ttools: string[];\n\t\tsemanticMemory: {\n\t\t\tenabled: boolean;\n\t\t\tpreserveRecentPages: number;\n\t\t\tminChars: number;\n\t\t\tmarkers: string[];\n\t\t};\n\t} {\n\t\treturn {\n\t\t\tenabled: this.settings.contextGc?.enabled ?? true,\n\t\t\tpreserveRecentMessages: this.settings.contextGc?.preserveRecentMessages ?? 8,\n\t\t\tminToolResultChars: this.settings.contextGc?.minToolResultChars ?? 1200,\n\t\t\ttools: this.settings.contextGc?.tools ?? [\n\t\t\t\t\"read\",\n\t\t\t\t\"bash\",\n\t\t\t\t\"rg\",\n\t\t\t\t\"grep\",\n\t\t\t\t\"find\",\n\t\t\t\t\"ls\",\n\t\t\t\t\"skill_open\",\n\t\t\t\t\"automata_graph_status\",\n\t\t\t\t\"automata_graph_search\",\n\t\t\t\t\"automata_graph_query\",\n\t\t\t\t\"automata_graph_neighbors\",\n\t\t\t\t\"automata_graph_path\",\n\t\t\t\t\"automata_graph_pointer_pack\",\n\t\t\t\t\"learning_query_memory\",\n\t\t\t\t\"subagent\",\n\t\t\t\t\"task_steps\",\n\t\t\t\t\"task_background\",\n\t\t\t\t\"task_goal\",\n\t\t\t\t\"run_ledger\",\n\t\t\t\t\"context_headroom_retrieve\",\n\t\t\t\t\"headroom_retrieve\",\n\t\t\t],\n\t\t\tsemanticMemory: {\n\t\t\t\tenabled: this.settings.contextGc?.semanticMemory?.enabled ?? true,\n\t\t\t\tpreserveRecentPages: this.settings.contextGc?.semanticMemory?.preserveRecentPages ?? 1,\n\t\t\t\tminChars: this.settings.contextGc?.semanticMemory?.minChars ?? 900,\n\t\t\t\tmarkers: this.settings.contextGc?.semanticMemory?.markers ?? [\n\t\t\t\t\t\"<automata_context\",\n\t\t\t\t\t\"<automata_response\",\n\t\t\t\t\t\"<automata_query\",\n\t\t\t\t\t\"<automata_fetch\",\n\t\t\t\t\t\"<memory_lifecycle_audit\",\n\t\t\t\t\t\"<memory_lifecycle_purge\",\n\t\t\t\t\t\"<automata_doctor\",\n\t\t\t\t\t\"<automata_optimizer\",\n\t\t\t\t\t\"<automata_mesh\",\n\t\t\t\t],\n\t\t\t},\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 } {\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};\n\t}\n\n\tgetHttpIdleTimeoutMs(): number {\n\t\treturn parseTimeoutSetting(this.settings.httpIdleTimeoutMs, \"httpIdleTimeoutMs\") ?? DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t}\n\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void {\n\t\tif (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tthis.globalSettings.httpIdleTimeoutMs = Math.floor(timeoutMs);\n\t\tthis.markModified(\"httpIdleTimeoutMs\");\n\t\tthis.save();\n\t}\n\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number } {\n\t\treturn {\n\t\t\ttimeoutMs: this.settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: this.settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: this.settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetWebSocketConnectTimeoutMs(): number | undefined {\n\t\treturn parseTimeoutSetting(this.settings.websocketConnectTimeoutMs, \"websocketConnectTimeoutMs\");\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\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\tgetNpmCommand(): string[] | undefined {\n\t\treturn this.settings.npmCommand ? [...this.settings.npmCommand] : undefined;\n\t}\n\n\tsetNpmCommand(command: string[] | undefined): void {\n\t\tthis.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tthis.markModified(\"npmCommand\");\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\tgetEnableInstallTelemetry(): boolean {\n\t\treturn this.settings.enableInstallTelemetry ?? true;\n\t}\n\n\tsetEnableInstallTelemetry(enabled: boolean): void {\n\t\tthis.globalSettings.enableInstallTelemetry = enabled;\n\t\tthis.markModified(\"enableInstallTelemetry\");\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\tthis.updateProjectSettings(\"packages\", (settings) => {\n\t\t\tsettings.packages = packages;\n\t\t});\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\tthis.updateProjectSettings(\"extensions\", (settings) => {\n\t\t\tsettings.extensions = paths;\n\t\t});\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\tthis.updateProjectSettings(\"skills\", (settings) => {\n\t\t\tsettings.skills = paths;\n\t\t});\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\tthis.updateProjectSettings(\"prompts\", (settings) => {\n\t\t\tsettings.prompts = paths;\n\t\t});\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\tthis.updateProjectSettings(\"themes\", (settings) => {\n\t\t\tsettings.themes = paths;\n\t\t});\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\tgetImageWidthCells(): number {\n\t\tconst width = this.settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t}\n\n\tsetImageWidthCells(width: number): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.markModified(\"terminal\", \"imageWidthCells\");\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.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\tgetShowTerminalProgress(): boolean {\n\t\treturn this.settings.terminal?.showTerminalProgress ?? false;\n\t}\n\n\tsetShowTerminalProgress(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tthis.markModified(\"terminal\", \"showTerminalProgress\");\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\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\treturn this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === \"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\tgetWarnings(): WarningSettings {\n\t\treturn { ...(this.settings.warnings ?? {}) };\n\t}\n\n\tsetWarnings(warnings: WarningSettings): void {\n\t\tthis.globalSettings.warnings = { ...warnings };\n\t\tthis.markModified(\"warnings\");\n\t\tthis.save();\n\t}\n\n\tgetSelfModificationSettings(): { enabled: boolean; sourcePath?: string; sourcePaths?: string[] } {\n\t\treturn {\n\t\t\tenabled: this.settings.selfModification?.enabled ?? false,\n\t\t\tsourcePath: this.settings.selfModification?.sourcePath,\n\t\t\tsourcePaths: this.settings.selfModification?.sourcePaths,\n\t\t};\n\t}\n\n\tsetSelfModificationSettings(settings: SelfModificationSettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tconst existing = projectSettings.selfModification;\n\t\t\tprojectSettings.selfModification = {\n\t\t\t\t...existing,\n\t\t\t\t...settings,\n\t\t\t\tsourcePaths: settings.sourcePaths ?? existing?.sourcePaths,\n\t\t\t};\n\t\t\tthis.markProjectModified(\"selfModification\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tconst existing = this.globalSettings.selfModification;\n\t\tthis.globalSettings.selfModification = {\n\t\t\t...existing,\n\t\t\t...settings,\n\t\t\tsourcePaths: settings.sourcePaths ?? existing?.sourcePaths,\n\t\t};\n\t\tthis.markModified(\"selfModification\");\n\t\tthis.save();\n\t}\n\n\tgetAutonomySettings(): { mode: AutonomyMode } {\n\t\tconst mode = this.settings.autonomy?.mode;\n\t\treturn { mode: mode === \"safe\" || mode === \"balanced\" || mode === \"full\" ? mode : \"off\" };\n\t}\n\n\tsetAutonomySettings(settings: AutonomySettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.autonomy = { ...settings };\n\t\t\tthis.markProjectModified(\"autonomy\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.autonomy = { ...settings };\n\t\tthis.markModified(\"autonomy\");\n\t\tthis.save();\n\t}\n\n\tgetAutoLearnSettings(): AutoLearnSettings {\n\t\tconst settings = this.settings.autoLearn ?? {};\n\t\treturn {\n\t\t\t...settings,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? \"low\",\n\t\t\tcomplexTaskToolCalls: settings.complexTaskToolCalls ?? 12,\n\t\t};\n\t}\n\n\tsetAutoLearnSettings(settings: AutoLearnSettings, scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.autoLearn = { ...settings };\n\t\t\tthis.markProjectModified(\"autoLearn\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.autoLearn = { ...settings };\n\t\tthis.markModified(\"autoLearn\");\n\t\tthis.save();\n\t}\n\n\tgetExternalResourceRoots(): string[] {\n\t\treturn this.settings.externalResourceRoots ?? [];\n\t}\n\n\tsetExternalResourceRoots(roots: string[], scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.externalResourceRoots = [...roots];\n\t\t\tthis.markProjectModified(\"externalResourceRoots\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.externalResourceRoots = [...roots];\n\t\tthis.markModified(\"externalResourceRoots\");\n\t\tthis.save();\n\t}\n\n\tgetTrustedResourceRoots(): string[] {\n\t\treturn this.settings.trustedResourceRoots ?? [];\n\t}\n\n\tsetTrustedResourceRoots(roots: string[], scope: SettingsScope = \"global\"): void {\n\t\tif (scope === \"project\") {\n\t\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\t\tprojectSettings.trustedResourceRoots = [...roots];\n\t\t\tthis.markProjectModified(\"trustedResourceRoots\");\n\t\t\tthis.saveProjectSettings(projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.globalSettings.trustedResourceRoots = [...roots];\n\t\tthis.markModified(\"trustedResourceRoots\");\n\t\tthis.save();\n\t}\n\n\taddTrustedResourceRoot(path: string, scope: SettingsScope = \"global\"): void {\n\t\tconst canonicalPath = this.canonicalizePath(path);\n\t\tif (!canonicalPath) return;\n\n\t\tconst current = this.getTrustedResourceRoots();\n\t\tif (!current.includes(canonicalPath)) {\n\t\t\tthis.setTrustedResourceRoots([...current, canonicalPath], scope);\n\t\t}\n\t}\n\n\tcanonicalizePath(p: string): string | null {\n\t\ttry {\n\t\t\tconst resolved = resolve(p.replace(/^~/, homedir()));\n\t\t\tif (existsSync(resolved)) {\n\t\t\t\treturn realpathSync(resolved);\n\t\t\t}\n\t\t\treturn resolved;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetEffectiveExternalResourceRoots(): string[] {\n\t\tconst roots = this.getExternalResourceRoots();\n\t\tconst trusted = this.getTrustedResourceRoots();\n\n\t\tconst canonicalTrusted = new Set(\n\t\t\ttrusted.map((t) => this.canonicalizePath(t)).filter((t): t is string => t !== null),\n\t\t);\n\n\t\tconst effective: string[] = [];\n\t\tfor (const r of roots) {\n\t\t\tconst canonicalR = this.canonicalizePath(r);\n\t\t\tif (canonicalR && canonicalR.trim() !== \"\" && canonicalTrusted.has(canonicalR) && existsSync(canonicalR)) {\n\t\t\t\teffective.push(canonicalR);\n\t\t\t}\n\t\t}\n\t\treturn effective;\n\t}\n}\n"]}
|