SYMBOL INDEX (2815 symbols across 701 files) FILE: Manga-Availability-Finder/src/components/AgentCard.tsx type AgentStatus (line 4) | type AgentStatus = "idle" | "searching" | "found" | "not_found" | "error"; type AgentCardProps (line 6) | interface AgentCardProps { function AgentCard (line 43) | function AgentCard({ FILE: Manga-Availability-Finder/src/components/NavLink.tsx type NavLinkCompatProps (line 5) | interface NavLinkCompatProps extends Omit { FILE: Manga-Availability-Finder/src/components/ResultsSummary.tsx type SearchResult (line 4) | interface SearchResult { type ResultsSummaryProps (line 10) | interface ResultsSummaryProps { function ResultsSummary (line 16) | function ResultsSummary({ mangaTitle, results, isSearching }: ResultsSum... FILE: Manga-Availability-Finder/src/components/SearchHero.tsx type SearchHeroProps (line 6) | interface SearchHeroProps { function SearchHero (line 11) | function SearchHero({ onSearch, isSearching }: SearchHeroProps) { FILE: Manga-Availability-Finder/src/components/ui/button.tsx type ButtonProps (line 37) | interface ButtonProps FILE: Manga-Availability-Finder/src/hooks/useMangaSearch.ts type SiteAgent (line 5) | interface SiteAgent { function useMangaSearch (line 14) | function useMangaSearch() { FILE: Manga-Availability-Finder/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: Manga-Availability-Finder/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract) { function AlertDescription (line 50) | function AlertDescription({ FILE: anime-watch-hub/components/ui/aspect-ratio.tsx function AspectRatio (line 5) | function AspectRatio({ FILE: anime-watch-hub/components/ui/avatar.tsx function Avatar (line 8) | function Avatar({ function AvatarImage (line 24) | function AvatarImage({ function AvatarFallback (line 37) | function AvatarFallback({ FILE: anime-watch-hub/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: anime-watch-hub/components/ui/breadcrumb.tsx function Breadcrumb (line 7) | function Breadcrumb({ ...props }: React.ComponentProps<'nav'>) { function BreadcrumbList (line 11) | function BreadcrumbList({ className, ...props }: React.ComponentProps<'o... function BreadcrumbItem (line 24) | function BreadcrumbItem({ className, ...props }: React.ComponentProps<'l... function BreadcrumbLink (line 34) | function BreadcrumbLink({ function BreadcrumbPage (line 52) | function BreadcrumbPage({ className, ...props }: React.ComponentProps<'s... function BreadcrumbSeparator (line 65) | function BreadcrumbSeparator({ function BreadcrumbEllipsis (line 83) | function BreadcrumbEllipsis({ FILE: anime-watch-hub/components/ui/button-group.tsx function ButtonGroup (line 24) | function ButtonGroup({ function ButtonGroupText (line 40) | function ButtonGroupText({ function ButtonGroupSeparator (line 60) | function ButtonGroupSeparator({ FILE: anime-watch-hub/components/ui/button.tsx function Button (line 39) | function Button({ FILE: anime-watch-hub/components/ui/calendar.tsx function Calendar (line 14) | function Calendar({ function CalendarDayButton (line 175) | function CalendarDayButton({ FILE: anime-watch-hub/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<'div'>) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<'... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<'div'>) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<'div'... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: anime-watch-hub/components/ui/carousel.tsx type CarouselApi (line 12) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 13) | type UseCarouselParameters = Parameters type CarouselOptions (line 14) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 15) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 17) | type CarouselProps = { type CarouselContextProps (line 24) | type CarouselContextProps = { function useCarousel (line 35) | function useCarousel() { function Carousel (line 45) | function Carousel({ function CarouselContent (line 135) | function CarouselContent({ className, ...props }: React.ComponentProps<'... function CarouselItem (line 156) | function CarouselItem({ className, ...props }: React.ComponentProps<'div... function CarouselPrevious (line 174) | function CarouselPrevious({ function CarouselNext (line 204) | function CarouselNext({ FILE: anime-watch-hub/components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: '', dark: '.dark' } as const type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function ChartContainer (line 37) | function ChartContainer({ function ChartTooltipContent (line 107) | function ChartTooltipContent({ function ChartLegendContent (line 253) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 308) | function getPayloadConfigFromPayload( FILE: anime-watch-hub/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: anime-watch-hub/components/ui/collapsible.tsx function Collapsible (line 5) | function Collapsible({ function CollapsibleTrigger (line 11) | function CollapsibleTrigger({ function CollapsibleContent (line 22) | function CollapsibleContent({ FILE: anime-watch-hub/components/ui/command.tsx function Command (line 16) | function Command({ function CommandDialog (line 32) | function CommandDialog({ function CommandInput (line 63) | function CommandInput({ function CommandList (line 85) | function CommandList({ function CommandEmpty (line 101) | function CommandEmpty({ function CommandGroup (line 113) | function CommandGroup({ function CommandSeparator (line 129) | function CommandSeparator({ function CommandItem (line 142) | function CommandItem({ function CommandShortcut (line 158) | function CommandShortcut({ FILE: anime-watch-hub/components/ui/context-menu.tsx function ContextMenu (line 9) | function ContextMenu({ function ContextMenuTrigger (line 15) | function ContextMenuTrigger({ function ContextMenuGroup (line 23) | function ContextMenuGroup({ function ContextMenuPortal (line 31) | function ContextMenuPortal({ function ContextMenuSub (line 39) | function ContextMenuSub({ function ContextMenuRadioGroup (line 45) | function ContextMenuRadioGroup({ function ContextMenuSubTrigger (line 56) | function ContextMenuSubTrigger({ function ContextMenuSubContent (line 80) | function ContextMenuSubContent({ function ContextMenuContent (line 96) | function ContextMenuContent({ function ContextMenuItem (line 114) | function ContextMenuItem({ function ContextMenuCheckboxItem (line 137) | function ContextMenuCheckboxItem({ function ContextMenuRadioItem (line 163) | function ContextMenuRadioItem({ function ContextMenuLabel (line 187) | function ContextMenuLabel({ function ContextMenuSeparator (line 207) | function ContextMenuSeparator({ function ContextMenuShortcut (line 220) | function ContextMenuShortcut({ FILE: anime-watch-hub/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<'div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<'div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: anime-watch-hub/components/ui/drawer.tsx function Drawer (line 8) | function Drawer({ function DrawerTrigger (line 14) | function DrawerTrigger({ function DrawerPortal (line 20) | function DrawerPortal({ function DrawerClose (line 26) | function DrawerClose({ function DrawerOverlay (line 32) | function DrawerOverlay({ function DrawerContent (line 48) | function DrawerContent({ function DrawerHeader (line 75) | function DrawerHeader({ className, ...props }: React.ComponentProps<'div... function DrawerFooter (line 88) | function DrawerFooter({ className, ...props }: React.ComponentProps<'div... function DrawerTitle (line 98) | function DrawerTitle({ function DrawerDescription (line 111) | function DrawerDescription({ FILE: anime-watch-hub/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 166) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 179) | function DropdownMenuShortcut({ function DropdownMenuSub (line 195) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 201) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 225) | function DropdownMenuSubContent({ FILE: anime-watch-hub/components/ui/empty.tsx function Empty (line 5) | function Empty({ className, ...props }: React.ComponentProps<'div'>) { function EmptyHeader (line 18) | function EmptyHeader({ className, ...props }: React.ComponentProps<'div'... function EmptyMedia (line 46) | function EmptyMedia({ function EmptyTitle (line 61) | function EmptyTitle({ className, ...props }: React.ComponentProps<'div'>) { function EmptyDescription (line 71) | function EmptyDescription({ className, ...props }: React.ComponentProps<... function EmptyContent (line 84) | function EmptyContent({ className, ...props }: React.ComponentProps<'div... FILE: anime-watch-hub/components/ui/field.tsx function FieldSet (line 10) | function FieldSet({ className, ...props }: React.ComponentProps<'fieldse... function FieldLegend (line 24) | function FieldLegend({ function FieldGroup (line 44) | function FieldGroup({ className, ...props }: React.ComponentProps<'div'>) { function Field (line 81) | function Field({ function FieldContent (line 97) | function FieldContent({ className, ...props }: React.ComponentProps<'div... function FieldLabel (line 110) | function FieldLabel({ function FieldTitle (line 128) | function FieldTitle({ className, ...props }: React.ComponentProps<'div'>) { function FieldDescription (line 141) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 156) | function FieldSeparator({ function FieldError (line 186) | function FieldError({ FILE: anime-watch-hub/components/ui/form.tsx type FormFieldContextValue (line 21) | type FormFieldContextValue< type FormItemContextValue (line 68) | type FormItemContextValue = { function FormItem (line 76) | function FormItem({ className, ...props }: React.ComponentProps<'div'>) { function FormLabel (line 90) | function FormLabel({ function FormControl (line 107) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<'... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<'p'>) { FILE: anime-watch-hub/components/ui/hover-card.tsx function HoverCard (line 8) | function HoverCard({ function HoverCardTrigger (line 14) | function HoverCardTrigger({ function HoverCardContent (line 22) | function HoverCardContent({ FILE: anime-watch-hub/components/ui/input-group.tsx function InputGroup (line 10) | function InputGroup({ className, ...props }: React.ComponentProps<'div'>) { function InputGroupAddon (line 59) | function InputGroupAddon({ function InputGroupButton (line 99) | function InputGroupButton({ function InputGroupText (line 118) | function InputGroupText({ className, ...props }: React.ComponentProps<'s... function InputGroupInput (line 130) | function InputGroupInput({ function InputGroupTextarea (line 146) | function InputGroupTextarea({ FILE: anime-watch-hub/components/ui/input-otp.tsx function InputOTP (line 9) | function InputOTP({ function InputOTPGroup (line 29) | function InputOTPGroup({ className, ...props }: React.ComponentProps<'di... function InputOTPSlot (line 39) | function InputOTPSlot({ function InputOTPSeparator (line 69) | function InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) { FILE: anime-watch-hub/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: anime-watch-hub/components/ui/item.tsx function ItemGroup (line 8) | function ItemGroup({ className, ...props }: React.ComponentProps<'div'>) { function ItemSeparator (line 19) | function ItemSeparator({ function Item (line 54) | function Item({ function ItemMedia (line 91) | function ItemMedia({ function ItemContent (line 106) | function ItemContent({ className, ...props }: React.ComponentProps<'div'... function ItemTitle (line 119) | function ItemTitle({ className, ...props }: React.ComponentProps<'div'>) { function ItemDescription (line 132) | function ItemDescription({ className, ...props }: React.ComponentProps<'... function ItemActions (line 146) | function ItemActions({ className, ...props }: React.ComponentProps<'div'... function ItemHeader (line 156) | function ItemHeader({ className, ...props }: React.ComponentProps<'div'>) { function ItemFooter (line 169) | function ItemFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: anime-watch-hub/components/ui/kbd.tsx function Kbd (line 3) | function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) { function KbdGroup (line 18) | function KbdGroup({ className, ...props }: React.ComponentProps<'div'>) { FILE: anime-watch-hub/components/ui/label.tsx function Label (line 8) | function Label({ FILE: anime-watch-hub/components/ui/menubar.tsx function Menubar (line 9) | function Menubar({ function MenubarMenu (line 25) | function MenubarMenu({ function MenubarGroup (line 31) | function MenubarGroup({ function MenubarPortal (line 37) | function MenubarPortal({ function MenubarRadioGroup (line 43) | function MenubarRadioGroup({ function MenubarTrigger (line 51) | function MenubarTrigger({ function MenubarContent (line 67) | function MenubarContent({ function MenubarItem (line 91) | function MenubarItem({ function MenubarCheckboxItem (line 114) | function MenubarCheckboxItem({ function MenubarRadioItem (line 140) | function MenubarRadioItem({ function MenubarLabel (line 164) | function MenubarLabel({ function MenubarSeparator (line 184) | function MenubarSeparator({ function MenubarShortcut (line 197) | function MenubarShortcut({ function MenubarSub (line 213) | function MenubarSub({ function MenubarSubTrigger (line 219) | function MenubarSubTrigger({ function MenubarSubContent (line 243) | function MenubarSubContent({ FILE: anime-watch-hub/components/ui/navigation-menu.tsx function NavigationMenu (line 8) | function NavigationMenu({ function NavigationMenuList (line 32) | function NavigationMenuList({ function NavigationMenuItem (line 48) | function NavigationMenuItem({ function NavigationMenuTrigger (line 65) | function NavigationMenuTrigger({ function NavigationMenuContent (line 85) | function NavigationMenuContent({ function NavigationMenuViewport (line 102) | function NavigationMenuViewport({ function NavigationMenuLink (line 122) | function NavigationMenuLink({ function NavigationMenuIndicator (line 138) | function NavigationMenuIndicator({ FILE: anime-watch-hub/components/ui/pagination.tsx function Pagination (line 11) | function Pagination({ className, ...props }: React.ComponentProps<'nav'>) { function PaginationContent (line 23) | function PaginationContent({ function PaginationItem (line 36) | function PaginationItem({ ...props }: React.ComponentProps<'li'>) { type PaginationLinkProps (line 40) | type PaginationLinkProps = { function PaginationLink (line 45) | function PaginationLink({ function PaginationPrevious (line 68) | function PaginationPrevious({ function PaginationNext (line 85) | function PaginationNext({ function PaginationEllipsis (line 102) | function PaginationEllipsis({ FILE: anime-watch-hub/components/ui/popover.tsx function Popover (line 8) | function Popover({ function PopoverTrigger (line 14) | function PopoverTrigger({ function PopoverContent (line 20) | function PopoverContent({ function PopoverAnchor (line 42) | function PopoverAnchor({ FILE: anime-watch-hub/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: anime-watch-hub/components/ui/radio-group.tsx function RadioGroup (line 9) | function RadioGroup({ function RadioGroupItem (line 22) | function RadioGroupItem({ FILE: anime-watch-hub/components/ui/resizable.tsx function ResizablePanelGroup (line 9) | function ResizablePanelGroup({ function ResizablePanel (line 25) | function ResizablePanel({ function ResizableHandle (line 31) | function ResizableHandle({ FILE: anime-watch-hub/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: anime-watch-hub/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 125) | function SelectSeparator({ function SelectScrollUpButton (line 138) | function SelectScrollUpButton({ function SelectScrollDownButton (line 156) | function SelectScrollDownButton({ FILE: anime-watch-hub/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: anime-watch-hub/components/ui/sheet.tsx function Sheet (line 9) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 465) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<'... function SidebarMenuButton (line 498) | function SidebarMenuButton({ function SidebarMenuAction (line 548) | function SidebarMenuAction({ function SidebarMenuBadge (line 580) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 602) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 640) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<'u... function SidebarMenuSubItem (line 655) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 669) | function SidebarMenuSubButton({ FILE: anime-watch-hub/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<'div'>) { FILE: anime-watch-hub/components/ui/slider.tsx function Slider (line 8) | function Slider({ FILE: anime-watch-hub/components/ui/spinner.tsx function Spinner (line 5) | function Spinner({ className, ...props }: React.ComponentProps<'svg'>) { FILE: anime-watch-hub/components/ui/switch.tsx function Switch (line 8) | function Switch({ FILE: anime-watch-hub/components/ui/table.tsx function Table (line 7) | function Table({ className, ...props }: React.ComponentProps<'table'>) { function TableHeader (line 22) | function TableHeader({ className, ...props }: React.ComponentProps<'thea... function TableBody (line 32) | function TableBody({ className, ...props }: React.ComponentProps<'tbody'... function TableFooter (line 42) | function TableFooter({ className, ...props }: React.ComponentProps<'tfoo... function TableRow (line 55) | function TableRow({ className, ...props }: React.ComponentProps<'tr'>) { function TableHead (line 68) | function TableHead({ className, ...props }: React.ComponentProps<'th'>) { function TableCell (line 81) | function TableCell({ className, ...props }: React.ComponentProps<'td'>) { function TableCaption (line 94) | function TableCaption({ FILE: anime-watch-hub/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: anime-watch-hub/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<'textare... FILE: anime-watch-hub/components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: anime-watch-hub/components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: anime-watch-hub/components/ui/toggle-group.tsx function ToggleGroup (line 17) | function ToggleGroup({ function ToggleGroupItem (line 43) | function ToggleGroupItem({ FILE: anime-watch-hub/components/ui/toggle.tsx function Toggle (line 31) | function Toggle({ FILE: anime-watch-hub/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: anime-watch-hub/components/ui/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: anime-watch-hub/components/ui/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: anime-watch-hub/hooks/use-anime-search.ts type DiscoveredPlatform (line 6) | interface DiscoveredPlatform { function useAnimeSearch (line 12) | function useAnimeSearch() { FILE: anime-watch-hub/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: anime-watch-hub/hooks/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: anime-watch-hub/lib/types.ts type StreamingPlatform (line 1) | interface StreamingPlatform { type PlatformSearchResult (line 8) | interface PlatformSearchResult { type MinoAgentState (line 20) | interface MinoAgentState { constant STREAMING_PLATFORMS (line 36) | const STREAMING_PLATFORMS: StreamingPlatform[] = [ FILE: anime-watch-hub/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: bestbet/app/components/MoneyParticle.tsx type MoneyParticleProps (line 7) | type MoneyParticleProps = { function MoneyParticle (line 15) | function MoneyParticle({ FILE: bestbet/app/components/SportsbookSelector.tsx type Sportsbook (line 6) | type Sportsbook = { type SportsbookSelectorProps (line 13) | type SportsbookSelectorProps = { function SportsbookSelector (line 22) | function SportsbookSelector({ FILE: bestbet/app/layout.tsx function RootLayout (line 23) | function RootLayout({ FILE: bestbet/app/page.tsx constant MONEY_IMAGES (line 14) | const MONEY_IMAGES = ["/BBCoin.png", "/BBNote1.png", "/BBNote2.png"]; type MoneyParticleType (line 16) | type MoneyParticleType = { constant DEFAULT_SPORTSBOOKS (line 23) | const DEFAULT_SPORTSBOOKS: Sportsbook[] = [ constant STORAGE_KEY (line 32) | const STORAGE_KEY = "bestbet-sportsbooks"; constant SELECTION_KEY (line 33) | const SELECTION_KEY = "bestbet-selected"; function getCurrentDate (line 35) | function getCurrentDate(): string { type OddsResult (line 46) | type OddsResult = { type ErrorResult (line 59) | type ErrorResult = { type SportsbookResult (line 64) | type SportsbookResult = { function Home (line 69) | function Home() { FILE: bestbet/app/webagent.ts constant ENDPOINT (line 1) | const ENDPOINT = "https://agent.tinyfish.ai/v1/automation/run-sse"; type MinoSSECallbacks (line 3) | type MinoSSECallbacks = { function runMinoSSE (line 8) | async function runMinoSSE( FILE: code-reference-finder/extension/sidepanel.js function injectCode (line 4) | function injectCode(code) { FILE: code-reference-finder/next.config.ts method headers (line 4) | async headers() { FILE: code-reference-finder/src/app/api/analyze/route.ts function POST (line 4) | async function POST(request: NextRequest) { FILE: code-reference-finder/src/app/layout.tsx function RootLayout (line 22) | function RootLayout({ FILE: code-reference-finder/src/app/page.tsx function Home (line 9) | function Home() { FILE: code-reference-finder/src/components/AgentCard.tsx type AgentCardProps (line 9) | interface AgentCardProps { function AgentCard (line 14) | function AgentCard({ agent, onPreviewClick }: AgentCardProps) { FILE: code-reference-finder/src/components/AnalysisSummary.tsx type AnalysisSummaryProps (line 6) | interface AnalysisSummaryProps { function AnalysisSummary (line 10) | function AnalysisSummary({ analysis }: AnalysisSummaryProps) { FILE: code-reference-finder/src/components/CodeInput.tsx type CodeInputProps (line 6) | interface CodeInputProps { constant EXAMPLES (line 11) | const EXAMPLES = [ function CodeInput (line 48) | function CodeInput({ onSubmit, injectedCode }: CodeInputProps) { FILE: code-reference-finder/src/components/Dashboard.tsx type DashboardProps (line 11) | interface DashboardProps { function Dashboard (line 16) | function Dashboard({ state, onCancel }: DashboardProps) { FILE: code-reference-finder/src/components/Header.tsx type HeaderProps (line 6) | interface HeaderProps { function Header (line 11) | function Header({ showReset, onReset }: HeaderProps) { FILE: code-reference-finder/src/components/LiveBrowserPreview.tsx type LiveBrowserPreviewProps (line 7) | interface LiveBrowserPreviewProps { function LiveBrowserPreview (line 13) | function LiveBrowserPreview({ type MiniPreviewProps (line 94) | interface MiniPreviewProps { function MiniPreview (line 99) | function MiniPreview({ streamingUrl, onClick }: MiniPreviewProps) { FILE: code-reference-finder/src/components/PipelineProgress.tsx constant STEPS (line 6) | const STEPS: { phase: AppPhase; label: string }[] = [ constant PHASE_ORDER (line 12) | const PHASE_ORDER: AppPhase[] = ['input', 'analyzing', 'searching', 'ext... type PipelineProgressProps (line 14) | interface PipelineProgressProps { function PipelineProgress (line 18) | function PipelineProgress({ currentPhase }: PipelineProgressProps) { FILE: code-reference-finder/src/components/ReferenceCard.tsx type ReferenceCardProps (line 17) | interface ReferenceCardProps { function ReferenceCard (line 21) | function ReferenceCard({ data }: ReferenceCardProps) { FILE: code-reference-finder/src/components/ReferenceGrid.tsx type ReferenceGridProps (line 8) | interface ReferenceGridProps { function ReferenceGrid (line 13) | function ReferenceGrid({ agents, onPreviewClick }: ReferenceGridProps) { FILE: code-reference-finder/src/context/AppContext.tsx function allAgentsDone (line 23) | function allAgentsDone(agents: Record): boo... function appReducer (line 29) | function appReducer(state: AppState, action: AppAction): AppState { type AppContextValue (line 155) | interface AppContextValue { function AppProvider (line 162) | function AppProvider({ children }: { children: ReactNode }) { function useAppContext (line 171) | function useAppContext(): AppContextValue { FILE: code-reference-finder/src/hooks/useCodeAnalysis.ts function useCodeAnalysis (line 14) | function useCodeAnalysis() { FILE: code-reference-finder/src/lib/constants.ts constant MINO_API_URL (line 1) | const MINO_API_URL = 'https://agent.tinyfish.ai/v1/automation/run-sse'; constant OPENROUTER_API_URL (line 2) | const OPENROUTER_API_URL = 'https://openrouter.ai/api/v1/chat/completions'; constant GITHUB_API_URL (line 3) | const GITHUB_API_URL = 'https://api.github.com'; constant STACKEXCHANGE_API_URL (line 4) | const STACKEXCHANGE_API_URL = 'https://api.stackexchange.com/2.3'; constant OPENROUTER_MODEL (line 6) | const OPENROUTER_MODEL = 'google/gemini-3.1-flash-lite-preview'; constant OPENROUTER_TEMPERATURE (line 7) | const OPENROUTER_TEMPERATURE = 0.2; constant MAX_AGENTS (line 9) | const MAX_AGENTS = 10; constant AGENT_TIMEOUT_MS (line 10) | const AGENT_TIMEOUT_MS = 360_000; constant GITHUB_RESULTS_PER_QUERY (line 11) | const GITHUB_RESULTS_PER_QUERY = 8; constant STACKOVERFLOW_RESULTS_PER_QUERY (line 12) | const STACKOVERFLOW_RESULTS_PER_QUERY = 10; constant APP_NAME (line 14) | const APP_NAME = 'Code Reference Finder'; constant APP_DESCRIPTION (line 15) | const APP_DESCRIPTION = 'Find real-world usage examples for unfamiliar c... FILE: code-reference-finder/src/lib/goal-builder.ts function buildGitHubGoal (line 3) | function buildGitHubGoal( function buildSOReasoningGoal (line 47) | function buildSOReasoningGoal( FILE: code-reference-finder/src/lib/mino-client.ts function parseSSELine (line 4) | function parseSSELine(line: string): MinoSSEEvent | null { function startMinoAgent (line 17) | function startMinoAgent( FILE: code-reference-finder/src/lib/openrouter.ts function extractJSON (line 4) | function extractJSON(text: string): unknown { function callOpenRouter (line 17) | async function callOpenRouter(systemPrompt: string, userPrompt: string):... function analyzeCode (line 48) | async function analyzeCode(code: string): Promise { function generateSearchQueries (line 79) | async function generateSearchQueries(analysis: CodeAnalysis): Promise { function fetchWithRetry (line 22) | async function fetchWithRetry( function searchGitHub (line 46) | async function searchGitHub(query: string): Promise { function searchStackOverflow (line 86) | async function searchStackOverflow(query: string): Promise = { function POST (line 158) | async function POST(request: NextRequest) { function transformToNewSchema (line 268) | function transformToNewSchema( function scrapePricingPage (line 319) | async function scrapePricingPage( FILE: competitor-analysis/app/company/[id]/page.tsx function formatPrice (line 10) | function formatPrice(price: number | null | undefined): string { function CompanyDetailPage (line 16) | function CompanyDetailPage() { FILE: competitor-analysis/app/competitors/page.tsx function generateId (line 23) | function generateId() { function CompetitorsPage (line 51) | function CompetitorsPage() { FILE: competitor-analysis/app/dashboard/page.tsx type SortConfig (line 44) | interface SortConfig { function DashboardPage (line 49) | function DashboardPage() { FILE: competitor-analysis/app/layout.tsx function RootLayout (line 27) | function RootLayout({ FILE: competitor-analysis/app/page.tsx function HomePage (line 7) | function HomePage() { FILE: competitor-analysis/components/competitor-input.tsx type CompetitorRow (line 7) | interface CompetitorRow { type CompetitorInputProps (line 13) | interface CompetitorInputProps { constant SUGGESTED (line 19) | const SUGGESTED = ["Manus AI", "Devin AI", "Lindy AI", "GitHub Copilot",... function CompetitorInput (line 21) | function CompetitorInput({ onStartScraping, isLoading, existingCompetito... FILE: competitor-analysis/components/dashboard-layout.tsx type NavItem (line 26) | interface NavItem { type DashboardLayoutProps (line 32) | interface DashboardLayoutProps { constant NAV_ITEMS (line 46) | const NAV_ITEMS: NavItem[] = [ function DashboardLayout (line 54) | function DashboardLayout({ FILE: competitor-analysis/components/settings-panel.tsx type SettingsPanelProps (line 25) | interface SettingsPanelProps { function SettingsPanel (line 32) | function SettingsPanel({ open, onClose, baseline, onSave }: SettingsPane... FILE: competitor-analysis/components/spreadsheet-view.tsx type SpreadsheetViewProps (line 19) | interface SpreadsheetViewProps { function InlineEditor (line 29) | function InlineEditor({ function SpreadsheetView (line 140) | function SpreadsheetView({ FILE: competitor-analysis/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: competitor-analysis/components/ui/button.tsx function Button (line 39) | function Button({ FILE: competitor-analysis/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: competitor-analysis/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: competitor-analysis/components/ui/dot-pattern.tsx type DotPatternProps (line 5) | interface DotPatternProps extends React.SVGProps { function DotPattern (line 16) | function DotPattern({ FILE: competitor-analysis/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: competitor-analysis/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 90) | function SelectLabel({ function SelectItem (line 103) | function SelectItem({ function SelectSeparator (line 130) | function SelectSeparator({ function SelectScrollUpButton (line 143) | function SelectScrollUpButton({ function SelectScrollDownButton (line 161) | function SelectScrollDownButton({ FILE: competitor-analysis/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: competitor-analysis/components/ui/sheet.tsx function Sheet (line 9) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 465) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<"... function SidebarMenuButton (line 498) | function SidebarMenuButton({ function SidebarMenuAction (line 548) | function SidebarMenuAction({ function SidebarMenuBadge (line 580) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 602) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 638) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<"u... function SidebarMenuSubItem (line 653) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 667) | function SidebarMenuSubButton({ FILE: competitor-analysis/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: competitor-analysis/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: competitor-analysis/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: competitor-analysis/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: competitor-analysis/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: competitor-analysis/lib/ai-client.ts function createOpenRouterProvider (line 6) | function createOpenRouterProvider() { function getModel (line 19) | function getModel(modelId: string = 'minimax/minimax-m2.1') { function generateStructured (line 25) | async function generateStructured( function generateAIText (line 85) | async function generateAIText( FILE: competitor-analysis/lib/ai-schemas.ts type UrlGenerationResult (line 12) | type UrlGenerationResult = z.infer; type PricingAnalysisResult (line 25) | type PricingAnalysisResult = z.infer; FILE: competitor-analysis/lib/mino-client.ts constant MINO_API_URL (line 7) | const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; type MinoRequestConfig (line 9) | interface MinoRequestConfig { type MinoResponse (line 19) | interface MinoResponse { function runMinoAutomation (line 34) | async function runMinoAutomation( function scrape (line 147) | async function scrape( FILE: competitor-analysis/lib/pricing-context.tsx type Action (line 30) | type Action = function migrateOldSchema (line 51) | function migrateOldSchema(oldState: PricingState): PricingState { function reducer (line 125) | function reducer(state: PricingState, action: Action): PricingState { type PricingContextType (line 320) | interface PricingContextType { constant STORAGE_KEY (line 344) | const STORAGE_KEY = 'pricing-intelligence-state'; function PricingProvider (line 346) | function PricingProvider({ children }: { children: ReactNode }) { function usePricing (line 400) | function usePricing() { FILE: competitor-analysis/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { type MinoEvent (line 9) | interface MinoEvent { function parseSSELine (line 22) | function parseSSELine(line: string): MinoEvent | null { function isCompleteEvent (line 37) | function isCompleteEvent(event: MinoEvent): boolean { function isErrorEvent (line 44) | function isErrorEvent(event: MinoEvent): boolean { function formatStepMessage (line 51) | function formatStepMessage(event: MinoEvent): string { FILE: competitor-analysis/types/index.ts type BaselinePricing (line 1) | interface BaselinePricing { type Competitor (line 9) | interface Competitor { type PricingTier (line 19) | interface PricingTier { type CompetitorPricing (line 74) | interface CompetitorPricing { type EditHistory (line 106) | interface EditHistory { type CellEdit (line 115) | interface CellEdit { type VerificationAction (line 122) | interface VerificationAction { type ScrapingStatus (line 130) | interface ScrapingStatus { type NormalizedPricing (line 140) | interface NormalizedPricing { type Analysis (line 145) | interface Analysis { type DetailLevel (line 154) | type DetailLevel = 'low' | 'medium' | 'high'; type PricingState (line 156) | interface PricingState { type SSEEventType (line 169) | type SSEEventType = type SSEEvent (line 181) | interface SSEEvent { type SpreadsheetRow (line 192) | interface SpreadsheetRow { FILE: competitor-scout-cli/app/api/research/route.ts constant RATE_LIMIT_REQUESTS (line 14) | const RATE_LIMIT_REQUESTS = 25; constant RATE_LIMIT_WINDOW_MS (line 15) | const RATE_LIMIT_WINDOW_MS = 60_000; function getClientIp (line 22) | function getClientIp(request: NextRequest): string { function checkRateLimit (line 30) | function checkRateLimit(ip: string): { ok: boolean; retryAfter?: number } { function POST (line 57) | async function POST(request: NextRequest) { FILE: competitor-scout-cli/app/layout.tsx function RootLayout (line 40) | function RootLayout({ FILE: competitor-scout-cli/app/page.tsx function Home (line 12) | function Home() { FILE: competitor-scout-cli/cli/scout.mjs constant CONFIG_FILE (line 21) | const CONFIG_FILE = path.resolve(process.cwd(), ".scout.json"); constant RUNS_FILE (line 22) | const RUNS_FILE = path.resolve(process.cwd(), ".scout-runs.json"); constant RATE_LIMIT_FILE (line 23) | const RATE_LIMIT_FILE = path.resolve(process.cwd(), ".scout-ratelimit.js... constant TINYFISH_BASE (line 24) | const TINYFISH_BASE = "https://agent.tinyfish.ai/v1"; constant ENV_FILE (line 25) | const ENV_FILE = path.resolve(process.cwd(), ".env.local"); constant MAX_COMPETITORS (line 28) | const MAX_COMPETITORS = 10; constant RATE_LIMIT_REQUESTS (line 31) | const RATE_LIMIT_REQUESTS = 25; constant RATE_LIMIT_WINDOW_MS (line 32) | const RATE_LIMIT_WINDOW_MS = 60_000; function c (line 36) | function c(color, text) { function log (line 49) | function log(prefix, msg) { function info (line 54) | function info(msg) { function ok (line 57) | function ok(msg) { function warn (line 60) | function warn(msg) { function error (line 63) | function error(msg) { function loadConfig (line 67) | function loadConfig() { function normalizeQuotes (line 74) | function normalizeQuotes(value) { function saveConfig (line 83) | function saveConfig(config) { function loadRuns (line 87) | function loadRuns() { function saveRuns (line 94) | function saveRuns(runs) { function loadRateLimitHits (line 98) | function loadRateLimitHits() { function saveRateLimitHits (line 108) | function saveRateLimitHits(hits) { function checkRateLimit (line 117) | function checkRateLimit() { function recordRateLimitHit (line 129) | function recordRateLimitHit() { function loadEnvFile (line 135) | function loadEnvFile() { function requireEnv (line 157) | function requireEnv(name) { function tinyfishSubmit (line 168) | async function tinyfishSubmit(url, goal) { function tinyfishStatus (line 180) | async function tinyfishStatus(runId) { function tinyfishCancel (line 204) | async function tinyfishCancel(runId) { function tinyfishWait (line 214) | async function tinyfishWait(runId, label, onStatus) { function openaiChat (line 231) | async function openaiChat(messages, jsonMode = false) { function planGoals (line 253) | async function planGoals(competitors, question) { function summarizeResult (line 283) | async function summarizeResult(name, question, rawResult) { function generateReport (line 294) | async function generateReport(question, results) { function cmdInit (line 317) | function cmdInit() { function cmdClear (line 327) | function cmdClear() { function cmdReset (line 338) | function cmdReset() { function cmdAdd (line 348) | function cmdAdd(args) { function cmdList (line 372) | function cmdList() { function cmdRemove (line 388) | function cmdRemove(args) { function cmdResearch (line 408) | async function cmdResearch(args) { function cmdRuns (line 580) | function cmdRuns() { function cmdCancel (line 594) | async function cmdCancel(args) { function main (line 620) | async function main() { FILE: competitor-scout-cli/components/cli-preview.tsx type CliPreviewProps (line 7) | interface CliPreviewProps { function CliPreview (line 13) | function CliPreview({ competitors, question, events }: CliPreviewProps) { FILE: competitor-scout-cli/components/competitor-panel.tsx constant MAX_COMPETITORS (line 10) | const MAX_COMPETITORS = 10; type CompetitorPanelProps (line 12) | interface CompetitorPanelProps { function CompetitorPanel (line 18) | function CompetitorPanel({ FILE: competitor-scout-cli/components/event-log.tsx function getEventIcon (line 17) | function getEventIcon(type: ResearchEvent["type"]) { function getEventColor (line 42) | function getEventColor(type: ResearchEvent["type"]) { type EventLogProps (line 67) | interface EventLogProps { function EventLog (line 71) | function EventLog({ events }: EventLogProps) { FILE: competitor-scout-cli/components/query-input.tsx type QueryInputProps (line 9) | interface QueryInputProps { function QueryInput (line 15) | function QueryInput({ onSubmit, disabled, isLoading }: QueryInputProps) { FILE: competitor-scout-cli/components/report-view.tsx type ReportViewProps (line 10) | interface ReportViewProps { function MarkdownBlock (line 15) | function MarkdownBlock({ content }: { content: string }) { function renderInlineMarkdown (line 110) | function renderInlineMarkdown(text: string): React.ReactNode { type SourceLink (line 125) | type SourceLink = { url: string; title?: string }; function extractSources (line 127) | function extractSources(raw: unknown): SourceLink[] { function formatSourceLabel (line 210) | function formatSourceLabel(url: string) { function SourcesButton (line 221) | function SourcesButton({ sources }: { sources: SourceLink[] }) { function RawJsonViewer (line 275) | function RawJsonViewer({ data }: { data: unknown }) { function ReportView (line 302) | function ReportView({ report, summaries }: ReportViewProps) { FILE: competitor-scout-cli/lib/env.ts function parseEnvLine (line 6) | function parseEnvLine(line: string): { key: string; value: string } | nu... function ensureLocalEnvLoaded (line 22) | function ensureLocalEnvLoaded() { FILE: competitor-scout-cli/lib/openai-client.ts function getApiKey (line 4) | function getApiKey(): string { function chatCompletion (line 18) | async function chatCompletion( function planResearchGoals (line 45) | async function planResearchGoals( function summarizeCompetitorResult (line 97) | async function summarizeCompetitorResult( function generateComparisonReport (line 120) | async function generateComparisonReport( FILE: competitor-scout-cli/lib/tinyfish.ts constant TINYFISH_BASE_URL (line 3) | const TINYFISH_BASE_URL = "https://agent.tinyfish.ai/v1"; function getApiKey (line 5) | function getApiKey(): string { function submitRun (line 12) | async function submitRun( function getRunStatus (line 34) | async function getRunStatus(runId: string): Promise<{ function waitForCompletion (line 73) | async function waitForCompletion( FILE: competitor-scout-cli/lib/types.ts type Competitor (line 1) | interface Competitor { type ResearchEvent (line 7) | interface ResearchEvent { type ResearchGoal (line 23) | interface ResearchGoal { type TinyfishRunResult (line 29) | interface TinyfishRunResult { type CompetitorResult (line 36) | interface CompetitorResult { FILE: competitor-scout-cli/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: concept-discovery-system/src/App.tsx function AppContent (line 9) | function AppContent() { function App (line 47) | function App() { FILE: concept-discovery-system/src/components/ErrorBoundary.tsx type ErrorBoundaryProps (line 4) | interface ErrorBoundaryProps { type ErrorBoundaryState (line 9) | interface ErrorBoundaryState { class ErrorBoundary (line 14) | class ErrorBoundary extends React.Component< method constructor (line 18) | constructor(props: ErrorBoundaryProps) { method getDerivedStateFromError (line 23) | static getDerivedStateFromError(error: Error): ErrorBoundaryState { method componentDidCatch (line 27) | componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { method render (line 31) | render() { FILE: concept-discovery-system/src/components/input/InputForm.tsx function InputForm (line 6) | function InputForm() { FILE: concept-discovery-system/src/components/layout/Footer.tsx function Footer (line 1) | function Footer() { FILE: concept-discovery-system/src/components/layout/Header.tsx function Header (line 4) | function Header() { FILE: concept-discovery-system/src/components/results/AnalysisPanel.tsx type AnalysisPanelProps (line 7) | interface AnalysisPanelProps { function getScoreBadge (line 12) | function getScoreBadge(score: number, type: 'competition' | 'validation'... function getOverallBadge (line 25) | function getOverallBadge(score: number) { function ScoreBar (line 32) | function ScoreBar({ label, score, type }: { label: string; score: number... function AnalysisPanel (line 58) | function AnalysisPanel({ userInput, projects }: AnalysisPanelProps) { function markdownToHtml (line 151) | function markdownToHtml(md: string): string { function inlineFormat (line 185) | function inlineFormat(text: string): string { FILE: concept-discovery-system/src/components/results/ConceptCard.tsx type ConceptCardProps (line 5) | interface ConceptCardProps { function ConceptCard (line 16) | function ConceptCard({ data, onClick }: ConceptCardProps) { FILE: concept-discovery-system/src/components/results/ConceptCardLoading.tsx type ConceptCardLoadingProps (line 7) | interface ConceptCardLoadingProps { function ConceptCardLoading (line 11) | function ConceptCardLoading({ agent }: ConceptCardLoadingProps) { FILE: concept-discovery-system/src/components/results/Dashboard.tsx function Dashboard (line 5) | function Dashboard() { FILE: concept-discovery-system/src/components/results/DetailPanel.tsx type DetailPanelProps (line 6) | interface DetailPanelProps { function DetailPanel (line 17) | function DetailPanel({ data, onClose }: DetailPanelProps) { FILE: concept-discovery-system/src/components/results/ResultsGrid.tsx function MemoizedAnalysis (line 11) | function MemoizedAnalysis({ userInput, completed }: { userInput: string;... type ResultsGridProps (line 19) | interface ResultsGridProps { function ResultsGrid (line 25) | function ResultsGrid({ agents, phase, userInput }: ResultsGridProps) { FILE: concept-discovery-system/src/context/DiscoveryContext.tsx function discoveryReducer (line 17) | function discoveryReducer(state: AppState, action: AppAction): AppState { function inferAgentStatus (line 179) | function inferAgentStatus(step: string): ConceptAgentState['status'] { function DiscoveryProvider (line 203) | function DiscoveryProvider({ children }: { children: ReactNode }) { function useDiscoveryContext (line 214) | function useDiscoveryContext() { FILE: concept-discovery-system/src/hooks/useConceptDiscovery.ts function useConceptDiscovery (line 11) | function useConceptDiscovery() { FILE: concept-discovery-system/src/lib/constants.ts constant TINYFISH_API_URL (line 2) | const TINYFISH_API_URL = 'https://agent.tinyfish.ai/v1/automation/run-sse'; constant GITHUB_API_URL (line 3) | const GITHUB_API_URL = 'https://api.github.com'; constant STACKEXCHANGE_API_URL (line 4) | const STACKEXCHANGE_API_URL = 'https://api.stackexchange.com/2.3'; constant OPENROUTER_API_URL (line 5) | const OPENROUTER_API_URL = 'https://openrouter.ai/api/v1/chat/completions'; constant OPENROUTER_MODEL (line 8) | const OPENROUTER_MODEL = 'google/gemini-2.0-flash-001'; constant OPENROUTER_TEMPERATURE (line 9) | const OPENROUTER_TEMPERATURE = 0.2; constant MAX_AGENTS (line 12) | const MAX_AGENTS = 10; constant AGENT_TIMEOUT (line 13) | const AGENT_TIMEOUT = 360000; constant MIN_INPUT_LENGTH (line 14) | const MIN_INPUT_LENGTH = 10; constant STACKOVERFLOW_RESULTS_PER_QUERY (line 15) | const STACKOVERFLOW_RESULTS_PER_QUERY = 3; constant APP_NAME (line 18) | const APP_NAME = 'Concept Discovery System'; constant APP_DESCRIPTION (line 19) | const APP_DESCRIPTION = constant PLATFORM_INFO (line 23) | const PLATFORM_INFO = { FILE: concept-discovery-system/src/lib/goal-builder.ts function buildAgentGoal (line 11) | function buildAgentGoal( function buildSOReasoningGoal (line 105) | function buildSOReasoningGoal( FILE: concept-discovery-system/src/lib/openrouter-client.ts function extractJSON (line 4) | function extractJSON(text: string): unknown { function callOpenRouter (line 16) | async function callOpenRouter(systemPrompt: string, userPrompt: string):... type LLMQuery (line 47) | interface LLMQuery { function generateSmartQueries (line 58) | async function generateSmartQueries(userInput: string): Promise { function searchStackOverflow (line 98) | async function searchStackOverflow(query: string, filters?: Record) { function AlertDescription (line 50) | function AlertDescription({ FILE: fast-qa/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: fast-qa/components/ui/button.tsx function Button (line 39) | function Button({ FILE: fast-qa/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: fast-qa/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: fast-qa/components/ui/collapsible.tsx function Collapsible (line 5) | function Collapsible({ function CollapsibleTrigger (line 11) | function CollapsibleTrigger({ function CollapsibleContent (line 22) | function CollapsibleContent({ FILE: fast-qa/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: fast-qa/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 166) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 179) | function DropdownMenuShortcut({ function DropdownMenuSub (line 195) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 201) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 225) | function DropdownMenuSubContent({ FILE: fast-qa/components/ui/form.tsx type FormFieldContextValue (line 21) | type FormFieldContextValue< type FormItemContextValue (line 68) | type FormItemContextValue = { function FormItem (line 76) | function FormItem({ className, ...props }: React.ComponentProps<"div">) { function FormLabel (line 90) | function FormLabel({ function FormControl (line 107) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<"... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<"p">) { FILE: fast-qa/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: fast-qa/components/ui/label.tsx function Label (line 8) | function Label({ FILE: fast-qa/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: fast-qa/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 90) | function SelectLabel({ function SelectItem (line 103) | function SelectItem({ function SelectSeparator (line 130) | function SelectSeparator({ function SelectScrollUpButton (line 143) | function SelectScrollUpButton({ function SelectScrollDownButton (line 161) | function SelectScrollDownButton({ FILE: fast-qa/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: fast-qa/components/ui/sheet.tsx function Sheet (line 9) | function Sheet({ ...props }: React.ComponentProps) { FILE: fast-qa/components/ui/switch.tsx function Switch (line 8) | function Switch({ FILE: fast-qa/components/ui/table.tsx function Table (line 7) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 22) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 32) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 42) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 55) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 68) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 81) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 94) | function TableCaption({ FILE: fast-qa/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: fast-qa/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: fast-qa/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: fast-qa/lib/ai-client.ts function createOpenRouterProvider (line 6) | function createOpenRouterProvider() { function getModel (line 19) | function getModel(modelId: string = 'minimax/minimax-m2.1') { type ParseTestResponse (line 53) | type ParseTestResponse = z.infer; type BugReport (line 54) | type BugReport = z.infer; function parseTestDescription (line 59) | async function parseTestDescription( function generateBugReport (line 125) | async function generateBugReport( function generateAIText (line 235) | async function generateAIText( function generateTestResultSummary (line 256) | async function generateTestResultSummary( FILE: fast-qa/lib/hooks.ts function useLocalStorage (line 10) | function useLocalStorage(key: string, initialValue: T): [T, (value: T... function useTestExecution (line 46) | function useTestExecution(onComplete?: (finalResults: Map(value: T, delay: number): T { function useWindowSize (line 250) | function useWindowSize() { function useKeyboardShortcut (line 275) | function useKeyboardShortcut( function useClickOutside (line 311) | function useClickOutside( function useElapsedTime (line 330) | function useElapsedTime(startTime: number | null, isRunning: boolean): n... FILE: fast-qa/lib/mino-client.ts constant MINO_API_URL (line 7) | const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; type MinoRequestConfig (line 9) | interface MinoRequestConfig { type MinoResponse (line 19) | interface MinoResponse { type MinoStreamCallbacks (line 27) | interface MinoStreamCallbacks { function runMinoAutomation (line 37) | async function runMinoAutomation( function buildGoalFromSteps (line 146) | function buildGoalFromSteps( function buildGoalFromDescription (line 181) | function buildGoalFromDescription( function scrape (line 205) | async function scrape( FILE: fast-qa/lib/qa-context.tsx function reducer (line 34) | function reducer(state: QAState, action: QAAction): QAState { type QAContextType (line 271) | interface QAContextType { constant STORAGE_KEY (line 299) | const STORAGE_KEY = 'qa-tester-state'; function QAProvider (line 301) | function QAProvider({ children }: { children: ReactNode }) { function useQA (line 486) | function useQA() { FILE: fast-qa/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { function generateId (line 9) | function generateId(): string { function formatDuration (line 14) | function formatDuration(ms: number): string { function formatRelativeTime (line 23) | function formatRelativeTime(timestamp: number): string { type MinoEvent (line 35) | interface MinoEvent { function parseSSELine (line 47) | function parseSSELine(line: string): MinoEvent | null { function isCompleteEvent (line 61) | function isCompleteEvent(event: MinoEvent): boolean { function isErrorEvent (line 65) | function isErrorEvent(event: MinoEvent): boolean { function formatStepMessage (line 69) | function formatStepMessage(event: MinoEvent): string { function isValidUrl (line 86) | function isValidUrl(string: string): boolean { function truncate (line 96) | function truncate(text: string, maxLength: number): string { function debounce (line 102) | function debounce unknown>( function getStatusColor (line 114) | function getStatusColor(status: string): string { function getStatusBgColor (line 131) | function getStatusBgColor(status: string): string { FILE: fast-qa/types/index.ts type Project (line 2) | interface Project { type TestStatus (line 14) | type TestStatus = 'pending' | 'running' | 'passed' | 'failed' | 'skipped'; type TestCase (line 16) | interface TestCase { type TestResult (line 28) | interface TestResult { type TestRun (line 46) | interface TestRun { type QASettings (line 60) | interface QASettings { type GeneratedTest (line 69) | interface GeneratedTest { type BulkGenerateRequest (line 75) | interface BulkGenerateRequest { type BulkGenerateResponse (line 80) | interface BulkGenerateResponse { type TestEventType (line 85) | type TestEventType = type TestEvent (line 94) | interface TestEvent { type AllCompleteEvent (line 109) | interface AllCompleteEvent { type BugReport (line 122) | interface BugReport { type QAState (line 134) | interface QAState { type QAAction (line 146) | type QAAction = FILE: game-buying-guide/app/api/analyze-platform/route.ts constant MINO_API_KEY (line 6) | const MINO_API_KEY = process.env.MINO_API_KEY function POST (line 8) | async function POST(request: Request) { FILE: game-buying-guide/app/api/discover-platforms/route.ts constant GAMING_PLATFORMS (line 4) | const GAMING_PLATFORMS = [ function POST (line 57) | async function POST(request: Request) { FILE: game-buying-guide/app/api/steamdb-price-history/route.ts constant MINO_API_KEY (line 6) | const MINO_API_KEY = process.env.MINO_API_KEY function POST (line 8) | async function POST(request: Request) { FILE: game-buying-guide/app/layout.tsx function RootLayout (line 33) | function RootLayout({ FILE: game-buying-guide/app/loading.tsx function Loading (line 1) | function Loading() { FILE: game-buying-guide/app/page.tsx function HomePage (line 12) | function HomePage() { FILE: game-buying-guide/components/agent-card.tsx type AgentCardProps (line 23) | interface AgentCardProps { function AgentCard (line 28) | function AgentCard({ agent, onExpandPreview }: AgentCardProps) { FILE: game-buying-guide/components/agent-grid.tsx type AgentGridProps (line 9) | interface AgentGridProps { function AgentGrid (line 13) | function AgentGrid({ agents }: AgentGridProps) { FILE: game-buying-guide/components/live-browser-preview.tsx type LiveBrowserPreviewProps (line 9) | interface LiveBrowserPreviewProps { function LiveBrowserPreview (line 15) | function LiveBrowserPreview({ streamingUrl, platformName, onClose }: Liv... FILE: game-buying-guide/components/results-summary.tsx type ResultsSummaryProps (line 10) | interface ResultsSummaryProps { function ResultsSummary (line 15) | function ResultsSummary({ agents, gameName }: ResultsSummaryProps) { FILE: game-buying-guide/components/search-form.tsx type SearchFormProps (line 10) | interface SearchFormProps { function SearchForm (line 15) | function SearchForm({ onSearch, isLoading }: SearchFormProps) { FILE: game-buying-guide/components/steamdb-price-card.tsx type SteamDBPriceCardProps (line 9) | interface SteamDBPriceCardProps { function SteamDBPriceCard (line 14) | function SteamDBPriceCard({ agent, gameName }: SteamDBPriceCardProps) { FILE: game-buying-guide/components/theme-provider.tsx function ThemeProvider (line 9) | function ThemeProvider({ children, ...props }: ThemeProviderProps) { FILE: game-buying-guide/components/ui/accordion.tsx function Accordion (line 9) | function Accordion({ function AccordionItem (line 15) | function AccordionItem({ function AccordionTrigger (line 28) | function AccordionTrigger({ function AccordionContent (line 50) | function AccordionContent({ FILE: game-buying-guide/components/ui/alert-dialog.tsx function AlertDialog (line 9) | function AlertDialog({ function AlertDialogTrigger (line 15) | function AlertDialogTrigger({ function AlertDialogPortal (line 23) | function AlertDialogPortal({ function AlertDialogOverlay (line 31) | function AlertDialogOverlay({ function AlertDialogContent (line 47) | function AlertDialogContent({ function AlertDialogHeader (line 66) | function AlertDialogHeader({ function AlertDialogFooter (line 79) | function AlertDialogFooter({ function AlertDialogTitle (line 95) | function AlertDialogTitle({ function AlertDialogDescription (line 108) | function AlertDialogDescription({ function AlertDialogAction (line 121) | function AlertDialogAction({ function AlertDialogCancel (line 133) | function AlertDialogCancel({ FILE: game-buying-guide/components/ui/alert.tsx function Alert (line 22) | function Alert({ function AlertTitle (line 37) | function AlertTitle({ className, ...props }: React.ComponentProps<'div'>) { function AlertDescription (line 50) | function AlertDescription({ FILE: game-buying-guide/components/ui/aspect-ratio.tsx function AspectRatio (line 5) | function AspectRatio({ FILE: game-buying-guide/components/ui/avatar.tsx function Avatar (line 8) | function Avatar({ function AvatarImage (line 24) | function AvatarImage({ function AvatarFallback (line 37) | function AvatarFallback({ FILE: game-buying-guide/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: game-buying-guide/components/ui/breadcrumb.tsx function Breadcrumb (line 7) | function Breadcrumb({ ...props }: React.ComponentProps<'nav'>) { function BreadcrumbList (line 11) | function BreadcrumbList({ className, ...props }: React.ComponentProps<'o... function BreadcrumbItem (line 24) | function BreadcrumbItem({ className, ...props }: React.ComponentProps<'l... function BreadcrumbLink (line 34) | function BreadcrumbLink({ function BreadcrumbPage (line 52) | function BreadcrumbPage({ className, ...props }: React.ComponentProps<'s... function BreadcrumbSeparator (line 65) | function BreadcrumbSeparator({ function BreadcrumbEllipsis (line 83) | function BreadcrumbEllipsis({ FILE: game-buying-guide/components/ui/button-group.tsx function ButtonGroup (line 24) | function ButtonGroup({ function ButtonGroupText (line 40) | function ButtonGroupText({ function ButtonGroupSeparator (line 60) | function ButtonGroupSeparator({ FILE: game-buying-guide/components/ui/button.tsx function Button (line 39) | function Button({ FILE: game-buying-guide/components/ui/calendar.tsx function Calendar (line 14) | function Calendar({ function CalendarDayButton (line 175) | function CalendarDayButton({ FILE: game-buying-guide/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<'div'>) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<'... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<'div'>) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<'div'... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: game-buying-guide/components/ui/carousel.tsx type CarouselApi (line 12) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 13) | type UseCarouselParameters = Parameters type CarouselOptions (line 14) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 15) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 17) | type CarouselProps = { type CarouselContextProps (line 24) | type CarouselContextProps = { function useCarousel (line 35) | function useCarousel() { function Carousel (line 45) | function Carousel({ function CarouselContent (line 135) | function CarouselContent({ className, ...props }: React.ComponentProps<'... function CarouselItem (line 156) | function CarouselItem({ className, ...props }: React.ComponentProps<'div... function CarouselPrevious (line 174) | function CarouselPrevious({ function CarouselNext (line 204) | function CarouselNext({ FILE: game-buying-guide/components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: '', dark: '.dark' } as const type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function ChartContainer (line 37) | function ChartContainer({ function ChartTooltipContent (line 107) | function ChartTooltipContent({ function ChartLegendContent (line 253) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 308) | function getPayloadConfigFromPayload( FILE: game-buying-guide/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: game-buying-guide/components/ui/collapsible.tsx function Collapsible (line 6) | function Collapsible({ function CollapsibleTrigger (line 12) | function CollapsibleTrigger({ function CollapsibleContent (line 23) | function CollapsibleContent({ FILE: game-buying-guide/components/ui/command.tsx function Command (line 16) | function Command({ function CommandDialog (line 32) | function CommandDialog({ function CommandInput (line 63) | function CommandInput({ function CommandList (line 85) | function CommandList({ function CommandEmpty (line 101) | function CommandEmpty({ function CommandGroup (line 113) | function CommandGroup({ function CommandSeparator (line 129) | function CommandSeparator({ function CommandItem (line 142) | function CommandItem({ function CommandShortcut (line 158) | function CommandShortcut({ FILE: game-buying-guide/components/ui/context-menu.tsx function ContextMenu (line 9) | function ContextMenu({ function ContextMenuTrigger (line 15) | function ContextMenuTrigger({ function ContextMenuGroup (line 23) | function ContextMenuGroup({ function ContextMenuPortal (line 31) | function ContextMenuPortal({ function ContextMenuSub (line 39) | function ContextMenuSub({ function ContextMenuRadioGroup (line 45) | function ContextMenuRadioGroup({ function ContextMenuSubTrigger (line 56) | function ContextMenuSubTrigger({ function ContextMenuSubContent (line 80) | function ContextMenuSubContent({ function ContextMenuContent (line 96) | function ContextMenuContent({ function ContextMenuItem (line 114) | function ContextMenuItem({ function ContextMenuCheckboxItem (line 137) | function ContextMenuCheckboxItem({ function ContextMenuRadioItem (line 163) | function ContextMenuRadioItem({ function ContextMenuLabel (line 187) | function ContextMenuLabel({ function ContextMenuSeparator (line 207) | function ContextMenuSeparator({ function ContextMenuShortcut (line 220) | function ContextMenuShortcut({ FILE: game-buying-guide/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<'div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<'div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: game-buying-guide/components/ui/drawer.tsx function Drawer (line 8) | function Drawer({ function DrawerTrigger (line 14) | function DrawerTrigger({ function DrawerPortal (line 20) | function DrawerPortal({ function DrawerClose (line 26) | function DrawerClose({ function DrawerOverlay (line 32) | function DrawerOverlay({ function DrawerContent (line 48) | function DrawerContent({ function DrawerHeader (line 75) | function DrawerHeader({ className, ...props }: React.ComponentProps<'div... function DrawerFooter (line 88) | function DrawerFooter({ className, ...props }: React.ComponentProps<'div... function DrawerTitle (line 98) | function DrawerTitle({ function DrawerDescription (line 111) | function DrawerDescription({ FILE: game-buying-guide/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 166) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 179) | function DropdownMenuShortcut({ function DropdownMenuSub (line 195) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 201) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 225) | function DropdownMenuSubContent({ FILE: game-buying-guide/components/ui/empty.tsx function Empty (line 5) | function Empty({ className, ...props }: React.ComponentProps<'div'>) { function EmptyHeader (line 18) | function EmptyHeader({ className, ...props }: React.ComponentProps<'div'... function EmptyMedia (line 46) | function EmptyMedia({ function EmptyTitle (line 61) | function EmptyTitle({ className, ...props }: React.ComponentProps<'div'>) { function EmptyDescription (line 71) | function EmptyDescription({ className, ...props }: React.ComponentProps<... function EmptyContent (line 84) | function EmptyContent({ className, ...props }: React.ComponentProps<'div... FILE: game-buying-guide/components/ui/field.tsx function FieldSet (line 10) | function FieldSet({ className, ...props }: React.ComponentProps<'fieldse... function FieldLegend (line 24) | function FieldLegend({ function FieldGroup (line 44) | function FieldGroup({ className, ...props }: React.ComponentProps<'div'>) { function Field (line 81) | function Field({ function FieldContent (line 97) | function FieldContent({ className, ...props }: React.ComponentProps<'div... function FieldLabel (line 110) | function FieldLabel({ function FieldTitle (line 128) | function FieldTitle({ className, ...props }: React.ComponentProps<'div'>) { function FieldDescription (line 141) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 156) | function FieldSeparator({ function FieldError (line 186) | function FieldError({ FILE: game-buying-guide/components/ui/form.tsx type FormFieldContextValue (line 21) | type FormFieldContextValue< type FormItemContextValue (line 68) | type FormItemContextValue = { function FormItem (line 76) | function FormItem({ className, ...props }: React.ComponentProps<'div'>) { function FormLabel (line 90) | function FormLabel({ function FormControl (line 107) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<'... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<'p'>) { FILE: game-buying-guide/components/ui/hover-card.tsx function HoverCard (line 8) | function HoverCard({ function HoverCardTrigger (line 14) | function HoverCardTrigger({ function HoverCardContent (line 22) | function HoverCardContent({ FILE: game-buying-guide/components/ui/input-group.tsx function InputGroup (line 10) | function InputGroup({ className, ...props }: React.ComponentProps<'div'>) { function InputGroupAddon (line 59) | function InputGroupAddon({ function InputGroupButton (line 99) | function InputGroupButton({ function InputGroupText (line 118) | function InputGroupText({ className, ...props }: React.ComponentProps<'s... function InputGroupInput (line 130) | function InputGroupInput({ function InputGroupTextarea (line 146) | function InputGroupTextarea({ FILE: game-buying-guide/components/ui/input-otp.tsx function InputOTP (line 9) | function InputOTP({ function InputOTPGroup (line 29) | function InputOTPGroup({ className, ...props }: React.ComponentProps<'di... function InputOTPSlot (line 39) | function InputOTPSlot({ function InputOTPSeparator (line 69) | function InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) { FILE: game-buying-guide/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: game-buying-guide/components/ui/item.tsx function ItemGroup (line 8) | function ItemGroup({ className, ...props }: React.ComponentProps<'div'>) { function ItemSeparator (line 19) | function ItemSeparator({ function Item (line 54) | function Item({ function ItemMedia (line 91) | function ItemMedia({ function ItemContent (line 106) | function ItemContent({ className, ...props }: React.ComponentProps<'div'... function ItemTitle (line 119) | function ItemTitle({ className, ...props }: React.ComponentProps<'div'>) { function ItemDescription (line 132) | function ItemDescription({ className, ...props }: React.ComponentProps<'... function ItemActions (line 146) | function ItemActions({ className, ...props }: React.ComponentProps<'div'... function ItemHeader (line 156) | function ItemHeader({ className, ...props }: React.ComponentProps<'div'>) { function ItemFooter (line 169) | function ItemFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: game-buying-guide/components/ui/kbd.tsx function Kbd (line 3) | function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) { function KbdGroup (line 18) | function KbdGroup({ className, ...props }: React.ComponentProps<'div'>) { FILE: game-buying-guide/components/ui/label.tsx function Label (line 8) | function Label({ FILE: game-buying-guide/components/ui/menubar.tsx function Menubar (line 9) | function Menubar({ function MenubarMenu (line 25) | function MenubarMenu({ function MenubarGroup (line 31) | function MenubarGroup({ function MenubarPortal (line 37) | function MenubarPortal({ function MenubarRadioGroup (line 43) | function MenubarRadioGroup({ function MenubarTrigger (line 51) | function MenubarTrigger({ function MenubarContent (line 67) | function MenubarContent({ function MenubarItem (line 91) | function MenubarItem({ function MenubarCheckboxItem (line 114) | function MenubarCheckboxItem({ function MenubarRadioItem (line 140) | function MenubarRadioItem({ function MenubarLabel (line 164) | function MenubarLabel({ function MenubarSeparator (line 184) | function MenubarSeparator({ function MenubarShortcut (line 197) | function MenubarShortcut({ function MenubarSub (line 213) | function MenubarSub({ function MenubarSubTrigger (line 219) | function MenubarSubTrigger({ function MenubarSubContent (line 243) | function MenubarSubContent({ FILE: game-buying-guide/components/ui/navigation-menu.tsx function NavigationMenu (line 8) | function NavigationMenu({ function NavigationMenuList (line 32) | function NavigationMenuList({ function NavigationMenuItem (line 48) | function NavigationMenuItem({ function NavigationMenuTrigger (line 65) | function NavigationMenuTrigger({ function NavigationMenuContent (line 85) | function NavigationMenuContent({ function NavigationMenuViewport (line 102) | function NavigationMenuViewport({ function NavigationMenuLink (line 122) | function NavigationMenuLink({ function NavigationMenuIndicator (line 138) | function NavigationMenuIndicator({ FILE: game-buying-guide/components/ui/pagination.tsx function Pagination (line 11) | function Pagination({ className, ...props }: React.ComponentProps<'nav'>) { function PaginationContent (line 23) | function PaginationContent({ function PaginationItem (line 36) | function PaginationItem({ ...props }: React.ComponentProps<'li'>) { type PaginationLinkProps (line 40) | type PaginationLinkProps = { function PaginationLink (line 45) | function PaginationLink({ function PaginationPrevious (line 68) | function PaginationPrevious({ function PaginationNext (line 85) | function PaginationNext({ function PaginationEllipsis (line 102) | function PaginationEllipsis({ FILE: game-buying-guide/components/ui/popover.tsx function Popover (line 8) | function Popover({ function PopoverTrigger (line 14) | function PopoverTrigger({ function PopoverContent (line 20) | function PopoverContent({ function PopoverAnchor (line 42) | function PopoverAnchor({ FILE: game-buying-guide/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: game-buying-guide/components/ui/radio-group.tsx function RadioGroup (line 9) | function RadioGroup({ function RadioGroupItem (line 22) | function RadioGroupItem({ FILE: game-buying-guide/components/ui/resizable.tsx function ResizablePanelGroup (line 9) | function ResizablePanelGroup({ function ResizablePanel (line 25) | function ResizablePanel({ function ResizableHandle (line 31) | function ResizableHandle({ FILE: game-buying-guide/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: game-buying-guide/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 125) | function SelectSeparator({ function SelectScrollUpButton (line 138) | function SelectScrollUpButton({ function SelectScrollDownButton (line 156) | function SelectScrollDownButton({ FILE: game-buying-guide/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: game-buying-guide/components/ui/sheet.tsx function Sheet (line 9) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 465) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<'... function SidebarMenuButton (line 498) | function SidebarMenuButton({ function SidebarMenuAction (line 548) | function SidebarMenuAction({ function SidebarMenuBadge (line 580) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 602) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 640) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<'u... function SidebarMenuSubItem (line 655) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 669) | function SidebarMenuSubButton({ FILE: game-buying-guide/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<'div'>) { FILE: game-buying-guide/components/ui/slider.tsx function Slider (line 8) | function Slider({ FILE: game-buying-guide/components/ui/spinner.tsx function Spinner (line 5) | function Spinner({ className, ...props }: React.ComponentProps<'svg'>) { FILE: game-buying-guide/components/ui/switch.tsx function Switch (line 8) | function Switch({ FILE: game-buying-guide/components/ui/table.tsx function Table (line 7) | function Table({ className, ...props }: React.ComponentProps<'table'>) { function TableHeader (line 22) | function TableHeader({ className, ...props }: React.ComponentProps<'thea... function TableBody (line 32) | function TableBody({ className, ...props }: React.ComponentProps<'tbody'... function TableFooter (line 42) | function TableFooter({ className, ...props }: React.ComponentProps<'tfoo... function TableRow (line 55) | function TableRow({ className, ...props }: React.ComponentProps<'tr'>) { function TableHead (line 68) | function TableHead({ className, ...props }: React.ComponentProps<'th'>) { function TableCell (line 81) | function TableCell({ className, ...props }: React.ComponentProps<'td'>) { function TableCaption (line 94) | function TableCaption({ FILE: game-buying-guide/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: game-buying-guide/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<'textare... FILE: game-buying-guide/components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: game-buying-guide/components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: game-buying-guide/components/ui/toggle-group.tsx function ToggleGroup (line 17) | function ToggleGroup({ function ToggleGroupItem (line 43) | function ToggleGroupItem({ FILE: game-buying-guide/components/ui/toggle.tsx function Toggle (line 31) | function Toggle({ FILE: game-buying-guide/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: game-buying-guide/components/ui/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: game-buying-guide/components/ui/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: game-buying-guide/hooks/use-game-search.ts function useGameSearch (line 6) | function useGameSearch() { FILE: game-buying-guide/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: game-buying-guide/hooks/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: game-buying-guide/lib/types.ts type Platform (line 1) | interface Platform { type AgentStatus (line 6) | interface AgentStatus { type PlatformAnalysis (line 16) | interface PlatformAnalysis { type GeminiPlatformResponse (line 32) | interface GeminiPlatformResponse { type SteamDBPriceHistory (line 36) | interface SteamDBPriceHistory { type SteamDBAgentStatus (line 47) | interface SteamDBAgentStatus { FILE: game-buying-guide/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: lego-hunter/app/api/generate-urls/route.ts function POST (line 4) | async function POST(request: Request) { FILE: lego-hunter/app/api/search-lego/route.ts type SearchLegoRequest (line 4) | interface SearchLegoRequest { function POST (line 10) | async function POST(request: Request) { function processRetailers (line 44) | async function processRetailers( function scrapeRetailer (line 114) | async function scrapeRetailer( FILE: lego-hunter/app/layout.tsx function RootLayout (line 23) | function RootLayout({ FILE: lego-hunter/app/page.tsx function LegoFinderPage (line 15) | function LegoFinderPage() { function RetailerStatusCard (line 462) | function RetailerStatusCard({ retailer, logo, delay }: { retailer: Retai... function StatusIndicator (line 601) | function StatusIndicator({ status, stockFound, inStock }: { status: stri... function ResultsTable (line 628) | function ResultsTable({ results }: { results: ProductData[] }) { FILE: lego-hunter/components/best-deal-card.tsx type BestDealCardProps (line 8) | interface BestDealCardProps { function BestDealCard (line 13) | function BestDealCard({ deal, results }: BestDealCardProps) { FILE: lego-hunter/components/browser-preview.tsx type BrowserPreviewProps (line 5) | interface BrowserPreviewProps { function BrowserPreview (line 11) | function BrowserPreview({ function LoadingBricks (line 97) | function LoadingBricks() { FILE: lego-hunter/components/lego-confetti.tsx constant LEGO_COLORS (line 6) | const LEGO_COLORS = [ function triggerLegoConfetti (line 18) | function triggerLegoConfetti() { function triggerConfettiAtElement (line 58) | function triggerConfettiAtElement(element: HTMLElement) { function triggerVictoryConfetti (line 77) | function triggerVictoryConfetti() { FILE: lego-hunter/components/results-table.tsx type ResultsTableProps (line 7) | interface ResultsTableProps { type SortField (line 11) | type SortField = 'retailer' | 'price' | 'inStock' type SortDirection (line 12) | type SortDirection = 'asc' | 'desc' function ResultsTable (line 14) | function ResultsTable({ results }: ResultsTableProps) { FILE: lego-hunter/components/retailer-card.tsx type RetailerCardProps (line 9) | interface RetailerCardProps { function RetailerCard (line 14) | function RetailerCard({ retailerStatus, logo }: RetailerCardProps) { function StatusIcon (line 141) | function StatusIcon({ FILE: lego-hunter/components/ui/button.tsx function Button (line 39) | function Button({ FILE: lego-hunter/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: lego-hunter/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: lego-hunter/lib/gemini-client.ts function generateRetailerUrls (line 37) | async function generateRetailerUrls(legoSetName: string): Promise { FILE: loan-decision-copilot/src/components/SearchProgress.tsx type SearchProgressProps (line 4) | interface SearchProgressProps { function SearchProgress (line 11) | function SearchProgress({ FILE: loan-decision-copilot/src/components/ui/button.tsx type ButtonProps (line 33) | interface ButtonProps FILE: loan-decision-copilot/src/hooks/useLoanSearch.ts function useLoanSearch (line 6) | function useLoanSearch() { FILE: loan-decision-copilot/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: loan-decision-copilot/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract bool: method time_until_allowed (line 78) | def time_until_allowed(self, client_ip: str) -> int: class ActiveSearchTracker (line 85) | class ActiveSearchTracker: method __init__ (line 87) | def __init__(self, max_active: int = 1000, search_timeout: int = 300): method _cleanup (line 93) | def _cleanup(self): method start_search (line 105) | def start_search(self, client_ip: str, query: str) -> str: method is_searching (line 111) | def is_searching(self, client_ip: str) -> bool: method end_search (line 122) | def end_search(self, client_ip: str): function lifespan (line 136) | async def lifespan(app: FastAPI): function create_fresh_session (line 144) | async def create_fresh_session() -> aiohttp.ClientSession: function get_healthy_session (line 158) | async def get_healthy_session() -> aiohttp.ClientSession: function validate_query (line 195) | def validate_query(q: str) -> str: function validate_url (line 211) | def validate_url(url: str) -> Optional[str]: function sanitize_product (line 229) | def sanitize_product(product: dict) -> dict: function root (line 298) | def root(): function list_sites (line 306) | def list_sites(): function search_status (line 316) | def search_status(request: Request): function search_live (line 345) | async def search_live( function extract_products (line 594) | def extract_products(result_data) -> list: function filter_by_price (line 664) | def filter_by_price(products: list, max_price: float, strict: bool = Fal... FILE: research-sentry/app/api/citations/track/route.ts function POST (line 4) | async function POST(req: NextRequest) { FILE: research-sentry/app/api/compare/route.ts function POST (line 4) | async function POST(req: NextRequest) { FILE: research-sentry/app/api/conversation/route.ts function POST (line 6) | async function POST(req: NextRequest) { FILE: research-sentry/app/api/emails/extract/route.ts type AuthorInfo (line 9) | interface AuthorInfo { function capitalizeNamePart (line 15) | function capitalizeNamePart(part: string): string { function deriveNameFromEmail (line 21) | function deriveNameFromEmail(email: string): Pick void): Promise<... method stopRecording (line 36) | stopRecording(): Promise { method cancelRecording (line 54) | cancelRecording(): void { method cleanup (line 61) | private cleanup(): void { method getSupportedMimeType (line 70) | private getSupportedMimeType(): string { method isRecording (line 87) | isRecording(): boolean { function formatDuration (line 92) | function formatDuration(seconds: number): string { function checkMicrophoneSupport (line 98) | function checkMicrophoneSupport(): boolean { FILE: research-sentry/lib/citation-tracker.ts type TrackedPaper (line 6) | interface TrackedPaper { function analyzeCitationTrend (line 28) | async function analyzeCitationTrend(paper: ResearchPaper): Promise { FILE: research-sentry/lib/mino.ts function runMinoAutomation (line 4) | async function runMinoAutomation( FILE: research-sentry/lib/pdf-utils.ts function fetchPdfText (line 1) | async function fetchPdfText( function safeParseUrl (line 86) | function safeParseUrl(value: string): URL | null { function isSafeHttpUrl (line 94) | function isSafeHttpUrl(url: URL): boolean { function isPrivateIp (line 102) | function isPrivateIp(host: string): boolean { function isIpv4 (line 121) | function isIpv4(host: string): boolean { function isIpv6 (line 125) | function isIpv6(host: string): boolean { FILE: research-sentry/lib/search.ts function parseMinoResponse (line 18) | function parseMinoResponse(rawResponse: any): any[] { function findPapersArray (line 46) | function findPapersArray(obj: any): any[] { function fallbackArxiv (line 80) | async function fallbackArxiv(topic: string): Promise { function fallbackSemanticScholar (line 101) | async function fallbackSemanticScholar(topic: string): Promise = { function AllergenRiskBadge (line 18) | function AllergenRiskBadge({ risk }: AllergenRiskBadgeProps) { FILE: restaurant-comparison-tool/src/components/results/AllergenRiskPanel.tsx type AllergenRiskPanelProps (line 5) | interface AllergenRiskPanelProps { function AllergenRiskPanel (line 9) | function AllergenRiskPanel({ risks }: AllergenRiskPanelProps) { FILE: restaurant-comparison-tool/src/components/results/ComparisonDashboard.tsx type ComparisonDashboardProps (line 13) | interface ComparisonDashboardProps { function ComparisonDashboard (line 22) | function ComparisonDashboard({ FILE: restaurant-comparison-tool/src/components/results/ConfidenceIndicator.tsx type ConfidenceIndicatorProps (line 5) | interface ConfidenceIndicatorProps { constant CONFIG (line 9) | const CONFIG: Record = { constant RISK_DOT (line 37) | const RISK_DOT: Record = { function RestaurantResultCard (line 44) | function RestaurantResultCard({ result, searchParams, rank, index, onCli... FILE: restaurant-comparison-tool/src/components/results/ResultDetailPanel.tsx type ResultDetailPanelProps (line 11) | interface ResultDetailPanelProps { function ResultDetailPanel (line 17) | function ResultDetailPanel({ result, searchParams, onClose }: ResultDeta... FILE: restaurant-comparison-tool/src/components/results/SafetyScoreRing.tsx type SafetyScoreRingProps (line 4) | interface SafetyScoreRingProps { constant SIZES (line 9) | const SIZES = { function getScoreRingColor (line 15) | function getScoreRingColor(score: number): string { function SafetyScoreRing (line 21) | function SafetyScoreRing({ score, size = 'md' }: SafetyScoreRingProps) { FILE: restaurant-comparison-tool/src/components/search/AllergenSelector.tsx type AllergenSelectorProps (line 5) | interface AllergenSelectorProps { function AllergenSelector (line 11) | function AllergenSelector({ selected, onChange, disabled }: AllergenSele... FILE: restaurant-comparison-tool/src/components/search/PreferenceSelector.tsx type PreferenceSelectorProps (line 5) | interface PreferenceSelectorProps { function PreferenceSelector (line 11) | function PreferenceSelector({ selected, onChange, disabled }: Preference... FILE: restaurant-comparison-tool/src/components/search/RestaurantInput.tsx type RestaurantInputProps (line 6) | interface RestaurantInputProps { function RestaurantInput (line 12) | function RestaurantInput({ restaurants, onChange, disabled }: Restaurant... FILE: restaurant-comparison-tool/src/components/search/SearchForm.tsx type SearchFormProps (line 13) | interface SearchFormProps { function SearchForm (line 18) | function SearchForm({ onSearch, isSearching }: SearchFormProps) { FILE: restaurant-comparison-tool/src/components/ui/badge.tsx function Badge (line 29) | function Badge({ FILE: restaurant-comparison-tool/src/components/ui/button.tsx function Button (line 41) | function Button({ FILE: restaurant-comparison-tool/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: restaurant-comparison-tool/src/components/ui/dialog.tsx function Dialog (line 8) | function Dialog({ function DialogTrigger (line 14) | function DialogTrigger({ function DialogPortal (line 20) | function DialogPortal({ function DialogClose (line 26) | function DialogClose({ function DialogOverlay (line 32) | function DialogOverlay({ function DialogContent (line 48) | function DialogContent({ function DialogHeader (line 82) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 92) | function DialogFooter({ function DialogTitle (line 119) | function DialogTitle({ function DialogDescription (line 132) | function DialogDescription({ FILE: restaurant-comparison-tool/src/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: restaurant-comparison-tool/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: restaurant-comparison-tool/src/components/ui/select.tsx function Select (line 7) | function Select({ function SelectGroup (line 13) | function SelectGroup({ function SelectValue (line 19) | function SelectValue({ function SelectTrigger (line 25) | function SelectTrigger({ function SelectContent (line 51) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 128) | function SelectSeparator({ function SelectScrollUpButton (line 141) | function SelectScrollUpButton({ function SelectScrollDownButton (line 159) | function SelectScrollDownButton({ FILE: restaurant-comparison-tool/src/components/ui/separator.tsx function Separator (line 6) | function Separator({ FILE: restaurant-comparison-tool/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: restaurant-comparison-tool/src/components/ui/toggle.tsx function Toggle (line 31) | function Toggle({ FILE: restaurant-comparison-tool/src/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 27) | function TooltipTrigger({ function TooltipContent (line 33) | function TooltipContent({ FILE: restaurant-comparison-tool/src/context/SearchContext.tsx function inferStatus (line 13) | function inferStatus(step: string): AgentStatus { function updateAgent (line 21) | function updateAgent(state: AppState, id: string, updates: Partial = { function buildAgentGoal (line 20) | function buildAgentGoal( FILE: restaurant-comparison-tool/src/lib/score-calculator.ts function calculateAdjustedScore (line 3) | function calculateAdjustedScore( function getScoreColor (line 30) | function getScoreColor(score: number): string { function getScoreLabel (line 36) | function getScoreLabel(score: number): string { FILE: restaurant-comparison-tool/src/lib/tinyfish-client.ts type TinyFishRequestConfig (line 4) | interface TinyFishRequestConfig { type SSECallbacks (line 9) | type SSECallbacks = { function parseSSELine (line 16) | function parseSSELine(line: string): TinyFishSSEEvent | null { function startTinyFishAgent (line 25) | function startTinyFishAgent( FILE: restaurant-comparison-tool/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: restaurant-comparison-tool/src/types/index.ts type Allergen (line 1) | type Allergen = type DietaryPreference (line 17) | type DietaryPreference = type SearchParams (line 27) | interface SearchParams { type AgentStatus (line 34) | type AgentStatus = type AgentStep (line 44) | interface AgentStep { type RestaurantAgentState (line 49) | interface RestaurantAgentState { type RiskLevel (line 62) | type RiskLevel = 'low' | 'moderate' | 'high' | 'critical'; type ConfidenceLevel (line 63) | type ConfidenceLevel = 'high' | 'medium' | 'low'; type AllergenRisk (line 65) | interface AllergenRisk { type SafetySignal (line 73) | interface SafetySignal { type RestaurantSafetyData (line 80) | interface RestaurantSafetyData { type TinyFishSSEEvent (line 106) | interface TinyFishSSEEvent { type AppPhase (line 118) | type AppPhase = 'input' | 'searching' | 'results'; type AppState (line 120) | interface AppState { type AppAction (line 128) | type AppAction = FILE: scholarship-finder/src/components/CompareButton.tsx type CompareButtonProps (line 5) | interface CompareButtonProps { function CompareButton (line 10) | function CompareButton({ selectedCount, onCompare }: CompareButtonProps) { FILE: scholarship-finder/src/components/CompareDashboard.tsx type CompareDashboardProps (line 8) | interface CompareDashboardProps { function CompareDashboard (line 13) | function CompareDashboard({ scholarships, onClose }: CompareDashboardPro... FILE: scholarship-finder/src/components/Header.tsx function Header (line 3) | function Header() { FILE: scholarship-finder/src/components/LoadingAnimation.tsx type ScholarshipUrl (line 8) | interface ScholarshipUrl { type AgentStatus (line 14) | interface AgentStatus { type SearchState (line 26) | interface SearchState { type LoadingAnimationProps (line 34) | interface LoadingAnimationProps { function LoadingAnimation (line 38) | function LoadingAnimation({ searchState }: LoadingAnimationProps) { function AgentCard (line 186) | function AgentCard({ FILE: scholarship-finder/src/components/NavLink.tsx type NavLinkCompatProps (line 5) | interface NavLinkCompatProps extends Omit { FILE: scholarship-finder/src/components/ScholarshipCard.tsx type ScholarshipCardProps (line 8) | interface ScholarshipCardProps { function ScholarshipCard (line 13) | function ScholarshipCard({ scholarship, index }: ScholarshipCardProps) { FILE: scholarship-finder/src/components/SearchForm.tsx type SearchFormProps (line 14) | interface SearchFormProps { function SearchForm (line 47) | function SearchForm({ onSearch, isLoading }: SearchFormProps) { FILE: scholarship-finder/src/components/SearchResults.tsx type SearchResultsProps (line 8) | interface SearchResultsProps { function SearchResults (line 18) | function SearchResults({ scholarships, searchSummary, searchParams }: Se... FILE: scholarship-finder/src/components/SelectableScholarshipCard.tsx type SelectableScholarshipCardProps (line 10) | interface SelectableScholarshipCardProps { function SelectableScholarshipCard (line 17) | function SelectableScholarshipCard({ scholarship, index, isSelected, onT... FILE: scholarship-finder/src/components/ui/badge.tsx type BadgeProps (line 23) | interface BadgeProps extends React.HTMLAttributes, Varia... function Badge (line 25) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: scholarship-finder/src/components/ui/button.tsx type ButtonProps (line 33) | interface ButtonProps FILE: scholarship-finder/src/components/ui/calendar.tsx type CalendarProps (line 8) | type CalendarProps = React.ComponentProps; function Calendar (line 10) | function Calendar({ className, classNames, showOutsideDays = true, ...pr... FILE: scholarship-finder/src/components/ui/carousel.tsx type CarouselApi (line 8) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 9) | type UseCarouselParameters = Parameters; type CarouselOptions (line 10) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 11) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 13) | type CarouselProps = { type CarouselContextProps (line 20) | type CarouselContextProps = { function useCarousel (line 31) | function useCarousel() { FILE: scholarship-finder/src/components/ui/chart.tsx constant THEMES (line 7) | const THEMES = { light: "", dark: ".dark" } as const; type ChartConfig (line 9) | type ChartConfig = { type ChartContextProps (line 16) | type ChartContextProps = { function useChart (line 22) | function useChart() { function getPayloadConfigFromPayload (line 278) | function getPayloadConfigFromPayload(config: ChartConfig, payload: unkno... FILE: scholarship-finder/src/components/ui/command.tsx type CommandDialogProps (line 24) | interface CommandDialogProps extends DialogProps {} FILE: scholarship-finder/src/components/ui/form.tsx type FormFieldContextValue (line 11) | type FormFieldContextValue< type FormItemContextValue (line 56) | type FormItemContextValue = { FILE: scholarship-finder/src/components/ui/pagination.tsx type PaginationLinkProps (line 29) | type PaginationLinkProps = { FILE: scholarship-finder/src/components/ui/sheet.tsx type SheetContentProps (line 50) | interface SheetContentProps FILE: scholarship-finder/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 15) | const SIDEBAR_COOKIE_NAME = "sidebar:state"; constant SIDEBAR_COOKIE_MAX_AGE (line 16) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; constant SIDEBAR_WIDTH (line 17) | const SIDEBAR_WIDTH = "16rem"; constant SIDEBAR_WIDTH_MOBILE (line 18) | const SIDEBAR_WIDTH_MOBILE = "18rem"; constant SIDEBAR_WIDTH_ICON (line 19) | const SIDEBAR_WIDTH_ICON = "3rem"; constant SIDEBAR_KEYBOARD_SHORTCUT (line 20) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"; type SidebarContext (line 22) | type SidebarContext = { function useSidebar (line 34) | function useSidebar() { FILE: scholarship-finder/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.HTMLAttributes; FILE: scholarship-finder/src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps extends React.TextareaHTMLAttributes; type ToastActionElement (line 99) | type ToastActionElement = React.ReactElement; FILE: scholarship-finder/src/components/ui/toaster.tsx function Toaster (line 4) | function Toaster() { FILE: scholarship-finder/src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768; function useIsMobile (line 5) | function useIsMobile() { FILE: scholarship-finder/src/hooks/use-toast.ts constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 8) | type ToasterToast = ToastProps & { function genId (line 24) | function genId() { type ActionType (line 29) | type ActionType = typeof actionTypes; type Action (line 31) | type Action = type State (line 49) | interface State { function dispatch (line 128) | function dispatch(action: Action) { type Toast (line 135) | type Toast = Omit; function toast (line 137) | function toast({ ...props }: Toast) { function useToast (line 166) | function useToast() { FILE: scholarship-finder/src/hooks/useScholarshipSearch.ts type ScholarshipUrl (line 5) | interface ScholarshipUrl { type AgentStatus (line 11) | interface AgentStatus { type SearchState (line 23) | interface SearchState { function useScholarshipSearch (line 31) | function useScholarshipSearch() { FILE: scholarship-finder/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: scholarship-finder/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract { FILE: stay-scout-hub/src/components/PlatformCard.tsx type PlatformCardProps (line 9) | interface PlatformCardProps { function PlatformCard (line 28) | function PlatformCard({ result }: PlatformCardProps) { function StatusBadge (line 122) | function StatusBadge({ status, available, hasPreview }: { status: Platfo... function StatusIcon (line 144) | function StatusIcon({ status, available }: { status: PlatformResult['sta... FILE: stay-scout-hub/src/components/PurposeSelector.tsx type PurposeSelectorProps (line 5) | interface PurposeSelectorProps { function PurposeSelector (line 11) | function PurposeSelector({ selected, onSelect, disabled }: PurposeSelect... FILE: stay-scout-hub/src/components/ResultsSection.tsx type ResultsSectionProps (line 6) | interface ResultsSectionProps { function ResultsSection (line 11) | function ResultsSection({ results, isSearching }: ResultsSectionProps) { FILE: stay-scout-hub/src/components/SearchFormV2.tsx type SearchFormV2Props (line 14) | interface SearchFormV2Props { function SearchFormV2 (line 19) | function SearchFormV2({ onSearch, isSearching }: SearchFormV2Props) { FILE: stay-scout-hub/src/components/ui/button.tsx type ButtonProps (line 36) | interface ButtonProps FILE: stay-scout-hub/src/hooks/useAreaSearch.ts function useAreaSearch (line 5) | function useAreaSearch() { FILE: stay-scout-hub/src/hooks/useHotelSearch.ts function useHotelSearch (line 5) | function useHotelSearch() { FILE: stay-scout-hub/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: stay-scout-hub/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract { FILE: summer-school-finder/src/components/ResultCard.tsx type ResultCardProps (line 7) | interface ResultCardProps { function ResultCard (line 13) | function ResultCard({ school, isSelected, onSelect }: ResultCardProps) { FILE: summer-school-finder/src/components/SearchForm.tsx type SearchFormProps (line 9) | interface SearchFormProps { function SearchForm (line 35) | function SearchForm({ onSearch, isSearching }: SearchFormProps) { FILE: summer-school-finder/src/components/ui/badge.tsx type BadgeProps (line 23) | interface BadgeProps extends React.HTMLAttributes, Varia... function Badge (line 25) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: summer-school-finder/src/components/ui/button.tsx type ButtonProps (line 33) | interface ButtonProps FILE: summer-school-finder/src/components/ui/calendar.tsx type CalendarProps (line 8) | type CalendarProps = React.ComponentProps; function Calendar (line 10) | function Calendar({ className, classNames, showOutsideDays = true, ...pr... FILE: summer-school-finder/src/components/ui/carousel.tsx type CarouselApi (line 8) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 9) | type UseCarouselParameters = Parameters; type CarouselOptions (line 10) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 11) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 13) | type CarouselProps = { type CarouselContextProps (line 20) | type CarouselContextProps = { function useCarousel (line 31) | function useCarousel() { FILE: summer-school-finder/src/components/ui/chart.tsx constant THEMES (line 7) | const THEMES = { light: "", dark: ".dark" } as const; type ChartConfig (line 9) | type ChartConfig = { type ChartContextProps (line 16) | type ChartContextProps = { function useChart (line 22) | function useChart() { function getPayloadConfigFromPayload (line 278) | function getPayloadConfigFromPayload(config: ChartConfig, payload: unkno... FILE: summer-school-finder/src/components/ui/command.tsx type CommandDialogProps (line 24) | interface CommandDialogProps extends DialogProps {} FILE: summer-school-finder/src/components/ui/form.tsx type FormFieldContextValue (line 11) | type FormFieldContextValue< type FormItemContextValue (line 56) | type FormItemContextValue = { FILE: summer-school-finder/src/components/ui/pagination.tsx type PaginationLinkProps (line 29) | type PaginationLinkProps = { FILE: summer-school-finder/src/components/ui/sheet.tsx type SheetContentProps (line 50) | interface SheetContentProps FILE: summer-school-finder/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 15) | const SIDEBAR_COOKIE_NAME = "sidebar:state"; constant SIDEBAR_COOKIE_MAX_AGE (line 16) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; constant SIDEBAR_WIDTH (line 17) | const SIDEBAR_WIDTH = "16rem"; constant SIDEBAR_WIDTH_MOBILE (line 18) | const SIDEBAR_WIDTH_MOBILE = "18rem"; constant SIDEBAR_WIDTH_ICON (line 19) | const SIDEBAR_WIDTH_ICON = "3rem"; constant SIDEBAR_KEYBOARD_SHORTCUT (line 20) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"; type SidebarContext (line 22) | type SidebarContext = { function useSidebar (line 34) | function useSidebar() { FILE: summer-school-finder/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.HTMLAttributes; FILE: summer-school-finder/src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps extends React.TextareaHTMLAttributes; type ToastActionElement (line 99) | type ToastActionElement = React.ReactElement; FILE: summer-school-finder/src/components/ui/toaster.tsx function Toaster (line 4) | function Toaster() { FILE: summer-school-finder/src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768; function useIsMobile (line 5) | function useIsMobile() { FILE: summer-school-finder/src/hooks/use-toast.ts constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 8) | type ToasterToast = ToastProps & { function genId (line 24) | function genId() { type ActionType (line 29) | type ActionType = typeof actionTypes; type Action (line 31) | type Action = type State (line 49) | interface State { function dispatch (line 128) | function dispatch(action: Action) { type Toast (line 135) | type Toast = Omit; function toast (line 137) | function toast({ ...props }: Toast) { function useToast (line 166) | function useToast() { FILE: summer-school-finder/src/hooks/useSummerSchoolSearch.ts function useSummerSchoolSearch (line 5) | function useSummerSchoolSearch() { FILE: summer-school-finder/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: summer-school-finder/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract { FILE: tenders-finder/src/components/tender/AgentPreviewCard.tsx type AgentPreviewCardProps (line 7) | interface AgentPreviewCardProps { function AgentPreviewCard (line 12) | function AgentPreviewCard({ agent, onExpandPreview }: AgentPreviewCardPr... FILE: tenders-finder/src/components/tender/AgentPreviewGrid.tsx type AgentPreviewGridProps (line 8) | interface AgentPreviewGridProps { function AgentPreviewGrid (line 13) | function AgentPreviewGrid({ agents, sector }: AgentPreviewGridProps) { FILE: tenders-finder/src/components/tender/CompareButton.tsx type CompareButtonProps (line 6) | interface CompareButtonProps { function CompareButton (line 11) | function CompareButton({ selectedCount, onCompare }: CompareButtonProps) { FILE: tenders-finder/src/components/tender/CompareModal.tsx type CompareModalProps (line 7) | interface CompareModalProps { constant COMPARE_FIELDS (line 13) | const COMPARE_FIELDS: { key: keyof Tender; label: string }[] = [ function CompareModal (line 27) | function CompareModal({ isOpen, onClose, tenders }: CompareModalProps) { FILE: tenders-finder/src/components/tender/Header.tsx function Header (line 4) | function Header() { FILE: tenders-finder/src/components/tender/LinkConfigPage.tsx type LinkConfigPageProps (line 17) | interface LinkConfigPageProps { function LinkConfigPage (line 23) | function LinkConfigPage({ sector, onBack, onStartSearch }: LinkConfigPag... FILE: tenders-finder/src/components/tender/LiveBrowserModal.tsx type LiveBrowserModalProps (line 7) | interface LiveBrowserModalProps { function LiveBrowserModal (line 14) | function LiveBrowserModal({ isOpen, streamingUrl, platformName, onClose ... FILE: tenders-finder/src/components/tender/SectorIcon.tsx type SectorIconProps (line 5) | interface SectorIconProps { function SectorIcon (line 13) | function SectorIcon({ icon: Icon, label, description, onClick, disabled ... FILE: tenders-finder/src/components/tender/SectorSelector.tsx type SectorSelectorProps (line 15) | interface SectorSelectorProps { constant SECTORS (line 20) | const SECTORS: { sector: Sector; icon: typeof Monitor; label: string; de... function SectorSelector (line 29) | function SectorSelector({ onSelectSector, disabled }: SectorSelectorProp... FILE: tenders-finder/src/components/tender/TenderResultCard.tsx type TenderResultCardProps (line 7) | interface TenderResultCardProps { function TenderResultCard (line 13) | function TenderResultCard({ tender, isSelected, onToggleSelect }: Tender... FILE: tenders-finder/src/components/tender/TenderResultsList.tsx type TenderResultsListProps (line 6) | interface TenderResultsListProps { function TenderResultsList (line 13) | function TenderResultsList({ FILE: tenders-finder/src/components/ui/badge.tsx type BadgeProps (line 23) | interface BadgeProps extends React.HTMLAttributes, Varia... function Badge (line 25) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: tenders-finder/src/components/ui/button.tsx type ButtonProps (line 33) | interface ButtonProps FILE: tenders-finder/src/components/ui/calendar.tsx type CalendarProps (line 8) | type CalendarProps = React.ComponentProps; function Calendar (line 10) | function Calendar({ className, classNames, showOutsideDays = true, ...pr... FILE: tenders-finder/src/components/ui/carousel.tsx type CarouselApi (line 8) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 9) | type UseCarouselParameters = Parameters; type CarouselOptions (line 10) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 11) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 13) | type CarouselProps = { type CarouselContextProps (line 20) | type CarouselContextProps = { function useCarousel (line 31) | function useCarousel() { FILE: tenders-finder/src/components/ui/chart.tsx constant THEMES (line 7) | const THEMES = { light: "", dark: ".dark" } as const; type ChartConfig (line 9) | type ChartConfig = { type ChartContextProps (line 16) | type ChartContextProps = { function useChart (line 22) | function useChart() { function getPayloadConfigFromPayload (line 278) | function getPayloadConfigFromPayload(config: ChartConfig, payload: unkno... FILE: tenders-finder/src/components/ui/command.tsx type CommandDialogProps (line 24) | interface CommandDialogProps extends DialogProps {} FILE: tenders-finder/src/components/ui/form.tsx type FormFieldContextValue (line 11) | type FormFieldContextValue< type FormItemContextValue (line 56) | type FormItemContextValue = { FILE: tenders-finder/src/components/ui/pagination.tsx type PaginationLinkProps (line 29) | type PaginationLinkProps = { FILE: tenders-finder/src/components/ui/sheet.tsx type SheetContentProps (line 50) | interface SheetContentProps FILE: tenders-finder/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 15) | const SIDEBAR_COOKIE_NAME = "sidebar:state"; constant SIDEBAR_COOKIE_MAX_AGE (line 16) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; constant SIDEBAR_WIDTH (line 17) | const SIDEBAR_WIDTH = "16rem"; constant SIDEBAR_WIDTH_MOBILE (line 18) | const SIDEBAR_WIDTH_MOBILE = "18rem"; constant SIDEBAR_WIDTH_ICON (line 19) | const SIDEBAR_WIDTH_ICON = "3rem"; constant SIDEBAR_KEYBOARD_SHORTCUT (line 20) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"; type SidebarContext (line 22) | type SidebarContext = { function useSidebar (line 34) | function useSidebar() { FILE: tenders-finder/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.HTMLAttributes; FILE: tenders-finder/src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps extends React.TextareaHTMLAttributes; type ToastActionElement (line 99) | type ToastActionElement = React.ReactElement; FILE: tenders-finder/src/components/ui/toaster.tsx function Toaster (line 4) | function Toaster() { FILE: tenders-finder/src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768; function useIsMobile (line 5) | function useIsMobile() { FILE: tenders-finder/src/hooks/use-toast.ts constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 8) | type ToasterToast = ToastProps & { function genId (line 24) | function genId() { type ActionType (line 29) | type ActionType = typeof actionTypes; type Action (line 31) | type Action = type State (line 49) | interface State { function dispatch (line 128) | function dispatch(action: Action) { type Toast (line 135) | type Toast = Omit; function toast (line 137) | function toast({ ...props }: Toast) { function useToast (line 166) | function useToast() { FILE: tenders-finder/src/hooks/useTenderSearch.ts constant SUPABASE_URL (line 6) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_ANON_KEY (line 7) | const SUPABASE_ANON_KEY = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY; function useTenderSearch (line 9) | function useTenderSearch() { FILE: tenders-finder/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: tenders-finder/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: tinyskills/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: tinyskills/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: tinyskills/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ function ScrollBar (line 31) | function ScrollBar({ FILE: tinyskills/components/ui/sonner.tsx type ToasterProps (line 5) | type ToasterProps = React.ComponentProps; function Toaster (line 7) | function Toaster({ ...props }: ToasterProps) { FILE: tinyskills/components/ui/switch.tsx function Switch (line 8) | function Switch({ FILE: tinyskills/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ function TabsList (line 21) | function TabsList({ function TabsTrigger (line 37) | function TabsTrigger({ function TabsContent (line 53) | function TabsContent({ FILE: tinyskills/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: tinyskills/hooks/use-generation.ts type GenerationState (line 15) | interface GenerationState { function useGeneration (line 37) | function useGeneration(settings: Settings = DEFAULT_SETTINGS) { FILE: tinyskills/hooks/use-local-storage.ts function useLocalStorage (line 5) | function useLocalStorage( FILE: tinyskills/lib/ai-client.ts function createOpenRouterProvider (line 7) | function createOpenRouterProvider() { function getModel (line 20) | function getModel(modelId: string = "google/gemini-2.5-flash-lite") { type IdentifySourcesResponse (line 37) | type IdentifySourcesResponse = z.infer; function identifySources (line 42) | async function identifySources( function topicToSkillName (line 169) | function topicToSkillName(topic: string): string { function synthesizeSkill (line 192) | function synthesizeSkill( FILE: tinyskills/lib/mino-client.ts constant MINO_API_URL (line 14) | const MINO_API_URL = "https://agent.tinyfish.ai/v1/automation/run-sse"; type MinoRequestConfig (line 16) | interface MinoRequestConfig { type MinoResponse (line 26) | interface MinoResponse { type MinoCallbacks (line 33) | interface MinoCallbacks { function runMinoAutomation (line 43) | async function runMinoAutomation( function buildScrapeGoal (line 138) | function buildScrapeGoal( function parseScrapedContent (line 236) | function parseScrapedContent(result: unknown): string { FILE: tinyskills/lib/storage.ts constant MAX_SKILLS (line 4) | const MAX_SKILLS = 50; constant MAX_HISTORY (line 5) | const MAX_HISTORY = 100; function getSkills (line 10) | function getSkills(): GeneratedSkill[] { function saveSkill (line 24) | function saveSkill(skill: GeneratedSkill): void { function deleteSkill (line 53) | function deleteSkill(skillId: string): void { function getSkill (line 67) | function getSkill(skillId: string): GeneratedSkill | null { type HistoryEntry (line 75) | interface HistoryEntry { function getHistory (line 87) | function getHistory(): HistoryEntry[] { function addToHistory (line 101) | function addToHistory(entry: HistoryEntry): void { function clearHistory (line 120) | function clearHistory(): void { function getSettings (line 133) | function getSettings(): Settings { function saveSettings (line 151) | function saveSettings(settings: Partial): void { function clearAllData (line 166) | function clearAllData(): void { function exportSkills (line 181) | function exportSkills(): string { function importSkills (line 189) | function importSkills(json: string): number { FILE: tinyskills/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { type MinoEvent (line 9) | interface MinoEvent { function parseSSELine (line 24) | function parseSSELine(line: string): MinoEvent | null { function isCompleteEvent (line 37) | function isCompleteEvent(event: MinoEvent): boolean { function isErrorEvent (line 41) | function isErrorEvent(event: MinoEvent): boolean { function formatStepMessage (line 45) | function formatStepMessage(event: MinoEvent): string { function isSystemEvent (line 59) | function isSystemEvent(event: MinoEvent): boolean { function generateId (line 78) | function generateId(): string { function formatDuration (line 83) | function formatDuration(ms: number): string { function truncate (line 94) | function truncate(text: string, length: number): string { function countWords (line 100) | function countWords(text: string): number { FILE: tinyskills/types/index.ts type SourceType (line 1) | type SourceType = "docs" | "github" | "stackoverflow" | "blog"; type ScrapeStatus (line 3) | type ScrapeStatus = "pending" | "scraping" | "complete" | "error"; type GenerationPhase (line 5) | type GenerationPhase = type IdentifiedSource (line 13) | interface IdentifiedSource { type ScrapeProgress (line 20) | interface ScrapeProgress { type GeneratedSkill (line 30) | interface GeneratedSkill { type Settings (line 39) | interface Settings { constant DEFAULT_SETTINGS (line 48) | const DEFAULT_SETTINGS: Settings = { constant SOURCE_CONFIG (line 58) | const SOURCE_CONFIG: Record { FILE: tutor-finder/src/components/TutorCard.tsx type TutorCardProps (line 17) | interface TutorCardProps { function TutorCard (line 23) | function TutorCard({ tutor, isSelected, onToggleSelect }: TutorCardProps) { FILE: tutor-finder/src/components/TutorResultsGrid.tsx type TutorResultsGridProps (line 5) | interface TutorResultsGridProps { function TutorResultsGrid (line 12) | function TutorResultsGrid({ FILE: tutor-finder/src/components/ui/badge.tsx type BadgeProps (line 23) | interface BadgeProps extends React.HTMLAttributes, Varia... function Badge (line 25) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: tutor-finder/src/components/ui/button.tsx type ButtonProps (line 33) | interface ButtonProps FILE: tutor-finder/src/components/ui/calendar.tsx type CalendarProps (line 8) | type CalendarProps = React.ComponentProps; function Calendar (line 10) | function Calendar({ className, classNames, showOutsideDays = true, ...pr... FILE: tutor-finder/src/components/ui/carousel.tsx type CarouselApi (line 8) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 9) | type UseCarouselParameters = Parameters; type CarouselOptions (line 10) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 11) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 13) | type CarouselProps = { type CarouselContextProps (line 20) | type CarouselContextProps = { function useCarousel (line 31) | function useCarousel() { FILE: tutor-finder/src/components/ui/chart.tsx constant THEMES (line 7) | const THEMES = { light: "", dark: ".dark" } as const; type ChartConfig (line 9) | type ChartConfig = { type ChartContextProps (line 16) | type ChartContextProps = { function useChart (line 22) | function useChart() { function getPayloadConfigFromPayload (line 278) | function getPayloadConfigFromPayload(config: ChartConfig, payload: unkno... FILE: tutor-finder/src/components/ui/command.tsx type CommandDialogProps (line 24) | interface CommandDialogProps extends DialogProps {} FILE: tutor-finder/src/components/ui/form.tsx type FormFieldContextValue (line 11) | type FormFieldContextValue< type FormItemContextValue (line 56) | type FormItemContextValue = { FILE: tutor-finder/src/components/ui/pagination.tsx type PaginationLinkProps (line 29) | type PaginationLinkProps = { FILE: tutor-finder/src/components/ui/sheet.tsx type SheetContentProps (line 50) | interface SheetContentProps FILE: tutor-finder/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 15) | const SIDEBAR_COOKIE_NAME = "sidebar:state"; constant SIDEBAR_COOKIE_MAX_AGE (line 16) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; constant SIDEBAR_WIDTH (line 17) | const SIDEBAR_WIDTH = "16rem"; constant SIDEBAR_WIDTH_MOBILE (line 18) | const SIDEBAR_WIDTH_MOBILE = "18rem"; constant SIDEBAR_WIDTH_ICON (line 19) | const SIDEBAR_WIDTH_ICON = "3rem"; constant SIDEBAR_KEYBOARD_SHORTCUT (line 20) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"; type SidebarContext (line 22) | type SidebarContext = { function useSidebar (line 34) | function useSidebar() { FILE: tutor-finder/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.HTMLAttributes; FILE: tutor-finder/src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps extends React.TextareaHTMLAttributes; type ToastActionElement (line 99) | type ToastActionElement = React.ReactElement; FILE: tutor-finder/src/components/ui/toaster.tsx function Toaster (line 4) | function Toaster() { FILE: tutor-finder/src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768; function useIsMobile (line 5) | function useIsMobile() { FILE: tutor-finder/src/hooks/use-toast.ts constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 8) | type ToasterToast = ToastProps & { function genId (line 24) | function genId() { type ActionType (line 29) | type ActionType = typeof actionTypes; type Action (line 31) | type Action = type State (line 49) | interface State { function dispatch (line 128) | function dispatch(action: Action) { type Toast (line 135) | type Toast = Omit; function toast (line 137) | function toast({ ...props }: Toast) { function useToast (line 166) | function useToast() { FILE: tutor-finder/src/hooks/useTutorSearch.ts function useTutorSearch (line 5) | function useTutorSearch() { FILE: tutor-finder/src/integrations/supabase/client.ts constant SUPABASE_URL (line 5) | const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL; constant SUPABASE_PUBLISHABLE_KEY (line 6) | const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHAB... FILE: tutor-finder/src/integrations/supabase/types.ts type Json (line 1) | type Json = type Database (line 9) | type Database = { type DatabaseWithoutInternals (line 34) | type DatabaseWithoutInternals = Omit type DefaultSchema (line 36) | type DefaultSchema = DatabaseWithoutInternals[Extract = { constant GOAL_PROMPT (line 41) | const GOAL_PROMPT = `You are extracting motorbike rental pricing from th... type SearchBody (line 82) | type SearchBody = { type TinyFishEvent (line 87) | type TinyFishEvent = { type CacheRow (line 94) | interface CacheRow { function tryGetSupabase (line 111) | function tryGetSupabase(): SupabaseClient | null { function getCachedResults (line 121) | async function getCachedResults( function cacheResult (line 146) | async function cacheResult( function runTinyFishSseForSite (line 173) | async function runTinyFishSseForSite( function POST (line 266) | async function POST(request: Request): Promise { FILE: viet-bike-scout/src/app/layout.tsx function RootLayout (line 38) | function RootLayout({ FILE: viet-bike-scout/src/app/page.tsx constant CITIES (line 12) | const CITIES = [ constant BIKE_TYPES (line 19) | const BIKE_TYPES: { name: Bike['type']; label: string; activeClass: stri... constant CITY_LABELS (line 26) | const CITY_LABELS: Record = { constant MAX_SLOTS (line 33) | const MAX_SLOTS = 4; function filterShops (line 35) | function filterShops(shops: BikeShop[], types: Set): BikeS... type SortOrder (line 42) | type SortOrder = 'none' | 'price-asc' | 'price-desc'; function applySortAndFilter (line 44) | function applySortAndFilter(shops: BikeShop[], sortOrder: SortOrder, mod... function Home (line 74) | function Home() { FILE: viet-bike-scout/src/components/bike-card.tsx type BikeCardProps (line 6) | interface BikeCardProps { function BikeCard (line 11) | function BikeCard({ bike, shopWebsite }: BikeCardProps) { FILE: viet-bike-scout/src/components/live-preview-grid.tsx constant MAX_VISIBLE (line 6) | const MAX_VISIBLE = 5; function getHostname (line 8) | function getHostname(url: string): string { type LivePreviewGridProps (line 12) | interface LivePreviewGridProps { function LivePreviewGrid (line 16) | function LivePreviewGrid({ previews }: LivePreviewGridProps) { FILE: viet-bike-scout/src/components/results-grid.tsx type ResultsGridProps (line 4) | interface ResultsGridProps { function ResultsGrid (line 8) | function ResultsGrid({ shops }: ResultsGridProps) { FILE: viet-bike-scout/src/components/shop-group.tsx function getHostname (line 6) | function getHostname(url: string): string { type ShopGroupProps (line 14) | interface ShopGroupProps { function ShopGroup (line 18) | function ShopGroup({ shop }: ShopGroupProps) { FILE: viet-bike-scout/src/components/ui/badge.tsx function Badge (line 29) | function Badge({ FILE: viet-bike-scout/src/components/ui/button.tsx function Button (line 41) | function Button({ FILE: viet-bike-scout/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: viet-bike-scout/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: viet-bike-scout/src/hooks/use-bike-search.ts type Bike (line 5) | interface Bike { type BikeShop (line 18) | interface BikeShop { type StreamingPreview (line 28) | interface StreamingPreview { type SearchState (line 34) | interface SearchState { function normalizeShop (line 70) | function normalizeShop(raw: unknown): BikeShop { function useBikeSearch (line 122) | function useBikeSearch(): { FILE: viet-bike-scout/src/lib/env.ts type Env (line 9) | type Env = z.infer; function getEnv (line 13) | function getEnv(): Env { FILE: viet-bike-scout/src/lib/supabase.ts function getSupabaseAdmin (line 10) | function getSupabaseAdmin(): SupabaseClient { FILE: viet-bike-scout/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: viet-bike-scout/supabase/migrations/20260224170438_create_bike_cache.sql type public (line 4) | create table public.bike_cache ( type idx_bike_cache_city (line 13) | create index idx_bike_cache_city type idx_bike_cache_scraped_at (line 16) | create index idx_bike_cache_scraped_at FILE: waifu-deal-sniper/bot.js constant CONFIG (line 32) | const CONFIG = { function pick (line 45) | function pick(arr) { function fill (line 50) | function fill(template, vars) { function sanitizeForDisplay (line 65) | function sanitizeForDisplay(str) { function sanitizeQuery (line 75) | function sanitizeQuery(query) { function sanitizePrice (line 84) | function sanitizePrice(price) { function checkRateLimit (line 95) | function checkRateLimit(userId) { function isSpicy (line 123) | function isSpicy(query) { function isHusbando (line 128) | function isHusbando(query) { function getFigureType (line 133) | function getFigureType(query) { function getCharacterReaction (line 141) | function getCharacterReaction(query) { function getPriceReaction (line 149) | function getPriceReaction(price) { function getConditionComment (line 156) | function getConditionComment(itemGrade, boxGrade) { function isDeal (line 172) | function isDeal(item) { function findItemsArray (line 182) | function findItemsArray(obj) { constant SITES (line 228) | const SITES = { function calculateRarity (line 292) | function calculateRarity(item) { function getRarityDetails (line 351) | function getRarityDetails(item) { function searchSite (line 374) | async function searchSite(siteKey, query, maxPrice = null) { function searchAmiAmi (line 500) | async function searchAmiAmi(query, maxPrice = null, siteKey = 'amiami') { function searchAllSites (line 505) | async function searchAllSites(query, maxPrice = null) { function createFigureEmbed (line 539) | function createFigureEmbed(item) { function createResultsSummaryEmbed (line 594) | function createResultsSummaryEmbed(items, query, spicy) { function parseMessage (line 618) | function parseMessage(content) { function handleMessage (line 772) | async function handleMessage(message, content) { function handleSearch (line 867) | async function handleSearch(message, user, query, maxPrice, isUSD = fals... function handleSearchSite (line 952) | async function handleSearchSite(message, user, siteKey, query, maxPrice) { function handleSearchAll (line 1020) | async function handleSearchAll(message, user, query, maxPrice) { function createSiteEmbed (line 1088) | function createSiteEmbed(item, site) { function handleWatch (line 1138) | async function handleWatch(message, user, query, maxPrice) { function handleWatchlist (line 1159) | async function handleWatchlist(message, user) { function handleUnwatch (line 1177) | async function handleUnwatch(message, user, query) { function handleStats (line 1192) | async function handleStats(message, user) { function handleGacha (line 1213) | async function handleGacha(message, user, query) { function handleGachaLast (line 1287) | async function handleGachaLast(message, user) { function handleRoast (line 1340) | async function handleRoast(message, user) { function handleRoastQuery (line 1351) | async function handleRoastQuery(message, user, query, existingItems = nu... function handleCopium (line 1407) | async function handleCopium(message, user) { function runWatchChecker (line 1460) | async function runWatchChecker(client) { FILE: waifu-deal-sniper/database.js constant DB_PATH (line 10) | const DB_PATH = process.env.DATABASE_PATH || './data/waifu.db'; constant SQL (line 19) | let SQL = null; function initDb (line 23) | async function initDb() { function saveDb (line 105) | function saveDb() { function run (line 120) | function run(sql, params = []) { function get (line 126) | function get(sql, params = []) { function all (line 139) | function all(sql, params = []) { function getOrCreateUser (line 153) | function getOrCreateUser(discordId, username = null) { function updateUserActivity (line 166) | function updateUserActivity(discordId) { function incrementSearchCount (line 170) | function incrementSearchCount(userId) { function incrementDealsFound (line 174) | function incrementDealsFound(userId, count = 1) { function isNewUser (line 178) | function isNewUser(discordId) { function addToWatchlist (line 185) | function addToWatchlist(userId, query, maxPrice = 999999) { function removeFromWatchlist (line 206) | function removeFromWatchlist(userId, query) { function getUserWatchlist (line 216) | function getUserWatchlist(userId) { function getAllActiveWatches (line 223) | function getAllActiveWatches() { function updateWatchChecked (line 232) | function updateWatchChecked(watchId) { function incrementWatchNotified (line 236) | function incrementWatchNotified(watchId) { function hasBeenNotified (line 242) | function hasBeenNotified(userId, productUrl) { function markNotified (line 250) | function markNotified(userId, productUrl) { function logSearch (line 263) | function logSearch(userId, query, resultsCount) { function getStats (line 272) | function getStats() { function getUserStats (line 284) | function getUserStats(discordId) { method db (line 317) | get db() { return db; } FILE: waifu-deal-sniper/templates.js constant TEMPLATES (line 6) | const TEMPLATES = { constant SPICY_KEYWORDS (line 571) | const SPICY_KEYWORDS = [ constant HUSBANDO_KEYWORDS (line 578) | const HUSBANDO_KEYWORDS = [ constant FIGURE_TYPE_KEYWORDS (line 587) | const FIGURE_TYPE_KEYWORDS = { constant GACHA_TEMPLATES (line 600) | const GACHA_TEMPLATES = { constant ROAST_TEMPLATES (line 699) | const ROAST_TEMPLATES = { constant COPIUM_TEMPLATES (line 870) | const COPIUM_TEMPLATES = { FILE: wing-command/app/api/deals/route.ts function GET (line 27) | async function GET(request: NextRequest) { FILE: wing-command/app/api/menu/route.ts function GET (line 19) | async function GET(request: NextRequest) { FILE: wing-command/app/api/scout/route.ts constant INFLIGHT_CLEANUP_INTERVAL (line 22) | const INFLIGHT_CLEANUP_INTERVAL = 5 * 60 * 1000; function cleanupInFlightRequests (line 25) | function cleanupInFlightRequests() { constant VALID_FLAVORS (line 33) | const VALID_FLAVORS: FlavorPersona[] = ['face-melter', 'classicist', 'st... constant MAX_AUTO_SCRAPES (line 34) | const MAX_AUTO_SCRAPES = 10; function enrichSpotsWithPrices (line 42) | async function enrichSpotsWithPrices(spots: WingSpot[]): Promise = { constant FLAVOR_EMOJIS (line 18) | const FLAVOR_EMOJIS: Record = { function CoinToss (line 24) | function CoinToss({ onResult }: CoinTossProps) { FILE: wing-command/components/ComicHero.tsx type Particle (line 8) | interface Particle { function generateParticles (line 20) | function generateParticles(count: number): Particle[] { type ComicHeroProps (line 50) | interface ComicHeroProps { function ComicHero (line 54) | function ComicHero({ flavor }: ComicHeroProps) { FILE: wing-command/components/CommandJumbotron.tsx constant TICKER_MESSAGES (line 10) | const TICKER_MESSAGES = [ function JumbotronCountdown (line 24) | function JumbotronCountdown() { function LEDTicker (line 92) | function LEDTicker() { type CommandJumbotronProps (line 126) | interface CommandJumbotronProps { function CommandJumbotron (line 133) | function CommandJumbotron({ FILE: wing-command/components/CompareBar.tsx type CompareBarProps (line 7) | interface CompareBarProps { function CompareBar (line 13) | function CompareBar({ count, onCompare, onClear }: CompareBarProps) { FILE: wing-command/components/CompareModal.tsx type CompareModalProps (line 9) | interface CompareModalProps { function formatPrice (line 15) | function formatPrice(price: number | null): string { function formatDelivery (line 20) | function formatDelivery(mins: number | null): string { function bestIndex (line 27) | function bestIndex(values: (number | null)[], lower = true): number { function CompareModal (line 40) | function CompareModal({ spots, isOpen, onClose }: CompareModalProps) { FILE: wing-command/components/DealsView.tsx type DealsViewProps (line 8) | interface DealsViewProps { function DealsView (line 19) | function DealsView({ spotId, spotName, enabled = true }: DealsViewProps) { function InlineDealBadge (line 180) | function InlineDealBadge({ deal }: { deal: SuperBowlDeal }) { function DealCard (line 191) | function DealCard({ deal }: { deal: SuperBowlDeal }) { function DealsSkeleton (line 275) | function DealsSkeleton() { function DealsScoutingIndicator (line 284) | function DealsScoutingIndicator() { FILE: wing-command/components/FlavorSelector.tsx type FlavorSelectorProps (line 8) | interface FlavorSelectorProps { function FlavorSelector (line 13) | function FlavorSelector({ selected, onSelect }: FlavorSelectorProps) { FILE: wing-command/components/FlavorTarot.tsx type FlavorTarotProps (line 8) | interface FlavorTarotProps { type ClipboardCardData (line 13) | interface ClipboardCardData { constant CLIPBOARD_CARDS (line 25) | const CLIPBOARD_CARDS: ClipboardCardData[] = [ function FlavorTarot (line 61) | function FlavorTarot({ selected, onSelect }: FlavorTarotProps) { FILE: wing-command/components/FrostedGlassPanel.tsx type FrostedGlassPanelProps (line 5) | interface FrostedGlassPanelProps { function FrostedGlassPanel (line 14) | function FrostedGlassPanel({ children, className = '' }: FrostedGlassPan... FILE: wing-command/components/GlassBlitzEntrance.tsx type GlassBlitzEntranceProps (line 6) | interface GlassBlitzEntranceProps { type ShardData (line 14) | interface ShardData { type FloatingEmojiData (line 24) | interface FloatingEmojiData { function generateShards (line 34) | function generateShards(cols: number, rows: number): ShardData[] { function CrackOverlay (line 83) | function CrackOverlay({ hitCount }: { hitCount: number }) { function FloatingEmoji (line 142) | function FloatingEmoji({ emoji, x, y, size, duration, delay }: Omit { FILE: wing-command/components/ui/Sheet.tsx type SheetProps (line 5) | interface SheetProps { function Sheet (line 12) | function Sheet({ isOpen, onClose, children, title }: SheetProps) { FILE: wing-command/lib/cache.ts constant DEFAULT_TTL (line 22) | const DEFAULT_TTL = 2 * 60 * 60; constant GEOCODE_TTL (line 23) | const GEOCODE_TTL = 60 * 60 * 24 * 365; function getCachedWingSpots (line 39) | async function getCachedWingSpots(zipCode: string): Promise { function purgeZipCache (line 95) | async function purgeZipCache(zipCode: string): Promise { function getCachedScrapeResult (line 109) | async function getCachedScrapeResult(zipCode: string): Promise { function getCacheStats (line 187) | async function getCacheStats(): Promise<{ constant MENU_TTL (line 216) | const MENU_TTL = 60 * 60; constant CHAIN_MENU_TTL (line 219) | const CHAIN_MENU_TTL = 6 * 60 * 60; function normalizeChainName (line 237) | function normalizeChainName(name: string): string { function getCachedMenu (line 252) | async function getCachedMenu(spotId: string): Promise { function cacheMenu (line 265) | async function cacheMenu(spotId: string, menu: Menu): Promise { function invalidateMenuCache (line 277) | async function invalidateMenuCache(spotId: string): Promise { constant SCOUTING_LOCK_TTL (line 291) | const SCOUTING_LOCK_TTL = 3 * 60; function setScoutingLock (line 298) | async function setScoutingLock(spotId: string): Promise { function isScoutingInProgress (line 316) | async function isScoutingInProgress(spotId: string): Promise { function clearScoutingLock (line 330) | async function clearScoutingLock(spotId: string): Promise { function getCachedChainMenu (line 347) | async function getCachedChainMenu(name: string): Promise { function cacheChainMenu (line 362) | async function cacheChainMenu(name: string, menu: Menu): Promise { constant DEALS_TTL (line 377) | const DEALS_TTL = 30 * 60; constant DEALS_SCOUTING_LOCK_TTL (line 378) | const DEALS_SCOUTING_LOCK_TTL = 5 * 60; function getCachedDeals (line 385) | async function getCachedDeals(spotId: string): Promise { function isDealsScoutingInProgress (line 434) | async function isDealsScoutingInProgress(spotId: string): Promise { constant AGGREGATOR_TTL (line 462) | const AGGREGATOR_TTL = 2 * 60 * 60; constant AGGREGATOR_SCOUTING_LOCK_TTL (line 463) | const AGGREGATOR_SCOUTING_LOCK_TTL = 5 * 60; constant AGGREGATOR_KEY (line 464) | const AGGREGATOR_KEY = 'deals:aggregator'; constant AGGREGATOR_SCOUTING_KEY (line 465) | const AGGREGATOR_SCOUTING_KEY = 'deals:aggregator:scouting'; function getCachedAggregatorDeals (line 470) | async function getCachedAggregatorDeals(): Promise { function isAggregatorScoutingInProgress (line 514) | async function isAggregatorScoutingInProgress(): Promise { function clearAggregatorScoutingLock (line 528) | async function clearAggregatorScoutingLock(): Promise { FILE: wing-command/lib/chain-prices.ts type ChainPriceRange (line 7) | interface ChainPriceRange { constant CHAIN_PRICE_MAP (line 17) | const CHAIN_PRICE_MAP: Record = { function getChainPriceEstimate (line 53) | function getChainPriceEstimate(restaurantName: string): ChainPriceRange ... FILE: wing-command/lib/deals.ts constant AGGREGATOR_SCRAPE_TIMEOUT (line 18) | const AGGREGATOR_SCRAPE_TIMEOUT = 180000; constant FALLBACK_SCRAPE_TIMEOUT (line 19) | const FALLBACK_SCRAPE_TIMEOUT = 360000; constant AGGREGATOR_SOURCES (line 25) | const AGGREGATOR_SOURCES = [ constant AGGREGATOR_GOAL (line 44) | const AGGREGATOR_GOAL = `Extract ALL restaurant Super Bowl deals and spe... function normalizeRestaurantName (line 69) | function normalizeRestaurantName(name: string): string { function matchDealsToSpot (line 89) | function matchDealsToSpot( function scrapeAggregatorPage (line 122) | async function scrapeAggregatorPage( function parseAggregatorResponse (line 140) | function parseAggregatorResponse(result: TinyFishResponse): AggregatorDe... function mergeAggregatorResults (line 195) | function mergeAggregatorResults(sources: AggregatorDeal[][]): Aggregator... function startBackgroundAggregatorScrape (line 235) | function startBackgroundAggregatorScrape(): void { function scrapeWebsiteForDeals (line 284) | async function scrapeWebsiteForDeals( function parseFallbackDeals (line 342) | function parseFallbackDeals(result: TinyFishResponse): SuperBowlDeal[] { function startBackgroundDealsScrape (line 373) | function startBackgroundDealsScrape( FILE: wing-command/lib/env.ts function validateEnv (line 21) | function validateEnv(): { function getEnv (line 50) | function getEnv(key: string, defaultValue?: string): string { function getOptionalEnv (line 59) | function getOptionalEnv(key: string): string | undefined { function logEnvValidation (line 63) | function logEnvValidation(): void { FILE: wing-command/lib/geocode.ts constant NOMINATIM_BASE_URL (line 12) | const NOMINATIM_BASE_URL = 'https://nominatim.openstreetmap.org'; constant USER_AGENT (line 15) | const USER_AGENT = 'WingScout/1.0 (super-bowl-wing-tracker)'; constant ZIP_COORDS (line 20) | const ZIP_COORDS: Record { function calculateDistance (line 330) | function calculateDistance( function toRad (line 347) | function toRad(deg: number): number { function getBoundingBox (line 354) | function getBoundingBox( FILE: wing-command/lib/menu.ts type MenuScrapeResult (line 17) | interface MenuScrapeResult { function fetchMenu (line 27) | async function fetchMenu( function fetchYelpMenu (line 53) | async function fetchYelpMenu( function getWingsOnlyGoal (line 97) | function getWingsOnlyGoal(hasDirectUrl: boolean): string { constant WING_ITEM_KEYWORDS (line 143) | const WING_ITEM_KEYWORDS = [ function isWingRelatedText (line 149) | function isWingRelatedText(text: string): boolean { function extractFromAlternativeFormat (line 158) | function extractFromAlternativeFormat(data: unknown): MenuSection[] | nu... function parseItemsArray (line 251) | function parseItemsArray(items: unknown[]): MenuItem[] { function parseSectionsArray (line 275) | function parseSectionsArray(sections: unknown[]): MenuSection[] { function extractItemsFromText (line 288) | function extractItemsFromText(text: string): MenuItem[] { function extractContactInfo (line 316) | function extractContactInfo(data: unknown): { phone?: string; address?: ... function attemptScrape (line 350) | async function attemptScrape( function scrapeMenuWithTinyFish (line 445) | async function scrapeMenuWithTinyFish( function buildMenu (line 497) | function buildMenu( function detectWingItems (line 517) | function detectWingItems(sections: MenuSection[]): boolean { function findWingSectionIndex (line 534) | function findWingSectionIndex(sections: MenuSection[]): number | undefin... function calculatePricePerWing (line 565) | function calculatePricePerWing( function detectDeal (line 591) | function detectDeal(name: string, description?: string): boolean { function getCheapestWingPrice (line 601) | function getCheapestWingPrice(sections: MenuSection[]): WingPriceResult { function startBackgroundMenuScrape (line 658) | function startBackgroundMenuScrape( FILE: wing-command/lib/seed-data.ts type SeedRestaurant (line 9) | interface SeedRestaurant { constant RESTAURANT_POOL (line 24) | const RESTAURANT_POOL: SeedRestaurant[] = [ constant STREETS (line 210) | const STREETS = [ function generateSeedData (line 220) | function generateSeedData( FILE: wing-command/lib/supabase.ts type SupabaseClientAny (line 13) | type SupabaseClientAny = SupabaseClient; function createBrowserClient (line 18) | function createBrowserClient(): SupabaseClientAny { function createServerClient (line 27) | function createServerClient(): SupabaseClientAny { function getSupabaseBrowserClient (line 41) | function getSupabaseBrowserClient(): SupabaseClientAny { function getWingSpotsByZip (line 51) | async function getWingSpotsByZip( function deleteWingSpotsByZip (line 68) | async function deleteWingSpotsByZip( function getWingSpotsNearLocation (line 89) | async function getWingSpotsNearLocation( function upsertWingSpots (line 116) | async function upsertWingSpots( function getCachedGeocode (line 132) | async function getCachedGeocode( function cacheGeocode (line 148) | async function cacheGeocode( function addToScrapeQueue (line 162) | async function addToScrapeQueue( function getPendingScrapeCount (line 178) | async function getPendingScrapeCount( function isDataStale (line 192) | function isDataStale(lastUpdated: string, maxAgeMinutes: number = 60): b... FILE: wing-command/lib/tinyfish-scraper.ts constant TINYFISH_API_URL (line 12) | const TINYFISH_API_URL = process.env.TINYFISH_API_URL || 'https://agent.... constant TINYFISH_API_KEY (line 13) | const TINYFISH_API_KEY = process.env.TINYFISH_API_KEY || ''; function withTimeout (line 20) | async function withTimeout(promise: Promise, timeoutMs: number, fa... constant SCRAPER_TIMEOUT (line 32) | const SCRAPER_TIMEOUT = 120000; constant MENU_SCRAPER_TIMEOUT (line 33) | const MENU_SCRAPER_TIMEOUT = 45000; type TinyFishSyncResponse (line 35) | interface TinyFishSyncResponse { function runTinyFishScrape (line 49) | async function runTinyFishScrape(url: string, goal: string, timeoutMs: n... function executeTinyFishScrape (line 108) | async function executeTinyFishScrape(url: string, goal: string): Promise... function executeTinyFishMenuScrape (line 116) | async function executeTinyFishMenuScrape(url: string, goal: string): Pro... function scrapeDoorDash (line 121) | async function scrapeDoorDash(zipCode: string, city?: string, state?: st... function scrapeUberEats (line 162) | async function scrapeUberEats(zipCode: string, city?: string, state?: st... function scrapeGrubhub (line 203) | async function scrapeGrubhub(zipCode: string, city?: string, state?: str... function scrapeGoogle (line 243) | async function scrapeGoogle(zipCode: string, city?: string, state?: stri... function processRestaurants (line 299) | function processRestaurants( function applyFlavorScoring (line 358) | function applyFlavorScoring(spots: WingSpot[], flavorId: FlavorPersona):... function extractStateFromAddress (line 368) | function extractStateFromAddress(address: string): string | null { function normalizeStateAbbreviation (line 400) | function normalizeStateAbbreviation(state: string): string { function scrapeAllSources (line 421) | async function scrapeAllSources( function normalizeMenuItem (line 514) | function normalizeMenuItem(name: string): string { function dedupeMenu (line 523) | function dedupeMenu( FILE: wing-command/lib/types.ts type FlavorPersona (line 9) | type FlavorPersona = 'face-melter' | 'classicist' | 'sticky-finger'; type FlavorPersonaInfo (line 11) | interface FlavorPersonaInfo { type WingSource (line 23) | type WingSource = 'doordash' | 'ubereats' | 'grubhub' | 'google'; type WingStatus (line 28) | type WingStatus = 'green' | 'yellow' | 'red'; type WingSpot (line 33) | interface WingSpot { type GeocodedLocation (line 67) | interface GeocodedLocation { type ScrapeQueueItem (line 79) | interface ScrapeQueueItem { type ScoutResponse (line 92) | interface ScoutResponse { type ScrapeResponse (line 102) | type ScrapeResponse = ScoutResponse; type MenuItemRaw (line 107) | interface MenuItemRaw { type MenuItem (line 120) | interface MenuItem { type PlatformIds (line 132) | interface PlatformIds { type MenuSection (line 144) | interface MenuSection { type WingPriceResult (line 152) | interface WingPriceResult { type Menu (line 160) | interface Menu { type MenuResponse (line 173) | interface MenuResponse { type ScrapedRestaurant (line 185) | interface ScrapedRestaurant { type TinyFishRequest (line 208) | interface TinyFishRequest { type TinyFishResponse (line 219) | interface TinyFishResponse { type MapViewport (line 229) | interface MapViewport { type PopularCity (line 238) | interface PopularCity { type CountdownTime (line 247) | interface CountdownTime { type AvailabilityStats (line 258) | interface AvailabilityStats { type SuperBowlDeal (line 269) | interface SuperBowlDeal { type AggregatorDeal (line 282) | interface AggregatorDeal { type DealsResponse (line 290) | interface DealsResponse { type Database (line 301) | interface Database { FILE: wing-command/lib/utils.ts function cn (line 13) | function cn(...inputs: ClassValue[]): string { constant FLAVOR_PERSONAS (line 21) | const FLAVOR_PERSONAS: FlavorPersonaInfo[] = [ function getFlavorPersona (line 48) | function getFlavorPersona(id: FlavorPersona): FlavorPersonaInfo { function scoreFlavorMatch (line 55) | function scoreFlavorMatch(itemName: string, persona: FlavorPersonaInfo):... function scoreSpotFlavor (line 74) | function scoreSpotFlavor(spot: WingSpot, persona: FlavorPersonaInfo): nu... constant SUPER_BOWL_DATE (line 106) | const SUPER_BOWL_DATE = new Date('2026-02-08T18:30:00-05:00'); function getCountdown (line 108) | function getCountdown(targetDate: Date = SUPER_BOWL_DATE): CountdownTime { function formatCountdown (line 125) | function formatCountdown(countdown: CountdownTime): string { function isValidZipCode (line 139) | function isValidZipCode(zip: string): boolean { function cleanZipCode (line 143) | function cleanZipCode(zip: string): string { function calculateStatus (line 151) | function calculateStatus(spot: Partial): WingStatus { function calculateAvailability (line 165) | function calculateAvailability(spots: WingSpot[]): AvailabilityStats { function formatPrice (line 178) | function formatPrice(price: number | null): string { function formatPricePerWing (line 183) | function formatPricePerWing(price: number | null): string { function formatDeliveryTime (line 188) | function formatDeliveryTime(mins: number | null): string { function getStatusEmoji (line 196) | function getStatusEmoji(status: WingStatus): string { function getStatusColorClass (line 205) | function getStatusColorClass(status: WingStatus): string { function getStatusBorderClass (line 214) | function getStatusBorderClass(status: WingStatus): string { function formatRelativeTime (line 223) | function formatRelativeTime(dateString: string): string { function truncate (line 235) | function truncate(text: string, maxLength: number): string { function getGoogleMapsUrl (line 240) | function getGoogleMapsUrl(address: string): string { function getOrderSearchUrl (line 244) | function getOrderSearchUrl(name: string, address: string): string { function getTelLink (line 248) | function getTelLink(phone: string): string { function getOrderUrl (line 255) | function getOrderUrl(spot: WingSpot): string { function getPlatformLabel (line 263) | function getPlatformLabel(url: string): string { function randomDelay (line 271) | function randomDelay(minMs = 2000, maxMs = 5000): Promise { constant POPULAR_CITIES (line 279) | const POPULAR_CITIES: PopularCity[] = [ function normalizeRestaurantName (line 316) | function normalizeRestaurantName(name: string): string { function normalizeAddress (line 328) | function normalizeAddress(address: string): string { function getRestaurantDedupeKey (line 351) | function getRestaurantDedupeKey(name: string, address: string): string { function deduplicateWingSpots (line 355) | function deduplicateWingSpots(spots: WingSpot[]): WingSpot[] { constant TOP_ZIP_CODES (line 394) | const TOP_ZIP_CODES: string[] = [ FILE: wing-command/scraper/scrape_wings.py class WingSpot (line 73) | class WingSpot: function calculate_status (line 94) | def calculate_status(spot: Dict[str, Any]) -> str: function geocode_zip (line 112) | def geocode_zip(zip_code: str) -> Optional[Dict[str, float]]: function scrape_with_tinyfish (line 134) | def scrape_with_tinyfish(url: str, goal: str) -> Optional[Dict]: function scrape_doordash (line 156) | def scrape_doordash(zip_code: str, lat: float, lng: float) -> List[Dict]: function save_to_supabase (line 199) | def save_to_supabase(spots: List[Dict]) -> bool: function main (line 222) | def main(): FILE: wing-command/scripts/cache-warmer.ts constant TIER_1_SUPER_BOWL (line 37) | const TIER_1_SUPER_BOWL: Array<{ zip: string; city: string; reason: stri... constant TIER_2_METROS (line 81) | const TIER_2_METROS: Array<{ zip: string; city: string; reason: string }... constant ALL_FLAVORS (line 107) | const ALL_FLAVORS: FlavorPersona[] = ['face-melter', 'classicist', 'stic... type CliArgs (line 113) | interface CliArgs { function parseArgs (line 124) | function parseArgs(): CliArgs { constant COLORS (line 153) | const COLORS = { function log (line 168) | function log(msg: string) { function logSuccess (line 173) | function logSuccess(msg: string) { log(`${COLORS.green}✓${COLORS.reset} ... function logWarn (line 174) | function logWarn(msg: string) { log(`${COLORS.yellow}⚠${COLORS.reset} ${... function logError (line 175) | function logError(msg: string) { log(`${COLORS.red}✗${COLORS.reset} ${ms... function logInfo (line 176) | function logInfo(msg: string) { log(`${COLORS.cyan}ℹ${COLORS.reset} ${ms... function banner (line 178) | function banner(text: string) { type WarmResult (line 189) | interface WarmResult { function warmZip (line 199) | async function warmZip( function processBatch (line 277) | async function processBatch( function sleep (line 341) | function sleep(ms: number): Promise { function printReport (line 349) | function printReport(results: WarmResult[], durationMs: number) { function main (line 388) | async function main() { FILE: wing-command/supabase/schema.sql type wing_spots (line 12) | CREATE TABLE IF NOT EXISTS wing_spots ( type idx_wing_spots_zip (line 57) | CREATE INDEX IF NOT EXISTS idx_wing_spots_zip ON wing_spots(zip_code) type idx_wing_spots_status (line 58) | CREATE INDEX IF NOT EXISTS idx_wing_spots_status ON wing_spots(status) type idx_wing_spots_last_updated (line 59) | CREATE INDEX IF NOT EXISTS idx_wing_spots_last_updated ON wing_spots(las... type idx_wing_spots_location (line 60) | CREATE INDEX IF NOT EXISTS idx_wing_spots_location ON wing_spots USING G... type idx_wing_spots_flavor_tags (line 61) | CREATE INDEX IF NOT EXISTS idx_wing_spots_flavor_tags ON wing_spots USIN... function update_wing_spot_location (line 64) | CREATE OR REPLACE FUNCTION update_wing_spot_location() type geocode_cache (line 80) | CREATE TABLE IF NOT EXISTS geocode_cache ( type scrape_queue (line 92) | CREATE TABLE IF NOT EXISTS scrape_queue ( type idx_scrape_queue_status (line 102) | CREATE INDEX IF NOT EXISTS idx_scrape_queue_status ON scrape_queue(status) type menus (line 107) | CREATE TABLE IF NOT EXISTS menus (