// FFAI Agent Desktop —— preload 脚本
//
// 通过 contextBridge 在 renderer 暴露 window.ffaiHostBridge，前端从 packages/agent-protocol
// 的 HostBridge 接口签名调用。所有调用走 IPC 到主进程，主进程内统一鉴权/沙盒/审计。
//
// 详见 docs/modules/agent/02-architecture.md §1.3.2。

import { contextBridge, ipcRenderer } from "electron";
import type { HostCapability, HostInvokeResult } from "@ffai/agent-protocol";

const api = {
  surface: "desktop-electron" as const,
  protocolVersion: "0.0.1",
  capabilities: (): Promise<readonly HostCapability[]> =>
    ipcRenderer.invoke("hostBridge:capabilities"),
  invoke: <T = unknown>(tool: string, args: unknown): Promise<HostInvokeResult<T>> =>
    ipcRenderer.invoke("hostBridge:invoke", tool, args),
};

contextBridge.exposeInMainWorld("ffaiHostBridge", api);

export type FfaiHostBridge = typeof api;
