返回 DeepSeek-Reasonix
browserHost.ts
根目录 / desktop / frontend / src / lib / browserHost.ts
1 // Renderer view of the shell's browser surface manager. Mirrors the
2 // `window.reasonixDesktop.browser` preload API (docs/DESKTOP_BROWSER.md).
3 export type BrowserTabMode = "agent" | "human";
4
5 export interface BrowserTabView {
6 id: string;
7 taskId: string;
8 url: string;
9 title: string;
10 loading: boolean;
11 canGoBack: boolean;
12 canGoForward: boolean;
13 temporary: boolean;
14 mode: BrowserTabMode;
15 epoch: number;
16 zoom: number;
17 error: { code: number; description: string } | null;
18 }
19
20 export type BrowserDownloadState = "progressing" | "completed" | "cancelled" | "interrupted";
21
22 export interface BrowserDownloadView {
23 id: string;
24 tabId: string;
25 url: string;
26 filename: string;
27 path: string;
28 state: BrowserDownloadState;
29 received: number;
30 total: number;
31 }
32
33 export interface BrowserLayoutRect {
34 x: number;
35 y: number;
36 width: number;
37 height: number;
38 }
39
40 export interface BrowserNavigationTarget {
41 url?: string;
42 action?: "back" | "forward" | "reload" | "stop";
43 }
44
45 export interface DesktopBrowserHost {
46 list(): Promise<BrowserTabView[]>;
47 open(url: string, opts?: { temporary?: boolean; taskId?: string }): Promise<BrowserTabView>;
48 close(tabId: string): Promise<void>;
49 activate(tabId: string | null): Promise<void>;
50 navigate(tabId: string, target: BrowserNavigationTarget): Promise<void>;
51 setZoom(tabId: string, factor: number): Promise<void>;
52 toggleDevTools(tabId: string): Promise<void>;
53 resume(tabId: string): Promise<void>;
54 takeover(tabId: string): Promise<void>;
55 setLayout(rect: BrowserLayoutRect | null): void;
56 setOverlay(active: boolean): void;
57 onTabs(cb: (tabs: BrowserTabView[]) => void): () => void;
58 onDownload(cb: (download: BrowserDownloadView) => void): () => void;
59 }
60
60 lines TYPESCRIPT