Interactive policy editor: renders the policy as a ReactFlow graph and lets
the user add nodes (via PluginDrawer), edit node config (via
NodeInspector), draw/delete edges, and reposition nodes.
Behavior contracts:
The canvas re-syncs from the policy prop only when the policy name
changes (the parent keys this component by name, so that is a remount);
in-canvas edits are local until Save Policy invokes onSavePolicy with
the graph rebuilt by nodesToPolicy.
New connections enforce single-edge-per-input, except client targets
(multiple paths return the response) and error-handler targets
(collect errors from many nodes). Edges drawn from an error handle get
the animated red error styling.
Selecting a node opens the inspector (unless the drawer is open);
clicking an edge selects it and reveals a Delete Edge button; clicking
the pane clears both selections. Deleting a node also removes its edges.
Parameters
__namedParameters: GraphCanvasProps
Returns Element
Remarks
Success/error handles correspond to the port routing model executed by
CompiledGraph::execute in src/graph/engine.rs.
Interactive policy editor: renders the policy as a ReactFlow graph and lets the user add nodes (via PluginDrawer), edit node config (via NodeInspector), draw/delete edges, and reposition nodes.
Behavior contracts:
policyprop only when the policy name changes (the parent keys this component by name, so that is a remount); in-canvas edits are local until Save Policy invokesonSavePolicywith the graph rebuilt bynodesToPolicy.clienttargets (multiple paths return the response) anderror-handlertargets (collect errors from many nodes). Edges drawn from anerrorhandle get the animated red error styling.