shitton of the ai changes

This commit is contained in:
2026-05-01 04:54:11 +03:00
parent d95c37a322
commit 8cff086a8e
194 changed files with 29409 additions and 8841 deletions
+55
View File
@@ -0,0 +1,55 @@
import {randomUUID} from "node:crypto";
export type AiCancelRequest = {
id: string;
chatId: number;
messageId?: number;
fromId: number;
provider: string;
controller: AbortController;
onCancel?: () => Promise<void> | void;
};
const requests = new Map<string, AiCancelRequest>();
export function createAiCancelRequest(params: Omit<AiCancelRequest, "id" | "controller"> & { controller?: AbortController }): AiCancelRequest {
const request: AiCancelRequest = {
id: randomUUID(),
controller: params.controller ?? new AbortController(),
chatId: params.chatId,
messageId: params.messageId,
fromId: params.fromId,
provider: params.provider,
onCancel: params.onCancel,
};
requests.set(request.id, request);
return request;
}
export function setAiCancelMessageId(id: string, messageId: number): void {
const request = requests.get(id);
if (request) request.messageId = messageId;
}
export function getAiCancelRequest(id: string): AiCancelRequest | undefined {
return requests.get(id);
}
export async function abortAiRequest(id: string): Promise<boolean> {
const request = requests.get(id);
if (!request) return false;
request.controller.abort();
try {
await request.onCancel?.();
} finally {
requests.delete(id);
}
return true;
}
export function finishAiRequest(id: string): void {
requests.delete(id);
}