Files
makelore/electron/agent-browser/adapter.ts

55 lines
1.7 KiB
TypeScript

import type { AgentBrowserBounds } from '../../shared/agent-browser';
export type PortListener = (...args: unknown[]) => void;
export interface AgentBrowserDebuggerPort {
attach(protocolVersion: string): void;
detach(): void;
isAttached(): boolean;
sendCommand(
method: string,
params?: Record<string, unknown>,
sessionRef?: string,
): Promise<unknown>;
on(event: 'message' | 'detach', listener: PortListener): void;
removeListener(event: 'message' | 'detach', listener: PortListener): void;
}
export interface AgentBrowserNavigationPort {
canGoBack(): boolean;
canGoForward(): boolean;
goBack(): void;
goForward(): void;
clear(): void;
}
export interface AgentBrowserWebContentsPort {
readonly debugger: AgentBrowserDebuggerPort;
readonly navigationHistory: AgentBrowserNavigationPort;
loadURL(url: string): Promise<void>;
getURL(): string;
getTitle(): string;
isDestroyed(): boolean;
isDevToolsOpened(): boolean;
reload(): void;
executeJavaScript(code: string): Promise<unknown>;
denyWindowOpen(): void;
on(event: string, listener: PortListener): void;
removeListener(event: string, listener: PortListener): void;
}
export interface AgentBrowserViewPort {
readonly webContents: AgentBrowserWebContentsPort;
setBounds(bounds: AgentBrowserBounds): void;
setVisible(visible: boolean): void;
}
export interface AgentBrowserAdapter {
createView(partition: string): AgentBrowserViewPort;
mount(view: AgentBrowserViewPort): void;
unmount(view: AgentBrowserViewPort): void;
destroy(view: AgentBrowserViewPort): void;
resetPartition(partition: string): Promise<void>;
restrictPartitionToOrigin(partition: string, origin: string): () => void;
}