返回 DeepSeek-Reasonix
sessionExportBridge.ts
根目录 / desktop / frontend / src / lib / sessionExportBridge.ts
1 import { hostEvents } from "./hostEvents";
2 import type { GeneratedDesktopCommands } from "../generated/desktopContract.generated";
3 export type SessionExportBindings = Pick<GeneratedDesktopCommands,
4 "BeginSessionExportForTarget" | "ReadSessionExportChunk" | "AppendSessionExportPage" | "FinishSessionExport" | "CancelSessionExport">;
5 export function makeMockSessionExportBindings(): SessionExportBindings {
6 const unavailable = async (): Promise<never> => { throw new Error("Session export requires the desktop host."); };
7 return {
8 BeginSessionExportForTarget: unavailable,
9 ReadSessionExportChunk: unavailable,
10 AppendSessionExportPage: unavailable,
11 FinishSessionExport: unavailable,
12 async CancelSessionExport() {},
13 };
14 }
15
16 export function onSessionExportProgress(cb: (value: { exportId: string; title: string; phase: string; records: number; pages: number }) => void): () => void {
17 return hostEvents("session_export_progress", payload => { if (payload && typeof payload === "object") cb(payload as Parameters<typeof cb>[0]); }) ?? (() => {});
18 }
19
19 lines TYPESCRIPT