| import React, { memo } from 'react'; | |
| import { TerminalSquareIcon } from 'lucide-react'; | |
| import { CheckboxButton } from '@librechat/client'; | |
| import { PermissionTypes, Permissions } from 'librechat-data-provider'; | |
| import { useLocalize, useHasAccess } from '~/hooks'; | |
| import { useBadgeRowContext } from '~/Providers'; | |
| function CodeInterpreter() { | |
| const localize = useLocalize(); | |
| const { codeInterpreter, codeApiKeyForm } = useBadgeRowContext(); | |
| const { toggleState: runCode, debouncedChange, isPinned } = codeInterpreter; | |
| const { badgeTriggerRef } = codeApiKeyForm; | |
| const canRunCode = useHasAccess({ | |
| permissionType: PermissionTypes.RUN_CODE, | |
| permission: Permissions.USE, | |
| }); | |
| if (!canRunCode) { | |
| return null; | |
| } | |
| return ( | |
| (runCode || isPinned) && ( | |
| <CheckboxButton | |
| ref={badgeTriggerRef} | |
| className="max-w-fit" | |
| checked={runCode} | |
| setValue={debouncedChange} | |
| label={localize('com_assistants_code_interpreter')} | |
| isCheckedClassName="border-purple-600/40 bg-purple-500/10 hover:bg-purple-700/10" | |
| icon={<TerminalSquareIcon className="icon-md" />} | |
| /> | |
| ) | |
| ); | |
| } | |
| export default memo(CodeInterpreter); | |