@dorothywebb/any-browser-mcp
Version:
Any Browser MCP - Launch Chrome with your actual data in debug mode for comprehensive browser automation
169 lines • 5.18 kB
TypeScript
/**
* Configuration Manager for Any Browser MCP
*
* @fileoverview Handles loading, validation, and access to configuration settings.
* Enforces safety policies to prevent auto-launching browsers during VS Code startup.
*
* @example
* ```typescript
* import { getConfigManager } from './ConfigManager.js';
*
* const config = getConfigManager();
* const debugPort = config.getDebugPort();
* const browserConfig = config.getBrowserConfig();
* ```
*
* @category Core Components
*/
import { ValidatedAppConfig } from './ConfigValidator.js';
export interface BrowserConfig {
type: 'chrome' | 'edge' | 'firefox';
debugPort: number;
autoLaunch: boolean;
allowLaunch: boolean;
useExistingOnly: boolean;
endpoint?: string;
connectionTimeout: number;
retryAttempts: number;
retryDelay: number;
useSeparateInstance: boolean;
mcpProfilePath: string;
launchTimeout: number;
confirmDestructiveActions: boolean;
copyUserData: boolean;
sourceProfilePath?: string;
}
export interface ServerConfig {
strategy: 'direct-cdp' | 'playwright' | 'hybrid' | 'separate-instance';
lazyInitialization: boolean;
initializeOnStartup: boolean;
connectOnFirstUse: boolean;
verbose: boolean;
maxConcurrentConnections: number;
}
export interface SafetyConfig {
neverLaunchBrowser: boolean;
requireExistingBrowser: boolean;
validateConnection: boolean;
timeoutConnections: boolean;
}
export interface AppConfig {
browser: BrowserConfig;
server: ServerConfig;
safety: SafetyConfig;
features: {
preventAutoStart: boolean;
useExistingTabs: boolean;
preserveUserData: boolean;
respectUserBrowser: boolean;
errorRetry: boolean;
gracefulFailure: boolean;
};
paths: {
chrome: Record<string, string>;
};
}
/**
* Singleton configuration manager that handles all configuration-related operations.
*
* @description This class provides centralized access to application configuration,
* enforces safety policies, and ensures configuration validation. It implements
* the singleton pattern to maintain consistency across the application.
*
* @example
* ```typescript
* const configManager = ConfigManager.getInstance();
* configManager.setVerbose(true);
*
* const browserConfig = configManager.getBrowserConfig();
* console.log(`Debug port: ${browserConfig.debugPort}`);
* ```
*/
export declare class ConfigManager {
private config;
private static instance;
private verbose;
/**
* Private constructor to enforce singleton pattern.
* Loads and validates configuration, then enforces safety policies.
*/
private constructor();
/**
* Gets the singleton instance of ConfigManager.
*
* @returns The singleton ConfigManager instance
*
* @example
* ```typescript
* const config = ConfigManager.getInstance();
* ```
*/
static getInstance(): ConfigManager;
private loadAndValidateConfig;
private getDefaultConfig;
/**
* Enforce safe browser policy - allow separate instance launching but maintain safety
*/
private enforceNeverLaunchPolicy;
/**
* Gets the browser configuration section.
*
* @returns Browser configuration including debug port, timeouts, and launch settings
*
* @example
* ```typescript
* const browserConfig = config.getBrowserConfig();
* console.log(`Debug port: ${browserConfig.debugPort}`);
* console.log(`Auto launch: ${browserConfig.autoLaunch}`);
* ```
*/
getBrowserConfig(): BrowserConfig;
/**
* Gets the server configuration section.
*
* @returns Server configuration including strategy and connection settings
*
* @example
* ```typescript
* const serverConfig = config.getServerConfig();
* console.log(`Strategy: ${serverConfig.strategy}`);
* console.log(`Lazy init: ${serverConfig.lazyInitialization}`);
* ```
*/
getServerConfig(): ServerConfig;
/**
* Gets the safety configuration section.
*
* @returns Safety configuration including validation and timeout settings
*
* @example
* ```typescript
* const safetyConfig = config.getSafetyConfig();
* console.log(`Validate connection: ${safetyConfig.validateConnection}`);
* ```
*/
getSafetyConfig(): SafetyConfig;
getFullConfig(): ValidatedAppConfig;
shouldNeverLaunch(): boolean;
shouldUseExistingOnly(): boolean;
shouldInitializeOnStartup(): boolean;
isLazyInitializationEnabled(): boolean;
getDebugEndpoint(): string;
getDebugPort(): number;
isVerbose(): boolean;
setVerbose(verbose: boolean): void;
/**
* Validate current configuration
*/
validateCurrentConfig(): void;
/**
* Update configuration with validation
*/
updateConfig(newConfig: Partial<ValidatedAppConfig>): void;
/**
* Get configuration validation report
*/
getValidationReport(): any;
}
export declare function getConfigManager(): ConfigManager;
//# sourceMappingURL=ConfigManager.d.ts.map