Files
ai-code-app/src/app/main/chatV2/data/chatGateway.ts

98 lines
3.3 KiB
TypeScript

import {
clearChatConversationRoom,
createChatConversationRoom,
deleteChatConversationRequest,
deleteChatConversationRoom,
fetchChatConversationDetail,
fetchChatConversations,
fetchChatRuntimeJobDetail,
fetchChatRuntimeSnapshot,
markChatConversationResponsesRead,
renameChatConversationRoom,
updateChatConversationRoom,
uploadChatComposerFile,
} from '../../mainChatPanel';
import {
dismissChatWebPushNotifications,
markChatNotificationMessagesAsRead,
} from '../../notificationApi';
import type {
ChatComposerAttachment,
ChatConversationDetailResponse,
ChatConversationSummary,
ChatRuntimeJobDetail,
ChatRuntimeSnapshot,
} from '../../mainChatPanel/types';
export type ChatGateway = {
listConversations: () => Promise<ChatConversationSummary[]>;
getConversationDetail: (
sessionId: string,
options?: {
limit?: number;
beforeMessageId?: number | null;
},
) => Promise<ChatConversationDetailResponse>;
createConversation: (args: {
sessionId: string;
title: string;
chatTypeId?: string | null;
lastChatTypeId?: string | null;
contextLabel?: string;
contextDescription?: string;
notifyOffline?: boolean;
}) => Promise<ChatConversationSummary>;
renameConversation: (sessionId: string, title: string) => Promise<ChatConversationSummary>;
updateConversation: (
sessionId: string,
payload: Partial<
Pick<
ChatConversationSummary,
| 'title'
| 'chatTypeId'
| 'lastChatTypeId'
| 'generalSectionName'
| 'contextLabel'
| 'contextDescription'
| 'notifyOffline'
>
>,
) => Promise<ChatConversationSummary>;
clearConversation: (sessionId: string) => Promise<ChatConversationSummary>;
deleteConversation: (sessionId: string) => Promise<void>;
deleteConversationRequest: (sessionId: string, requestId: string) => Promise<void>;
markConversationRead: (sessionId: string) => Promise<void>;
fetchRuntimeSnapshot: () => Promise<ChatRuntimeSnapshot>;
fetchRuntimeJobDetail: (requestId: string) => Promise<ChatRuntimeJobDetail>;
uploadComposerFile: (sessionId: string, file: File) => Promise<ChatComposerAttachment>;
dismissRoomNotifications: (sessionId: string) => Promise<void>;
markRoomNotificationMessagesRead: (sessionId: string) => Promise<void>;
};
export const chatGateway: ChatGateway = {
listConversations: fetchChatConversations,
getConversationDetail: fetchChatConversationDetail,
createConversation: createChatConversationRoom,
renameConversation: renameChatConversationRoom,
updateConversation: updateChatConversationRoom,
clearConversation: clearChatConversationRoom,
deleteConversation: async (sessionId) => {
await deleteChatConversationRoom(sessionId);
},
deleteConversationRequest: async (sessionId, requestId) => {
await deleteChatConversationRequest(sessionId, requestId);
},
markConversationRead: async (sessionId) => {
await markChatConversationResponsesRead(sessionId);
},
fetchRuntimeSnapshot: fetchChatRuntimeSnapshot,
fetchRuntimeJobDetail: fetchChatRuntimeJobDetail,
uploadComposerFile: uploadChatComposerFile,
dismissRoomNotifications: async (sessionId) => {
await dismissChatWebPushNotifications(sessionId);
},
markRoomNotificationMessagesRead: async (sessionId) => {
await markChatNotificationMessagesAsRead(sessionId);
},
};