/** 端口默认值(仅在 init 生成配置 / --temp 时使用,不作为运行时兜底)。 */ export declare const DEFAULT_RPC_PORT = 17322; export declare const DEFAULT_HEALTH_PORT = 17440; export declare const DEFAULT_EXTENSION_PORT = 17321; /** 实例路由模式。显式二选一,无 auto(不猜)。 */ export type RouteMode = "cdp" | "extension"; /** * 一个 browser 实例的完整配置 = 一组端口 + 一份 profile + 一套 state/log。 * 实例之间在文件系统与端口上完全隔离,互不串扰。 */ export interface BrowserInstanceConfig { /** 实例名(配置里 instances 的 key)。 */ name: string; /** browserd RPC 端口(client 连这里)。 */ rpcPort: number; /** 服务包装层 health 端口。 */ healthPort: number; /** extension WS 端口(每实例独立;由 prepare-extension 写入实例扩展目录)。 */ extensionPort: number; /** Chrome user-data-dir(绝对路径)。 */ profileDir: string; /** wrapper/browserd 运行态目录(绝对路径),放 service.json 等。 */ stateDir: string; /** 日志目录(绝对路径)。 */ logsDir: string; /** 实例扩展目录(绝对路径),prepare-extension 生成的 unpacked 扩展落点。 */ extensionDir: string; /** Chrome 可执行文件路径(可选,未指定交给 browserd 自动探测)。 */ chromePath?: string; /** 路由模式。第一版多实例只走 cdp;auto/extension 由 browserd 内部决策。 */ routeMode?: RouteMode; } /** CLI 高级覆盖项(覆盖配置文件里某实例的字段)。 */ export interface CliOverrides { rpcPort?: number; /** CLI 的 --port 别名(语义同 rpcPort)。 */ port?: number; healthPort?: number; extensionPort?: number; profileDir?: string; stateDir?: string; logsDir?: string; extensionDir?: string; chromePath?: string; routeMode?: RouteMode; } /** 配置文件里单个实例的原始字段(全部可选,缺字段由 init 期已写齐)。 */ export interface RawInstance { rpcPort?: number; healthPort?: number; extensionPort?: number; profileDir?: string; stateDir?: string; logsDir?: string; extensionDir?: string; chromePath?: string; routeMode?: RouteMode; } /** 项目配置文件整体 shape。 */ export interface ProjectConfigFile { /** 实例表,key = 实例名。 */ instances: Record; } /** 项目级配置文件候选名(在项目根下查找)。 */ export declare const CONFIG_FILE_NAMES: readonly ["mooncat-browser.config.json", "config/browser.json"]; /** 读取并解析项目配置文件。不存在返回 null;解析失败抛错。 */ export declare function loadProjectConfig(path: string): ProjectConfigFile | null; /** * 把"配置文件里某实例 + CLI 覆盖"合并成一份完整的 BrowserInstanceConfig。 * 不做全局兜底:文件里没填、CLI 也没给的字段,用 DEFAULT_* 填(保证总能装出一个实例)。 * 相对路径基于 projectRoot 解析成绝对路径。 */ export declare function resolveInstance(name: string, raw: RawInstance | null | undefined, cli: CliOverrides, projectRoot: string): BrowserInstanceConfig; /** 确保实例的数据目录存在(profile/state/logs 父目录)。 */ export declare function ensureInstanceDirs(cfg: BrowserInstanceConfig): void; /** * 把解析后的实例配置翻译成 browserd 子进程的环境变量。 * browserd.cjs 原生读取 BROWSERD_PORT / BROWSER_OP_USERDATA / BROWSER_OP_CHROME_PATH。 * 多实例下加 BROWSER_OP_WS_PORT(extension WS 端口)+ BROWSER_OP_EXTENSION_DIR(实例扩展目录)。 */ export declare function browserdEnv(cfg: BrowserInstanceConfig): Record; //# sourceMappingURL=config.d.ts.map