From e9dfc99d1ecd2ec699e98ab91d805c1065e9c4fb Mon Sep 17 00:00:00 2001
From: MayaCrmi
Date: Tue, 24 Feb 2026 02:35:41 -0500
Subject: [PATCH 01/10] aligned with new code
---
.../components/agentic-ai/AgentFlowGraph.tsx | 4 +
.../components/agentic-ai/WorkflowsPanel.tsx | 25 +-
.../agentic-ai/graphs/GraphCanvas.tsx | 3 +
.../agentic-ai/graphs/GraphHeader.tsx | 6 +-
.../agentic-ai/graphs/SaveBlueprintModal.tsx | 33 +-
ui/client/src/hooks/use-graph-logic.ts | 118 +++--
ui/client/src/hooks/use-load-blueprint.ts | 424 ++++++++++++++++++
ui/client/src/pages/AgenticWorkflows.tsx | 23 +-
ui/client/src/workspace/NewGraph.tsx | 12 +-
9 files changed, 586 insertions(+), 62 deletions(-)
create mode 100644 ui/client/src/hooks/use-load-blueprint.ts
diff --git a/ui/client/src/components/agentic-ai/AgentFlowGraph.tsx b/ui/client/src/components/agentic-ai/AgentFlowGraph.tsx
index 830c19a30..2f561f8a2 100644
--- a/ui/client/src/components/agentic-ai/AgentFlowGraph.tsx
+++ b/ui/client/src/components/agentic-ai/AgentFlowGraph.tsx
@@ -9,12 +9,14 @@ type AgentFlowGraphProps = {
selectedFlow: FlowObject | null;
setSelectedFlow: (flow: FlowObject | null) => void;
onValidationChange?: (isValid: boolean, validationResult: BlueprintValidationResult | null, isValidating: boolean) => void;
+ onFlowEdit?: (flow: FlowObject) => void;
};
export default function AgentFlowGraph({
selectedFlow,
setSelectedFlow,
onValidationChange,
+ onFlowEdit,
}: AgentFlowGraphProps): React.ReactElement {
const handleFlowSelect = (flow: FlowObject | null): void => {
@@ -41,9 +43,11 @@ export default function AgentFlowGraph({
selectedFlow={selectedFlow}
onFlowSelect={handleFlowSelect}
onFlowDelete={handleFlowDelete}
+ onFlowEdit={onFlowEdit}
onValidationChange={onValidationChange}
showActiveStatus={true}
showDeleteButton={true}
+ showEditButton={true}
height="100%"
graphProps={{
showBackground: true,
diff --git a/ui/client/src/components/agentic-ai/WorkflowsPanel.tsx b/ui/client/src/components/agentic-ai/WorkflowsPanel.tsx
index ec4886e2e..df61220fb 100644
--- a/ui/client/src/components/agentic-ai/WorkflowsPanel.tsx
+++ b/ui/client/src/components/agentic-ai/WorkflowsPanel.tsx
@@ -1,6 +1,6 @@
import React, { useState, useEffect, useCallback } from "react";
import { motion } from "framer-motion";
-import { Trash2, Users } from "lucide-react";
+import { Trash2, Users, Pencil } from "lucide-react";
import { useAuth } from "@/contexts/AuthContext";
import { useShared } from "@/contexts/SharedContext";
import { Button } from "@/components/ui/button";
@@ -26,9 +26,11 @@ export interface WorkflowsPanelProps {
selectedFlow: FlowObject | null;
onFlowSelect: (flow: FlowObject | null) => void;
onFlowDelete?: (flow: FlowObject) => void;
+ onFlowEdit?: (flow: FlowObject) => void;
onValidationChange?: (isValid: boolean, validationResult: BlueprintValidationResult | null, isValidating: boolean) => void;
showActiveStatus?: boolean;
showDeleteButton?: boolean;
+ showEditButton?: boolean;
className?: string;
height?: string;
graphProps?: {
@@ -41,9 +43,11 @@ export default function WorkflowsPanel({
selectedFlow,
onFlowSelect,
onFlowDelete,
+ onFlowEdit,
onValidationChange,
showActiveStatus = false,
showDeleteButton = false,
+ showEditButton = false,
className = "",
height = "100%",
graphProps = {
@@ -193,6 +197,13 @@ export default function WorkflowsPanel({
setShowDeleteModal(true);
};
+ const handleEditClick = (flow: FlowObject, event: React.MouseEvent) => {
+ event.stopPropagation();
+ if (onFlowEdit) {
+ onFlowEdit(flow);
+ }
+ };
+
const handleShareClick = (flow: FlowObject, event: React.MouseEvent) => {
event.stopPropagation(); // Prevent flow selection when clicking share
openShareForItem({
@@ -302,6 +313,18 @@ export default function WorkflowsPanel({
Active
)}
+ {showEditButton && (
+ Edit this workflow
}>
+
+
+ )}
Share this workflow}>