import { useQueryView } from "@/components/QueryView"; import { useQuery } from "@tanstack/react-query"; import type { Agent } from "@paperclipai/shared"; import { decisionsApi } from "@/api/decisions"; import { useLocation } from "@/lib/router"; import { queryKeys } from "@/lib/queryKeys"; import { taskChatHashAnchor } from "./task-chat/scroll-navigation"; import { DecisionResolver } from "./DecisionResolver"; import { Button } from "./ui/button"; /** A selected Decisions-v1 record belongs to its task, not a second history tab. */ export function TaskDecisionRecord({ companyId, issueId, viewerId, agentMap }: { companyId: string; issueId: string; viewerId: string | null; agentMap?: Map; }) { const { hash } = useLocation(); const anchor = taskChatHashAnchor(hash); const decisionId = anchor?.startsWith("decision-") ? anchor.slice("decision-".length) : null; const record = useQuery({ queryKey: queryKeys.decisions.taskRecord(companyId, issueId, viewerId, decisionId), queryFn: () => decisionsApi.get(decisionId!), enabled: !!decisionId, }); const recordView = useQueryView(record); if (!decisionId) return null; const decision = record.data; const matchesTask = decision?.companyId === companyId && decision.originIssueId === issueId; const choice = decision?.options.find((option) => option.id === decision.chosenOptionId); return

Decision record

{["loading", "reconnecting"].includes(recordView.kind) ?

Loading decision…

: (recordView.kind === "error") ? (

Could not load this decision.

) : !matchesTask ?

This decision is not available in this task.

: <> {decision.status !== "open" ?
Recorded choice
{choice?.label ?? (decision.chosenOptionId === "dismissed" ? "Dismissed" : decision.status)}
{(decision.inputs ?? []).filter((input) => decision.inputValues?.[input.id] !== undefined).map((input) =>
{input.label}
{decision.inputValues![input.id]}
)}
: null} { void record.refetch(); }} /> }
; }