Files
makelore/electron/image-workspace/module.ts
brother7 be9bc84474
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled
合并 AI 设计多会话客户端
整合 Enter 发送与多会话交互,保留服务端持久 Conversation Session,并补齐迁移、回归、Electron E2E 与 canonical 文档。
2026-08-11 16:18:52 +08:00

64 lines
2.2 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 type CloseEventSessionsOptions = {
accessToken?: string;
tolerateRemoteFailure?: boolean;
};
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?(options?: CloseEventSessionsOptions): Promise<void>;
openAssetContent(workspaceId: string, assetId: string, range?: string): Promise<Response>;
reset?(): Promise<DesignWorkspaceBootstrap>;
}