import { useEffect, useState } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { getAgentGroups, deleteAgentGroup, createAgentGroup, updateAgentGroup } from '../api/client'; import PageHeader from '../components/PageHeader'; import DataTable from '../components/DataTable'; import type { Column } from '../components/DataTable'; import StatusBadge from '../components/StatusBadge'; import ErrorState from '../components/ErrorState'; import { formatDateTime } from '../api/utils'; import type { AgentGroup } from '../api/types'; interface CreateAgentGroupModalProps { isOpen: boolean; onClose: () => void; onSuccess: () => void; isLoading: boolean; error: string | null; } function CreateAgentGroupModal({ isOpen, onClose, onSuccess, isLoading, error }: CreateAgentGroupModalProps) { const [name, setName] = useState(''); const [description, setDescription] = useState(''); const [matchOs, setMatchOs] = useState(''); const [matchArch, setMatchArch] = useState(''); const [matchIpCidr, setMatchIpCidr] = useState(''); const [matchVersion, setMatchVersion] = useState(''); const [enabled, setEnabled] = useState(true); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) return; await createAgentGroup({ name: name.trim(), description: description.trim(), match_os: matchOs.trim() || undefined, match_architecture: matchArch.trim() || undefined, match_ip_cidr: matchIpCidr.trim() || undefined, match_version: matchVersion.trim() || undefined, enabled, }); setName(''); setDescription(''); setMatchOs(''); setMatchArch(''); setMatchIpCidr(''); setMatchVersion(''); setEnabled(true); onSuccess(); }; if (!isOpen) return null; return (
e.stopPropagation()}>

Create Agent Group

{error &&
{error}
}
setName(e.target.value)} className="w-full bg-white border border-surface-border rounded px-3 py-2 text-sm text-ink focus:outline-none focus:border-brand-400" placeholder="e.g., Production Linux Servers" required />