import type { Transport } from "../../ai/index.js"; import { type CompactionPolicy, type CompactionPolicySettings } from "./compaction/policy.js"; /** Default retry attempts for transient provider failures (exponential backoff). */ export declare const RETRY_DEFAULT_MAX_RETRIES = 7; /** Base delay for the retry backoff schedule: 1s, 2s, 4s, 8s, 16s, 32s, 64s. */ export declare const RETRY_DEFAULT_BASE_DELAY_MS = 1000; /** Hard ceiling on a single transient-retry backoff delay (also avoids Node's * >2^31ms setTimeout clamp-to-1ms footgun). */ export declare const RETRY_MAX_BACKOFF_DELAY_MS = 64000; export type CompactionSettings = CompactionPolicySettings; export interface BranchSummarySettings { reserveTokens?: number; skipPrompt?: boolean; } export interface ProviderRetrySettings { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs?: number; } export interface RetrySettings { enabled?: boolean; maxRetries?: number; baseDelayMs?: number; provider?: ProviderRetrySettings; } export interface ImageSettings { autoResize?: boolean; blockImages?: boolean; } export interface ThinkingBudgetsSettings { minimal?: number; low?: number; medium?: number; high?: number; } export interface PromptMutationSettings { enabled?: boolean; provider?: string; modelId?: string; } export interface LlmCompactionSettings { enabled?: boolean; provider?: string; modelId?: string; timeoutMs?: number; maxResponseChars?: number; } export type TransportSetting = Transport; /** * Package source for npm/git packages. * - String form: load all resources from the package * - Object form: filter which resources to load */ export type PackageSource = string | { source: string; extensions?: string[]; skills?: string[]; prompts?: string[]; themes?: string[]; }; export interface Settings { defaultProvider?: string; defaultModel?: string; defaultVisionProvider?: string; defaultVisionModel?: string; defaultThinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh"; transport?: TransportSetting; steeringMode?: "all" | "one-at-a-time"; followUpMode?: "all" | "one-at-a-time"; compaction?: CompactionSettings; branchSummary?: BranchSummarySettings; retry?: RetrySettings; shellPath?: string; shellCommandPrefix?: string; npmCommand?: string[]; enableInstallTelemetry?: boolean; packages?: PackageSource[]; extensions?: string[]; skills?: string[]; prompts?: string[]; themes?: string[]; images?: ImageSettings; enabledModels?: string[]; thinkingBudgets?: ThinkingBudgetsSettings; sessionDir?: string; httpIdleTimeoutMs?: number; disabledNativeExtensions?: string[]; enabledNativeExtensions?: string[]; promptMutation?: PromptMutationSettings; llmCompaction?: LlmCompactionSettings; } export type SettingsScope = "global" | "project"; export interface SettingsStorage { withLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void; } export interface SettingsError { scope: SettingsScope; error: Error; } export declare class FileSettingsStorage implements SettingsStorage { private globalSettingsPath; private projectSettingsPath; constructor(cwd: string, agentDir: string); private acquireLockSyncWithRetry; withLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void; } export declare class InMemorySettingsStorage implements SettingsStorage { private global; private project; withLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void; } export declare class SettingsManager { private storage; private globalSettings; private projectSettings; private settings; private modifiedFields; private modifiedNestedFields; private modifiedProjectFields; private modifiedProjectNestedFields; private globalSettingsLoadError; private projectSettingsLoadError; private writeQueue; private errors; private constructor(); /** Create a SettingsManager that loads from files */ static create(cwd: string, agentDir?: string): SettingsManager; /** Create a SettingsManager from an arbitrary storage backend */ static fromStorage(storage: SettingsStorage): SettingsManager; /** Create an in-memory SettingsManager (no file I/O) */ static inMemory(settings?: Partial): SettingsManager; private static loadFromStorage; private static tryLoadFromStorage; /** Migrate old settings format to new format */ private static migrateSettings; /** Returns the currently active merged settings (global overridden by project). */ getSettings(): Settings; getGlobalSettings(): Settings; getProjectSettings(): Settings; reload(): Promise; /** Apply additional overrides on top of current settings */ applyOverrides(overrides: Partial): void; /** Mark a global field as modified during this session */ private markModified; /** Mark a project field as modified during this session */ private markProjectModified; private recordError; private clearModifiedScope; private enqueueWrite; private cloneModifiedNestedFields; private persistScopedSettings; private save; private saveProjectSettings; flush(): Promise; drainErrors(): SettingsError[]; getSessionDir(): string | undefined; getDefaultProvider(): string | undefined; getDefaultModel(): string | undefined; getDefaultVisionProvider(): string | undefined; getDefaultVisionModel(): string | undefined; setDefaultVisionProvider(provider: string): void; setDefaultVisionModel(modelId: string): void; setDefaultVisionModelAndProvider(provider: string, modelId: string): void; setDefaultProvider(provider: string): void; setDefaultModel(modelId: string): void; setDefaultModelAndProvider(provider: string, modelId: string): void; getSteeringMode(): "all" | "one-at-a-time"; setSteeringMode(mode: "all" | "one-at-a-time"): void; getFollowUpMode(): "all" | "one-at-a-time"; setFollowUpMode(mode: "all" | "one-at-a-time"): void; getDefaultThinkingLevel(): "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | undefined; setDefaultThinkingLevel(level: "off" | "minimal" | "low" | "medium" | "high" | "xhigh"): void; getTransport(): TransportSetting; setTransport(transport: TransportSetting): void; getCompactionEnabled(): boolean; setCompactionEnabled(enabled: boolean): void; getCompactionReserveTokens(): number; getCompactionKeepRecentTokens(): number; getCompactionPolicy(): CompactionPolicy; getCompactionSettings(): CompactionPolicy["conversation"]; getLlmCompactionSettings(): { enabled: boolean; provider?: string; modelId?: string; timeoutMs: number; maxResponseChars: number; }; getBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean; }; getBranchSummarySkipPrompt(): boolean; getRetryEnabled(): boolean; setRetryEnabled(enabled: boolean): void; getRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number; }; getHttpIdleTimeoutMs(): number; setHttpIdleTimeoutMs(timeoutMs: number): void; getProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number; }; getShellPath(): string | undefined; setShellPath(path: string | undefined): void; getShellCommandPrefix(): string | undefined; setShellCommandPrefix(prefix: string | undefined): void; getNpmCommand(): string[] | undefined; setNpmCommand(command: string[] | undefined): void; getEnableInstallTelemetry(): boolean; setEnableInstallTelemetry(enabled: boolean): void; getPackages(): PackageSource[]; setPackages(packages: PackageSource[]): void; setProjectPackages(packages: PackageSource[]): void; getExtensionPaths(): string[]; setExtensionPaths(paths: string[]): void; setProjectExtensionPaths(paths: string[]): void; getSkillPaths(): string[]; setSkillPaths(paths: string[]): void; setProjectSkillPaths(paths: string[]): void; getPromptTemplatePaths(): string[]; setPromptTemplatePaths(paths: string[]): void; setProjectPromptTemplatePaths(paths: string[]): void; getDisabledNativeExtensions(): string[]; setDisabledNativeExtensions(paths: string[]): void; getEnabledNativeExtensions(): string[]; setEnabledNativeExtensions(paths: string[]): void; getThinkingBudgets(): ThinkingBudgetsSettings | undefined; getImageAutoResize(): boolean; setImageAutoResize(enabled: boolean): void; getBlockImages(): boolean; setBlockImages(blocked: boolean): void; getPromptMutationEnabled(): boolean; setPromptMutationEnabled(enabled: boolean): void; getPromptMutationProvider(): string | undefined; setPromptMutationProvider(provider: string | undefined): void; getPromptMutationModelId(): string | undefined; setPromptMutationModelId(modelId: string | undefined): void; getEnabledModels(): string[] | undefined; setEnabledModels(patterns: string[] | undefined): void; } //# sourceMappingURL=settings-manager.d.ts.map