返回 DeepSeek-Reasonix
sessionUIBindings.ts
根目录 / desktop / frontend / src / lib / sessionUIBindings.ts
1 import type { GeneratedDesktopCommands } from "../generated/desktopContract.generated";
2
3 export type SessionUIBindings = Pick<GeneratedDesktopCommands,
4 "BeginManualSessionCreation" | "GetManualSessionCreation" | "RetryManualSessionCreation" | "ListManualSessionCreations" |
5 "GetSessionComposerState" | "SaveSessionComposerState" | "BeginSessionComposerSubmission" | "CompleteSessionComposerSubmission" | "ListSessionComposerConflicts">;
6
7 export function makeLazySessionUIMock(create: (scope: string, root: string, id: string) => Promise<void>): SessionUIBindings {
8 let loaded: Promise<SessionUIBindings> | undefined;
9 const names: (keyof SessionUIBindings)[] = ["BeginManualSessionCreation","GetManualSessionCreation","RetryManualSessionCreation","ListManualSessionCreations","GetSessionComposerState","SaveSessionComposerState","BeginSessionComposerSubmission","CompleteSessionComposerSubmission","ListSessionComposerConflicts"];
10 return Object.fromEntries(names.map(name=>[name,async (...args:unknown[])=> {
11 loaded ??= import("./sessionUIMock").then(module=>module.makeSessionUIMock(create));
12 const binding=await loaded;
13 return (binding[name] as (...args:unknown[])=>unknown).apply(binding,args);
14 }])) as unknown as SessionUIBindings;
15 }
16
16 lines TYPESCRIPT