Python:DevUI Fixes (#1035)

* fix event reset on thread change, enable multiline input, enable pasting of files and screenshots

* UI updates and improved remove discovery

* ui and other fixes

---------

Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
This commit is contained in:
Victor Dibia
2025-09-30 17:21:22 -07:00
committed by GitHub
Unverified
parent 042099009f
commit fa9f5c1aed
41 changed files with 2949 additions and 814 deletions
@@ -45,7 +45,7 @@ export function applySimpleLayout(
// Constants for spacing
const NODE_WIDTH = 220;
const NODE_HEIGHT = 120;
const HORIZONTAL_SPACING = direction === "LR" ? 350 : 200;
const HORIZONTAL_SPACING = direction === "LR" ? 350 : 280;
const VERTICAL_SPACING = direction === "TB" ? 250 : 180;
// Track positioned nodes and level information
@@ -54,7 +54,8 @@ export interface NodeUpdate {
*/
export function convertWorkflowDumpToNodes(
workflowDump: Workflow | Record<string, unknown> | undefined,
onNodeClick?: (executorId: string, data: ExecutorNodeData) => void
onNodeClick?: (executorId: string, data: ExecutorNodeData) => void,
layoutDirection?: "LR" | "TB"
): Node<ExecutorNodeData>[] {
if (!workflowDump) {
console.warn("convertWorkflowDumpToNodes: workflowDump is undefined");
@@ -108,6 +109,7 @@ export function convertWorkflowDumpToNodes(
name: executor.name || executor.id,
state: "pending" as ExecutorState,
isStartNode: executor.id === startExecutorId,
layoutDirection: layoutDirection || "LR",
onNodeClick,
},
}));
@@ -339,7 +341,7 @@ export function processWorkflowEvents(
error = typeof eventData === "string" ? eventData : "Execution failed";
} else if (eventType?.includes("Cancel")) {
state = "cancelled";
} else if (eventType === "WorkflowCompletedEvent") {
} else if (eventType === "WorkflowCompletedEvent" || eventType === "WorkflowOutputEvent") {
state = "completed";
}
@@ -376,6 +378,8 @@ export function updateNodesWithEvents(
state: update.state,
outputData: update.data,
error: update.error,
// Preserve layoutDirection
layoutDirection: node.data.layoutDirection,
},
};
}
@@ -478,7 +482,7 @@ export function updateEdgesWithSequenceAnalysis(
// Active edge: source completed and target is currently executing
if (sourceState?.completed && targetIsExecuting) {
style = {
stroke: "#3b82f6", // Blue
stroke: "#643FB2", // Purple accent
strokeWidth: 3,
strokeDasharray: "5,5",
};