import type { AnimationStyle, OrchestrationMode } from "./agent-registry.js"; import type { JoinMode, PromptCompressionLevel } from "./types.js"; import type { DashboardKeybindingsOverride } from "./ui/dashboard-keybindings.js"; import type { FooterStatusConfig } from "./ui/footer-status-config.js"; /** Optional override roots for local offline debug captures. */ export interface DebugCapturePathOverrides { project?: string; personal?: string; } export type { PromptCompressionLevel } from "./types.js"; export interface SubagentsSettings { maxConcurrent?: number; maxAgentsPerSession?: number; maxTotalTurnsPerSession?: number; /** 0 is the explicit unlimited marker. */ defaultMaxTurns?: number; graceTurns?: number; /** * Max revision turns after a blocking `subagent:end` hook. * `0` (default) = fail closed on block with no revision attempt. */ maxEndHookRevisions?: number; defaultJoinMode?: JoinMode; schedulingEnabled?: boolean; tracingEnabled?: boolean; /** Persisted motion profile; legacy single-spinner values remain valid. */ animationStyle?: AnimationStyle; uiStyle?: "premium" | "retro" | "plain"; showActivityStream?: boolean; showTokenUsage?: boolean; showTurnProgress?: boolean; orchestrationMode?: OrchestrationMode; dashboardRefreshInterval?: number; sessionMaxSpawns?: number; sessionMaxTurns?: number; promptCompressionLevel?: PromptCompressionLevel; debugCapture?: boolean; debugCapturePaths?: DebugCapturePathOverrides; /** Per-action key lists for the interactive dashboard and top view. */ dashboardKeybindings?: DashboardKeybindingsOverride; /** Pi footer status slot configuration (the `subagents` bar). */ footerStatus?: Partial; } export interface SettingsAppliers { setMaxConcurrent: (value: number) => void; setSessionLimits: (limits: { maxAgentsPerSession?: number; maxTotalTurnsPerSession?: number; }) => void; setDefaultMaxTurns: (value: number) => void; setGraceTurns: (value: number) => void; setMaxEndHookRevisions: (value: number) => void; setDefaultJoinMode: (mode: JoinMode) => void; setSchedulingEnabled: (enabled: boolean) => void; setTracingEnabled: (enabled: boolean) => void; setAnimationStyle: (style: AnimationStyle) => void; setUiStyle: (style: "premium" | "retro" | "plain") => void; setShowActivityStream: (enabled: boolean) => void; setShowTokenUsage: (enabled: boolean) => void; setShowTurnProgress: (enabled: boolean) => void; setOrchestrationMode: (mode: OrchestrationMode) => void; setDashboardRefreshInterval: (interval: number) => void; setSessionMaxSpawns: (value: number) => void; setSessionMaxTurns: (value: number) => void; setPromptCompressionLevel: (level: PromptCompressionLevel) => void; setDebugCapture: (enabled: boolean) => void; setDebugCapturePaths: (paths: DebugCapturePathOverrides) => void; setDashboardKeybindings: (bindings?: DashboardKeybindingsOverride) => void; setFooterStatusConfig: (config?: Partial) => void; } export interface SettingsGetters { getDefaultMaxTurns: () => number | undefined; getGraceTurns: () => number; getMaxEndHookRevisions: () => number; getDefaultJoinMode: () => JoinMode; isSchedulingEnabled: () => boolean; isTracingEnabled: () => boolean; } export interface SettingsSetters { setDefaultMaxTurns: (value: number | undefined) => void; setGraceTurns: (value: number) => void; setMaxEndHookRevisions: (value: number) => void; setDefaultJoinMode: (mode: JoinMode) => void; setSchedulingEnabled: (enabled: boolean) => void; setTracingEnabled: (enabled: boolean) => void; } export type SettingsEmit = (event: string, payload: unknown) => void; export declare const VALID_ANIMATION_STYLES: readonly ["orchestrator", "signals", "minimal", "reduced", "braille", "dots", "lines", "classic", "none"]; /** Load merged settings: global provides defaults, project overrides. */ export declare function loadSettings(cwd?: string): SubagentsSettings; /** Persist project-local settings. Global defaults are never mutated. */ export declare function saveSettings(settings: SubagentsSettings, cwd?: string): boolean; /** Apply persisted settings to in-memory state. */ export declare function applySettings(settings: SubagentsSettings, appliers: SettingsAppliers): void; export declare function persistToastFor(successMessage: string, persisted: boolean): { message: string; level: "info" | "warning"; }; export declare function applyAndEmitLoaded(appliers: SettingsAppliers, emit: SettingsEmit, cwd?: string): SubagentsSettings; export declare function saveAndEmitChanged(snapshot: SubagentsSettings, successMessage: string, emit: SettingsEmit, cwd?: string): { message: string; level: "info" | "warning"; };