diff --git a/packages/twenty-front/src/modules/ai/hooks/useAgentChatSubscription.ts b/packages/twenty-front/src/modules/ai/hooks/useAgentChatSubscription.ts index 9afbdcd617..baef01b723 100644 --- a/packages/twenty-front/src/modules/ai/hooks/useAgentChatSubscription.ts +++ b/packages/twenty-front/src/modules/ai/hooks/useAgentChatSubscription.ts @@ -350,6 +350,11 @@ export const useAgentChatSubscription = (threadId: string | null) => { break; } + case 'question-answered': { + dispatchBrowserEvent(AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME); + break; + } + case 'queue-updated': { dispatchBrowserEvent(AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME); break; diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/resolvers/agent-chat.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/resolvers/agent-chat.resolver.ts index cfd5e5e1d0..4679b30671 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/resolvers/agent-chat.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/resolvers/agent-chat.resolver.ts @@ -312,6 +312,14 @@ export class AgentChatResolver { workspaceId: workspace.id, }); + await this.eventPublisherService + .publish({ + threadId, + workspaceId: workspace.id, + event: { type: 'question-answered' }, + }) + .catch(() => {}); + try { await this.agentChatStreamingService.enqueueResumeStream({ threadId, diff --git a/packages/twenty-shared/src/ai/types/AgentChatSubscriptionEvent.ts b/packages/twenty-shared/src/ai/types/AgentChatSubscriptionEvent.ts index a175453c40..e4fb203d9a 100644 --- a/packages/twenty-shared/src/ai/types/AgentChatSubscriptionEvent.ts +++ b/packages/twenty-shared/src/ai/types/AgentChatSubscriptionEvent.ts @@ -5,6 +5,7 @@ export type AgentChatSubscriptionEvent = | { type: 'stream-chunk'; chunk: Record; seq?: number } | { type: 'message-persisted'; messageId: string } | { type: 'queue-updated' } + | { type: 'question-answered' } | { type: 'stream-error'; code: string; message: string } | { type: 'credits-exhausted' } | { type: 'keepalive' };