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 && (
;
if (phase === "future") return
;
@@ -138,7 +140,9 @@ export function Graph2StepNode({
)}
>
-
{getTaskStateIcon(task.state, "h-3 w-3")}
+
+ {getTaskStateIcon(task.state, "h-3 w-3", hasPendingClarificationRequest)}
+
{step.title}
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 (