diff --git a/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimeline.tsx b/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimeline.tsx index 4a3ca154..eeb4dc69 100644 --- a/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimeline.tsx +++ b/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimeline.tsx @@ -17,6 +17,7 @@ import { WorkflowRunOverviewActiveElement, } from "@/routes/workflows/workflowRun/WorkflowRunOverview"; import { WorkflowRunTimelineBlockItem } from "@/routes/workflows/workflowRun/WorkflowRunTimelineBlockItem"; +import { cn } from "@/util/utils"; type Props = { activeItem: WorkflowRunOverviewActiveElement; @@ -54,8 +55,15 @@ function DebuggerRunTimeline({ return total + 0; }, 0); + const firstActionOrThoughtIsPending = + !workflowRunIsFinalized && workflowRunTimeline.length === 0; + return ( -
+
Actions: {numberOfActions} @@ -64,40 +72,55 @@ function DebuggerRunTimeline({ Steps: {workflowRun.total_steps ?? 0}
- {!workflowRunIsFinalized && workflowRunTimeline.length === 0 && ( - - )}
{workflowRunIsFinalized && workflowRunTimeline.length === 0 && (
Workflow timeline is empty
)} - {workflowRunTimeline?.map((timelineItem) => { + {!workflowRunIsFinalized && workflowRunTimeline.length === 0 && ( +
+ Formulating actions... +
+ )} + {workflowRunTimeline?.map((timelineItem, i) => { if (isBlockItem(timelineItem)) { return ( - + > + +
); } if (isThoughtItem(timelineItem)) { return ( - + > + +
); } })} diff --git a/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimelineMinimal.tsx b/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimelineMinimal.tsx index 274fe826..b18822ed 100644 --- a/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimelineMinimal.tsx +++ b/skyvern-frontend/src/routes/workflows/debugger/DebuggerRunTimelineMinimal.tsx @@ -6,6 +6,7 @@ import { useWorkflowRunTimelineQuery } from "../hooks/useWorkflowRunTimelineQuer import { isBlockItem, isThoughtItem } from "../types/workflowRunTypes"; import { ThoughtCardMinimal } from "@/routes/workflows/workflowRun/ThoughtCardMinimal"; import { WorkflowRunTimelineBlockItemMinimal } from "@/routes/workflows/workflowRun/WorkflowRunTimelineBlockItemMinimal"; +import { cn } from "@/util/utils"; function DebuggerRunTimelineMinimal() { const { data: workflowRun, isLoading: workflowRunIsLoading } = @@ -27,7 +28,15 @@ function DebuggerRunTimelineMinimal() { return (
{!workflowRunIsFinalized && workflowRunTimeline.length === 0 && ( - + + {/* rotate this by 90 degrees */} +
+ formulating actions... +
+
)} @@ -35,22 +44,35 @@ function DebuggerRunTimelineMinimal() { {workflowRunIsFinalized && workflowRunTimeline.length === 0 && (
-
)} - {workflowRunTimeline?.map((timelineItem) => { + {workflowRunTimeline?.map((timelineItem, i) => { if (isBlockItem(timelineItem)) { return ( - + className={cn({ + "animate-pulse": !workflowRunIsFinalized && i === 0, + })} + > + +
); } if (isThoughtItem(timelineItem)) { return ( - + className={cn({ + "animate-pulse": !workflowRunIsFinalized && i === 0, + })} + > + +
); } })} diff --git a/skyvern-frontend/src/routes/workflows/editor/workspace-styles.css b/skyvern-frontend/src/routes/workflows/editor/workspace-styles.css index d00bfab4..27796413 100644 --- a/skyvern-frontend/src/routes/workflows/editor/workspace-styles.css +++ b/skyvern-frontend/src/routes/workflows/editor/workspace-styles.css @@ -1,3 +1,14 @@ +.vertical-line-gradient-soft { + background: linear-gradient( + to bottom, + transparent 0%, + rgba(51, 65, 85, 0.1) 20%, + rgba(51, 65, 85, 0.5) 50%, + rgba(51, 65, 85, 0.1) 80%, + transparent 100% + ); +} + .vertical-line-gradient { background: linear-gradient( to bottom, diff --git a/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCard.tsx b/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCard.tsx index f98adc3a..1291494b 100644 --- a/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCard.tsx +++ b/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCard.tsx @@ -38,16 +38,19 @@ function ThoughtCard({ thought, onClick, active }: Props) {
- Thought + {(thought.answer || thought.thought) && Thought} + {!thought.answer && !thought.thought && Thinking}
Decision
-
- {thought.answer || thought.thought} -
+ {(thought.answer || thought.thought) && ( +
+ {thought.answer || thought.thought} +
+ )} ); } diff --git a/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCardMinimal.tsx b/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCardMinimal.tsx index c9f91ee9..62358296 100644 --- a/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCardMinimal.tsx +++ b/skyvern-frontend/src/routes/workflows/workflowRun/ThoughtCardMinimal.tsx @@ -8,7 +8,7 @@ type Props = { function ThoughtCardMinimal({ thought }: Props) { return ( - + ); diff --git a/skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItemMinimal.tsx b/skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItemMinimal.tsx index 8d3b3dce..060a6422 100644 --- a/skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItemMinimal.tsx +++ b/skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItemMinimal.tsx @@ -11,6 +11,7 @@ import { ActionCardMinimal } from "./ActionCardMinimal"; import { Status } from "@/api/types"; import { ThoughtCardMinimal } from "./ThoughtCardMinimal"; import { ItemStatusIndicator } from "./ItemStatusIndicator"; +import { cn } from "@/util/utils"; type Props = { block: WorkflowRunBlock; @@ -30,7 +31,11 @@ function WorkflowRunTimelineBlockItemMinimal({ block, subItems }: Props) { block.status === Status.Canceled); return ( -
+
0, + })} + >