需求:用户可在同一设计项目中新建和切换会话,任务列表保持项目级共享。 实现: - 增加会话选择、新建入口及本地数据迁移 - Conversation 独立消息、Brief、Quote 与流式状态 - 保留项目任务并修复 Task revision 与 ABA 异步竞态 - 保持 Enter 发送、Shift+Enter 换行及 IME 保护
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import type {
|
|
DesignAsset,
|
|
DesignAssetUploadInput,
|
|
DesignCapabilities,
|
|
DesignConversation,
|
|
DesignCreateConversationInput,
|
|
DesignConfirmGenerationInput,
|
|
DesignCreateWorkspaceInput,
|
|
DesignGenerationTask,
|
|
DesignRenameWorkspaceInput,
|
|
DesignSubmitMessageInput,
|
|
DesignWorkspace,
|
|
DesignWorkspaceBootstrap,
|
|
DesignWorkspaceEvent,
|
|
} from '../../shared/image-workspace';
|
|
|
|
export type DesignWorkspaceEventSubscription = {
|
|
events: AsyncIterable<DesignWorkspaceEvent>;
|
|
close(): void;
|
|
};
|
|
|
|
export type DesignWorkspaceEventSubscriptionInput = {
|
|
workspaceId: string;
|
|
conversationId: string;
|
|
afterEventId?: string;
|
|
};
|
|
|
|
export class DesignWorkspaceModuleError extends Error {
|
|
readonly status: number;
|
|
readonly code: string;
|
|
|
|
constructor(status: number, code: string, message: string) {
|
|
super(message);
|
|
this.name = 'DesignWorkspaceModuleError';
|
|
this.status = status;
|
|
this.code = code;
|
|
}
|
|
}
|
|
|
|
export interface DesignWorkspaceModule {
|
|
bootstrap(): Promise<DesignWorkspaceBootstrap>;
|
|
getCapabilities(): Promise<DesignCapabilities>;
|
|
createWorkspace(input: DesignCreateWorkspaceInput): Promise<DesignWorkspace>;
|
|
renameWorkspace(input: DesignRenameWorkspaceInput): Promise<DesignWorkspace>;
|
|
getWorkspace(workspaceId: string): Promise<DesignWorkspace>;
|
|
createConversation(input: DesignCreateConversationInput): Promise<DesignConversation>;
|
|
getConversation(workspaceId: string, conversationId: string): Promise<DesignConversation>;
|
|
submitMessage(input: DesignSubmitMessageInput): Promise<DesignConversation>;
|
|
confirmGeneration(input: DesignConfirmGenerationInput): Promise<DesignConversation>;
|
|
listTasks(workspaceId: string): Promise<DesignGenerationTask[]>;
|
|
uploadAsset?(input: DesignAssetUploadInput): Promise<DesignAsset>;
|
|
openWorkspaceEvents?(
|
|
input: DesignWorkspaceEventSubscriptionInput,
|
|
): Promise<DesignWorkspaceEventSubscription>;
|
|
closeEventSessions?(): Promise<void>;
|
|
openAssetContent(workspaceId: string, assetId: string, range?: string): Promise<Response>;
|
|
reset?(): Promise<DesignWorkspaceBootstrap>;
|
|
}
|