agent-orchestrator/frontend/src/renderer/lib/bridge.ts

112 lines
2.6 KiB
TypeScript

import type { AoBridge } from "../../preload";
export const aoBridge: AoBridge =
window.ao ??
({
app: {
getVersion: async () => "0.0.0-preview",
chooseDirectory: async () => null,
scanImportFolder: async ({ path }) => ({ path, repos: [] }),
},
clipboard: {
writeText: async (text: string) => {
if (navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(text);
}
},
readText: async () => (navigator.clipboard?.readText ? navigator.clipboard.readText() : ""),
},
daemon: {
getStatus: async () => ({
state: "stopped",
message: "Electron preload is not available in browser preview.",
}),
start: async () => ({ state: "starting" }),
stop: async () => ({ state: "stopped" }),
onStatus: () => () => undefined,
},
telemetry: {
getBootstrap: async () => null,
},
browser: {
ensure: async (sessionId: string) => ({
viewId: `preview:${sessionId}`,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
setBounds: () => undefined,
navigate: async ({ viewId, url }) => ({
viewId,
url,
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
clear: async (viewId: string) => ({
viewId,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
goBack: async (viewId: string) => ({
viewId,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
goForward: async (viewId: string) => ({
viewId,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
reload: async (viewId: string) => ({
viewId,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
stop: async (viewId: string) => ({
viewId,
url: "",
title: "",
canGoBack: false,
canGoForward: false,
isLoading: false,
}),
destroy: () => undefined,
onNavState: () => () => undefined,
},
notifications: {
show: async () => undefined,
onClick: () => () => undefined,
},
appState: {
getMigration: async () => ({ status: "pending" }),
setMigration: async () => undefined,
},
updateSettings: {
get: async () => ({ enabled: false, channel: "latest", nightlyAck: false }),
set: async () => undefined,
},
updates: {
getStatus: async () => ({ state: "idle" }),
check: async () => undefined,
download: async () => undefined,
install: async () => undefined,
onStatus: () => () => undefined,
},
} satisfies AoBridge);