@@ -189,7 +189,7 @@ export async function POST(request: Request) {
189189 trailingMessageId,
190190 } : ChatRequestBody = await request . json ( ) ;
191191
192- const activeDocumentId : ActiveDocumentId = requestData ?. activeDocumentId ?? null ;
192+ const activeDocumentId : ActiveDocumentId = requestData ?. activeDocumentId ?? undefined ;
193193 const mentionedDocumentIds = requestData ?. mentionedDocumentIds ?? undefined ;
194194 const customInstructions = aiOptions ?. customInstructions ?? null ;
195195 const suggestionLength = aiOptions ?. suggestionLength ?? 'medium' ;
@@ -249,7 +249,12 @@ export async function POST(request: Request) {
249249 }
250250
251251 if ( trailingMessageId ) {
252- await deleteMessagesAfterMessageId ( { chatId, messageId : trailingMessageId } ) ;
252+ const anchorMessage = await getMessageById ( { id : trailingMessageId } ) ;
253+ if ( anchorMessage && anchorMessage . chatId === chatId ) {
254+ await deleteMessagesAfterMessageId ( { chatId, messageId : trailingMessageId } ) ;
255+ } else {
256+ console . warn ( `Invalid trailingMessageId ${ trailingMessageId } for chat ${ chatId } ` ) ;
257+ }
253258 }
254259
255260 const toolSession = session ;
@@ -258,7 +263,7 @@ export async function POST(request: Request) {
258263 }
259264
260265
261- let validatedActiveDocumentId : string | null = null ;
266+ let validatedActiveDocumentId : string | undefined = undefined ;
262267 let activeDoc : Document | null = null ;
263268 if ( activeDocumentId && uuidRegex . test ( activeDocumentId ) ) {
264269 try {
@@ -278,8 +283,7 @@ export async function POST(request: Request) {
278283 const activeDocumentContent = activeDoc ?. content ?? '' ;
279284 const isActiveDocumentEmpty = activeDocumentContent . trim ( ) . length === 0 ;
280285
281- if ( ! validatedActiveDocumentId ) {
282- // No active document - only allow streaming document for new content generation
286+ if ( validatedActiveDocumentId === undefined ) {
283287 availableTools . streamingDocument = streamingDocument ( { session : toolSession } ) ;
284288 activeToolsList . push ( 'streamingDocument' ) ;
285289 } else {
@@ -305,7 +309,7 @@ export async function POST(request: Request) {
305309
306310 const dynamicSystemPrompt = await createEnhancedSystemPrompt ( {
307311 selectedChatModel,
308- activeDocumentId,
312+ activeDocumentId : validatedActiveDocumentId ,
309313 mentionedDocumentIds,
310314 customInstructions,
311315 writingStyleSummary,
@@ -320,7 +324,7 @@ export async function POST(request: Request) {
320324 toolsWithStream . streamingDocument = streamingDocument ( {
321325 session : toolSession ,
322326 dataStream,
323- documentId : validatedActiveDocumentId ?? undefined ,
327+ documentId : validatedActiveDocumentId ,
324328 } ) ;
325329 }
326330
@@ -341,7 +345,7 @@ export async function POST(request: Request) {
341345 onFinish : async ( { messages : allMessages } ) => {
342346 if ( userId ) {
343347 try {
344- const assistant = allMessages . find ( ( m ) => m . role === 'assistant' ) ?? allMessages [ allMessages . length - 1 ] ;
348+ const assistant = allMessages . findLast ( ( m ) => m . role === 'assistant' ) ?? allMessages [ allMessages . length - 1 ] ;
345349 if ( assistant ) {
346350 const dbMessage = convertUIMessageToDBFormat ( assistant , chatId ) ;
347351 await saveMessages ( { messages : [ dbMessage ] } ) ;
0 commit comments