// import { useState, useEffect } from 'react'; import { actionDelimiter, actionDomainSeparator, Constants } from 'librechat-data-provider'; import * as Popover from '@radix-ui/react-popover'; import useLocalize from '~/hooks/useLocalize'; import ProgressCircle from './ProgressCircle'; import InProgressCall from './InProgressCall'; import CancelledIcon from './CancelledIcon'; import ProgressText from './ProgressText'; import FinishedIcon from './FinishedIcon'; import ToolPopover from './ToolPopover'; // import ActionIcon from './ActionIcon'; import WrenchIcon from './WrenchIcon'; import { useProgress } from '~/hooks'; export default function ToolCall({ initialProgress = 0.1, isSubmitting, name, args = '', output, }: { initialProgress: number; isSubmitting: boolean; name: string; args: string; output?: string | null; }) { const localize = useLocalize(); const progress = useProgress(initialProgress); const radius = 56.08695652173913; const circumference = 2 * Math.PI * radius; const offset = circumference - progress * circumference; const [function_name, _domain] = name.split(actionDelimiter); const domain = _domain?.replaceAll(actionDomainSeparator, '.') ?? null; const error = output?.toLowerCase()?.includes('error processing tool'); return (
{progress < 1 ? (
) : error ? ( ) : ( )}
({})} inProgressText={localize('com_assistants_running_action')} finishedText={ domain && domain.length !== Constants.ENCODED_DOMAIN_LENGTH ? localize('com_assistants_completed_action', domain) : localize('com_assistants_completed_function', function_name) } hasInput={!!args?.length} popover={true} /> {!!args?.length && ( )}
); }