import { ShieldCheck } from "lucide-react"; import type { OperationalTask, OperationalTaskDecision } from "../api/operational-task-client"; import { AccessRequestCard, HumanActionCard } from "./agent-execution-plan-panel"; type TaskConversationReviewProps = { task: OperationalTask; onAccessDecision: (requestId: string, version: number, decision: "approved" | "rejected", scopes: string[]) => Promise; onActionDecision: (actionId: string, version: number, decision: OperationalTaskDecision, comment?: string) => Promise; onActionExecute: (actionId: string, version: number) => Promise; onDraftUpdate: (actionId: string, version: number, payload: Record) => Promise; onConfirmDispatch: (actionId: string, version: number) => Promise; onActionReconcile: (actionId: string, version: number) => Promise; onRefresh: () => void; }; export function TaskConversationReview({ task, onAccessDecision, onActionDecision, onActionExecute, onDraftUpdate, onConfirmDispatch, onActionReconcile, onRefresh }: TaskConversationReviewProps) { const pendingAccess = task.access_requests.filter((request) => request.status === "pending"); const pendingActions = task.actions.filter((action) => action.approval_status === "pending" || action.approval_status === "approved" && ["not_submitted", "submitted", "unknown"].includes(action.execution_status)); if (pendingAccess.length === 0 && pendingActions.length === 0) return null; return
{pendingAccess.map((request) => node.id === request.node_id)?.title} canDecide={task.permissions.can_decide_access} onDecision={(requestId, version, decision, scopes) => onAccessDecision(requestId, version, decision, scopes)} onRefresh={onRefresh} />)} {pendingActions.map((action) => )}
; }