diff --git a/libs/chatbot/lib/components/ChatBot/MessageEntry.tsx b/libs/chatbot/lib/components/ChatBot/MessageEntry.tsx index bad4a70e6b..e1b58845e7 100644 --- a/libs/chatbot/lib/components/ChatBot/MessageEntry.tsx +++ b/libs/chatbot/lib/components/ChatBot/MessageEntry.tsx @@ -6,7 +6,12 @@ import { saveAs } from 'file-saver'; import { Button, Stack, StackItem } from '@patternfly-6/react-core'; import { DownloadIcon, ExternalLinkAltIcon } from '@patternfly-6/react-icons'; -import { isToolArgStreamEvent, isToolResponseStreamEvent, StreamEvent } from './types'; +import { + isOldToolResponseStreamEvent, + isToolArgStreamEvent, + isToolResponseStreamEvent, + StreamEvent, +} from './types'; import { getToolAction, MsgAction } from './helpers'; import FeedbackForm from './FeedbackCard'; import { FeedbackRequest } from './BotMessage'; @@ -59,22 +64,24 @@ const MessageEntry = ({ message, avatar, openClusterDetails, onApiCall }: Messag const actions = message.role === 'user' || isLoading ? [] - : (message.additionalAttributes?.toolResults as StreamEvent[])?.reduce( - (acc, ev) => { - if (isToolResponseStreamEvent(ev)) { - const action = getToolAction({ - toolName: ev.data.token.tool_name, - response: ev.data.token.response, - args: toolArgs[ev.data.id], - }); - if (action) { - acc.push(action); - } + : ( + [ + ...(message.additionalAttributes?.toolResults || []), + ...(message.additionalAttributes?.toolCalls || []), + ] as StreamEvent[] + ).reduce((acc, ev) => { + if (isToolResponseStreamEvent(ev) || isOldToolResponseStreamEvent(ev)) { + const action = getToolAction({ + toolName: ev.data.token.tool_name, + response: ev.data.token.response, + args: toolArgs[ev.data.id], + }); + if (action) { + acc.push(action); } - return acc; - }, - [], - ); + } + return acc; + }, []); const feedback = message.role === 'user' || isLoading diff --git a/libs/chatbot/lib/components/ChatBot/types.ts b/libs/chatbot/lib/components/ChatBot/types.ts index 5f108a342a..76e2b8c4db 100644 --- a/libs/chatbot/lib/components/ChatBot/types.ts +++ b/libs/chatbot/lib/components/ChatBot/types.ts @@ -33,3 +33,6 @@ export const isToolArgStreamEvent = (e: StreamEvent): e is ToolArgStreamEvent => export const isToolResponseStreamEvent = (e: StreamEvent): e is ToolResponseStreamEvent => e.event === 'tool_result' && typeof e.data.token === 'object' && 'response' in e.data.token; + +export const isOldToolResponseStreamEvent = (e: StreamEvent): e is ToolResponseStreamEvent => + e.event === 'tool_call' && typeof e.data.token === 'object' && 'response' in e.data.token;