// 主进程、preload、渲染层共用的类型(只做类型导入) export interface ViewBounds { x: number; y: number; width: number; height: number; } export interface ViewportMessage { taskId?: string; visible: boolean; bounds?: ViewBounds; } export type ViewMode = 'agent' | 'user'; export interface BrowserStateEvent { taskId: string; url: string; title: string; loading: boolean; mode: ViewMode; } export interface RevealEvent { taskId: string; } export interface AppMeta { apiPort: number; cdpPort: number; controlPort: number; version: string; } export interface AssistantBridge { /** Trusted, static desktop chrome facts; absent in ordinary browser previews. */ readonly desktopChrome?: { readonly platform: string; readonly titleBar: 'mac-inset' | 'native'; }; get: (path: string) => Promise; post: (path: string, body?: unknown) => Promise; put: (path: string, body?: unknown) => Promise; del: (path: string) => Promise; openPath: (filePath: string) => Promise; meta: () => Promise; browser: { viewport: (message: ViewportMessage) => Promise; mode: (taskId: string, mode: ViewMode) => Promise; onState: (handler: (event: BrowserStateEvent) => void) => () => void; onReveal: (handler: (event: RevealEvent) => void) => () => void; onHide: (handler: (event: RevealEvent) => void) => () => void; onUserInput: (handler: (event: RevealEvent) => void) => () => void; }; }