import { type BrowserInstanceConfig } from "./config.js"; /** browserd.cjs 路径:dist/ 在包根下,browser-op 在包根下。允许用环境变量覆盖(开发态)。 */ export declare function browserdScriptPath(): string; /** 实例的 wrapper 状态文件路径(放实例 stateDir)。 */ export declare function serviceStatePath(cfg: BrowserInstanceConfig): string; /** wrapper 进程状态(stop/status 命令据此定位 healthPort)。 */ export interface ServiceState { pid: number; instance: string; rpcPort: number; healthPort: number; extensionPort: number; profileDir: string; stateDir: string; logsDir: string; startedAt: string; } /** /health 返回结构(增强版:含 instance 标识 + browserd 真实字段)。 */ export interface ServiceStatus { ok: boolean; status: "ok" | "degraded" | "down" | "stopping"; instance: string; rpcPort: number; healthPort: number; extensionPort: number; profileDir: string; stateDir: string; logsDir: string; browserd: boolean; browserdPid: number | null; chromePid: number | null; /** wrapper(本进程)pid,用于 list/status 校验响应来自 state 记录的同一进程。 */ wrapperPid: number; mode: string | null; pageCount: number; browserOpen: boolean; lastExit: { code: number | string | null; at: string; } | null; } /** * browserd 服务包装器。 * * 用 startService(cfg) 启动;返回的对象含 stop() 用于 graceful 关闭。 * 进程信号(SIGINT/SIGTERM)会触发 graceful 关闭。 */ export declare class BrowserService { private readonly cfg; private readonly logStream; private browserd; private lastExit; private stopping; private restartTimer; private healthServer; private shuttingDown; constructor(cfg: BrowserInstanceConfig); private log; /** 启动 wrapper:起 health server(失败即抛,不写 state)→ 写 pidfile → spawn browserd。 */ start(): Promise; /** spawn browserd 子进程(崩溃自动重启,除非 stopping)。 */ private startBrowserd; /** 拉一次 browserd /health,合并 wrapper 状态成完整 status。 */ status(): Promise; /** * Graceful 关闭: * 1. 标记 stopping(阻止重启) * 2. 发 close 给 browserd(browserd graceful 关 Chrome,保留登录态) * 3. 等 browserd 退出(最多 10s),仍未退则 kill * 4. 关 health server + 删 pidfile + exit */ stop(): Promise; /** 等 browserd 子进程退出,最多 timeoutMs;超时则 SIGKILL。 */ private waitForBrowserdExit; } /** 便捷入口:用实例配置启动 wrapper(CLI start 命令调用)。 */ export declare function startService(cfg: BrowserInstanceConfig): Promise; /** * 按"项目配置 + 实例名"读取已运行 wrapper 的状态(stop/status 命令定位用)。 * state 文件在实例 stateDir/service.json。 */ export declare function readServiceState(cfg: BrowserInstanceConfig): ServiceState | null; //# sourceMappingURL=server.d.ts.map