'use client'; import { useState } from 'react'; import { useMutation, useQuery } from 'convex/react'; import { toast } from 'sonner'; import type { Id } from '@spoon/backend/convex/_generated/dataModel.js'; import { api } from '@spoon/backend/convex/_generated/api.js'; import { Button, Card, CardContent, CardHeader, CardTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Textarea, } from '@spoon/ui'; const AgentsPage = () => { const spoons = useQuery(api.spoons.listMine, {}) ?? []; const requests = useQuery(api.agentRequests.listRecent, { limit: 50 }) ?? []; const createRequest = useMutation(api.agentRequests.create); const [spoonId, setSpoonId] = useState(''); const [targetBranch, setTargetBranch] = useState(''); const [prompt, setPrompt] = useState(''); const [submitting, setSubmitting] = useState(false); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); if (!spoonId) { toast.error('Choose a Spoon first.'); return; } setSubmitting(true); try { await createRequest({ spoonId: spoonId as Id<'spoons'>, prompt, targetBranch: targetBranch || undefined, }); setPrompt(''); setTargetBranch(''); toast.success('Agent request queued.'); } catch (error) { console.error(error); toast.error('Could not queue agent request.'); } finally { setSubmitting(false); } }; return (

Agents

Queue prompt-driven work for future AI merge request automation.

Request work
setTargetBranch(event.target.value)} />