diff --git a/frontend/src/features/agents/hooks/useAgentDrillDown.js b/frontend/src/features/agents/hooks/useAgentDrillDown.js index 6f2111d..53e9713 100644 --- a/frontend/src/features/agents/hooks/useAgentDrillDown.js +++ b/frontend/src/features/agents/hooks/useAgentDrillDown.js @@ -340,6 +340,99 @@ } }; + const handleAddTrigger = async () => { + try { + setCreatingTrigger(true); + const payload = { + trigger_type: newTriggerType, + default_prompt: newDefaultPrompt + }; + if (newTriggerType === 'cron') payload.cron_expression = newCronValue; + if (newTriggerType === 'interval') payload.interval_seconds = parseInt(newIntervalValue) || 600; + + await createAgentTrigger(agentId, payload); + setNewDefaultPrompt(''); + setNewCronValue('0 * * * *'); + setNewIntervalValue(600); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Trigger Failed', message: err.message, type: 'error' }); + } finally { + setCreatingTrigger(false); + } + }; + + const handleDeleteTrigger = async (triggerId) => { + try { + await deleteAgentTrigger(triggerId); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Delete Failed', message: err.message, type: 'error' }); + } + }; + + const handleFireTrigger = async (triggerPrompt) => { + try { + await fetchWithAuth(`/agents/${agentId}/run`, { + method: 'POST', + body: { prompt: triggerPrompt } + }); + setModalConfig({ title: 'Success', message: 'Agent manual execution started successfully!', type: 'success' }); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Execution Failed', message: err.message, type: 'error' }); + } + }; + + const handleFireWebhook = async (token, triggerPrompt) => { + try { + await fetchWithAuth(`/agents/${agentId}/webhook?token=${token}`, { + method: 'POST', + body: { prompt: triggerPrompt || "Manual test from UI" } + }); + setModalConfig({ title: 'Success', message: 'Webhook test trigger sent successfully!', type: 'success' }); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Webhook Failed', message: err.message, type: 'error' }); + } + }; + + const handleResetMetrics = async () => { + setModalConfig({ + title: 'Confirm Reset Metrics', + message: "Are you sure you want to reset all execution metrics for this agent? This cannot be undone.", + type: 'error', + confirmText: 'Reset Metrics', + confirmAction: async () => { + try { + setClearing(true); + await resetAgentMetrics(agentId); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Reset Failed', message: err.message, type: 'error' }); + } finally { + setClearing(false); + } + } + }); + }; + + const handleInjectOverride = async (e) => { + e.preventDefault(); + if (!overrideText.trim() || !agent?.session_id) return; + + try { + await fetchWithAuth(`/agents/${agentId}/run`, { + method: "POST", + body: { prompt: overrideText } + }); + setOverrideText(""); + fetchData(); + } catch (err) { + setModalConfig({ title: 'Injection Failed', message: err.message, type: 'error' }); + } + }; + return { agent, chatHistory, loading, error, activeTab, setActiveTab, editConfig, setEditConfig, saving, userConfig, tokenUsage, tokenError, @@ -351,6 +444,6 @@ runningSeconds, lastTotalConsumption, currentAction, lastAction, lastActionDuration, handleAction, handleClearHistory, handleSaveConfig, handleSaveGroundTruth, fetchData, handleAddTrigger, handleDeleteTrigger, handleFireTrigger, handleFireWebhook, - overrideText, setOverrideText + handleResetMetrics, handleInjectOverride, overrideText, setOverrideText }; };