From c2ac24f945f919479535c96c515de663cccc23c4 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan Date: Tue, 17 Mar 2026 16:57:15 -0700 Subject: [PATCH 1/5] Include rid --- apps/sim/app/api/mothership/chat/route.ts | 1 + .../[workspaceId]/home/components/index.ts | 1 + .../home/components/message-actions/index.ts | 1 + .../message-actions/message-actions.tsx | 75 +++++++++++++++++++ .../app/workspace/[workspaceId]/home/home.tsx | 8 +- .../[workspaceId]/home/hooks/use-chat.ts | 20 ++++- .../app/workspace/[workspaceId]/home/types.ts | 2 + .../copilot-message/copilot-message.tsx | 8 +- apps/sim/lib/copilot/orchestrator/index.ts | 1 + .../orchestrator/sse/handlers/handlers.ts | 6 ++ apps/sim/lib/copilot/orchestrator/types.ts | 2 + apps/sim/stores/panel/copilot/types.ts | 1 + 12 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts create mode 100644 apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx diff --git a/apps/sim/app/api/mothership/chat/route.ts b/apps/sim/app/api/mothership/chat/route.ts index 18b66b5577c..c1478c172fb 100644 --- a/apps/sim/app/api/mothership/chat/route.ts +++ b/apps/sim/app/api/mothership/chat/route.ts @@ -279,6 +279,7 @@ export async function POST(req: NextRequest) { role: 'assistant' as const, content: result.content, timestamp: new Date().toISOString(), + ...(result.requestId ? { requestId: result.requestId } : {}), } if (result.toolCalls.length > 0) { assistantMessage.toolCalls = result.toolCalls diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/index.ts b/apps/sim/app/workspace/[workspaceId]/home/components/index.ts index dc178d001b8..eebd5d130b7 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/components/index.ts +++ b/apps/sim/app/workspace/[workspaceId]/home/components/index.ts @@ -1,3 +1,4 @@ +export { MessageActions } from './message-actions' export { MessageContent } from './message-content' export { MothershipView } from './mothership-view' export { QueuedMessages } from './queued-messages' diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts new file mode 100644 index 00000000000..906e30d5a6f --- /dev/null +++ b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts @@ -0,0 +1 @@ +export { MessageActions } from './message-actions' diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx new file mode 100644 index 00000000000..6fa6b3ac427 --- /dev/null +++ b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx @@ -0,0 +1,75 @@ +'use client' + +import { useCallback, useState } from 'react' +import { Check, Copy, Ellipsis, Hash } from 'lucide-react' +import { + Popover, + PopoverContent, + PopoverItem, + PopoverScrollArea, + PopoverTrigger, +} from '@/components/emcn' + +interface MessageActionsProps { + content: string + requestId?: string +} + +export function MessageActions({ content, requestId }: MessageActionsProps) { + const [open, setOpen] = useState(false) + const [copied, setCopied] = useState<'message' | 'request' | null>(null) + + const copyToClipboard = useCallback(async (text: string, type: 'message' | 'request') => { + try { + await navigator.clipboard.writeText(text) + setCopied(type) + setTimeout(() => setCopied(null), 1500) + } catch { + // Silently fail + } + setOpen(false) + }, []) + + return ( + + + + + + + copyToClipboard(content, 'message')} disabled={!content}> + {copied === 'message' ? ( + + ) : ( + + )} + Copy Message + + requestId && copyToClipboard(requestId, 'request')} + disabled={!requestId} + > + {copied === 'request' ? ( + + ) : ( + + )} + Copy Request ID + + + + + ) +} diff --git a/apps/sim/app/workspace/[workspaceId]/home/home.tsx b/apps/sim/app/workspace/[workspaceId]/home/home.tsx index 8bc0dac39b2..d61edccb437 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/home.tsx +++ b/apps/sim/app/workspace/[workspaceId]/home/home.tsx @@ -17,6 +17,7 @@ import { useChatHistory, useMarkTaskRead } from '@/hooks/queries/tasks' import type { ChatContext } from '@/stores/panel' import { useSidebarStore } from '@/stores/sidebar/store' import { + MessageActions, MessageContent, MothershipView, QueuedMessages, @@ -414,7 +415,12 @@ export function Home({ chatId }: HomeProps = {}) { const isLastMessage = index === messages.length - 1 return ( -
+
+ {!isThisStreaming && (msg.content || msg.contentBlocks?.length) && ( +
+ +
+ )} { if (isStale()) return streamingBlocksRef.current = [...blocks] - const snapshot = { content: runningText, contentBlocks: [...blocks] } + const snapshot: Partial = { + content: runningText, + contentBlocks: [...blocks], + } + if (streamRequestId) snapshot.requestId = streamRequestId setMessages((prev) => { if (expectedGen !== undefined && streamGenRef.current !== expectedGen) return prev const idx = prev.findIndex((m) => m.id === assistantId) if (idx >= 0) { return prev.map((m) => (m.id === assistantId ? { ...m, ...snapshot } : m)) } - return [...prev, { id: assistantId, role: 'assistant' as const, ...snapshot }] + return [ + ...prev, + { id: assistantId, role: 'assistant' as const, content: '', ...snapshot }, + ] }) } @@ -597,6 +605,14 @@ export function useChat( } break } + case 'request_id': { + const rid = typeof parsed.data === 'string' ? parsed.data : undefined + if (rid) { + streamRequestId = rid + flush() + } + break + } case 'content': { const chunk = typeof parsed.data === 'string' ? parsed.data : (parsed.content ?? '') if (chunk) { diff --git a/apps/sim/app/workspace/[workspaceId]/home/types.ts b/apps/sim/app/workspace/[workspaceId]/home/types.ts index 1ed8d0ac65e..4a827c97aa1 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/types.ts +++ b/apps/sim/app/workspace/[workspaceId]/home/types.ts @@ -33,6 +33,7 @@ export interface QueuedMessage { */ export type SSEEventType = | 'chat_id' + | 'request_id' | 'title_updated' | 'content' | 'reasoning' // openai reasoning - render as thinking text @@ -199,6 +200,7 @@ export interface ChatMessage { contentBlocks?: ContentBlock[] attachments?: ChatMessageAttachment[] contexts?: ChatMessageContext[] + requestId?: string } export const SUBAGENT_LABELS: Record = { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx index 187ff159480..4774b1fd044 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx @@ -3,6 +3,7 @@ import { type FC, memo, useCallback, useMemo, useRef, useState } from 'react' import { RotateCcw } from 'lucide-react' import { Button } from '@/components/emcn' +import { MessageActions } from '@/app/workspace/[workspaceId]/home/components/message-actions' import { OptionsSelector, parseSpecialTags, @@ -409,9 +410,14 @@ const CopilotMessage: FC = memo( if (isAssistant) { return (
+ {!isStreaming && message.content && ( +
+ +
+ )}
{/* Content blocks in chronological order */} {memoizedContentBlocks || (isStreaming &&
)} diff --git a/apps/sim/lib/copilot/orchestrator/index.ts b/apps/sim/lib/copilot/orchestrator/index.ts index 5e07bbf38a1..c29fae00550 100644 --- a/apps/sim/lib/copilot/orchestrator/index.ts +++ b/apps/sim/lib/copilot/orchestrator/index.ts @@ -76,6 +76,7 @@ export async function orchestrateCopilotStream( contentBlocks: context.contentBlocks, toolCalls: buildToolCallSummaries(context), chatId: context.chatId, + requestId: context.requestId, errors: context.errors.length ? context.errors : undefined, usage: context.usage, cost: context.cost, diff --git a/apps/sim/lib/copilot/orchestrator/sse/handlers/handlers.ts b/apps/sim/lib/copilot/orchestrator/sse/handlers/handlers.ts index d0431b59cd5..a20ccd40996 100644 --- a/apps/sim/lib/copilot/orchestrator/sse/handlers/handlers.ts +++ b/apps/sim/lib/copilot/orchestrator/sse/handlers/handlers.ts @@ -187,6 +187,12 @@ export const sseHandlers: Record = { execContext.chatId = chatId } }, + request_id: (event, context) => { + const rid = typeof event.data === 'string' ? event.data : undefined + if (rid) { + context.requestId = rid + } + }, title_updated: () => {}, tool_result: (event, context) => { const data = getEventData(event) diff --git a/apps/sim/lib/copilot/orchestrator/types.ts b/apps/sim/lib/copilot/orchestrator/types.ts index 130666c81e6..db43bd6706b 100644 --- a/apps/sim/lib/copilot/orchestrator/types.ts +++ b/apps/sim/lib/copilot/orchestrator/types.ts @@ -88,6 +88,7 @@ export interface ContentBlock { export interface StreamingContext { chatId?: string + requestId?: string messageId: string accumulatedContent: string contentBlocks: ContentBlock[] @@ -154,6 +155,7 @@ export interface OrchestratorResult { contentBlocks: ContentBlock[] toolCalls: ToolCallSummary[] chatId?: string + requestId?: string error?: string errors?: string[] usage?: { prompt: number; completion: number } diff --git a/apps/sim/stores/panel/copilot/types.ts b/apps/sim/stores/panel/copilot/types.ts index dde7e3fc552..798c71e1545 100644 --- a/apps/sim/stores/panel/copilot/types.ts +++ b/apps/sim/stores/panel/copilot/types.ts @@ -70,6 +70,7 @@ export interface CopilotMessage { role: 'user' | 'assistant' | 'system' content: string timestamp: string + requestId?: string citations?: { id: number; title: string; url: string; similarity?: number }[] toolCalls?: CopilotToolCall[] contentBlocks?: ClientContentBlock[] From 4131fe26d3c3ee214bf49829d449b3602fb8c658 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan Date: Tue, 17 Mar 2026 17:03:49 -0700 Subject: [PATCH 2/5] Persist rid --- apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts | 1 + apps/sim/hooks/queries/tasks.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts b/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts index e7c519e31ab..c320a6a6d7c 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts +++ b/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts @@ -142,6 +142,7 @@ function mapStoredMessage(msg: TaskStoredMessage): ChatMessage { id: msg.id, role: msg.role, content: msg.content, + ...(msg.requestId ? { requestId: msg.requestId } : {}), } const hasContentBlocks = Array.isArray(msg.contentBlocks) && msg.contentBlocks.length > 0 diff --git a/apps/sim/hooks/queries/tasks.ts b/apps/sim/hooks/queries/tasks.ts index 198d59701c2..184859f2526 100644 --- a/apps/sim/hooks/queries/tasks.ts +++ b/apps/sim/hooks/queries/tasks.ts @@ -54,6 +54,7 @@ export interface TaskStoredMessage { id: string role: 'user' | 'assistant' content: string + requestId?: string toolCalls?: TaskStoredToolCall[] contentBlocks?: TaskStoredContentBlock[] fileAttachments?: TaskStoredFileAttachment[] From c0ff3cae2a707406596cb439737280c73ce31a31 Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Tue, 17 Mar 2026 18:03:11 -0700 Subject: [PATCH 3/5] fix ui --- .../message-actions/message-actions.tsx | 113 ++++++++++-------- .../app/workspace/[workspaceId]/home/home.tsx | 4 +- .../copilot-message/copilot-message.tsx | 4 +- apps/sim/lib/copilot/client-sse/handlers.ts | 9 ++ apps/sim/lib/copilot/client-sse/types.ts | 1 + apps/sim/stores/panel/copilot/store.ts | 2 + 6 files changed, 80 insertions(+), 53 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx index 6fa6b3ac427..c4faa1ebfb5 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx +++ b/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx @@ -1,13 +1,13 @@ 'use client' -import { useCallback, useState } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { Check, Copy, Ellipsis, Hash } from 'lucide-react' import { - Popover, - PopoverContent, - PopoverItem, - PopoverScrollArea, - PopoverTrigger, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Tooltip, } from '@/components/emcn' interface MessageActionsProps { @@ -16,60 +16,75 @@ interface MessageActionsProps { } export function MessageActions({ content, requestId }: MessageActionsProps) { - const [open, setOpen] = useState(false) const [copied, setCopied] = useState<'message' | 'request' | null>(null) + const resetTimeoutRef = useRef(null) + + useEffect(() => { + return () => { + if (resetTimeoutRef.current !== null) { + window.clearTimeout(resetTimeoutRef.current) + } + } + }, []) const copyToClipboard = useCallback(async (text: string, type: 'message' | 'request') => { try { await navigator.clipboard.writeText(text) setCopied(type) - setTimeout(() => setCopied(null), 1500) + if (resetTimeoutRef.current !== null) { + window.clearTimeout(resetTimeoutRef.current) + } + resetTimeoutRef.current = window.setTimeout(() => setCopied(null), 1500) } catch { - // Silently fail + return } - setOpen(false) }, []) + if (!content && !requestId) { + return null + } + return ( - - - + + + More options + + + { + event.stopPropagation() + void copyToClipboard(content, 'message') + }} + > + {copied === 'message' ? : } + Copy Message + + { + event.stopPropagation() + if (requestId) { + void copyToClipboard(requestId, 'request') + } + }} > - - - - - - copyToClipboard(content, 'message')} disabled={!content}> - {copied === 'message' ? ( - - ) : ( - - )} - Copy Message - - requestId && copyToClipboard(requestId, 'request')} - disabled={!requestId} - > - {copied === 'request' ? ( - - ) : ( - - )} - Copy Request ID - - - - + {copied === 'request' ? : } + Copy Request ID + + + ) } diff --git a/apps/sim/app/workspace/[workspaceId]/home/home.tsx b/apps/sim/app/workspace/[workspaceId]/home/home.tsx index d61edccb437..800b8c2e8af 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/home.tsx +++ b/apps/sim/app/workspace/[workspaceId]/home/home.tsx @@ -415,9 +415,9 @@ export function Home({ chatId }: HomeProps = {}) { const isLastMessage = index === messages.length - 1 return ( -
+
{!isThisStreaming && (msg.content || msg.contentBlocks?.length) && ( -
+
)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx index 4774b1fd044..db0df3c6445 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/copilot-message.tsx @@ -414,11 +414,11 @@ const CopilotMessage: FC = memo( style={{ '--panel-max-width': `${panelWidth - 16}px` } as React.CSSProperties} > {!isStreaming && message.content && ( -
+
)} -
+
{/* Content blocks in chronological order */} {memoizedContentBlocks || (isStreaming &&
)} diff --git a/apps/sim/lib/copilot/client-sse/handlers.ts b/apps/sim/lib/copilot/client-sse/handlers.ts index 7705e1cf3dd..f929d1057b5 100644 --- a/apps/sim/lib/copilot/client-sse/handlers.ts +++ b/apps/sim/lib/copilot/client-sse/handlers.ts @@ -92,6 +92,7 @@ export function flushStreamingUpdates(set: StoreSet) { if (update) { return { ...msg, + requestId: update.requestId ?? msg.requestId, content: '', contentBlocks: update.contentBlocks.length > 0 @@ -129,6 +130,7 @@ export function updateStreamingMessage(set: StoreSet, context: ClientStreamingCo const newMessages = [...messages] newMessages[messages.length - 1] = { ...lastMessage, + requestId: lastMessageUpdate.requestId ?? lastMessage.requestId, content: '', contentBlocks: lastMessageUpdate.contentBlocks.length > 0 @@ -143,6 +145,7 @@ export function updateStreamingMessage(set: StoreSet, context: ClientStreamingCo if (update) { return { ...msg, + requestId: update.requestId ?? msg.requestId, content: '', contentBlocks: update.contentBlocks.length > 0 @@ -429,6 +432,12 @@ export const sseHandlers: Record = { writeActiveStreamToStorage(updatedStream) } }, + request_id: (data, context) => { + const requestId = typeof data.data === 'string' ? data.data : undefined + if (requestId) { + context.requestId = requestId + } + }, title_updated: (_data, _context, get, set) => { const title = _data.title if (!title) return diff --git a/apps/sim/lib/copilot/client-sse/types.ts b/apps/sim/lib/copilot/client-sse/types.ts index 95fa8f077e2..66c18030e75 100644 --- a/apps/sim/lib/copilot/client-sse/types.ts +++ b/apps/sim/lib/copilot/client-sse/types.ts @@ -22,6 +22,7 @@ export interface ClientContentBlock { export interface StreamingContext { messageId: string + requestId?: string accumulatedContent: string contentBlocks: ClientContentBlock[] currentTextBlock: ClientContentBlock | null diff --git a/apps/sim/stores/panel/copilot/store.ts b/apps/sim/stores/panel/copilot/store.ts index dba7db4ac42..a2c3249441f 100644 --- a/apps/sim/stores/panel/copilot/store.ts +++ b/apps/sim/stores/panel/copilot/store.ts @@ -224,6 +224,7 @@ function replaceTextBlocks(blocks: ClientContentBlock[], text: string): ClientCo function createClientStreamingContext(messageId: string): ClientStreamingContext { return { messageId, + requestId: undefined, accumulatedContent: '', contentBlocks: [], currentTextBlock: null, @@ -2043,6 +2044,7 @@ export const useCopilotStore = create()( msg.id === assistantMessageId ? { ...msg, + requestId: context.requestId ?? msg.requestId, content: finalContentWithOptions, contentBlocks: sanitizedContentBlocks, } From 70a2f03893c3e8e7598d410b754a371f8281ccd0 Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Tue, 17 Mar 2026 18:19:32 -0700 Subject: [PATCH 4/5] address comments --- .../[workspaceId]/components/index.ts | 1 + .../components/message-actions/index.ts | 0 .../message-actions/message-actions.tsx | 26 +++++++------------ .../[workspaceId]/home/components/index.ts | 1 - .../app/workspace/[workspaceId]/home/home.tsx | 2 +- .../copilot-message/copilot-message.tsx | 4 +-- .../sim/lib/copilot/messages/serialization.ts | 4 +++ 7 files changed, 18 insertions(+), 20 deletions(-) rename apps/sim/app/workspace/[workspaceId]/{home => }/components/message-actions/index.ts (100%) rename apps/sim/app/workspace/[workspaceId]/{home => }/components/message-actions/message-actions.tsx (71%) diff --git a/apps/sim/app/workspace/[workspaceId]/components/index.ts b/apps/sim/app/workspace/[workspaceId]/components/index.ts index 4a08e4f6c79..28ae1e475a5 100644 --- a/apps/sim/app/workspace/[workspaceId]/components/index.ts +++ b/apps/sim/app/workspace/[workspaceId]/components/index.ts @@ -1,5 +1,6 @@ export { ErrorState, type ErrorStateProps } from './error' export { InlineRenameInput } from './inline-rename-input' +export { MessageActions } from './message-actions' export { ownerCell } from './resource/components/owner-cell/owner-cell' export type { BreadcrumbEditing, diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts b/apps/sim/app/workspace/[workspaceId]/components/message-actions/index.ts similarity index 100% rename from apps/sim/app/workspace/[workspaceId]/home/components/message-actions/index.ts rename to apps/sim/app/workspace/[workspaceId]/components/message-actions/index.ts diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx b/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx similarity index 71% rename from apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx rename to apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx index c4faa1ebfb5..9d86664c812 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/components/message-actions/message-actions.tsx +++ b/apps/sim/app/workspace/[workspaceId]/components/message-actions/message-actions.tsx @@ -7,7 +7,6 @@ import { DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, - Tooltip, } from '@/components/emcn' interface MessageActionsProps { @@ -46,21 +45,16 @@ export function MessageActions({ content, requestId }: MessageActionsProps) { return ( - - - - - - - More options - + + + = memo( className={`group/msg relative w-full max-w-full flex-none overflow-hidden [max-width:var(--panel-max-width)] ${isDimmed ? 'opacity-40' : 'opacity-100'}`} style={{ '--panel-max-width': `${panelWidth - 16}px` } as React.CSSProperties} > - {!isStreaming && message.content && ( + {!isStreaming && (message.content || message.contentBlocks?.length) && (
diff --git a/apps/sim/lib/copilot/messages/serialization.ts b/apps/sim/lib/copilot/messages/serialization.ts index 4a970cc92fe..89a30466806 100644 --- a/apps/sim/lib/copilot/messages/serialization.ts +++ b/apps/sim/lib/copilot/messages/serialization.ts @@ -141,6 +141,10 @@ export function serializeMessagesForDB( timestamp, } + if (msg.requestId) { + serialized.requestId = msg.requestId + } + if (Array.isArray(msg.contentBlocks) && msg.contentBlocks.length > 0) { serialized.contentBlocks = deepClone(msg.contentBlocks) } From d748eef48abede0a934bdfcf45446d515c69169c Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Tue, 17 Mar 2026 18:20:51 -0700 Subject: [PATCH 5/5] update types --- apps/sim/lib/copilot/orchestrator/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/sim/lib/copilot/orchestrator/types.ts b/apps/sim/lib/copilot/orchestrator/types.ts index db43bd6706b..e79d0a65360 100644 --- a/apps/sim/lib/copilot/orchestrator/types.ts +++ b/apps/sim/lib/copilot/orchestrator/types.ts @@ -2,6 +2,7 @@ import type { MothershipResource } from '@/lib/copilot/resource-types' export type SSEEventType = | 'chat_id' + | 'request_id' | 'title_updated' | 'content' | 'reasoning'