/** * User-level settings stored in ~/.grok/user-settings.json * These are global settings that apply across all projects */ export interface UserSettings { apiKey?: string; baseURL?: string; defaultModel?: string; models?: string[]; temperature?: number; maxTokens?: number; startupHook?: string; instanceHook?: string; postUserInputHook?: string; preLLMResponseHook?: string; postLLMResponseHook?: string; preToolCallHook?: string; postToolCallHook?: string; taskApprovalHook?: string; toolApprovalHook?: string; personaHook?: string; personaHookMandatory?: boolean; moodHook?: string; moodHookMandatory?: boolean; contextViewHelper?: string; contextViewHelperGui?: string; contextEditHelper?: string; contextEditHelperGui?: string; mcpServers?: Record; } /** * Project-level settings stored in .grok/settings.json * These are project-specific settings */ export interface ProjectSettings { model?: string; mcpServers?: Record; } /** * Unified settings manager that handles both user-level and project-level settings */ export declare class SettingsManager { private static instance; private userSettingsPath; private userMcpServersPath; private userVarsPath; private projectSettingsPath; private projectMcpServersPath; private constructor(); /** * Get singleton instance */ static getInstance(): SettingsManager; /** * Load user settings from appropriate files */ loadUserSettings(): UserSettings; /** * Save user settings to ~/.grok/user-settings.json * mcpServers is saved to ~/.zds-ai/mcp.json separately */ saveUserSettings(settings: Partial): void; /** * Update a specific user setting */ updateUserSetting(key: K, value: UserSettings[K]): void; /** * Get a specific user setting */ getUserSetting(key: K): UserSettings[K]; /** * Load project settings from .zds-ai/project-settings.json * mcpServers is loaded from .zds-ai/project-mcp.json if it exists */ loadProjectSettings(): ProjectSettings; /** * Save project settings to .zds-ai/project-settings.json * mcpServers is saved to .zds-ai/project-mcp.json separately */ saveProjectSettings(settings: Partial): void; /** * Update a specific project setting */ updateProjectSetting(key: K, value: ProjectSettings[K]): void; /** * Get a specific project setting */ getProjectSetting(key: K): ProjectSettings[K]; /** * Get the current model with proper fallback logic: * 1. Project-specific model setting * 2. User's default model * 3. System default */ getCurrentModel(): string; /** * Set the current model for the project */ setCurrentModel(model: string): void; /** * Get available models list from user settings */ getAvailableModels(): string[]; /** * Get API key from user settings or environment */ getApiKey(): string | undefined; /** * Get startup hook command from user settings */ getStartupHook(): string | undefined; /** * Get instance hook command from user settings */ getInstanceHook(): string | undefined; /** * Get task approval hook command from user settings * Used for validating all task operations (start/transition/stop) */ getTaskApprovalHook(): string | undefined; /** * Get tool approval hook command from user settings */ getToolApprovalHook(): string | undefined; /** * Get persona hook command from user settings */ getPersonaHook(): string | undefined; /** * Check if persona hook is mandatory */ isPersonaHookMandatory(): boolean; /** * Get mood hook command from user settings */ getMoodHook(): string | undefined; /** * Check if mood hook is mandatory */ isMoodHookMandatory(): boolean; /** * Get postUserInput hook command from user settings */ getPostUserInputHook(): string | undefined; /** * Get preLLMResponse hook command from user settings */ getPreLLMResponseHook(): string | undefined; /** * Get postLLMResponse hook command from user settings */ getPostLLMResponseHook(): string | undefined; /** * Get preToolCall hook command from user settings */ getPreToolCallHook(): string | undefined; /** * Get postToolCall hook command from user settings */ getPostToolCallHook(): string | undefined; /** * Detect if we're running in a GUI environment or text-only (SSH/terminal) * Returns true if GUI is available, false for text-only */ isGuiAvailable(): boolean; /** * Get context view helper command from user settings * Auto-detects GUI vs text-only environment */ getContextViewHelper(): string; /** * Get context edit helper command from user settings * Auto-detects GUI vs text-only environment */ getContextEditHelper(): string; /** * Get base URL from user settings or environment */ getBaseURL(): string; /** * Get temperature from user settings * Defaults to 0.7 if not set */ getTemperature(): number; /** * Get max tokens from user settings or environment * Priority: user settings > ZDS_AI_AGENT_MAX_TOKENS env var > undefined * Returns undefined if not set (allows API to use its default) */ getMaxTokens(): number | undefined; /** * Load variable definitions from ~/.zds-ai/cli-vars.yml * Returns array of variable definition objects */ loadVariableDefinitions(): any[]; /** * Ensure directory exists for a given file path */ private ensureDirectoryExists; } /** * Convenience function to get the singleton instance */ export declare function getSettingsManager(): SettingsManager;