import { useState } from 'react'; import { snakeToTitleCase } from '../utils'; import PermissionModal from './settings/permission/PermissionModal'; import { ChevronRight } from 'lucide-react'; import { confirmPermission } from '../api'; import { Button } from './ui/button'; const ALWAYS_ALLOW = 'always_allow'; const ALLOW_ONCE = 'allow_once'; const DENY = 'deny'; interface ToolConfirmationProps { isCancelledMessage: boolean; isClicked: boolean; toolConfirmationId: string; toolName: string; } export default function ToolConfirmation({ isCancelledMessage, isClicked, toolConfirmationId, toolName, }: ToolConfirmationProps) { const [clicked, setClicked] = useState(isClicked); const [status, setStatus] = useState('unknown'); const [actionDisplay, setActionDisplay] = useState(''); const [isModalOpen, setIsModalOpen] = useState(false); const handleButtonClick = async (action: string) => { setClicked(true); setStatus(action); if (action === ALWAYS_ALLOW) { setActionDisplay('always allowed'); } else if (action === ALLOW_ONCE) { setActionDisplay('allowed once'); } else { setActionDisplay('denied'); } try { const response = await confirmPermission({ body: { id: toolConfirmationId, action, principal_type: 'Tool' }, }); if (response.error) { console.error('Failed to confirm permission: ', response.error); } } catch (err) { console.error('Error fetching tools:', err); } }; const handleModalClose = () => { setIsModalOpen(false); }; function getExtensionName(toolName: string): string { const parts = toolName.split('__'); return parts.length > 1 ? parts[0] : ''; } return isCancelledMessage ? (