返回 DeepSeek-Reasonix
composerDraftTypes.ts
根目录 / desktop / frontend / src / lib / composerDraftTypes.ts
1 import type { ComposerInvocation } from "./invocationDisplay";
2 import type { SessionReference } from "./types";
3 import type { SelectedTextReference } from "./selectedTextContext";
4 import type { Attachment } from "./composerAttachments";
5
6 export interface WorkspaceReference {
7 path: string;
8 isDir?: boolean;
9 displayPath?: string;
10 }
11
12 export type PastedBlock = { label: string; text: string };
13
14 export type PersistentComposerDraft = {
15 goalDraft?: boolean;
16 text: string;
17 invocations: ComposerInvocation[];
18 attachments: Attachment[];
19 workspaceRefs: WorkspaceReference[];
20 pastedBlocks: PastedBlock[];
21 openPastedLabels: string[];
22 sessionRefs: SessionReference[];
23 selectedTextRefs: SelectedTextReference[];
24 };
25
26 export type PersistentComposerTarget = {
27 draftId: string;
28 generation: number;
29 initial: PersistentComposerDraft;
30 revision: number;
31 onChange: (draftId: string, generation: number, content: PersistentComposerDraft) => void;
32 onPatch?: (draftId: string, generation: number, patch: Partial<PersistentComposerDraft> | ((content: PersistentComposerDraft) => PersistentComposerDraft)) => void;
33 isCurrent?: (draftId: string, generation: number) => boolean;
34 canEdit?: (draftId: string, generation: number) => boolean;
35 onTaskError?: (draftId: string, generation: number, message: string) => void;
36 trackTask?: <T>(draftId: string, generation: number, promise: Promise<T>) => Promise<T>;
37 };
38
38 lines TYPESCRIPT