'use client'; import { Plus } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'sonner'; import { createTestSessionApiV1LooptalkTestSessionsPost } from '@/client/sdk.gen'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { useAuth } from '@/lib/auth'; import logger from '@/lib/logger'; export function CreateTestSessionButton() { const router = useRouter(); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); const { user } = useAuth(); const [formData, setFormData] = useState({ name: '', description: '', test_type: 'single', actor_workflow_id: '', adversary_workflow_id: '', concurrent_pairs: 1, }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { if (!user) return; const response = await createTestSessionApiV1LooptalkTestSessionsPost({ body: { name: formData.name, actor_workflow_id: parseInt(formData.actor_workflow_id), adversary_workflow_id: parseInt(formData.adversary_workflow_id), config: { test_type: formData.test_type, description: formData.description, concurrent_pairs: formData.test_type === 'load_test' ? formData.concurrent_pairs : undefined } }, }); toast.success('Test session created successfully'); setOpen(false); if (response.data?.id) { router.push(`/looptalk/${response.data.id}`); } else { router.push('/looptalk'); } } catch (error) { logger.error('Error creating test session:', error); toast.error('Failed to create test session'); } finally { setLoading(false); } }; return (
Create Test Session Set up a new LoopTalk test session to test conversations between agents.
setFormData({ ...formData, name: e.target.value })} placeholder="My Test Session" required />