@@ -10,11 +10,13 @@ import { ComponentDetailsDialog } from "@/components/shared/Dialogs";
1010import { ComponentFavoriteToggle } from "@/components/shared/FavoriteComponentToggle" ;
1111import { StatusIcon } from "@/components/shared/Status" ;
1212import { TaskDetails } from "@/components/shared/TaskDetails" ;
13+ import TaskActions from "@/components/shared/TaskDetails/Actions" ;
1314import { Icon } from "@/components/ui/icon" ;
1415import { BlockStack , InlineStack } from "@/components/ui/layout" ;
1516import { Separator } from "@/components/ui/separator" ;
1617import { Tabs , TabsContent , TabsList , TabsTrigger } from "@/components/ui/tabs" ;
1718import { Text } from "@/components/ui/typography" ;
19+ import { useHydrateComponentReference } from "@/hooks/useHydrateComponentReference" ;
1820import { useExecutionDataOptional } from "@/providers/ExecutionDataProvider" ;
1921import { type TaskNodeContextType } from "@/providers/TaskNodeProvider" ;
2022import { isGraphImplementation } from "@/utils/componentSpec" ;
@@ -33,6 +35,10 @@ interface TaskOverviewProps {
3335const TaskOverview = ( { taskNode } : TaskOverviewProps ) => {
3436 const { displayName, taskSpec, taskId, state, callbacks } = taskNode ;
3537
38+ const hydratedComponentRef = useHydrateComponentReference (
39+ taskSpec ?. componentRef ?? { } ,
40+ ) ;
41+
3642 const executionData = useExecutionDataOptional ( ) ;
3743 const details = executionData ?. details ;
3844
@@ -57,8 +63,12 @@ const TaskOverview = ({ taskNode }: TaskOverviewProps) => {
5763 const canRename = ! readOnly && isSubgraph ;
5864
5965 return (
60- < BlockStack className = "h-full" data-context-panel = "task-overview" >
61- < InlineStack gap = "2" className = "px-2 pb-2" >
66+ < BlockStack
67+ gap = "4"
68+ className = "h-full px-2"
69+ data-context-panel = "task-overview"
70+ >
71+ < InlineStack gap = "2" >
6272 { isSubgraph && < Icon name = "Workflow" /> }
6373 < Text size = "lg" weight = "semibold" className = "wrap-anywhere" >
6474 { displayName }
@@ -72,7 +82,15 @@ const TaskOverview = ({ taskNode }: TaskOverviewProps) => {
7282 { readOnly && < StatusIcon status = { status } tooltip label = "task" /> }
7383 </ InlineStack >
7484
75- < div className = "px-4 overflow-y-auto pb-4 h-full w-full" >
85+ { ! ! hydratedComponentRef && (
86+ < TaskActions
87+ componentRef = { hydratedComponentRef }
88+ taskNode = { taskNode }
89+ readOnly = { readOnly }
90+ />
91+ ) }
92+
93+ < div className = "overflow-y-auto pb-4 h-full w-full" >
7694 < Tabs defaultValue = "io" className = "h-full" >
7795 < TabsList className = "mb-2" >
7896 < TabsTrigger value = "io" className = "flex-1" >
0 commit comments