import { useState } from 'react' import './App.css' import { askQuestion, ApiError } from './services/api' interface Message { role: 'user' | 'assistant'; content: string; confidenceExplanation?: string; responseType?: 'answer' | 'escalation'; } function App() { const [messages, setMessages] = useState([]); const [input, setInput] = useState(''); const [loading, setLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!input.trim() || loading) return; const userMessage: Message = { role: 'user', content: input.trim() }; setMessages(prev => [...prev, userMessage]); const questionText = input.trim(); setInput(''); setLoading(true); try { const response = await askQuestion(questionText); const assistantMessage: Message = { role: 'assistant', content: response.message, confidenceExplanation: response.confidence_explanation, responseType: response.response_type }; setMessages(prev => [...prev, assistantMessage]); } catch (error) { console.error('API Error:', error); let errorMessage = 'Sorry, something went wrong. Please try again.'; if (error instanceof ApiError) { errorMessage = error.message; } const errorResponse: Message = { role: 'assistant', content: errorMessage, confidenceExplanation: 'Error occurred while processing your request', responseType: 'escalation' }; setMessages(prev => [...prev, errorResponse]); } finally { setLoading(false); } }; return (

TaskFlow Support Chat

Ask questions about TaskFlow features and documentation

{messages.length === 0 && (

Start a conversation by asking a question below

)} {messages.map((message, index) => (
{message.role === 'user' ? 'You' : 'Assistant'}

{message.content}

{message.confidenceExplanation && (
Confidence: {message.confidenceExplanation}
)} {message.responseType === 'escalation' && (
Escalated to Human Support
)}
))} {loading && (
Assistant

Thinking...

)}
setInput(e.target.value)} disabled={loading} />
) } export default App