feat(chat): send idempotent client message ids

This commit is contained in:
Codex
2026-07-27 10:58:51 +08:00
parent 38a4645b9c
commit 7b09a7f850
6 changed files with 92 additions and 2 deletions
@@ -17,6 +17,7 @@ import {
} from "@/data/schemas/chat";
import type { ChatApi } from "@/data/services/api";
import { Result } from "@/utils/result";
import { createClientMessageId } from "@/lib/chat/client_message_id";
export class ChatRemoteDataSource {
constructor(private readonly api: ChatApi) {}
@@ -29,6 +30,7 @@ export class ChatRemoteDataSource {
return Result.wrap(async () => {
const request = SendMessageRequestSchema.parse({
characterId,
clientMessageId: options?.clientMessageId ?? createClientMessageId(),
message,
...(options?.imageId ? { imageId: options.imageId } : {}),
...(options?.imageThumbUrl