import { Card } from "@/src/components/ui/card"; import { type ScoreTarget } from "@/src/features/scores/types"; import { type AnnotationQueueItem, type ScoreDomain, isPresent, type ScoreConfigDomain, } from "@langfuse/shared"; import { TriangleAlertIcon } from "lucide-react"; import { useSession } from "next-auth/react"; import { AnnotationForm } from "@/src/features/scores/components/AnnotationForm"; import { type WithStringifiedMetadata } from "@/src/utils/clientSideDomainTypes"; interface AnnotationDrawerSectionProps { item: AnnotationQueueItem & { parentTraceId?: string | null; lockedByUser: { name: string | null | undefined } | null; }; scoreTarget: ScoreTarget; scores: WithStringifiedMetadata[]; configs: ScoreConfigDomain[]; environment?: string; } export const AnnotationDrawerSection: React.FC< AnnotationDrawerSectionProps > = ({ item, scoreTarget, scores, configs, environment }) => { const session = useSession(); const isLockedByOtherUser = item.lockedByUserId !== session.data?.user?.id; const hasNonAnnotationScores = scores.some( (score) => score.source !== "ANNOTATION", ); return ( Currently edited by {item.lockedByUser.name} ) : undefined } /> {hasNonAnnotationScores && (
API and eval scores visible on left. Add manual annotations above.
)}
); };