// src/pages/agent-office/components/CommandTab.jsx import { useState } from 'react'; import { sendAgentCommand, approveAgentTask } from '../../../api'; const QUICK_ACTIONS = { stock: [{ action: 'fetch_news', label: 'Fetch News' }, { action: 'test_telegram', label: 'Test Telegram' }], music: [{ action: 'credits', label: 'Check Credits' }], insta: [{ action: 'extract', label: 'Extract News' }, { action: 'collect_trends', label: 'Collect Trends' }], realestate: [{ action: 'dashboard', label: 'Dashboard' }], lotto: [{ action: 'status', label: 'Status' }, { action: 'curate_now', label: 'Curate Now' }] }; const PARAM_ACTIONS = { stock: { action: 'add_alert', label: 'Add Alert', placeholder: '{"symbol":"005930","target_price":70000,"direction":"above"}' }, music: { action: 'compose', label: 'Compose', placeholder: 'jazzy lo-fi piano beat' }, insta: { action: 'render', label: 'Render Slate', placeholder: 'keyword_id (예: 42)' }, realestate: { action: 'fetch_matches', label: 'Fetch Matches', placeholder: '' }, lotto: null }; export default function CommandTab({ agentId, agentState, pendingTask, onCommandResult }) { const [customAction, setCustomAction] = useState(''); const [customParams, setCustomParams] = useState(''); const [paramInput, setParamInput] = useState(''); const [loading, setLoading] = useState(false); const quickActions = QUICK_ACTIONS[agentId] || []; const paramAction = PARAM_ACTIONS[agentId]; const handleQuickAction = async (action) => { setLoading(true); try { const result = await sendAgentCommand(agentId, action, {}); onCommandResult?.(result); } finally { setLoading(false); } }; const handleParamAction = async () => { if (!paramAction || !paramInput.trim()) return; setLoading(true); try { let params = {}; if (paramAction.action === 'compose') { params = { prompt: paramInput }; } else if (paramAction.action === 'research') { params = { keyword: paramInput }; } else if (paramAction.action === 'render') { params = { keyword_id: parseInt(paramInput, 10) }; } else { try { params = JSON.parse(paramInput); } catch { params = { value: paramInput }; } } const result = await sendAgentCommand(agentId, paramAction.action, params); onCommandResult?.(result); setParamInput(''); } finally { setLoading(false); } }; const handleCustomCommand = async () => { if (!customAction.trim()) return; setLoading(true); try { let params = {}; if (customParams.trim()) { try { params = JSON.parse(customParams); } catch { params = { value: customParams }; } } const result = await sendAgentCommand(agentId, customAction, params); onCommandResult?.(result); setCustomAction(''); setCustomParams(''); } finally { setLoading(false); } }; const handleApproval = async (approved) => { if (!pendingTask) return; setLoading(true); try { await approveAgentTask(agentId, pendingTask.id, approved); } finally { setLoading(false); } }; return (