batch3 T3: broker user channel + /api/ws/user + project/session/inference emits

- broker.subscribeUser/publishUser via separate user topics map
- /api/ws/user WS route subscribes to the user channel
- projects/sessions POST/DELETE handlers emit lifecycle frames
- inference 3 terminal-state sites emit session_updated with RETURNING

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-15 15:06:31 +00:00
parent d88b3348a2
commit 8fc525eab9
7 changed files with 132 additions and 50 deletions

View File

@@ -8,7 +8,7 @@ const SendBody = z.object({
});
interface MessageHandlers {
enqueueInference: (sessionId: string, assistantMessageId: string) => void;
enqueueInference: (sessionId: string, assistantMessageId: string, user: string) => void;
publishUserMessage: (
sessionId: string,
userMessageId: string,
@@ -76,7 +76,7 @@ export function registerMessageRoutes(
result.user_message_id,
parsed.data.content
);
handlers.enqueueInference(req.params.id, result.assistant_message_id);
handlers.enqueueInference(req.params.id, result.assistant_message_id, req.user!);
reply.code(202);
return result;
@@ -132,7 +132,7 @@ export function registerMessageRoutes(
});
handlers.publishMessagesDeleted(sessionId, deletedIds);
handlers.enqueueInference(sessionId, newAssistantId);
handlers.enqueueInference(sessionId, newAssistantId, req.user!);
reply.code(202);
return { assistant_message_id: newAssistantId };