feat(builder) Add save Agent functionality (#7361)

Add save functionality
pull/7350/head^2
Swifty 2024-07-10 11:01:12 +02:00 committed by GitHub
parent e10c4ee4cd
commit f94e81f48b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 73 additions and 57 deletions

View File

@ -34,8 +34,8 @@ type CustomNodeData = {
block_id: string; block_id: string;
}; };
const Sidebar: React.FC<{isOpen: boolean, availableNodes: Block[], addNode: (id: string, name: string) => void}> = const Sidebar: React.FC<{ isOpen: boolean, availableNodes: Block[], addNode: (id: string, name: string) => void }> =
({isOpen, availableNodes, addNode}) => { ({ isOpen, availableNodes, addNode }) => {
const [searchQuery, setSearchQuery] = useState(''); const [searchQuery, setSearchQuery] = useState('');
if (!isOpen) return null; if (!isOpen) return null;
@ -61,7 +61,7 @@ const Sidebar: React.FC<{isOpen: boolean, availableNodes: Block[], addNode: (id:
))} ))}
</div> </div>
); );
}; };
const FlowEditor: React.FC<{ flowID?: string; className?: string }> = ({ const FlowEditor: React.FC<{ flowID?: string; className?: string }> = ({
flowID, flowID,
@ -261,8 +261,7 @@ const FlowEditor: React.FC<{ flowID?: string; className?: string }> = ({
return inputData; return inputData;
}; };
const saveAgent = async () => {
const runAgent = async () => {
try { try {
console.log("All nodes before formatting:", nodes); console.log("All nodes before formatting:", nodes);
const blockIdToNodeIdMap = {}; const blockIdToNodeIdMap = {};
@ -326,6 +325,20 @@ const FlowEditor: React.FC<{ flowID?: string; className?: string }> = ({
setNodes(updatedNodes); setNodes(updatedNodes);
return newAgentId;
} catch (error) {
console.error('Error running agent:', error);
}
};
const runAgent = async () => {
try {
const newAgentId = await saveAgent();
if (!newAgentId) {
console.error('Error saving agent');
return;
}
const executeData = await api.executeFlow(newAgentId); const executeData = await api.executeFlow(newAgentId);
const runId = executeData.id; const runId = executeData.id;
@ -348,7 +361,7 @@ const FlowEditor: React.FC<{ flowID?: string; className?: string }> = ({
}; };
const updateNodesWithExecutionData = (executionData: any[]) => { const updateNodesWithExecutionData = (executionData: any[]) => {
setNodes((nds) => setNodes((nds) =>
nds.map((node) => { nds.map((node) => {
const nodeExecution = executionData.find((exec) => exec.node_id === node.id); const nodeExecution = executionData.find((exec) => exec.node_id === node.id);
@ -366,7 +379,7 @@ const updateNodesWithExecutionData = (executionData: any[]) => {
return node; return node;
}) })
); );
}; };
const toggleSidebar = () => setIsSidebarOpen(!isSidebarOpen); const toggleSidebar = () => setIsSidebarOpen(!isSidebarOpen);
@ -406,7 +419,10 @@ const updateNodesWithExecutionData = (executionData: any[]) => {
value={agentDescription} value={agentDescription}
onChange={(e) => setAgentDescription(e.target.value)} onChange={(e) => setAgentDescription(e.target.value)}
/> />
<Button onClick={runAgent}>Run Agent</Button> <div style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}> {/* Added gap for spacing */}
<Button onClick={saveAgent}>Save Agent</Button>
<Button onClick={runAgent}>Save & Run Agent</Button>
</div>
</div> </div>
</ReactFlow> </ReactFlow>
</div> </div>