返回 DeepSeek-Reasonix
modelApplication.ts
根目录 / desktop / frontend / src / lib / modelApplication.ts
1 export type ModelApplicationChoice = {
2 mode: "latest" | "applied_once";
3 expectedAppliedRevision: string;
4 expectedDesiredRevision: string;
5 expectedRuntimeIdentity: string;
6 confirmationToken?:string;
7 };
8
9 export type ModelApplicationDetails = {
10 code: string; runtimeIdentity: string; appliedRevision: string; desiredRevision: string;
11 model: string; blockingJobs: {id:string; kind:string; label:string; status:string}[];
12 canUseApplied: boolean; continuationUnavailable?:string;
13 connectionTarget?:string;
14 confirmationToken?:string;
15 applying?:boolean; availableActions?:string[];
16 };
17
18 export function modelApplicationError(error: unknown): ModelApplicationDetails | undefined {
19 const data=(error as {data?:{modelApplication?:ModelApplicationDetails}} | undefined)?.data?.modelApplication;
20 return data && typeof data.runtimeIdentity==="string" && Array.isArray(data.blockingJobs) ? data : undefined;
21 }
22
23 export function definitelyNotAccepted(error: unknown): boolean {
24 return submissionOutcome(error) === "not_accepted";
25 }
26
27 export function submissionOutcome(error: unknown): "not_accepted" | "unknown" | "accepted" | undefined {
28 const outcome = (error as { data?: { submissionOutcome?: string } } | undefined)?.data?.submissionOutcome;
29 return outcome === "not_accepted" || outcome === "unknown" || outcome === "accepted" ? outcome : undefined;
30 }
31
32 export function appliedOnce(details: ModelApplicationDetails): ModelApplicationChoice {
33 return {mode:"applied_once",expectedAppliedRevision:details.appliedRevision,expectedDesiredRevision:details.desiredRevision,expectedRuntimeIdentity:details.runtimeIdentity,...(details.confirmationToken ? {confirmationToken:details.confirmationToken} : {})};
34 }
35
35 lines TYPESCRIPT