mirror of
https://github.com/run-llama/workflows-py.git
synced 2026-07-18 16:14:58 -04:00
e53c654b42
* feat: add resource nodes to workflow graph export Add support for visualizing resource dependencies in workflow graphs: - Enhanced _Resource class with source location metadata (file, line, docstring, unique hash for deduplication) - Added ResourceDefinition.type_annotation to capture the type from Annotated[T, Resource(...)] - Added WorkflowGraphResourceNode protocol model with full metadata - Added DrawWorkflowResourceNode class for intermediate representation - Updated DrawWorkflowEdge to support edge labels (variable names) - Modified extract_workflow_structure to extract and deduplicate resource nodes, connecting them to steps with labeled edges - Updated Pyvis and Mermaid renderers to display resource nodes (hexagon shape, plum color) with metadata tooltips * test: add tests and example for resource nodes visualization - Add tests for resource node extraction in test_representation_utils.py - Add tests for resource rendering in test_drawing.py (Mermaid + Pyvis) - Add workflow_with_resources fixture with multiple resources - Add runnable example (examples/visualization/resource_nodes_example.py) that generates both Mermaid and Pyvis output with resource nodes * chore: add changeset for resource nodes feature * fix: reverse resource edge direction to step -> resource * refactor: unify DrawWorkflowNode and DrawWorkflowResourceNode - Merge resource-specific fields into DrawWorkflowNode - Add to_resource_response_model() for resource serialization - Keep DrawWorkflowResourceNode as backwards compat alias - Simplify type annotations in rendering code (remove unions) - Remove isinstance checks since all nodes are now DrawWorkflowNode * refactor: simplify _get_clean_node_id to use node_type prefix * refactor: merge resource_nodes into nodes list Unify resource nodes with the main nodes list instead of a separate resource_nodes field. This simplifies the API and rendering code while maintaining backwards compatibility through a property accessor. - Remove resource_nodes field from DrawWorkflowGraph - Add resource_nodes property for backwards compatibility - Merge WorkflowGraphResourceNode fields into WorkflowGraphNode - Simplify rendering loops to single iteration over nodes * refactor: remove unnecessary backwards compatibility aliases This is all new code in this PR - no need for backwards compat aliases. Removes WorkflowGraphResourceNode, DrawWorkflowResourceNode, to_resource_response_model, and resource_nodes property. * perf: make resource metadata extraction lazy Move expensive inspect operations (getfile, getsourcelines, getdoc) and hash computation from Resource creation time to graph extraction time. This avoids the overhead when resources are used at runtime but visualization is not needed. * test: remove unnecessary async from mermaid drawing tests * consolidate types * Split types * feat: add description and schema fields to workflow graph nodes - Add description field to WorkflowGraph (workflow class docstring) - Add description field to WorkflowStepNode (step function docstring) - Add event_schema field to WorkflowEventNode (Pydantic JSON schema) - Rename WorkflowResourceNode.docstring to description for consistency - Rename WorkflowGraphNodeEdges to WorkflowGraph Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * filter by node type * Update add_resource_nodes.md * remove resource hash --------- Co-authored-by: Claude <noreply@anthropic.com>