This commit is contained in:
2025-08-06 15:39:05 +08:00
parent 351a79d54c
commit 6798be3b42
26 changed files with 1243 additions and 469 deletions

View File

@@ -21,6 +21,7 @@ import { ScrollArea } from '@/components/ui/scroll-area';
import { Toast } from '@/components/ui/toast';
import { api, type Agent, type AgentRunWithMetrics } from '@/lib/api';
import { useTabState } from '@/hooks/useTabState';
import { useTranslation } from '@/hooks/useTranslation';
import { formatISOTimestamp } from '@/lib/date-utils';
import { open as openDialog, save } from '@tauri-apps/plugin-dialog';
import { invoke } from '@tauri-apps/api/core';
@@ -32,6 +33,7 @@ interface AgentsModalProps {
}
export const AgentsModal: React.FC<AgentsModalProps> = ({ open, onOpenChange }) => {
const { t } = useTranslation();
const [activeTab, setActiveTab] = useState('agents');
const [agents, setAgents] = useState<Agent[]>([]);
const [runningAgents, setRunningAgents] = useState<AgentRunWithMetrics[]>([]);
@@ -201,18 +203,18 @@ export const AgentsModal: React.FC<AgentsModalProps> = ({ open, onOpenChange })
<DialogHeader className="px-6 pt-6">
<DialogTitle className="flex items-center gap-2">
<Bot className="w-5 h-5" />
Agent Management
{t('agents.agentManagement')}
</DialogTitle>
<DialogDescription>
Create new agents or manage running agent executions
{t('agents.createNewOrManageAgents')}
</DialogDescription>
</DialogHeader>
<Tabs value={activeTab} onValueChange={setActiveTab} className="flex-1 flex flex-col">
<TabsList className="mx-6">
<TabsTrigger value="agents">Available Agents</TabsTrigger>
<TabsTrigger value="agents">{t('agents.availableAgents')}</TabsTrigger>
<TabsTrigger value="running" className="relative">
Running Agents
{t('agents.runningAgents')}
{runningAgents.length > 0 && (
<Badge variant="secondary" className="ml-2 h-5 px-1.5">
{runningAgents.length}
@@ -257,9 +259,9 @@ export const AgentsModal: React.FC<AgentsModalProps> = ({ open, onOpenChange })
) : agents.length === 0 ? (
<div className="flex flex-col items-center justify-center h-full text-center">
<Bot className="w-12 h-12 text-muted-foreground mb-4" />
<p className="text-lg font-medium mb-2">No agents available</p>
<p className="text-lg font-medium mb-2">{t('agents.noAgentsAvailable')}</p>
<p className="text-sm text-muted-foreground mb-4">
Create your first agent to get started
{t('agents.createFirstAgentToGetStarted')}
</p>
<Button onClick={() => {
onOpenChange(false);