import { useQuery } from "@tanstack/react-query" import { useState } from "react" import { Loader2, RefreshCw, TriangleAlert } from "lucide-react" import type { FeedItem } from "@/lib/api" import { fetchFeed } from "@/lib/api" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" export function FeedPanel() { const { data: feed, error: feedError, isFetching, refetch, } = useQuery({ queryKey: ["feed"], queryFn: fetchFeed, enabled: false, }) const error = feedError?.message ?? null return (

Feed

Query the feed as the current user.

{error && ( {error} )} {feed && feed.errors.length > 0 && ( Source Errors {feed.errors.map((e) => (
{e.sourceId} {e.error}
))}
)} {feed && (

{feed.items.length} {feed.items.length === 1 ? "item" : "items"}

{feed.items.length === 0 && (

No items in feed.

)} {feed.items.map((item) => ( ))}
)}
) } function FeedItemCard({ item }: { item: FeedItem }) { const [expanded, setExpanded] = useState(false) return (
{item.type} {item.sourceId}
{item.signals?.timeRelevance && ( {item.signals.timeRelevance} )} {item.signals?.urgency !== undefined && ( urgency: {item.signals.urgency} )}

{item.id}

{item.slots && Object.keys(item.slots).length > 0 && (
{Object.entries(item.slots).map(([name, slot]) => (
{name}: {slot.content ?? pending}
))}
)} {expanded && (
            {JSON.stringify(item.data, null, 2)}
          
)}
) }