diff --git a/apps/web/components/kanban-card.tsx b/apps/web/components/kanban-card.tsx index 804d893c67..2f6dd0801c 100644 --- a/apps/web/components/kanban-card.tsx +++ b/apps/web/components/kanban-card.tsx @@ -28,12 +28,13 @@ import { } from "@kandev/ui/dropdown-menu"; import type { TaskState, Repository } from "@/lib/types/http"; import { cn, getRepositoryDisplayName } from "@/lib/utils"; -import { getTaskStateIcon } from "@/lib/ui/state-icons"; +import { getTaskStateIcon, shouldUseQuestionTaskIcon } from "@/lib/ui/state-icons"; import { needsAction } from "@/lib/utils/needs-action"; import { useAppStore } from "@/components/state-provider"; import { PRTaskIcon } from "@/components/github/pr-task-icon"; import { RemoteCloudTooltip } from "@/components/task/remote-cloud-tooltip"; import { TaskArchiveConfirmDialog } from "@/components/task/task-archive-confirm-dialog"; +import { useTaskPendingClarification } from "@/hooks/use-task-pending-clarification"; export interface Task { id: string; @@ -249,13 +250,16 @@ function KanbanCardActions({ >) { const [menuOpen, setMenuOpen] = useState(false); const effectiveMenuOpen = menuOpen || Boolean(isDeleting) || Boolean(isArchiving); - const statusIcon = getTaskStateIcon(task.state, "h-4 w-4"); + const hasPendingClarificationRequest = useTaskPendingClarification(task.primarySessionId); + const showQuestionIcon = shouldUseQuestionTaskIcon(task.state, hasPendingClarificationRequest); + const statusIcon = getTaskStateIcon(task.state, "h-4 w-4", hasPendingClarificationRequest); const hasKnownSession = Boolean(task.primarySessionId) || Boolean(task.sessionCount && task.sessionCount > 0); return (
- {(task.state === "IN_PROGRESS" || task.state === "SCHEDULING") && statusIcon} + {(task.state === "IN_PROGRESS" || task.state === "SCHEDULING" || showQuestionIcon) && + statusIcon} {showMaximizeButton && onOpenFullPage && hasKnownSession && ( diff --git a/apps/web/components/kanban/swimlane-graph-content.tsx b/apps/web/components/kanban/swimlane-graph-content.tsx index 6e7bde7bcf..adc217976b 100644 --- a/apps/web/components/kanban/swimlane-graph-content.tsx +++ b/apps/web/components/kanban/swimlane-graph-content.tsx @@ -23,6 +23,7 @@ import type { Task } from "@/components/kanban-card"; import type { WorkflowStep } from "@/components/kanban-column"; import type { MoveTaskError } from "@/hooks/use-drag-and-drop"; import type { KanbanState } from "@/lib/state/slices/kanban/types"; +import { useTaskPendingClarification } from "@/hooks/use-task-pending-clarification"; export type SwimlaneGraphContentProps = { workflowId: string; @@ -72,7 +73,8 @@ function DraggableTaskChip({ id: task.id, }); const isPreviewed = useAppStore((state) => state.kanbanPreviewedTaskId === task.id); - const statusIcon = getTaskStateIcon(task.state, "h-3 w-3"); + const hasPendingClarificationRequest = useTaskPendingClarification(task.primarySessionId); + const statusIcon = getTaskStateIcon(task.state, "h-3 w-3", hasPendingClarificationRequest); return (