From b2038e188438a2e70c8ad204f92525a7ba02a092 Mon Sep 17 00:00:00 2001 From: Nexus Dev Date: Wed, 1 Apr 2026 21:48:22 +0000 Subject: [PATCH] feat(23-01): extend chat service with messageType support and addSystemMessage - addMessage now accepts optional messageType parameter - addSystemMessage helper inserts system-role messages with typed messageType - Both methods bump conversation updatedAt for correct sort order --- server/src/services/chat.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/server/src/services/chat.ts b/server/src/services/chat.ts index 9bf8d002..803a94fd 100644 --- a/server/src/services/chat.ts +++ b/server/src/services/chat.ts @@ -137,7 +137,7 @@ export function chatService(db: Db) { async addMessage( conversationId: string, - data: { role: string; content: string; agentId?: string }, + data: { role: string; content: string; agentId?: string; messageType?: string }, ) { const [message] = await db .insert(chatMessages) @@ -146,6 +146,7 @@ export function chatService(db: Db) { role: data.role, content: data.content, agentId: data.agentId ?? null, + messageType: data.messageType ?? null, }) .returning(); @@ -192,6 +193,30 @@ export function chatService(db: Db) { ); }, + async addSystemMessage( + conversationId: string, + data: { content: string; messageType: string; agentId?: string }, + ) { + const [message] = await db + .insert(chatMessages) + .values({ + conversationId, + role: "system", + content: data.content, + agentId: data.agentId ?? null, + messageType: data.messageType, + }) + .returning(); + + // Bump conversation updatedAt (same pattern as addMessage) + await db + .update(chatConversations) + .set({ updatedAt: new Date() }) + .where(eq(chatConversations.id, conversationId)); + + return message!; + }, + async *streamEcho(content: string, signal: AbortSignal) { const words = content.split(/\s+/); for (const word of words) {